aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml116
-rw-r--r--CHANGELOG58
-rw-r--r--Zotlabs/Daemon/Cache_embeds.php27
-rw-r--r--Zotlabs/Daemon/Cron.php23
-rw-r--r--Zotlabs/Daemon/Master.php129
-rw-r--r--Zotlabs/Daemon/Notifier.php20
-rw-r--r--Zotlabs/Daemon/Onepoll.php2
-rw-r--r--Zotlabs/Daemon/Poller.php2
-rw-r--r--Zotlabs/Daemon/Queue.php15
-rw-r--r--Zotlabs/Identity/OAuth2Storage.php2
-rw-r--r--Zotlabs/Lib/Activity.php640
-rw-r--r--Zotlabs/Lib/ActivityStreams.php20
-rw-r--r--Zotlabs/Lib/Apps.php410
-rw-r--r--Zotlabs/Lib/DReport.php18
-rw-r--r--Zotlabs/Lib/Enotify.php1
-rw-r--r--Zotlabs/Lib/Libzot.php302
-rw-r--r--Zotlabs/Lib/PConfig.php38
-rw-r--r--Zotlabs/Lib/Share.php1
-rw-r--r--Zotlabs/Lib/ThreadItem.php34
-rw-r--r--Zotlabs/Lib/ThreadListener.php53
-rw-r--r--Zotlabs/Lib/ZotURL.php91
-rw-r--r--Zotlabs/Module/Admin.php2
-rw-r--r--Zotlabs/Module/Admin/Addons.php5
-rw-r--r--Zotlabs/Module/Admin/Site.php2
-rw-r--r--Zotlabs/Module/Affinity.php94
-rw-r--r--Zotlabs/Module/Appman.php6
-rw-r--r--Zotlabs/Module/Apporder.php33
-rw-r--r--Zotlabs/Module/Articles.php12
-rw-r--r--Zotlabs/Module/Cards.php16
-rw-r--r--Zotlabs/Module/Channel.php8
-rw-r--r--Zotlabs/Module/Chanview.php2
-rw-r--r--Zotlabs/Module/Connedit.php29
-rw-r--r--Zotlabs/Module/Display.php8
-rw-r--r--Zotlabs/Module/Dreport.php3
-rw-r--r--Zotlabs/Module/Embed.php22
-rw-r--r--Zotlabs/Module/Embedphotos.php122
-rw-r--r--Zotlabs/Module/Events.php4
-rw-r--r--Zotlabs/Module/Filestorage.php40
-rw-r--r--Zotlabs/Module/Group.php21
-rw-r--r--Zotlabs/Module/Id.php119
-rw-r--r--Zotlabs/Module/Import.php9
-rw-r--r--Zotlabs/Module/Item.php157
-rw-r--r--Zotlabs/Module/Like.php8
-rw-r--r--Zotlabs/Module/Linkinfo.php6
-rw-r--r--Zotlabs/Module/Mail.php4
-rw-r--r--Zotlabs/Module/Network.php13
-rw-r--r--Zotlabs/Module/New_channel.php4
-rw-r--r--Zotlabs/Module/Notes.php20
-rw-r--r--Zotlabs/Module/Oep.php11
-rw-r--r--Zotlabs/Module/Pconfig.php5
-rw-r--r--Zotlabs/Module/Photo.php89
-rw-r--r--Zotlabs/Module/Photos.php17
-rw-r--r--Zotlabs/Module/Ping.php14
-rw-r--r--Zotlabs/Module/Profiles.php28
-rw-r--r--Zotlabs/Module/Rmagic.php18
-rw-r--r--Zotlabs/Module/Settings/Featured.php34
-rw-r--r--Zotlabs/Module/Setup.php5
-rw-r--r--Zotlabs/Module/Share.php140
-rw-r--r--Zotlabs/Module/Sslify.php14
-rw-r--r--Zotlabs/Module/Viewsrc.php6
-rw-r--r--Zotlabs/Module/Wfinger.php3
-rw-r--r--Zotlabs/Module/Wiki.php4
-rw-r--r--Zotlabs/Photo/PhotoDriver.php498
-rw-r--r--Zotlabs/Photo/PhotoGd.php176
-rw-r--r--Zotlabs/Photo/PhotoImagick.php (renamed from include/photo/photo_imagick.php)148
-rw-r--r--Zotlabs/Storage/Browser.php14
-rw-r--r--Zotlabs/Update/_1228.php4
-rw-r--r--Zotlabs/Update/_1229.php32
-rw-r--r--Zotlabs/Update/_1230.php12
-rw-r--r--Zotlabs/Web/Session.php46
-rw-r--r--Zotlabs/Widget/Affinity.php84
-rw-r--r--Zotlabs/Widget/Notifications.php8
-rw-r--r--Zotlabs/Widget/Settings_menu.php7
-rw-r--r--Zotlabs/Zot/Finger.php2
-rw-r--r--Zotlabs/Zot6/Zot6Handler.php36
-rw-r--r--app/affinity.apd7
-rwxr-xr-xboot.php41
-rw-r--r--composer.json3
-rw-r--r--composer.lock419
-rw-r--r--doc/hook/collect_public_recipients.bb42
-rw-r--r--doc/hook/daemon_master_release.bb5
-rw-r--r--doc/hook/item_custom.bb24
-rw-r--r--doc/hook/item_stored.bb18
-rw-r--r--doc/hook/item_stored_update.bb15
-rw-r--r--doc/hook/jot_header_tpl_filter.bb5
-rw-r--r--doc/hook/jot_tpl_filter.bb5
-rw-r--r--doc/hook/photo_view_filter.bb1
-rw-r--r--doc/hook/privacygroup_extras.bb12
-rw-r--r--doc/hook/privacygroup_extras_drop.bb11
-rw-r--r--doc/hook/privacygroup_extras_post.bb11
-rw-r--r--doc/hooklist.bb33
-rw-r--r--include/attach.php60
-rw-r--r--include/bbcode.php19
-rw-r--r--include/channel.php15
-rw-r--r--include/contact_widgets.php40
-rw-r--r--include/conversation.php19
-rw-r--r--include/event.php17
-rw-r--r--include/features.php8
-rw-r--r--include/feedutils.php20
-rw-r--r--include/follow.php6
-rw-r--r--include/help.php56
-rw-r--r--include/import.php14
-rwxr-xr-xinclude/items.php118
-rw-r--r--include/markdown.php2
-rw-r--r--include/message.php2
-rw-r--r--include/nav.php60
-rw-r--r--include/network.php132
-rwxr-xr-xinclude/oembed.php6
-rw-r--r--include/photo/photo_driver.php859
-rw-r--r--include/photo/photo_gd.php162
-rw-r--r--include/photos.php2
-rwxr-xr-xinclude/plugin.php93
-rw-r--r--include/queue_fn.php4
-rw-r--r--include/text.php412
-rw-r--r--include/zid.php6
-rw-r--r--include/zot.php87
-rw-r--r--install/sample-lighttpd.conf2
-rw-r--r--install/sample-nginx.conf5
-rw-r--r--install/schema_mysql.sql2
-rw-r--r--install/schema_postgres.sql2
-rw-r--r--library/imagesloaded/imagesloaded.pkgd.min.js7
-rw-r--r--tests/phpunit-pgsql.xml33
-rw-r--r--tests/unit/Photo/PhotoGdTest.php147
-rw-r--r--tests/unit/get_tags_test.php17
-rw-r--r--tests/unit/includes/PhotodriverTest.php39
-rw-r--r--util/Doxyfile4
-rwxr-xr-xutil/addons15
-rwxr-xr-xutil/admins60
-rw-r--r--util/hmessages.po3297
-rwxr-xr-xutil/udall2
-rw-r--r--vendor/blueimp/jquery-file-upload/README.md2
-rw-r--r--vendor/blueimp/jquery-file-upload/SECURITY.md2
-rw-r--r--vendor/blueimp/jquery-file-upload/angularjs.html8
-rw-r--r--vendor/blueimp/jquery-file-upload/basic-plus.html8
-rw-r--r--vendor/blueimp/jquery-file-upload/basic.html6
-rw-r--r--[-rwxr-xr-x]vendor/blueimp/jquery-file-upload/bower-version-update.js0
-rw-r--r--vendor/blueimp/jquery-file-upload/bower.json2
-rw-r--r--vendor/blueimp/jquery-file-upload/cors/postmessage.html2
-rw-r--r--vendor/blueimp/jquery-file-upload/index.html6
-rw-r--r--vendor/blueimp/jquery-file-upload/jquery-ui.html6
-rw-r--r--vendor/blueimp/jquery-file-upload/package.json2
-rw-r--r--[-rwxr-xr-x]vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php34
-rw-r--r--vendor/blueimp/jquery-file-upload/server/php/index.php2
-rw-r--r--vendor/blueimp/jquery-file-upload/test/index.html6
-rw-r--r--vendor/bshaffer/oauth2-server-php/CHANGELOG.md4
-rw-r--r--vendor/bshaffer/oauth2-server-php/README.md2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php7
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php2
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php18
-rw-r--r--vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php9
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php18
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php23
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php21
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php8
-rw-r--r--vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php2
-rw-r--r--vendor/composer/ClassLoader.php2
-rw-r--r--vendor/composer/LICENSE69
-rw-r--r--vendor/composer/autoload_classmap.php15
-rw-r--r--vendor/composer/autoload_static.php14
-rw-r--r--vendor/composer/installed.json93
-rw-r--r--vendor/desandro/imagesloaded/.gitignore5
-rw-r--r--vendor/desandro/imagesloaded/.jshintrc12
-rw-r--r--vendor/desandro/imagesloaded/README.md362
-rw-r--r--vendor/desandro/imagesloaded/bower.json37
-rw-r--r--vendor/desandro/imagesloaded/composer.json15
-rw-r--r--vendor/desandro/imagesloaded/contributing.md20
-rw-r--r--vendor/desandro/imagesloaded/gulpfile.js128
-rw-r--r--vendor/desandro/imagesloaded/imagesloaded.js377
-rw-r--r--vendor/desandro/imagesloaded/imagesloaded.pkgd.js (renamed from library/imagesloaded/imagesloaded.pkgd.js)72
-rw-r--r--vendor/desandro/imagesloaded/imagesloaded.pkgd.min.js7
-rw-r--r--vendor/desandro/imagesloaded/package.json48
-rw-r--r--vendor/desandro/imagesloaded/sandbox/background/css/background.css29
-rw-r--r--vendor/desandro/imagesloaded/sandbox/background/index.html51
-rw-r--r--vendor/desandro/imagesloaded/sandbox/progress/index.html89
-rw-r--r--vendor/desandro/imagesloaded/sandbox/progress/progress.js111
-rw-r--r--vendor/desandro/imagesloaded/test/css/tests.css41
-rw-r--r--vendor/desandro/imagesloaded/test/img/blue-shell.jpgbin0 -> 24555 bytes
-rw-r--r--vendor/desandro/imagesloaded/test/img/bowser-jr.jpgbin0 -> 36987 bytes
-rw-r--r--vendor/desandro/imagesloaded/test/img/thunder-cloud.jpgbin0 -> 24588 bytes
-rw-r--r--vendor/desandro/imagesloaded/test/index.html104
-rw-r--r--vendor/desandro/imagesloaded/test/unit/append.js30
-rw-r--r--vendor/desandro/imagesloaded/test/unit/background.js70
-rw-r--r--vendor/desandro/imagesloaded/test/unit/basics.js28
-rw-r--r--vendor/desandro/imagesloaded/test/unit/data-uri.js10
-rw-r--r--vendor/desandro/imagesloaded/test/unit/jquery-fail.js29
-rw-r--r--vendor/desandro/imagesloaded/test/unit/jquery-success.js28
-rw-r--r--vendor/desandro/imagesloaded/test/unit/local-files.js31
-rw-r--r--vendor/desandro/imagesloaded/test/unit/no-images.js11
-rw-r--r--vendor/desandro/imagesloaded/test/unit/non-element.js24
-rw-r--r--vendor/desandro/imagesloaded/test/unit/selector-string.js12
-rw-r--r--vendor/desandro/imagesloaded/test/unit/single-element.js11
-rw-r--r--vendor/league/html-to-markdown/CHANGELOG.md11
-rw-r--r--vendor/league/html-to-markdown/src/Converter/DefaultConverter.php8
-rw-r--r--vendor/league/html-to-markdown/src/Converter/HardBreakConverter.php5
-rw-r--r--vendor/psr/log/README.md7
-rw-r--r--view/css/default.css37
-rw-r--r--view/css/mod_connedit.css1
-rw-r--r--view/es-es/hstrings.php4
-rw-r--r--view/js/autocomplete.js2
-rw-r--r--view/js/main.js50
-rw-r--r--view/php/default.php14
-rw-r--r--view/php/theme_init.php2
-rw-r--r--view/ru/hmessages.po22682
-rw-r--r--view/ru/hstrings.php5503
-rw-r--r--view/theme/redbasic/css/style.css5
-rw-r--r--view/theme/redbasic/js/redbasic.js6
-rw-r--r--view/theme/redbasic/schema/dark.css26
-rw-r--r--view/tpl/app.tpl4
-rwxr-xr-xview/tpl/categories_widget.tpl2
-rw-r--r--view/tpl/cloud_directory.tpl2
-rwxr-xr-xview/tpl/conv_item.tpl9
-rwxr-xr-xview/tpl/conv_list.tpl9
-rwxr-xr-xview/tpl/group_edit.tpl1
-rwxr-xr-xview/tpl/jot-header.tpl16
-rwxr-xr-xview/tpl/jot.tpl12
-rw-r--r--view/tpl/notifications_widget.tpl15
-rwxr-xr-xview/tpl/photo_view.tpl2
-rw-r--r--view/tpl/privacy_groups.tpl1
-rwxr-xr-xview/tpl/remote_friends_common.tpl3
219 files changed, 23195 insertions, 18158 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0b8e0430f..43c65f365 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,36 +1,126 @@
# Select image from https://hub.docker.com/_/php/
-image: php:7.1
+#image: php:7.2
+# Use a prepared Hubzilla image to optimise pipeline run
+image: registry.gitlab.com/dawnbreak/hubzilla/core:php7.2
+
+
+stages:
+ - test
+ - deploy
+
# Select what we should cache
cache:
paths:
- vendor/
+ - .cache/
+
+# global variables for all jobs, if no job specific variables
variables:
- # Configure mysql service (https://hub.docker.com/_/mysql/)
+ # Tell composer to use the project workspace .cache folder
+ COMPOSER_CACHE_DIR: "$CI_PROJECT_DIR/.cache/composer"
+ # Ignore a Composer warning
+ COMPOSER_ALLOW_SUPERUSER: 1
+ # Configure MySQL/MariaDB service (https://hub.docker.com/_/mysql/, https://hub.docker.com/_/mariadb/)
MYSQL_DATABASE: hello_world_test
MYSQL_ROOT_PASSWORD: mysql
+ # Configure PostgreSQL service (https://hub.docker.com/_/postgres/)
+ POSTGRES_DB: ci-db
+ POSTGRES_USER: ci-user
+ POSTGRES_PASSWORD: ci-pass
-services:
-- mysql:5.7
-
before_script:
-- apt-get update -yqq
-- apt-get install -yqq git mysql-server mysql-client libmcrypt-dev libpq-dev libcurl4-gnutls-dev libicu-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev
-# Install PHP extensions
-- docker-php-ext-install mbstring mcrypt pdo_mysql pdo_pgsql curl json intl gd xml zip bz2 opcache
# Install & enable Xdebug for code coverage reports
- pecl install xdebug
- docker-php-ext-enable xdebug
-# Install and run Composer
+# Install composer
- curl -sS https://getcomposer.org/installer | php
-- php composer.phar install
+# Install dev libraries from composer
+- php composer.phar install --no-progress
+
+
+# test PHP7 with MySQL 5.7
+php7.2_mysql 1/2:
+ stage: test
+ services:
+ - mysql:5.7
+ script:
+ - echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
+
-# We test PHP7 with MySQL, but we allow it to fail
-test:php:mysql:
+# test PHP7 with MySQL latest (8)
+php7.2_mysql 2/2:
+ stage: test
+ services:
+ - name: mysql:latest
+ command: ["--default-authentication-plugin=mysql_native_password"]
script:
- echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
+
+
+# test PHP7 with MariaDB latest (10.3)
+php7.2_mariadb:
+ stage: test
+ services:
+ - name: mariadb:latest
+ alias: mysql
+ script:
+ - echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
+
+
+# test PHP7 with PostgreSQL latest
+php7.2_postgres:
+ stage: test
+ services:
+ - postgres:latest
+ script:
+ - export PGPASSWORD=$POSTGRES_PASSWORD
+ - psql --version
+ - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT VERSION();"
+ # Import hubzilla's DB schema
+ - psql -h "postgres" -U "$POSTGRES_USER" -v ON_ERROR_STOP=1 --quiet "$POSTGRES_DB" < ./install/schema_postgres.sql
+ # Show databases and relations/tables of hubzilla's database
+ #- psql -h "postgres" -U "$POSTGRES_USER" -l
+ #- psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "\dt;"
+ # Run the actual tests
+ - vendor/bin/phpunit --configuration tests/phpunit-pgsql.xml --testdox
+ artifacts:
+ expire_in: 1 week
+ # Gitlab should show the results, but has problems parsing PHPUnit's junit file.
+ reports:
+ junit: tests/results/junit.xml
+ # Archive test results (coverage, testdox, junit)
+ name: "$CI_COMMIT_REF_SLUG-$CI_JOB_NAME"
+ paths:
+ - tests/results/
+
+
+# Generate Doxygen API Documentation and deploy it at GitLab pages
+pages:
+ stage: deploy
+ cache: {}
+ image: php:7-cli-alpine
+ before_script:
+ - apk update
+ - apk add doxygen ttf-freefont graphviz
+ script:
+ - doxygen util/Doxyfile
+ - mv doc/html/ public/
+ - echo "API documentation should be accessible at https://hubzilla.frama.io/core/ soon"
+ artifacts:
+ paths:
+ - public
+ only:
+ # Only generate it on main repo's master branch
+ - master@hubzilla/core
diff --git a/CHANGELOG b/CHANGELOG
index b11016eba..0e3e89a9e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,61 @@
+Hubzilla 3.8.9 (2018-02-03)
+ - Fix typos in mod oep
+ - Fix page jumping when liking collapsed/expanded post
+ - Fix failure to import mail in mod import
+ - Fix wrong channel count in mod new_channel
+ - Fix diaspora addon regression
+ - Remove deprecated diaspora addon endpoint
+ - Fix wrong function call in gallery addon
+
+
+Hubzilla 3.8.8 (2018-12-22)
+ - Fix issue with linkinfo
+ - Fix cURL with HTTP/2
+ - Remove scale_external_images()
+ - Style highlight bbcode via css
+ - Make mod channel deal with b64 encoded mid's
+ - Fix email retrieval in OAuth2Storage
+ - Add reinstall option to util/addons
+ - Remove deprecated caching protection from mod photo
+ - Add missing check for observer in mod like
+ - Articles: default to logged in channel if channel name is not passed
+ - Wiki: fix preview issue with hyperlinks
+ - Cart: backport fixes from osada
+ - Gallery: provide file extensions for better compatibility
+ - Hsse: fix issue when linkinfo data was inserted
+ - Diaspora: remove deprecated scale_external_images()
+
+
+Hubzilla 3.8.7 (2018-12-14)
+ - Fix issue with linkdropper in comment area
+ - Fix regression wit app ordering
+ - Fix return if readImnageBlob() throws an exception
+ - Introduce photo_view_filter hook
+ - Fix home notifications not expanding in certain situations
+ - Fix for dark schema
+ - Fix total identities restriction
+ - Fix article page title not updating if article has no title
+ - Gallery: the gallery app will now act as the full-size photo viewer in /photos if installed
+
+
+Hubzilla 3.8.6 (2018-12-03)
+ - Prevent incompatible export files (osada/zap) from being imported
+ - Catch exception if readImageBlob() receives bogus data
+ - Streamline PDF previews
+ - Allow notification filtering by name or address
+ - Fix too restrictive attached photo permissions
+ - Update ES translation
+ - Use flex for the default template
+ - Do not store serialized pconfig value received via to Module/Pconfig.php
+ - Update jquery-file-upload lib and move to composer
+ - Update imagesloaded lib and move to composer
+ - Fix activitypub tag notifications
+ - Fix call to undefined function in PConfig
+ - Fix typo which prevented propagation of comments to zot6 (dev)
+ - Activitypub: add support for pterotype (wordpress plugin)
+ - Openstreetmap: check validity of lat+lon before rendering a map
+
+
Hubzilla 3.8.5 (2018-11-19)
- Fix pconfig for new installs
- Fix delayed publication of posts in combination with channel clones
diff --git a/Zotlabs/Daemon/Cache_embeds.php b/Zotlabs/Daemon/Cache_embeds.php
new file mode 100644
index 000000000..08088abd6
--- /dev/null
+++ b/Zotlabs/Daemon/Cache_embeds.php
@@ -0,0 +1,27 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+
+class Cache_embeds {
+
+ static public function run($argc,$argv) {
+
+ if(! $argc == 2)
+ return;
+
+ $c = q("select body from item where id = %d ",
+ dbesc(intval($argv[1]))
+ );
+
+ if(! $c)
+ return;
+
+ $item = $c[0];
+
+ // bbcode conversion by default processes embeds that aren't already cached.
+ // Ignore the returned html output.
+
+ bbcode($item['body']);
+ }
+}
diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php
index 25e49b817..8b6b42c8a 100644
--- a/Zotlabs/Daemon/Cron.php
+++ b/Zotlabs/Daemon/Cron.php
@@ -94,6 +94,29 @@ class Cron {
@time_sleep_until(microtime(true) + (float) $interval);
}
}
+
+ // Clean expired photos from cache
+
+ $age = get_config('system','active_expire_days', '30');
+ $r = q("SELECT DISTINCT xchan, content FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s",
+ intval(PHOTO_CACHE),
+ db_utcnow(),
+ db_quoteinterval($age . ' DAY')
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $file = dbunescbin($rr['content']);
+ if(is_file($file)) {
+ @unlink($file);
+ logger('info: deleted cached photo file ' . $file, LOGGER_DEBUG);
+ }
+ }
+ }
+ q("DELETE FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s",
+ intval(PHOTO_CACHE),
+ db_utcnow(),
+ db_quoteinterval($age . ' DAY')
+ );
// publish any applicable items that were set to be published in the future
// (time travel posts). Restrict to items that have come of age in the last
diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php
index 0656ca05b..857d47243 100644
--- a/Zotlabs/Daemon/Master.php
+++ b/Zotlabs/Daemon/Master.php
@@ -16,8 +16,6 @@ if(array_search( __file__ , get_included_files()) === 0) {
class Master {
- static public $queueworker = null;
-
static public function Summon($arr) {
proc_run('php','Zotlabs/Daemon/Master.php',$arr);
}
@@ -25,126 +23,21 @@ class Master {
static public function Release($argc,$argv) {
cli_startup();
- $maxworkers = get_config('system','max_queue_workers');
-
- if (!$maxworkers || $maxworkers == 0) {
- logger('Master: release: ' . print_r($argv,true), LOGGER_ALL,LOG_DEBUG);
- $cls = '\\Zotlabs\\Daemon\\' . $argv[0];
- $cls::run($argc,$argv);
- self::ClearQueue();
- } else {
- logger('Master: enqueue: ' . print_r($argv,true), LOGGER_ALL,LOG_DEBUG);
- $workinfo = ['argc'=>$argc,'argv'=>$argv];
- q("insert into config (cat,k,v) values ('queuework','%s','%s')",
- dbesc(uniqid('workitem:',true)),
- dbesc(serialize($workinfo)));
- self::Process();
- }
- }
-
- static public function GetWorkerID() {
- $maxworkers = get_config('system','max_queue_workers');
- $maxworkers = ($maxworkers) ? $maxworkers : 3;
-
- $workermaxage = get_config('system','max_queue_worker_age');
- $workermaxage = ($workermaxage) ? $workermaxage : 300;
-
- $workers = q("select * from config where cat='queueworkers' and k like '%s'", 'workerstarted_%');
-
- if (count($workers) > $maxworkers) {
- foreach ($workers as $idx => $worker) {
- $curtime = time();
- $age = (intval($curtime) - intval($worker['v']));
- if ( $age > $workermaxage) {
- logger("Prune worker: ".$worker['k'], LOGGER_ALL, LOGGER_DEBUG);
- $k = explode('_',$worker['k']);
- q("delete from config where cat='queueworkers' and k='%s'",
- 'workerstarted_'.$k[1]);
- q("update config set k='%s' where cat='queuework' and k='%s'",
- dbesc(uniqid('workitem:',true)),
- 'workitem_'.$k[1]);
- unset($workers[$idx]);
- }
- }
- if (count($workers) > $maxworkers) {
- return false;
- }
- }
- return uniqid('',true);
-
- }
-
- static public function Process() {
-
- self::$queueworker = self::GetWorkerID();
-
- if (!self::$queueworker) {
- logger('Master: unable to obtain worker ID.');
- killme();
- }
-
- set_config('queueworkers','workerstarted_'.self::$queueworker,time());
-
- $workersleep = get_config('system','queue_worker_sleep');
- $workersleep = ($workersleep) ? $workersleep : 5;
- cli_startup();
-
- $work = q("update config set k='%s' where cat='queuework' and k like '%s' limit 1",
- 'workitem_'.self::$queueworker,
- dbesc('workitem:%'));
- $jobs = 0;
- while ($work) {
- $workitem = q("select * from config where cat='queuework' and k='%s'",
- 'workitem_'.self::$queueworker);
-
- if (isset($workitem[0])) {
- $jobs++;
- $workinfo = unserialize($workitem[0]['v']);
- $argc = $workinfo['argc'];
- $argv = $workinfo['argv'];
- logger('Master: process: ' . print_r($argv,true), LOGGER_ALL,LOG_DEBUG);
-
- //Delete unclaimed duplicate workitems.
- q("delete from config where cat='queuework' and k='workitem' and v='%s'",
- serialize($argv));
-
- $cls = '\\Zotlabs\\Daemon\\' . $argv[0];
- $cls::run($argc,$argv);
+ $hookinfo = [
+ 'argv'=>$argv
+ ];
- //Right now we assume that if we get a return, everything is OK.
- //At some point we may want to test whether the run returns true/false
- // and requeue the work to be tried again. But we probably want
- // to implement some sort of "retry interval" first.
+ call_hooks ('daemon_master_release',$hookinfo);
- q("delete from config where cat='queuework' and k='%s'",
- 'workitem_'.self::$queueworker);
- } else {
- break;
- }
- sleep ($workersleep);
- $work = q("update config set k='%s' where cat='queuework' and k like '%s' limit 1",
- 'workitem_'.self::$queueworker,
- dbesc('workitem:%'));
+ $argv = $hookinfo['argv'];
+ $argc = count($argv);
+ if ((!is_array($argv) || (count($argv) < 1))) {
+ return;
}
- logger('Master: Worker Thread: queue items processed:' . $jobs);
- q("delete from config where cat='queueworkers' and k='%s'",
- 'workerstarted_'.self::$queueworker);
- }
- static public function ClearQueue() {
- $work = q("select * from config where cat='queuework' and k like '%s'",
- dbesc('workitem%'));
- foreach ($work as $workitem) {
- $workinfo = unserialize($workitem['v']);
- $argc = $workinfo['argc'];
- $argv = $workinfo['argv'];
- logger('Master: process: ' . print_r($argv,true), LOGGER_ALL,LOG_DEBUG);
- $cls = '\\Zotlabs\\Daemon\\' . $argv[0];
- $cls::run($argc,$argv);
- }
- $work = q("delete from config where cat='queuework' and k like '%s'",
- dbesc('workitem%'));
+ logger('Master: release: ' . json_encode($argv), LOGGER_ALL,LOG_DEBUG);
+ $cls = '\\Zotlabs\\Daemon\\' . $argv[0];
+ $cls::run($argc,$argv);
}
-
}
diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php
index 8b81c49da..df73d977d 100644
--- a/Zotlabs/Daemon/Notifier.php
+++ b/Zotlabs/Daemon/Notifier.php
@@ -434,6 +434,8 @@ class Notifier {
$x['body'] = 'private';
logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
+ //logger('notifier: encoded activity: ' . print_r($activity,true), LOGGER_DATA, LOG_DEBUG);
+
stringify_array_elms($recipients);
if(! $recipients) {
logger('no recipients');
@@ -625,7 +627,12 @@ class Notifier {
continue;
}
- $hash = new_uuid();
+ // Do not change this to a uuid as long as we have traditional zot servers
+ // in the loop. The signature verification step can't handle dashes in the
+ // hashes.
+
+ $hash = random_string(48);
+
$packet = null;
$pmsg = '';
@@ -672,6 +679,17 @@ class Notifier {
}
$packet_type = (($upstream || $uplink) ? 'response' : 'activity');
+
+ // block zot private reshares from zot6, as this could cause a number of privacy issues
+ // due to parenting differences between the reshare implementations. In zot a reshare is
+ // a standalone parent activity and in zot6 it is a followup/child of the original activity.
+ // For public reshares, some comments to the reshare on the zot fork will not make it to zot6
+ // due to these different message models. This cannot be prevented at this time.
+
+ if($packet_type === 'activity' && $activity['type'] === 'Announce' && intval($target_item['item_private'])) {
+ continue;
+ }
+
$packet = Libzot::build_packet($channel,$packet_type,$zenv,$activity,'activitystreams',(($private) ? $hub['hubloc_sitekey'] : null),$hub['site_crypto']);
}
else {
diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php
index 920916828..1d9fd5f72 100644
--- a/Zotlabs/Daemon/Onepoll.php
+++ b/Zotlabs/Daemon/Onepoll.php
@@ -69,7 +69,7 @@ class Onepoll {
return;
}
- if($contact['xchan_network'] !== 'zot')
+ if(! in_array($contact['xchan_network'],['zot','zot6']))
return;
// update permissions
diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php
index 49151437c..a8cf34ce2 100644
--- a/Zotlabs/Daemon/Poller.php
+++ b/Zotlabs/Daemon/Poller.php
@@ -110,7 +110,7 @@ class Poller {
}
- if($contact['xchan_network'] !== 'zot')
+ if(! in_array($contact['xchan_network'],['zot','zot6']))
continue;
if($c == $t) {
diff --git a/Zotlabs/Daemon/Queue.php b/Zotlabs/Daemon/Queue.php
index 8f529ff13..814148404 100644
--- a/Zotlabs/Daemon/Queue.php
+++ b/Zotlabs/Daemon/Queue.php
@@ -12,7 +12,6 @@ class Queue {
require_once('include/items.php');
require_once('include/bbcode.php');
-
if($argc > 1)
$queue_id = $argv[1];
else
@@ -61,10 +60,20 @@ class Queue {
// or just prior to this query based on recent and long-term delivery history. If we have good reason to believe
// the site is permanently down, there's no reason to attempt delivery at all, or at most not more than once
// or twice a day.
-
- $r = q("SELECT * FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s ",
+
+ $sqlrandfunc = db_getfunc('rand');
+
+ $r = q("SELECT *,$sqlrandfunc as rn FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s order by rn limit 1",
db_utcnow()
);
+ while ($r) {
+ foreach($r as $rv) {
+ queue_deliver($rv);
+ }
+ $r = q("SELECT *,$sqlrandfunc as rn FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s order by rn limit 1",
+ db_utcnow()
+ );
+ }
}
if(! $r)
return;
diff --git a/Zotlabs/Identity/OAuth2Storage.php b/Zotlabs/Identity/OAuth2Storage.php
index bbf61cf2b..a4ba9c526 100644
--- a/Zotlabs/Identity/OAuth2Storage.php
+++ b/Zotlabs/Identity/OAuth2Storage.php
@@ -64,7 +64,7 @@ class OAuth2Storage extends \OAuth2\Storage\Pdo {
return( [
'webfinger' => channel_reddress($x),
'portable_id' => $x['channel_hash'],
- 'email' => $a['account_email'],
+ 'email' => $a[0]['account_email'],
'username' => $x['channel_address'],
'user_id' => $x['channel_id'],
'name' => $x['channel_name'],
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index 6ddbbb9db..9aaf6d866 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -2,18 +2,21 @@
namespace Zotlabs\Lib;
-use Zotlabs\Lib\Libzot;
-use Zotlabs\Lib\Libsync;
-use Zotlabs\Lib\ActivityStreams;
-use Zotlabs\Lib\Group;
+use Zotlabs\Zot6\HTTPSig;
class Activity {
static function encode_object($x) {
+
if(($x) && (! is_array($x)) && (substr(trim($x),0,1)) === '{' ) {
$x = json_decode($x,true);
}
+
+ if(is_array($x) && array_key_exists('asld',$x)) {
+ $x = $x['asld'];
+ }
+
if($x['type'] === ACTIVITY_OBJ_PERSON) {
return self::fetch_person($x);
}
@@ -26,11 +29,57 @@ class Activity {
if($x['type'] === ACTIVITY_OBJ_THING) {
return self::fetch_thing($x);
}
+ if($x['type'] === ACTIVITY_OBJ_EVENT) {
+ return self::fetch_event($x);
+ }
+ if($x['type'] === ACTIVITY_OBJ_PHOTO) {
+ return self::fetch_image($x);
+ }
return $x;
}
+ static function fetch($url,$channel = null) {
+ $redirects = 0;
+ if(! check_siteallowed($url)) {
+ logger('blacklisted: ' . $url);
+ return null;
+ }
+ if(! $channel) {
+ $channel = get_sys_channel();
+ }
+
+ logger('fetch: ' . $url, LOGGER_DEBUG);
+
+ if(strpos($url,'x-zot:') === 0) {
+ $x = ZotURL::fetch($url,$channel);
+ }
+ else {
+ $m = parse_url($url);
+ $headers = [
+ 'Accept' => 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
+ 'Host' => $m['host'],
+ '(request-target)' => 'get ' . get_request_string($url),
+ 'Date' => datetime_convert('UTC','UTC','now','D, d M Y H:i:s') . ' UTC'
+ ];
+ $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false);
+ $x = z_fetch_url($url, true, $redirects, [ 'headers' => $h ] );
+ }
+
+ if($x['success']) {
+ $y = json_decode($x['body'],true);
+ logger('returned: ' . json_encode($y,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
+ return json_decode($x['body'], true);
+ }
+ else {
+ logger('fetch failed: ' . $url);
+ }
+ return null;
+ }
+
+
+
static function fetch_person($x) {
return self::fetch_profile($x);
@@ -93,6 +142,63 @@ class Activity {
}
}
+
+ static function fetch_image($x) {
+
+
+ $ret = [
+ 'type' => 'Image',
+ 'id' => $x['id'],
+ 'name' => $x['title'],
+ 'content' => bbcode($x['body']),
+ 'source' => [ 'mediaType' => 'text/bbcode', 'content' => $x['body'] ],
+ 'published' => datetime_convert('UTC','UTC',$x['created'],ATOM_TIME),
+ 'updated' => datetime_convert('UTC','UTC', $x['edited'],ATOM_TIME),
+ 'url' => [
+ 'type' => 'Link',
+ 'mediaType' => $x['link'][0]['type'],
+ 'href' => $x['link'][0]['href'],
+ 'width' => $x['link'][0]['width'],
+ 'height' => $x['link'][0]['height']
+ ]
+ ];
+ return $ret;
+ }
+
+ static function fetch_event($x) {
+
+ // convert old Zot event objects to ActivityStreams Event objects
+
+ if (array_key_exists('content',$x) && array_key_exists('dtstart',$x)) {
+ $ev = bbtoevent($x['content']);
+ if($ev) {
+
+ $actor = null;
+ if(array_key_exists('author',$x) && array_key_exists('link',$x['author'])) {
+ $actor = $x['author']['link'][0]['href'];
+ }
+ $y = [
+ 'type' => 'Event',
+ 'id' => z_root() . '/event/' . $ev['event_hash'],
+ 'summary' => bbcode($ev['summary']),
+ // RFC3339 Section 4.3
+ 'startTime' => (($ev['adjust']) ? datetime_convert('UTC','UTC',$ev['dtstart'], ATOM_TIME) : datetime_convert('UTC','UTC',$ev['dtstart'],'Y-m-d\\TH:i:s-00:00')),
+ 'content' => bbcode($ev['description']),
+ 'location' => [ 'type' => 'Place', 'content' => bbcode($ev['location']) ],
+ 'source' => [ 'content' => format_event_bbcode($ev), 'mediaType' => 'text/bbcode' ],
+ 'actor' => $actor,
+ ];
+ if($actor) {
+ return $y;
+ }
+ }
+ }
+
+ return $x;
+
+ }
+
+
static function encode_item_collection($items,$id,$type,$extra = null) {
$ret = [
@@ -167,7 +273,7 @@ class Activity {
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/item/' . urlencode($i['mid']));
if($i['title'])
- $ret['title'] = bbcode($i['title']);
+ $ret['name'] = $i['title'];
$ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME);
if($i['created'] !== $i['edited'])
@@ -342,10 +448,17 @@ class Activity {
$ret['type'] = 'Tombstone';
$ret['formerType'] = self::activity_obj_mapper($i['obj_type']);
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/item/' . urlencode($i['mid']));
+ $actor = self::encode_person($i['author'],false);
+ if($actor)
+ $ret['actor'] = $actor;
+ else
+ return [];
return $ret;
}
$ret['type'] = self::activity_mapper($i['verb']);
+
+
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/activity/' . urlencode($i['mid']));
if($i['title'])
@@ -417,6 +530,10 @@ class Activity {
if(! is_array($i['obj'])) {
$i['obj'] = json_decode($i['obj'],true);
}
+ if($i['obj']['type'] === ACTIVITY_OBJ_PHOTO) {
+ $i['obj']['id'] = $i['id'];
+ }
+
$obj = self::encode_object($i['obj']);
if($obj)
$ret['object'] = $obj;
@@ -540,6 +657,12 @@ class Activity {
}
+
+
+
+
+
+
static function activity_mapper($verb) {
if(strpos($verb,'/') === false) {
@@ -556,6 +679,9 @@ class Activity {
'http://activitystrea.ms/schema/1.0/tag' => 'Add',
'http://activitystrea.ms/schema/1.0/follow' => 'Follow',
'http://activitystrea.ms/schema/1.0/unfollow' => 'Unfollow',
+ 'http://purl.org/zot/activity/attendyes' => 'Accept',
+ 'http://purl.org/zot/activity/attendno' => 'Reject',
+ 'http://purl.org/zot/activity/attendmaybe' => 'TentativeAccept'
];
@@ -582,6 +708,70 @@ class Activity {
}
+
+ static function activity_decode_mapper($verb) {
+
+ $acts = [
+ 'http://activitystrea.ms/schema/1.0/post' => 'Create',
+ 'http://activitystrea.ms/schema/1.0/share' => 'Announce',
+ 'http://activitystrea.ms/schema/1.0/update' => 'Update',
+ 'http://activitystrea.ms/schema/1.0/like' => 'Like',
+ 'http://activitystrea.ms/schema/1.0/favorite' => 'Like',
+ 'http://purl.org/zot/activity/dislike' => 'Dislike',
+ 'http://activitystrea.ms/schema/1.0/tag' => 'Add',
+ 'http://activitystrea.ms/schema/1.0/follow' => 'Follow',
+ 'http://activitystrea.ms/schema/1.0/unfollow' => 'Unfollow',
+ 'http://purl.org/zot/activity/attendyes' => 'Accept',
+ 'http://purl.org/zot/activity/attendno' => 'Reject',
+ 'http://purl.org/zot/activity/attendmaybe' => 'TentativeAccept'
+ ];
+
+
+ foreach($acts as $k => $v) {
+ if($verb === $v) {
+ return $k;
+ }
+ }
+
+ logger('Unmapped activity: ' . $verb);
+ return 'Create';
+
+ }
+
+ static function activity_obj_decode_mapper($obj) {
+
+ $objs = [
+ 'http://activitystrea.ms/schema/1.0/note' => 'Note',
+ 'http://activitystrea.ms/schema/1.0/note' => 'Article',
+ 'http://activitystrea.ms/schema/1.0/comment' => 'Note',
+ 'http://activitystrea.ms/schema/1.0/person' => 'Person',
+ 'http://purl.org/zot/activity/profile' => 'Profile',
+ 'http://activitystrea.ms/schema/1.0/photo' => 'Image',
+ 'http://activitystrea.ms/schema/1.0/profile-photo' => 'Icon',
+ 'http://activitystrea.ms/schema/1.0/event' => 'Event',
+ 'http://activitystrea.ms/schema/1.0/wiki' => 'Document',
+ 'http://purl.org/zot/activity/location' => 'Place',
+ 'http://purl.org/zot/activity/chessgame' => 'Game',
+ 'http://purl.org/zot/activity/tagterm' => 'zot:Tag',
+ 'http://purl.org/zot/activity/thing' => 'Object',
+ 'http://purl.org/zot/activity/file' => 'zot:File',
+ 'http://purl.org/zot/activity/mood' => 'zot:Mood',
+
+ ];
+
+ foreach($objs as $k => $v) {
+ if($obj === $v) {
+ return $k;
+ }
+ }
+
+ logger('Unmapped activity object: ' . $obj);
+ return 'Note';
+ }
+
+
+
+
static function activity_obj_mapper($obj) {
if(strpos($obj,'/') === false) {
@@ -1149,7 +1339,7 @@ class Activity {
}
if($act->obj['type'] === 'Note' && $s['attach']) {
- $s['body'] .= self::bb_attach($s['attach']);
+ $s['body'] .= self::bb_attach($s['attach'],$s['body']);
}
// we will need a hook here to extract magnet links e.g. peertube
@@ -1230,21 +1420,39 @@ class Activity {
}
+ static function get_actor_bbmention($id) {
- static function decode_note($act) {
+ $x = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_hash = '%s' or hubloc_id_url = '%s' limit 1",
+ dbesc($id),
+ dbesc($id)
+ );
- $s = [];
+ if($x) {
+ return sprintf('@[zrl=%s]%s[/zrl]',$x[0]['xchan_url'],$x[0]['xchan_name']);
+ }
+ return '@{' . $id . '}';
+ }
- $content = self::get_content($act->obj);
+ static function decode_note($act) {
+
+ $response_activity = false;
+
+ $s = [];
+ if(is_array($act->obj)) {
+ $content = self::get_content($act->obj);
+ }
+
$s['owner_xchan'] = $act->actor['id'];
$s['author_xchan'] = $act->actor['id'];
- $s['mid'] = $act->id;
- $s['parent_mid'] = $act->parent_id;
+ // ensure we store the original actor
+ self::actor_store($act->actor['id'],$act->actor);
+ $s['mid'] = $act->obj['id'];
+ $s['parent_mid'] = $act->parent_id;
if($act->data['published']) {
$s['created'] = datetime_convert('UTC','UTC',$act->data['published']);
@@ -1259,105 +1467,325 @@ class Activity {
$s['edited'] = datetime_convert('UTC','UTC',$act->obj['updated']);
}
- if(! $s['created'])
- $s['created'] = datetime_convert();
- if(! $s['edited'])
- $s['edited'] = $s['created'];
+ if(in_array($act->type, [ 'Like', 'Dislike', 'Flag', 'Block', 'Announce', 'Accept', 'Reject', 'TentativeAccept' ])) {
- if(in_array($act->type,['Announce'])) {
- $root_content = self::get_content($act->raw);
+ $response_activity = true;
- $s['title'] = self::bb_content($root_content,'name');
- $s['summary'] = self::bb_content($root_content,'summary');
- $s['body'] = (self::bb_content($root_content,'bbcode') ? : self::bb_content($root_content,'content'));
+ $s['mid'] = $act->id;
+ $s['parent_mid'] = $act->obj['id'];
- if(strpos($s['body'],'[share') === false) {
+ // over-ride the object timestamp with the activity
- // @fixme - error check and set defaults
+ if($act->data['published']) {
+ $s['created'] = datetime_convert('UTC','UTC',$act->data['published']);
+ }
- $name = urlencode($act->obj['actor']['name']);
- $profile = $act->obj['actor']['id'];
- $photo = $act->obj['icon']['url'];
+ if($act->data['updated']) {
+ $s['edited'] = datetime_convert('UTC','UTC',$act->data['updated']);
+ }
+
+ $obj_actor = ((isset($act->obj['actor'])) ? $act->obj['actor'] : $act->get_actor('attributedTo', $act->obj));
+ // ensure we store the original actor
+ self::actor_store($obj_actor['id'],$obj_actor);
- $s['body'] .= "\r\n[share author='" . $name .
- "' profile='" . $profile .
- "' avatar='" . $photo .
- "' link='" . $act->obj['id'] .
- "' auth='" . ((is_matrix_url($act->obj['id'])) ? 'true' : 'false' ) .
- "' posted='" . $act->obj['published'] .
- "' message_id='" . $act->obj['id'] .
- "']";
+ $mention = self::get_actor_bbmention($obj_actor['id']);
+
+ if($act->type === 'Like') {
+ $content['content'] = sprintf( t('Likes %1$s\'s %2$s'),$mention,$act->obj['type']) . "\n\n" . $content['content'];
+ }
+ if($act->type === 'Dislike') {
+ $content['content'] = sprintf( t('Doesn\'t like %1$s\'s %2$s'),$mention,$act->obj['type']) . "\n\n" . $content['content'];
+ }
+ if($act->type === 'Accept' && $act->obj['type'] === 'Event' ) {
+ $content['content'] = sprintf( t('Will attend %1$s\'s %2$s'),$mention,$act->obj['type']) . "\n\n" . $content['content'];
+ }
+ if($act->type === 'Reject' && $act->obj['type'] === 'Event' ) {
+ $content['content'] = sprintf( t('Will not attend %1$s\'s %2$s'),$mention,$act->obj['type']) . "\n\n" . $content['content'];
+ }
+ if($act->type === 'TentativeAccept' && $act->obj['type'] === 'Event' ) {
+ $content['content'] = sprintf( t('May attend %1$s\'s %2$s'),$mention,$act->obj['type']) . "\n\n" . $content['content'];
+ }
+ if($act->type === 'Announce') {
+ $content['content'] = sprintf( t('&#x1f501; Repeated %1$s\'s %2$s'), $mention, $act->obj['type']);
}
}
- else {
- $s['title'] = self::bb_content($content,'name');
- $s['summary'] = self::bb_content($content,'summary');
- $s['body'] = (self::bb_content($content,'bbcode') ? : self::bb_content($content,'content'));
- }
- $s['verb'] = self::activity_mapper($act->type);
+ if(! $s['created'])
+ $s['created'] = datetime_convert();
+
+ if(! $s['edited'])
+ $s['edited'] = $s['created'];
+
+ $s['title'] = self::bb_content($content,'name');
+ $s['summary'] = self::bb_content($content,'summary');
+ $s['body'] = ((self::bb_content($content,'bbcode') && (! $response_activity)) ? self::bb_content($content,'bbcode') : self::bb_content($content,'content'));
- if($act->type === 'Tombstone') {
+ $s['verb'] = self::activity_decode_mapper($act->type);
+
+
+ if($act->type === 'Tombstone' || ($act->type === 'Create' && $act->obj['type'] === 'Tombstone')) {
$s['item_deleted'] = 1;
}
- $s['obj_type'] = self::activity_obj_mapper($act->obj['type']);
- $s['obj'] = $act->obj;
+ $s['obj_type'] = self::activity_obj_decode_mapper($act->obj['type']);
+ if($s['obj_type'] === ACTIVITY_OBJ_NOTE && $s['mid'] !== $s['parent_mid']) {
+ $s['obj_type'] = ACTIVITY_OBJ_COMMENT;
+ }
+
+ if($act->obj['type'] === 'Event') {
+ $s['obj'] = [];
+ $s['obj']['asld'] = $act->obj;
+ $s['obj']['type'] = ACTIVITY_OBJ_EVENT;
+ $s['obj']['id'] = $act->obj['id'];
+ $s['obj']['title'] = $act->obj['summary'];
+
+ if(strpos($act->obj['startTime'],'Z'))
+ $s['obj']['adjust'] = true;
+ else
+ $s['obj']['adjust'] = false;
+
+ $s['obj']['dtstart'] = datetime_convert('UTC','UTC',$act->obj['startTime']);
+ if($act->obj['endTime'])
+ $s['obj']['dtend'] = datetime_convert('UTC','UTC',$act->obj['endTime']);
+ else
+ $s['obj']['nofinish'] = true;
+ $s['obj']['description'] = $act->obj['content'];
+
+ if(array_path_exists('location/content',$act->obj))
+ $s['obj']['location'] = $act->obj['location']['content'];
+
+ }
+ else {
+ $s['obj'] = $act->obj;
+ }
$instrument = $act->get_property_obj('instrument');
- if(! $instrument)
+ if((! $instrument) && (! $response_activity)) {
$instrument = $act->get_property_obj('instrument',$act->obj);
+ }
if($instrument && array_key_exists('type',$instrument)
&& $instrument['type'] === 'Service' && array_key_exists('name',$instrument)) {
$s['app'] = escape_tags($instrument['name']);
}
- $a = self::decode_taxonomy($act->obj);
- if($a) {
- $s['term'] = $a;
+
+ if(! $response_activity) {
+ $a = self::decode_taxonomy($act->obj);
+ if($a) {
+ $s['term'] = $a;
+ foreach($a as $b) {
+ if($b['ttype'] === TERM_EMOJI) {
+ $s['title'] = str_replace($b['term'],'[img=16x16]' . $b['url'] . '[/img]',$s['title']);
+ $s['summary'] = str_replace($b['term'],'[img=16x16]' . $b['url'] . '[/img]',$s['summary']);
+ $s['body'] = str_replace($b['term'],'[img=16x16]' . $b['url'] . '[/img]',$s['body']);
+ }
+ }
+ }
+
+ $a = self::decode_attachment($act->obj);
+ if($a) {
+ $s['attach'] = $a;
+ }
}
- $a = self::decode_attachment($act->obj);
- if($a) {
- $s['attach'] = $a;
+ if($act->obj['type'] === 'Note' && $s['attach']) {
+ $s['body'] .= self::bb_attach($s['attach'],$s['body']);
}
+
// we will need a hook here to extract magnet links e.g. peertube
// right now just link to the largest mp4 we find that will fit in our
// standard content region
- if($act->obj['type'] === 'Video') {
+ if(! $response_activity) {
+ if($act->obj['type'] === 'Video') {
- $vtypes = [
- 'video/mp4',
- 'video/ogg',
- 'video/webm'
- ];
+ $vtypes = [
+ 'video/mp4',
+ 'video/ogg',
+ 'video/webm'
+ ];
- $mps = [];
- if(array_key_exists('url',$act->obj) && is_array($act->obj['url'])) {
- foreach($act->obj['url'] as $vurl) {
- if(in_array($vurl['mimeType'], $vtypes)) {
- if(! array_key_exists('width',$vurl)) {
- $vurl['width'] = 0;
+ $mps = [];
+ $ptr = null;
+
+ if(array_key_exists('url',$act->obj)) {
+ if(is_array($act->obj['url'])) {
+ if(array_key_exists(0,$act->obj['url'])) {
+ $ptr = $act->obj['url'];
}
- $mps[] = $vurl;
+ else {
+ $ptr = [ $act->obj['url'] ];
+ }
+ foreach($ptr as $vurl) {
+ // peertube uses the non-standard element name 'mimeType' here
+ if(array_key_exists('mimeType',$vurl)) {
+ if(in_array($vurl['mimeType'], $vtypes)) {
+ if(! array_key_exists('width',$vurl)) {
+ $vurl['width'] = 0;
+ }
+ $mps[] = $vurl;
+ }
+ }
+ elseif(array_key_exists('mediaType',$vurl)) {
+ if(in_array($vurl['mediaType'], $vtypes)) {
+ if(! array_key_exists('width',$vurl)) {
+ $vurl['width'] = 0;
+ }
+ $mps[] = $vurl;
+ }
+ }
+ }
+ }
+ if($mps) {
+ usort($mps,[ __CLASS__, 'vid_sort' ]);
+ foreach($mps as $m) {
+ if(intval($m['width']) < 500 && self::media_not_in_body($m['href'],$s['body'])) {
+ $s['body'] .= "\n\n" . '[video]' . $m['href'] . '[/video]';
+ break;
+ }
+ }
+ }
+ elseif(is_string($act->obj['url']) && self::media_not_in_body($act->obj['url'],$s['body'])) {
+ $s['body'] .= "\n\n" . '[video]' . $act->obj['url'] . '[/video]';
}
}
}
- if($mps) {
- usort($mps,'as_vid_sort');
- foreach($mps as $m) {
- if(intval($m['width']) < 500) {
- $s['body'] .= "\n\n" . '[video]' . $m['href'] . '[/video]';
- break;
+
+ if($act->obj['type'] === 'Audio') {
+
+ $atypes = [
+ 'audio/mpeg',
+ 'audio/ogg',
+ 'audio/wav'
+ ];
+
+ $ptr = null;
+
+ if(array_key_exists('url',$act->obj)) {
+ if(is_array($act->obj['url'])) {
+ if(array_key_exists(0,$act->obj['url'])) {
+ $ptr = $act->obj['url'];
+ }
+ else {
+ $ptr = [ $act->obj['url'] ];
+ }
+ foreach($ptr as $vurl) {
+ if(in_array($vurl['mediaType'], $atypes) && self::media_not_in_body($vurl['href'],$s['body'])) {
+ $s['body'] .= "\n\n" . '[audio]' . $vurl['href'] . '[/audio]';
+ break;
+ }
+ }
+ }
+ elseif(is_string($act->obj['url']) && self::media_not_in_body($act->obj['url'],$s['body'])) {
+ $s['body'] .= "\n\n" . '[audio]' . $act->obj['url'] . '[/audio]';
+ }
+ }
+
+ }
+
+ // avoid double images from hubzilla to zap/osada
+
+ if($act->obj['type'] === 'Image' && strpos($s['body'],'zrl=') === false) {
+
+ $ptr = null;
+
+ if(array_key_exists('url',$act->obj)) {
+ if(is_array($act->obj['url'])) {
+ if(array_key_exists(0,$act->obj['url'])) {
+ $ptr = $act->obj['url'];
+ }
+ else {
+ $ptr = [ $act->obj['url'] ];
+ }
+ foreach($ptr as $vurl) {
+ if(strpos($s['body'],$vurl['href']) === false) {
+ $s['body'] .= "\n\n" . '[zmg]' . $vurl['href'] . '[/zmg]';
+ break;
+ }
+ }
+ }
+ elseif(is_string($act->obj['url'])) {
+ if(strpos($s['body'],$act->obj['url']) === false) {
+ $s['body'] .= "\n\n" . '[zmg]' . $act->obj['url'] . '[/zmg]';
+ }
+ }
+ }
+ }
+
+
+ if($act->obj['type'] === 'Page' && ! $s['body']) {
+
+ $ptr = null;
+ $purl = EMPTY_STR;
+
+ if(array_key_exists('url',$act->obj)) {
+ if(is_array($act->obj['url'])) {
+ if(array_key_exists(0,$act->obj['url'])) {
+ $ptr = $act->obj['url'];
+ }
+ else {
+ $ptr = [ $act->obj['url'] ];
+ }
+ foreach($ptr as $vurl) {
+ if(array_key_exists('mediaType',$vurl) && $vurl['mediaType'] === 'text/html') {
+ $purl = $vurl['href'];
+ break;
+ }
+ elseif(array_key_exists('mimeType',$vurl) && $vurl['mimeType'] === 'text/html') {
+ $purl = $vurl['href'];
+ break;
+ }
+ }
+ }
+ elseif(is_string($act->obj['url'])) {
+ $purl = $act->obj['url'];
+ }
+ if($purl) {
+ $li = z_fetch_url(z_root() . '/linkinfo?binurl=' . bin2hex($purl));
+ if($li['success'] && $li['body']) {
+ $s['body'] .= "\n" . $li['body'];
+ }
+ else {
+ $s['body'] .= "\n\n" . $purl;
+ }
}
}
}
}
+
+
+ if(in_array($act->obj['type'],[ 'Note','Article','Page' ])) {
+ $ptr = null;
+
+ if(array_key_exists('url',$act->obj)) {
+ if(is_array($act->obj['url'])) {
+ if(array_key_exists(0,$act->obj['url'])) {
+ $ptr = $act->obj['url'];
+ }
+ else {
+ $ptr = [ $act->obj['url'] ];
+ }
+ foreach($ptr as $vurl) {
+ if(array_key_exists('mediaType',$vurl) && $vurl['mediaType'] === 'text/html') {
+ $s['plink'] = $vurl['href'];
+ break;
+ }
+ }
+ }
+ elseif(is_string($act->obj['url'])) {
+ $s['plink'] = $act->obj['url'];
+ }
+ }
+ }
+
+ if(! $s['plink']) {
+ $s['plink'] = $s['mid'];
+ }
+
if($act->recips && (! in_array(ACTIVITY_PUBLIC_INBOX,$act->recips)))
$s['item_private'] = 1;
@@ -1371,8 +1799,6 @@ class Activity {
}
-
-
static function announce_note($channel,$observer_hash,$act) {
$s = [];
@@ -1464,7 +1890,7 @@ class Activity {
$body .= self::bb_content($content,'content');
if($act->obj['type'] === 'Note' && $s['attach']) {
- $body .= self::bb_attach($s['attach']);
+ $body .= self::bb_attach($s['attach'],$body);
}
$body .= "[/share]";
@@ -1642,19 +2068,26 @@ class Activity {
}
- static function bb_attach($attach) {
+
+ static function bb_attach($attach,$body) {
$ret = false;
foreach($attach as $a) {
if(strpos($a['type'],'image') !== false) {
- $ret .= "\n\n" . '[img]' . $a['href'] . '[/img]';
+ if(self::media_not_in_body($a['href'],$body)) {
+ $ret .= "\n\n" . '[img]' . $a['href'] . '[/img]';
+ }
}
if(array_key_exists('type',$a) && strpos($a['type'], 'video') === 0) {
- $ret .= "\n\n" . '[video]' . $a['href'] . '[/video]';
+ if(self::media_not_in_body($a['href'],$body)) {
+ $ret .= "\n\n" . '[video]' . $a['href'] . '[/video]';
+ }
}
if(array_key_exists('type',$a) && strpos($a['type'], 'audio') === 0) {
- $ret .= "\n\n" . '[audio]' . $a['href'] . '[/audio]';
+ if(self::media_not_in_body($a['href'],$body)) {
+ $ret .= "\n\n" . '[audio]' . $a['href'] . '[/audio]';
+ }
}
}
@@ -1662,16 +2095,31 @@ class Activity {
}
+ // check for the existence of existing media link in body
+
+ static function media_not_in_body($s,$body) {
+
+ if((strpos($body,']' . $s . '[/img]') === false) &&
+ (strpos($body,']' . $s . '[/zmg]') === false) &&
+ (strpos($body,']' . $s . '[/video]') === false) &&
+ (strpos($body,']' . $s . '[/audio]') === false)) {
+ return true;
+ }
+ return false;
+ }
+
static function bb_content($content,$field) {
require_once('include/html2bbcode.php');
-
+ require_once('include/event.php');
$ret = false;
if(is_array($content[$field])) {
foreach($content[$field] as $k => $v) {
- $ret .= '[language=' . $k . ']' . html2bbcode($v) . '[/language]';
+ $ret .= html2bbcode($v);
+ // save this for auto-translate or dynamic filtering
+ // $ret .= '[language=' . $k . ']' . html2bbcode($v) . '[/language]';
}
}
else {
@@ -1682,6 +2130,9 @@ class Activity {
$ret = html2bbcode($content[$field]);
}
}
+ if($field === 'content' && $content['event'] && (! strpos($ret,'[event'))) {
+ $ret .= format_event_bbcode($content['event']);
+ }
return $ret;
}
@@ -1690,21 +2141,52 @@ class Activity {
static function get_content($act) {
$content = [];
- if (! $act) {
+ $event = null;
+
+ if ((! $act) || (! is_array($act))) {
return $content;
}
+ if($act['type'] === 'Event') {
+ $adjust = false;
+ $event = [];
+ $event['event_hash'] = $act['id'];
+ if(array_key_exists('startTime',$act) && strpos($act['startTime'],-1,1) === 'Z') {
+ $adjust = true;
+ $event['adjust'] = 1;
+ $event['dtstart'] = datetime_convert('UTC','UTC',$event['startTime'] . (($adjust) ? '' : 'Z'));
+ }
+ if(array_key_exists('endTime',$act)) {
+ $event['dtend'] = datetime_convert('UTC','UTC',$event['endTime'] . (($adjust) ? '' : 'Z'));
+ }
+ else {
+ $event['nofinish'] = true;
+ }
+ }
+
foreach ([ 'name', 'summary', 'content' ] as $a) {
if (($x = self::get_textfield($act,$a)) !== false) {
$content[$a] = $x;
}
}
+
+ if($event) {
+ $event['summary'] = html2bbcode($content['summary']);
+ $event['description'] = html2bbcode($content['content']);
+ if($event['summary'] && $event['dtstart']) {
+ $content['event'] = $event;
+ }
+ }
+
if (array_key_exists('source',$act) && array_key_exists('mediaType',$act['source'])) {
if ($act['source']['mediaType'] === 'text/bbcode') {
$content['bbcode'] = purify_html($act['source']['content']);
}
}
+
+
+
return $content;
}
@@ -1722,4 +2204,6 @@ class Activity {
}
return $content;
}
+
+
} \ No newline at end of file
diff --git a/Zotlabs/Lib/ActivityStreams.php b/Zotlabs/Lib/ActivityStreams.php
index 49978031e..a357b6d69 100644
--- a/Zotlabs/Lib/ActivityStreams.php
+++ b/Zotlabs/Lib/ActivityStreams.php
@@ -263,24 +263,8 @@ class ActivityStreams {
return self::fetch($url);
}
- static function fetch($url) {
- $redirects = 0;
- if(! check_siteallowed($url)) {
- logger('blacklisted: ' . $url);
- return null;
- }
- logger('fetch: ' . $url, LOGGER_DEBUG);
- $x = z_fetch_url($url, true, $redirects,
- [ 'headers' => [ 'Accept: application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"' ]]);
- if($x['success']) {
- $y = json_decode($x['body'],true);
- logger('returned: ' . json_encode($y,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
- return json_decode($x['body'], true);
- }
- else {
- logger('fetch failed: ' . $url);
- }
- return null;
+ static function fetch($url,$channel = null) {
+ return Activity::fetch($url,$channel);
}
static function is_an_actor($s) {
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
index b13658be2..56283ff76 100644
--- a/Zotlabs/Lib/Apps.php
+++ b/Zotlabs/Lib/Apps.php
@@ -1,32 +1,34 @@
-<?php /** @file */
+<?php
namespace Zotlabs\Lib;
-/**
- * Apps
- *
- */
-
require_once('include/plugin.php');
require_once('include/channel.php');
-
+/**
+ * @brief Apps class.
+ *
+ */
class Apps {
static public $available_apps = null;
static public $installed_apps = null;
-
static public $base_apps = null;
-
-
+ /**
+ * @brief
+ *
+ * @param boolean $translate (optional) default true
+ * @return array
+ */
static public function get_system_apps($translate = true) {
+ $ret = [];
- $ret = array();
if(is_dir('apps'))
$files = glob('apps/*.apd');
else
$files = glob('app/*.apd');
+
if($files) {
foreach($files as $f) {
$x = self::parse_app_description($f,$translate);
@@ -50,14 +52,17 @@ class Apps {
}
}
- call_hooks('get_system_apps',$ret);
+ /**
+ * @hooks get_system_apps
+ * Hook to manipulate the system apps array.
+ */
+ call_hooks('get_system_apps', $ret);
return $ret;
-
}
static public function get_base_apps() {
- return get_config('system','base_apps',[
+ $x = get_config('system','base_apps',[
'Connections',
'Network',
'Settings',
@@ -72,6 +77,14 @@ class Apps {
'Mail',
'Profile Photo'
]);
+
+ /**
+ * @hooks get_base_apps
+ * Hook to manipulate the base apps array.
+ */
+ call_hooks('get_base_apps', $x);
+
+ return $x;
}
static public function import_system_apps() {
@@ -79,7 +92,7 @@ class Apps {
return;
self::$base_apps = self::get_base_apps();
-
+
$apps = self::get_system_apps(false);
self::$available_apps = q("select * from app where app_channel = 0");
@@ -104,6 +117,7 @@ class Apps {
// $id will be boolean true or false to install an app, or an integer id to update an existing app
if($id === false)
continue;
+
if($id !== true) {
// if we already installed this app, but it changed, preserve any categories we created
$s = EMPTY_STR;
@@ -124,16 +138,17 @@ class Apps {
$app['guid'] = hash('whirlpool',$app['name']);
$app['system'] = 1;
self::app_install(local_channel(),$app);
-
}
- }
+ }
}
/**
- * Install the system app if no system apps have been installed, or if a new system app
+ * Install the system app if no system apps have been installed, or if a new system app
* is discovered, or if the version of a system app changes.
+ *
+ * @param array $app
+ * @return boolean|int
*/
-
static public function check_install_system_app($app) {
if((! is_array(self::$available_apps)) || (! count(self::$available_apps))) {
return true;
@@ -157,17 +172,16 @@ class Apps {
return $notfound;
}
-
/**
- * Install the system app if no system apps have been installed, or if a new system app
- * is discovered, or if the version of a system app changes.
+ * Install the personal app if no personal apps have been installed, or if a new personal app
+ * is discovered, or if the version of a personal app changes.
+ *
+ * @param array $app
+ * @return boolean|int
*/
-
-
-
static public function check_install_personal_app($app) {
$installed = false;
- foreach(self::$installed_apps as $iapp) {
+ foreach(self::$installed_apps as $iapp) {
if($iapp['app_id'] == hash('whirlpool',$app['name'])) {
$installed = true;
if(($iapp['app_version'] != $app['version'])
@@ -187,19 +201,24 @@ class Apps {
return strcasecmp($a['name'],$b['name']);
}
-
- static public function parse_app_description($f,$translate = true) {
-
- $ret = array();
+ /**
+ * @brief Parse app description.
+ *
+ * @param string $f filename
+ * @param boolean $translate (optional) default true
+ * @return boolean|array
+ */
+ static public function parse_app_description($f, $translate = true) {
+ $ret = [];
+ $matches = [];
$baseurl = z_root();
- $channel = \App::get_channel();
- $address = (($channel) ? $channel['channel_address'] : '');
-
+ //$channel = \App::get_channel();
+ //$address = (($channel) ? $channel['channel_address'] : '');
+
//future expansion
$observer = \App::get_observer();
-
$lines = @file($f);
if($lines) {
@@ -208,7 +227,7 @@ class Apps {
$ret[$matches[1]] = trim($matches[2]);
}
}
- }
+ }
if(! $ret['photo'])
$ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
@@ -290,15 +309,18 @@ class Apps {
if($ret) {
if($translate)
self::translate_system_apps($ret);
+
return $ret;
}
+
return false;
- }
+ }
static public function translate_system_apps(&$arr) {
$apps = array(
'Apps' => t('Apps'),
+ 'Affinity Tool' => t('Affinity Tool'),
'Articles' => t('Articles'),
'Cards' => t('Cards'),
'Admin' => t('Site Admin'),
@@ -309,17 +331,17 @@ class Apps {
'Remote Diagnostics' => t('Remote Diagnostics'),
'Suggest Channels' => t('Suggest Channels'),
'Login' => t('Login'),
- 'Channel Manager' => t('Channel Manager'),
+ 'Channel Manager' => t('Channel Manager'),
'Network' => t('Stream'),
'Settings' => t('Settings'),
'Files' => t('Files'),
'Webpages' => t('Webpages'),
'Wiki' => t('Wiki'),
- 'Channel Home' => t('Channel Home'),
+ 'Channel Home' => t('Channel Home'),
'View Profile' => t('View Profile'),
- 'Photos' => t('Photos'),
- 'Events' => t('Events'),
- 'Directory' => t('Directory'),
+ 'Photos' => t('Photos'),
+ 'Events' => t('Events'),
+ 'Directory' => t('Directory'),
'Help' => t('Help'),
'Mail' => t('Mail'),
'Mood' => t('Mood'),
@@ -364,30 +386,31 @@ class Apps {
if(array_key_exists($arr[$x]['name'],$apps)) {
$arr[$x]['name'] = $apps[$arr[$x]['name']];
} else {
- // Try to guess by app name if not in list
- $arr[$x]['name'] = t(trim($arr[$x]['name']));
+ // Try to guess by app name if not in list
+ $arr[$x]['name'] = t(trim($arr[$x]['name']));
}
}
}
-
}
-
- // papp is a portable app
-
- static public function app_render($papp,$mode = 'view') {
-
- /**
- * modes:
- * view: normal mode for viewing an app via bbcode from a conversation or page
- * provides install/update button if you're logged in locally
- * install: like view but does not display app-bin options if they are present
- * list: normal mode for viewing an app on the app page
- * no buttons are shown
- * edit: viewing the app page in editing mode provides a delete button
- * nav: render apps for app-bin
- */
-
+ /**
+ * @brief
+ *
+ * @param array $papp
+ * papp is a portable app
+ * @param string $mode (optional) default 'view'
+ * Render modes:
+ * * \b view: normal mode for viewing an app via bbcode from a conversation or page
+ * provides install/update button if you're logged in locally
+ * * \b install: like view but does not display app-bin options if they are present
+ * * \b list: normal mode for viewing an app on the app page
+ * no buttons are shown
+ * * \b edit: viewing the app page in editing mode provides a delete button
+ * * \b nav: render apps for app-bin
+ *
+ * @return void|string Parsed HTML
+ */
+ static public function app_render($papp, $mode = 'view') {
$installed = false;
if(! $papp)
@@ -412,7 +435,7 @@ class Apps {
$sys = get_sys_channel();
$view_channel = $sys['channel_id'];
}
- self::app_macros($view_channel,$papp);
+ self::app_macros($view_channel,$papp);
}
if(strpos($papp['url'], ',')) {
@@ -425,7 +448,6 @@ class Apps {
$papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
-
foreach($papp as $k => $v) {
if(strpos($v,'http') === 0 && $k != 'papp') {
if(! (local_channel() && strpos($v,z_root()) === 0)) {
@@ -507,7 +529,7 @@ class Apps {
if($x) {
$hosturl = $x['scheme'] . '://' . $x['host'] . '/';
}
- }
+ }
}
$install_action = (($installed) ? t('Update') : t('Install'));
@@ -590,8 +612,14 @@ class Apps {
return false;
}
-
- static public function can_delete($uid,$app) {
+ /**
+ * @brief
+ *
+ * @param mixed $uid If not set return false, otherwise no influence
+ * @param array $app
+ * @return boolean
+ */
+ static public function can_delete($uid, $app) {
if(! $uid) {
return false;
}
@@ -599,7 +627,7 @@ class Apps {
$base_apps = self::get_base_apps();
if($base_apps) {
foreach($base_apps as $b) {
- if($app['guid'] === hash('whirlpool',$b)) {
+ if($app['guid'] === hash('whirlpool', $b)) {
return false;
}
}
@@ -611,7 +639,6 @@ class Apps {
static public function app_destroy($uid,$app) {
if($uid && $app['guid']) {
-
$x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
@@ -620,7 +647,7 @@ class Apps {
if(! intval($x[0]['app_deleted'])) {
$x[0]['app_deleted'] = 1;
if(self::can_delete($uid,$app)) {
- $r = q("delete from app where app_id = '%s' and app_channel = %d",
+ q("delete from app where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -628,10 +655,15 @@ class Apps {
intval(TERM_OBJ_APP),
intval($x[0]['id'])
);
+ /**
+ * @hooks app_destroy
+ * Called after app entry got removed from database
+ * and provide app array from database.
+ */
call_hooks('app_destroy', $x[0]);
}
else {
- $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
+ q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -645,22 +677,23 @@ class Apps {
}
}
}
-
}
- static public function app_undestroy($uid,$app) {
-
- // undelete a system app
-
+ /**
+ * @brief Undelete a system app.
+ *
+ * @param int $uid
+ * @param array $app
+ */
+ static public function app_undestroy($uid, $app) {
if($uid && $app['guid']) {
-
$x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
);
if($x) {
if($x[0]['app_system']) {
- $r = q("update app set app_deleted = 0 where app_id = '%s' and app_channel = %d",
+ q("update app set app_deleted = 0 where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -669,7 +702,15 @@ class Apps {
}
}
- static public function app_feature($uid,$app,$term) {
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param array $app
+ * @param string $term
+ * @return void
+ */
+ static public function app_feature($uid, $app, $term) {
$r = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
@@ -693,23 +734,37 @@ class Apps {
}
}
- static public function app_installed($uid,$app,$bypass_filter=false) {
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param array $app
+ * @param boolean $bypass_filter (optional) default false
+ * @return boolean
+ */
+ static public function app_installed($uid, $app, $bypass_filter = false) {
$r = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc((array_key_exists('guid',$app)) ? $app['guid'] : ''),
+ dbesc((array_key_exists('guid', $app)) ? $app['guid'] : ''),
intval($uid)
);
- if (!$bypass_filter) {
+ if(!$bypass_filter) {
$filter_arr = [
- 'uid'=>$uid,
- 'app'=>$app,
- 'installed'=>$r
+ 'uid' => $uid,
+ 'app' => $app,
+ 'installed' => $r
];
- call_hooks('app_installed_filter',$filter_arr);
+ /**
+ * @hooks app_installed_filter
+ * * \e int \b uid
+ * * \e array \b app
+ * * \e mixed \b installed - return value
+ */
+ call_hooks('app_installed_filter', $filter_arr);
$r = $filter_arr['installed'];
}
- return(($r) ? true : false);
+ return(($r) ? true : false);
}
@@ -725,11 +780,17 @@ class Apps {
'app'=>$app,
'installed'=>$r
];
- call_hooks('addon_app_installed_filter',$filter_arr);
+ /**
+ * @hooks addon_app_installed_filter
+ * * \e int \b uid
+ * * \e array \b app
+ * * \e mixed \b installed - return value
+ */
+ call_hooks('addon_app_installed_filter', $filter_arr);
$r = $filter_arr['installed'];
}
- return(($r) ? true : false);
+ return(($r) ? true : false);
}
static public function system_app_installed($uid,$app,$bypass_filter=false) {
@@ -744,28 +805,39 @@ class Apps {
'app'=>$app,
'installed'=>$r
];
- call_hooks('system_app_installed_filter',$filter_arr);
+ /**
+ * @hooks system_app_installed_filter
+ * * \e int \b uid
+ * * \e array \b app
+ * * \e mixed \b installed - return value
+ */
+ call_hooks('system_app_installed_filter', $filter_arr);
$r = $filter_arr['installed'];
}
- return(($r) ? true : false);
+ return(($r) ? true : false);
}
-
-
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param boolean $deleted
+ * @param array $cats
+ * @return boolean|array
+ */
static public function app_list($uid, $deleted = false, $cats = []) {
- if($deleted)
- $sql_extra = "";
+ if($deleted)
+ $sql_extra = '';
else
- $sql_extra = " and app_deleted = 0 ";
+ $sql_extra = ' and app_deleted = 0 ';
if($cats) {
-
- $cat_sql_extra = " and ( ";
+ $cat_sql_extra = ' and ( ';
foreach($cats as $cat) {
if(strpos($cat_sql_extra, 'term'))
- $cat_sql_extra .= "or ";
+ $cat_sql_extra .= 'or ';
$cat_sql_extra .= "term = '" . dbesc($cat) . "' ";
}
@@ -777,11 +849,13 @@ class Apps {
);
if(! $r)
return $r;
- $sql_extra .= " and app.id in ( ";
+
+ $sql_extra .= ' and app.id in ( ';
$s = '';
foreach($r as $rr) {
if($s)
$s .= ',';
+
$s .= intval($rr['oid']);
}
$sql_extra .= $s . ') ';
@@ -792,12 +866,26 @@ class Apps {
);
if($r) {
- $hookinfo = Array('uid'=>$uid,'deleted'=>$deleted,'cats'=>$cats,'apps'=>$r);
- call_hooks('app_list',$hookinfo);
+ $hookinfo = [
+ 'uid' => $uid,
+ 'deleted' => $deleted,
+ 'cats' => $cats,
+ 'apps' => $r,
+ ];
+ /**
+ * @hooks app_list
+ * * \e int \b uid
+ * * \e boolean \b deleted
+ * * \e array \b cats
+ * * \e array \b apps - return value
+ */
+ call_hooks('app_list', $hookinfo);
$r = $hookinfo['apps'];
- for($x = 0; $x < count($r); $x ++) {
+
+ for($x = 0; $x < count($r); $x++) {
if(! $r[$x]['app_system'])
$r[$x]['type'] = 'personal';
+
$r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
intval(TERM_OBJ_APP),
intval($r[$x]['id'])
@@ -805,15 +893,17 @@ class Apps {
}
}
- return($r);
+ return $r;
}
- static public function app_order($uid,$apps) {
+ static public function app_order($uid,$apps,$menu) {
if(! $apps)
return $apps;
- $x = (($uid) ? get_pconfig($uid,'system','app_order') : get_config('system','app_order'));
+ $conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order');
+
+ $x = (($uid) ? get_pconfig($uid,'system',$conf) : get_config('system',$conf));
if(($x) && (! is_array($x))) {
$y = explode(',',$x);
$y = array_map('trim',$y);
@@ -835,13 +925,14 @@ class Apps {
$ret[] = $ap;
}
}
- return $ret;
+ return $ret;
}
static function find_app_in_array($name,$arr) {
if(! $arr)
return false;
+
foreach($arr as $x) {
if($x['name'] === $name) {
return $x;
@@ -850,25 +941,38 @@ class Apps {
return false;
}
- static function moveup($uid,$guid) {
- $syslist = array();
- $list = self::app_list($uid, false, ['nav_featured_app', 'nav_pinned_app']);
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param int $guid
+ * @param string $menu
+ * @return void
+ */
+ static function moveup($uid, $guid, $menu) {
+ $syslist = [];
+
+ $conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order');
+
+ $list = self::app_list($uid, false, [ $menu ]);
if($list) {
foreach($list as $li) {
- $syslist[] = self::app_encode($li);
+ $papp = self::app_encode($li);
+ if($menu !== 'nav_pinned_app' && strpos($papp['categories'],'nav_pinned_app') !== false)
+ continue;
+
+ $syslist[] = $papp;
}
}
self::translate_system_apps($syslist);
usort($syslist,'self::app_name_compare');
- $syslist = self::app_order($uid,$syslist);
+ $syslist = self::app_order($uid,$syslist,$menu);
if(! $syslist)
return;
- $newlist = [];
-
foreach($syslist as $k => $li) {
if($li['guid'] === $guid) {
$position = $k;
@@ -877,6 +981,7 @@ class Apps {
}
if(! $position)
return;
+
$dest_position = $position - 1;
$saved = $syslist[$dest_position];
$syslist[$dest_position] = $syslist[$position];
@@ -887,29 +992,41 @@ class Apps {
$narr[] = $x['name'];
}
- set_pconfig($uid,'system','app_order',implode(',',$narr));
-
+ set_pconfig($uid,'system',$conf,implode(',',$narr));
}
- static function movedown($uid,$guid) {
- $syslist = array();
- $list = self::app_list($uid, false, ['nav_featured_app', 'nav_pinned_app']);
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param int $guid
+ * @param string $menu
+ * @return void
+ */
+ static function movedown($uid, $guid, $menu) {
+ $syslist = [];
+
+ $conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order');
+
+ $list = self::app_list($uid, false, [ $menu ]);
if($list) {
foreach($list as $li) {
- $syslist[] = self::app_encode($li);
+ $papp = self::app_encode($li);
+ if($menu !== 'nav_pinned_app' && strpos($papp['categories'],'nav_pinned_app') !== false)
+ continue;
+
+ $syslist[] = $papp;
}
}
self::translate_system_apps($syslist);
usort($syslist,'self::app_name_compare');
- $syslist = self::app_order($uid,$syslist);
+ $syslist = self::app_order($uid,$syslist,$menu);
if(! $syslist)
return;
- $newlist = [];
-
foreach($syslist as $k => $li) {
if($li['guid'] === $guid) {
$position = $k;
@@ -918,6 +1035,7 @@ class Apps {
}
if($position >= count($syslist) - 1)
return;
+
$dest_position = $position + 1;
$saved = $syslist[$dest_position];
$syslist[$dest_position] = $syslist[$position];
@@ -928,8 +1046,7 @@ class Apps {
$narr[] = $x['name'];
}
- set_pconfig($uid,'system','app_order',implode(',',$narr));
-
+ set_pconfig($uid,'system',$conf,implode(',',$narr));
}
static public function app_decode($s) {
@@ -937,8 +1054,14 @@ class Apps {
return json_decode($x,true);
}
-
- static public function app_macros($uid,&$arr) {
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param[in,out] array $arr
+ * @return void
+ */
+ static public function app_macros($uid, &$arr) {
if(! intval($uid))
return;
@@ -946,21 +1069,17 @@ class Apps {
$baseurl = z_root();
$channel = channelx_by_n($uid);
$address = (($channel) ? $channel['channel_address'] : '');
-
+
//future expansion
- $observer = \App::get_observer();
-
+ //$observer = \App::get_observer();
+
$arr['url'] = str_replace(array('$baseurl','$nick'),array($baseurl,$address),$arr['url']);
$arr['photo'] = str_replace(array('$baseurl','$nick'),array($baseurl,$address),$arr['photo']);
-
}
-
-
-
static public function app_store($arr) {
//logger('app_store: ' . print_r($arr,true));
@@ -1144,16 +1263,20 @@ class Apps {
}
return $ret;
-
}
-
- static public function app_encode($app,$embed = false) {
-
- $ret = array();
+ /**
+ * @brief
+ *
+ * @param array $app
+ * @param boolean $embed (optional) default false
+ * @return array|string
+ */
+ static public function app_encode($app, $embed = false) {
+ $ret = [];
$ret['type'] = 'personal';
-
+
if($app['app_id'])
$ret['guid'] = $app['app_id'];
@@ -1186,7 +1309,7 @@ class Apps {
if($app['app_price'])
$ret['price'] = $app['app_price'];
-
+
if($app['app_page'])
$ret['page'] = $app['app_page'];
@@ -1210,12 +1333,12 @@ class Apps {
foreach($app['term'] as $t) {
if($s)
$s .= ',';
+
$s .= $t['term'];
}
$ret['categories'] = $s;
}
-
if(! $embed)
return $ret;
@@ -1223,18 +1346,15 @@ class Apps {
if(array_key_exists('categories',$ret))
unset($ret['categories']);
-
+
$j = json_encode($ret);
- return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
+ return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
}
static public function papp_encode($papp) {
return chunk_split(base64_encode(json_encode($papp)),72,"\n");
-
}
}
-
-
diff --git a/Zotlabs/Lib/DReport.php b/Zotlabs/Lib/DReport.php
index 21b320cac..18087e29f 100644
--- a/Zotlabs/Lib/DReport.php
+++ b/Zotlabs/Lib/DReport.php
@@ -87,17 +87,29 @@ class DReport {
// Is the sender one of our channels?
- $c = q("select channel_id from channel where channel_hash = '%s' limit 1",
+ $c = q("select channel_id from channel where channel_hash = '%s' or channel_portable_id = '%s' limit 1",
+ dbesc($dr['sender']),
dbesc($dr['sender'])
);
+
if(! $c)
return false;
+ // legacy zot recipients add a space and their name to the xchan. remove it if true.
+
+ $legacy_recipient = strpos($dr['recipient'], ' ');
+ if($legacy_recipient !== false) {
+ $legacy_recipient_parts = explode(' ', $dr['recipient'], 2);
+ $rxchan = $legacy_recipient_parts[0];
+ }
+ else {
+ $rxchan = $dr['recipient'];
+ }
- // is the recipient one of our connections, or do we want to store every report?
- $rxchan = $dr['recipient'];
+ // is the recipient one of our connections, or do we want to store every report?
+
$pcf = get_pconfig($c[0]['channel_id'],'system','dreport_store_all');
if($pcf)
return true;
diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php
index 25c96d9cc..5e5798cac 100644
--- a/Zotlabs/Lib/Enotify.php
+++ b/Zotlabs/Lib/Enotify.php
@@ -828,6 +828,7 @@ class Enotify {
$x = array(
'notify_link' => $item['llink'],
'name' => $item['author']['xchan_name'],
+ 'addr' => (($item['author']['xchan_addr']) ? $item['author']['xchan_addr'] : $item['author']['xchan_url']),
'url' => $item['author']['xchan_url'],
'photo' => $item['author']['xchan_photo_s'],
'when' => relative_date(($edit)? $item['edited'] : $item['created']),
diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php
index 70f013eb7..019237568 100644
--- a/Zotlabs/Lib/Libzot.php
+++ b/Zotlabs/Lib/Libzot.php
@@ -2,11 +2,6 @@
namespace Zotlabs\Lib;
-/**
- * @brief lowlevel implementation of Zot6 protocol.
- *
- */
-
use Zotlabs\Zot6\HTTPSig;
use Zotlabs\Access\Permissions;
use Zotlabs\Access\PermissionLimits;
@@ -14,14 +9,17 @@ use Zotlabs\Daemon\Master;
require_once('include/crypto.php');
-
+/**
+ * @brief Lowlevel implementation of Zot6 protocol.
+ *
+ */
class Libzot {
/**
* @brief Generates a unique string for use as a zot guid.
*
- * Generates a unique string for use as a zot guid using our DNS-based url, the
- * channel nickname and some entropy.
+ * Generates a unique string for use as a zot guid using our DNS-based url,
+ * the channel nickname and some entropy.
* The entropy ensures uniqueness against re-installs where the same URL and
* nickname are chosen.
*
@@ -32,9 +30,8 @@ class Libzot {
* immediate universe.
*
* @param string $channel_nick a unique nickname of controlling entity
- * @returns string
+ * @return string
*/
-
static function new_uid($channel_nick) {
$rawstr = z_root() . '/' . $channel_nick . '.' . mt_rand();
return(base64url_encode(hash('whirlpool', $rawstr, true), true));
@@ -52,8 +49,8 @@ class Libzot {
*
* @param string $guid
* @param string $pubkey
+ * @return string
*/
-
static function make_xchan_hash($guid, $pubkey) {
return base64url_encode(hash('whirlpool', $guid . $pubkey, true));
}
@@ -65,10 +62,8 @@ class Libzot {
* should only be used by channels which are defined on this hub.
*
* @param string $hash - xchan_hash
- * @returns array of hubloc (hub location structures)
- *
+ * @return array of hubloc (hub location structures)
*/
-
static function get_hublocs($hash) {
/* Only search for active hublocs - e.g. those that haven't been marked deleted */
@@ -92,16 +87,17 @@ class Libzot {
* packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check'
* @param array $recipients
* envelope recipients, array of portable_id's; empty for public posts
- * @param string msg
+ * @param string $msg
* optional message
+ * @param string $encoding
+ * optional encoding, default 'activitystreams'
* @param string $remote_key
* optional public site key of target hub used to encrypt entire packet
* NOTE: remote_key and encrypted packets are required for 'auth_check' packets, optional for all others
* @param string $methods
- * optional comma separated list of encryption methods @ref self::best_algorithm()
+ * optional comma separated list of encryption methods @ref best_algorithm()
* @returns string json encoded zot packet
*/
-
static function build_packet($channel, $type = 'activity', $recipients = null, $msg = '', $encoding = 'activitystreams', $remote_key = null, $methods = '') {
$sig_method = get_config('system','signature_algorithm','sha256');
@@ -146,11 +142,10 @@ class Libzot {
* @brief Choose best encryption function from those available on both sites.
*
* @param string $methods
- * comma separated list of encryption methods
+ * Comma separated list of encryption methods
* @return string first match from our site method preferences crypto_methods() array
- * of a method which is common to both sites; or 'aes256cbc' if no matches are found.
+ * of a method which is common to both sites; or 'aes256cbc' if no matches are found.
*/
-
static function best_algorithm($methods) {
$x = [
@@ -164,7 +159,6 @@ class Libzot {
* * \e string \b methods - comma separated list of encryption methods
* * \e string \b result - the algorithm to return
*/
-
call_hooks('zot_best_algorithm', $x);
if($x['result'])
@@ -190,7 +184,7 @@ class Libzot {
/**
- * @brief send a zot message
+ * @brief Send a zot message.
*
* @see z_post_url()
*
@@ -200,18 +194,17 @@ class Libzot {
* @param array $crypto (required if encrypted httpsig, requires hubloc_sitekey and site_crypto elements)
* @return array see z_post_url() for returned data format
*/
-
static function zot($url, $data, $channel = null,$crypto = null) {
if($channel) {
- $headers = [
- 'X-Zot-Token' => random_string(),
- 'Digest' => HTTPSig::generate_digest_header($data),
+ $headers = [
+ 'X-Zot-Token' => random_string(),
+ 'Digest' => HTTPSig::generate_digest_header($data),
'Content-type' => 'application/x-zot+json',
'(request-target)' => 'post ' . get_request_string($url)
];
- $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false,'sha512',
+ $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false,'sha512',
(($crypto) ? [ 'key' => $crypto['hubloc_sitekey'], 'algorithm' => self::best_algorithm($crypto['site_crypto']) ] : false));
}
else {
@@ -227,7 +220,6 @@ class Libzot {
/**
* @brief Refreshes after permission changed or friending, etc.
*
- *
* refresh is typically invoked when somebody has changed permissions of a channel and they are notified
* to fetch new permissions via a finger/discovery operation. This may result in a new connection
* (abook entry) being added to a local channel and it may result in auto-permissions being granted.
@@ -251,7 +243,6 @@ class Libzot {
* * \b true if successful
* * otherwise \b false
*/
-
static function refresh($them, $channel = null, $force = false) {
logger('them: ' . print_r($them,true), LOGGER_DATA, LOG_DEBUG);
@@ -265,13 +256,13 @@ class Libzot {
}
else {
$r = null;
-
+
// if they re-installed the server we could end up with the wrong record - pointing to the old install.
// We'll order by reverse id to try and pick off the newest one first and hopefully end up with the
// correct hubloc. If this doesn't work we may have to re-write this section to try them all.
if(array_key_exists('xchan_addr',$them) && $them['xchan_addr']) {
- $r = q("select hubloc_id_url, hubloc_primary from hubloc where hubloc_addr = '%s' order by hubloc_id desc",
+ $r = q("select hubloc_id_url, hubloc_primary from hubloc where hubloc_addr = '%s' and hubloc_network = 'zot6' order by hubloc_id desc",
dbesc($them['xchan_addr'])
);
}
@@ -317,7 +308,7 @@ class Libzot {
if(! $hsig_valid) {
logger('http signature not valid: ' . print_r($hsig,true));
- return $result;
+ return false;
}
@@ -356,7 +347,7 @@ class Libzot {
);
if($r) {
-logger('4');
+
// connection exists
// if the dob is the same as what we have stored (disregarding the year), keep the one
@@ -397,9 +388,7 @@ logger('4');
}
}
- $closeness = get_pconfig($channel['channel_id'],'system','new_abook_closeness');
- if($closeness === false)
- $closeness = 80;
+ $closeness = get_pconfig($channel['channel_id'],'system','new_abook_closeness',80);
$y = abook_store_lowlevel(
[
@@ -418,7 +407,7 @@ logger('4');
if($y) {
logger("New introduction received for {$channel['channel_name']}");
$new_perms = get_all_perms($channel['channel_id'],$x['hash'],false);
-
+
// Send a clone sync packet and a permissions update if permissions have changed
$new_connection = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 order by abook_created desc limit 1",
@@ -526,10 +515,14 @@ logger('4');
return false;
}
-
-
-
- static function valid_hub($sender,$site_id) {
+ /**
+ * @brief
+ *
+ * @param string $sender
+ * @param string $site_id
+ * @return null|array
+ */
+ static function valid_hub($sender, $site_id) {
$r = q("select hubloc.*, site.site_crypto from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and hubloc_site_id = '%s' limit 1",
dbesc($sender),
@@ -550,7 +543,6 @@ logger('4');
}
return $r[0];
-
}
/**
@@ -561,21 +553,14 @@ logger('4');
* origination address. This will fetch the discovery packet of the sender,
* which contains the public key we need to verify our guid and url signatures.
*
- * @param array $arr an associative array which must contain:
- * * \e string \b guid => guid of conversant
- * * \e string \b guid_sig => guid signed with conversant's private key
- * * \e string \b url => URL of the origination hub of this communication
- * * \e string \b url_sig => URL signed with conversant's private key
+ * @param string $id
*
* @return array An associative array with
- * * \b success boolean true or false
- * * \b message (optional) error string only if success is false
+ * * \e boolean \b success
+ * * \e string \b message (optional, unused) error string only if success is false
*/
-
static function register_hub($id) {
- $id_hash = false;
- $valid = false;
$hsig_valid = false;
$result = [ 'success' => false ];
@@ -809,7 +794,7 @@ logger('4');
// If setting for the default profile, unset the profile photo flag from any other photos I own
if($is_default_profile) {
- q("UPDATE photo SET photo_usage = %d WHERE photo_usage = %d AND resource_id != '%s' AND aid = %d AND uid = %d",
+ q("UPDATE photo SET photo_usage = %d WHERE photo_usage = %d AND resource_id != '%s' AND aid = %d AND uid = %d",
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE),
dbesc($hash),
@@ -956,8 +941,8 @@ logger('4');
* @param string $hub - url of site we just contacted
* @param array $arr - output of z_post_url()
* @param array $outq - The queue structure attached to this request
+ * @return void
*/
-
static function process_response($hub, $arr, $outq) {
logger('remote: ' . print_r($arr,true),LOGGER_DATA);
@@ -988,7 +973,7 @@ logger('4');
if(! $x['success']) {
// handle remote validation issues
-
+
$b = q("update dreport set dreport_result = '%s', dreport_time = '%s' where dreport_queue = '%s'",
dbesc(($x['message']) ? $x['message'] : 'unknown delivery error'),
dbesc(datetime_convert()),
@@ -996,10 +981,20 @@ logger('4');
);
}
- if(is_array($x) && array_key_exists('delivery_report',$x) && is_array($x['delivery_report'])) {
+ if(is_array($x) && array_key_exists('delivery_report',$x) && is_array($x['delivery_report'])) {
+
foreach($x['delivery_report'] as $xx) {
call_hooks('dreport_process',$xx);
if(is_array($xx) && array_key_exists('message_id',$xx) && DReport::is_storable($xx)) {
+
+ // legacy recipients add a space and their name to the xchan. split those if true.
+ $legacy_recipient = strpos($xx['recipient'], ' ');
+ if($legacy_recipient !== false) {
+ $legacy_recipient_parts = explode(' ', $xx['recipient'], 2);
+ $xx['recipient'] = $legacy_recipient_parts[0];
+ $xx['name'] = $legacy_recipient_parts[1];
+ }
+
q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s', '%s','%s','%s','%s','%s' ) ",
dbesc($xx['message_id']),
dbesc($xx['location']),
@@ -1075,11 +1070,6 @@ logger('4');
*
* @param array $arr
* 'pickup' structure returned from remote site
- * @param string $sender_url
- * the url specified by the sender in the initial communication.
- * We will verify the sender and url in each returned message structure and
- * also verify that all the messages returned match the site url that we are
- * currently processing.
*
* @returns array
* Suitable for logging remotely, enumerating the processing results of each message/recipient combination
@@ -1087,7 +1077,6 @@ logger('4');
* * [1] => \e string $delivery_status
* * [2] => \e string $address
*/
-
static function import($arr) {
$env = $arr;
@@ -1109,7 +1098,7 @@ logger('4');
$has_data = array_key_exists('data',$env) && $env['data'];
$data = (($has_data) ? $env['data'] : false);
- $AS = null;
+ $AS = null;
if($env['encoding'] === 'activitystreams') {
@@ -1167,7 +1156,6 @@ logger('4');
$deliveries = self::public_recips($env,$AS);
-
}
$deliveries = array_unique($deliveries);
@@ -1186,31 +1174,31 @@ logger('4');
//logger($AS->debug());
- $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($AS->actor['id'])
- );
+ );
if($r) {
$arr['author_xchan'] = $r[0]['hubloc_hash'];
}
- $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($env['sender'])
- );
+ );
// in individual delivery, change owner if needed
if($s) {
$arr['owner_xchan'] = $s[0]['hubloc_hash'];
}
else {
- $arr['owner_xchan'] = $env['sender'];
+ $arr['owner_xchan'] = $env['sender'];
}
if($private) {
$arr['item_private'] = true;
}
- // @fixme - spoofable
+ /// @FIXME - spoofable
if($AS->data['hubloc']) {
$arr['item_verified'] = true;
}
@@ -1239,12 +1227,19 @@ logger('4');
}
if ($result) {
$return = array_merge($return, $result);
- }
+ }
return $return;
}
- static function is_top_level($env,$act) {
+ /**
+ * @brief
+ *
+ * @param array $env
+ * @param object $act
+ * @return boolean
+ */
+ static function is_top_level($env, $act) {
if($env['encoding'] === 'zot' && array_key_exists('flags',$env) && in_array('thread_parent', $env['flags'])) {
return true;
}
@@ -1287,9 +1282,9 @@ logger('4');
* Some of these will be rejected, but this gives us a place to start.
*
* @param array $msg
- * @return NULL|array
+ * @param object $act
+ * @return array
*/
-
static function public_recips($msg, $act) {
require_once('include/channel.php');
@@ -1418,7 +1413,7 @@ logger('4');
$DR = new DReport(z_root(),$sender,$d,$arr['mid']);
- $channel = channelx_by_hash($d);
+ $channel = channelx_by_portid($d);
if (! $channel) {
$DR->update('recipient not found');
@@ -1434,7 +1429,7 @@ logger('4');
* will normally arrive first via sync delivery, but this isn't guaranteed.
* There's a chance the current delivery could take place before the cloned copy arrives
* hence the item could have the wrong ACL and *could* be used in subsequent deliveries or
- * access checks.
+ * access checks.
*/
if($sender === $channel['channel_portable_id'] && $arr['author_xchan'] === $channel['channel_portable_id'] && $arr['mid'] === $arr['parent_mid']) {
@@ -1489,14 +1484,37 @@ logger('4');
intval($channel['channel_id'])
);
if ($parent) {
- $allowed = can_comment_on_post($d,$parent[0]);
+ $allowed = can_comment_on_post($sender,$parent[0]);
}
}
- if($request) {
- $allowed = true;
+
+ if ($request) {
+
+ // Conversation fetches (e.g. $request == true) take place for
+ // a) new comments on expired posts
+ // b) hyperdrive (friend-of-friend) conversations
+ // c) Repeats of posts by others
+
+
+ // over-ride normal connection permissions for hyperdrive (friend-of-friend) conversations
+ // (if hyperdrive is enabled) and repeated posts by a friend.
+ // If $allowed is already true, this is probably the conversation of a direct friend or a
+ // conversation fetch for a new comment on an expired post
+ // Comments of all these activities are allowed and will only be rejected (later) if the parent
+ // doesn't exist.
+
+ if ($perm === 'send_stream') {
+ if (get_pconfig($channel['channel_id'],'system','hyperdrive',false) || $arr['verb'] === ACTIVITY_SHARE) {
+ $allowed = true;
+ }
+ }
+ else {
+ $allowed = true;
+ }
+
$friendofriend = true;
}
-
+
if (! $allowed) {
logger("permission denied for delivery to channel {$channel['channel_id']} {$channel['channel_address']}");
$DR->update('permission denied');
@@ -1505,14 +1523,18 @@ logger('4');
}
}
- if($arr['mid'] != $arr['parent_mid']) {
+ // logger('item: ' . print_r($arr,true), LOGGER_DATA);
+
+ if($arr['mid'] !== $arr['parent_mid']) {
+
+ logger('checking source: "' . $arr['mid'] . '" != "' . $arr['parent_mid'] . '"');
// check source route.
// We are only going to accept comments from this sender if the comment has the same route as the top-level-post,
// this is so that permissions mismatches between senders apply to the entire conversation
// As a side effect we will also do a preliminary check that we have the top-level-post, otherwise
// processing it is pointless.
-
+
$r = q("select route, id, owner_xchan, item_private from item where mid = '%s' and uid = %d limit 1",
dbesc($arr['parent_mid']),
intval($channel['channel_id'])
@@ -1527,10 +1549,7 @@ logger('4');
// have the copy and we don't want the request to loop.
// Also don't do this if this comment came from a conversation request packet.
// It's possible that comments are allowed but posting isn't and that could
- // cause a conversation fetch loop. We can detect these packets since they are
- // delivered via a 'notify' packet type that has a message_id element in the
- // initial zot packet (just like the corresponding 'request' packet type which
- // makes the request).
+ // cause a conversation fetch loop.
// We'll also check the send_stream permission - because if it isn't allowed,
// the top level post is unlikely to be imported and
// this is just an exercise in futility.
@@ -1541,14 +1560,14 @@ logger('4');
}
continue;
}
-
+
if($relay || $friendofriend || (intval($r[0]['item_private']) === 0 && intval($arr['item_private']) === 0)) {
// reset the route in case it travelled a great distance upstream
// use our parent's route so when we go back downstream we'll match
// with whatever route our parent has.
// Also friend-of-friend conversations may have been imported without a route,
// but we are now getting comments via listener delivery
- // and if there is no privacy on this or the parent, we don't care about the route,
+ // and if there is no privacy on this or the parent, we don't care about the route,
// so just set the owner and route accordingly.
$arr['route'] = $r[0]['route'];
$arr['owner_xchan'] = $r[0]['owner_xchan'];
@@ -1602,13 +1621,13 @@ logger('4');
// remove_community_tag is a no-op if this isn't a community tag activity
self::remove_community_tag($sender,$arr,$channel['channel_id']);
-
+
// set these just in case we need to store a fresh copy of the deleted post.
// This could happen if the delete got here before the original post did.
$arr['aid'] = $channel['channel_account_id'];
$arr['uid'] = $channel['channel_id'];
-
+
$item_id = self::delete_imported_item($sender,$arr,$channel['channel_id'],$relay);
$DR->update(($item_id) ? 'deleted' : 'delete_failed');
$result[] = $DR->get();
@@ -1704,7 +1723,7 @@ logger('4');
* * \e array \b item
* * \e array \b sender
* * \e array \b channel
- */
+ */
call_hooks('activity_received', $parr);
// don't add a source route if it's a relay or later recipients will get a route mismatch
if(! $relay)
@@ -1769,17 +1788,17 @@ logger('4');
logger($AS->debug());
- $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($AS->actor['id'])
- );
+ );
if(! $r) {
$y = import_author_xchan([ 'url' => $AS->actor['id'] ]);
if($y) {
- $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($AS->actor['id'])
);
- }
+ }
if(! $r) {
logger('FOF Activity: no actor');
continue;
@@ -1799,9 +1818,9 @@ logger('4');
$arr['author_xchan'] = $r[0]['hubloc_hash'];
}
- $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($a['signature']['signer'])
- );
+ );
if($s) {
$arr['owner_xchan'] = $s[0]['hubloc_hash'];
@@ -1810,7 +1829,8 @@ logger('4');
$arr['owner_xchan'] = $a['signature']['signer'];
}
- // @fixme - spoofable
+
+ /// @FIXME - spoofable
if($AS->data['hubloc']) {
$arr['item_verified'] = true;
}
@@ -1824,7 +1844,7 @@ logger('4');
$result = self::process_delivery($arr['owner_xchan'],$arr, [ $channel['channel_portable_id'] ],false,false,true);
if ($result) {
$ret = array_merge($ret, $result);
- }
+ }
}
return $ret;
@@ -1841,8 +1861,8 @@ logger('4');
* * \e int \b obj_type
* * \e int \b mid
* @param int $uid
+ * @return void
*/
-
static function remove_community_tag($sender, $arr, $uid) {
if(! (activity_match($arr['verb'], ACTIVITY_TAG) && ($arr['obj_type'] == ACTIVITY_OBJ_TAGTERM)))
@@ -1870,7 +1890,7 @@ logger('4');
}
$i = $r[0];
-
+
if($i['target'])
$i['target'] = json_decode($i['target'],true);
if($i['object'])
@@ -1913,8 +1933,8 @@ logger('4');
* @param array $orig
* @param int $uid
* @param boolean $tag_delivery
+ * @return void|array
*/
-
static function update_imported_item($sender, $item, $orig, $uid, $tag_delivery) {
// If this is a comment being updated, remove any privacy information
@@ -2054,7 +2074,7 @@ logger('4');
}
foreach($deliveries as $d) {
-
+
$DR = new DReport(z_root(),$sender,$d,$arr['mid']);
$r = q("select * from channel where channel_portable_id = '%s' limit 1",
@@ -2073,7 +2093,7 @@ logger('4');
if(! perm_is_allowed($channel['channel_id'],$sender,'post_mail')) {
- /*
+ /*
* Always allow somebody to reply if you initiated the conversation. It's anti-social
* and a bit rude to send a private message to somebody and block their ability to respond.
* If you are being harrassed and want to put an end to it, delete the conversation.
@@ -2133,12 +2153,13 @@ logger('4');
* @brief Processes delivery of profile.
*
* @see import_directory_profile()
+ *
* @param array $sender an associative array
* * \e string \b hash a xchan_hash
* @param array $arr
* @param array $deliveries (unused)
+ * @return void
*/
-
static function process_profile_delivery($sender, $arr, $deliveries) {
logger('process_profile_delivery', LOGGER_DEBUG);
@@ -2159,6 +2180,7 @@ logger('4');
* * \e string \b hash a xchan_hash
* @param array $arr
* @param array $deliveries (unused) deliveries is irrelevant
+ * @return void
*/
static function process_location_delivery($sender, $arr, $deliveries) {
@@ -2176,7 +2198,7 @@ logger('4');
$x = Libsync::sync_locations($xchan,$arr,true);
logger('results: ' . print_r($x,true), LOGGER_DEBUG);
if($x['changed']) {
- $guid = random_string() . '@' . App::get_hostname();
+ //$guid = random_string() . '@' . App::get_hostname();
Libzotdir::update_modtime($sender,$r[0]['xchan_guid'],$arr['locations'][0]['address'],UPDATE_FLAGS_UPDATED);
}
}
@@ -2200,8 +2222,8 @@ logger('4');
*
* @param string $sender_hash A channel hash
* @param array $locations
+ * @return void
*/
-
static function check_location_move($sender_hash, $locations) {
if(! $locations)
@@ -2243,7 +2265,6 @@ logger('4');
}
-
/**
* @brief Returns an array with all known distinct hubs for this channel.
*
@@ -2252,7 +2273,6 @@ logger('4');
* * \e string \b channel_hash the hash of the channel
* @return array an array with associative arrays
*/
-
static function encode_locations($channel) {
$ret = [];
@@ -2293,7 +2313,7 @@ logger('4');
if(! $z['site_id']) {
$z['site_id'] = Libzot::make_xchan_hash($z['url'],$z['sitekey']);
}
-
+
$ret[] = $z;
}
}
@@ -2306,10 +2326,8 @@ logger('4');
* @brief
*
* @param array $arr
- * @param string $pubkey
* @return boolean true if updated or inserted
*/
-
static function import_site($arr) {
if( (! is_array($arr)) || (! $arr['url']) || (! $arr['site_sig']))
@@ -2584,20 +2602,20 @@ logger('4');
$feed = ((x($arr,'feed')) ? intval($arr['feed']) : 0);
if($ztarget) {
- $t = q("select * from hubloc where hubloc_id_url = '%s' limit 1",
+ $t = q("select * from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($ztarget)
);
if($t) {
-
+
$ztarget_hash = $t[0]['hubloc_hash'];
}
else {
-
+
// should probably perform discovery of the requestor (target) but if they actually had
- // permissions we would know about them and we only want to know who they are to
+ // permissions we would know about them and we only want to know who they are to
// enumerate their specific permissions
-
+
$ztarget_hash = EMPTY_STR;
}
}
@@ -2744,7 +2762,7 @@ logger('4');
$ret['id'] = $e['xchan_guid'];
$ret['id_sig'] = self::sign($e['xchan_guid'], $e['channel_prvkey']);
- $ret['primary_location'] = [
+ $ret['primary_location'] = [
'address' => $e['xchan_addr'],
'url' => $e['xchan_url'],
'connections_url' => $e['xchan_connurl'],
@@ -2766,7 +2784,7 @@ logger('4');
$ret['searchable'] = $searchable;
$ret['adult_content'] = $adult_channel;
$ret['public_forum'] = $public_forum;
-
+
$ret['comments'] = map_scope(PermissionLimits::Get($e['channel_id'],'post_comments'));
$ret['mail'] = map_scope(PermissionLimits::Get($e['channel_id'],'post_mail'));
@@ -2824,14 +2842,20 @@ logger('4');
$ret['locations'] = $x;
$ret['site'] = self::site_info();
+ /**
+ * @hooks zotinfo
+ * Hook to manipulate the zotinfo array before it is returned.
+ */
+ call_hooks('zotinfo', $ret);
- call_hooks('zotinfo',$ret);
-
- return($ret);
-
+ return $ret;
}
-
+ /**
+ * @brief Get siteinfo.
+ *
+ * @return array
+ */
static function site_info() {
$signing_key = get_config('system','prvkey');
@@ -2868,7 +2892,7 @@ logger('4');
if($dirmode != DIRECTORY_MODE_STANDALONE) {
$register_policy = intval(get_config('system','register_policy'));
-
+
if($register_policy == REGISTER_CLOSED)
$ret['site']['register_policy'] = 'closed';
if($register_policy == REGISTER_APPROVE)
@@ -2915,18 +2939,16 @@ logger('4');
}
return $ret['site'];
-
}
/**
* @brief
*
* @param array $hub
- * @param string $sitekey (optional, default empty)
+ * @param string $site_id (optional, default empty)
*
* @return string hubloc_url
*/
-
static function update_hub_connected($hub, $site_id = '') {
if ($site_id) {
@@ -2985,12 +3007,21 @@ logger('4');
return $hub['hubloc_url'];
}
-
+ /**
+ * @brief
+ *
+ * @param string $data
+ * @param string $key
+ * @param string $alg (optional) default 'sha256'
+ * @return string
+ */
static function sign($data,$key,$alg = 'sha256') {
if(! $key)
return 'no key';
+
$sig = '';
openssl_sign($data,$sig,$key,$alg);
+
return $alg . '.' . base64url_encode($sig);
}
@@ -3003,24 +3034,27 @@ logger('4');
if ($key && count($x) === 2) {
$alg = $x[0];
$signature = base64url_decode($x[1]);
-
+
$verify = @openssl_verify($data,$signature,$key,$alg);
if ($verify === (-1)) {
while ($msg = openssl_error_string()) {
logger('openssl_verify: ' . $msg,LOGGER_NORMAL,LOG_ERR);
}
- btlogger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
+ btlogger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
}
}
return(($verify > 0) ? true : false);
}
-
-
+ /**
+ * @brief
+ *
+ * @return boolean
+ */
static function is_zot_request() {
-
$x = getBestSupportedMimeType([ 'application/x-zot+json' ]);
+
return(($x) ? true : false);
}
diff --git a/Zotlabs/Lib/PConfig.php b/Zotlabs/Lib/PConfig.php
index 5e5954c95..c08c11e75 100644
--- a/Zotlabs/Lib/PConfig.php
+++ b/Zotlabs/Lib/PConfig.php
@@ -112,9 +112,11 @@ class PConfig {
* The configuration key to set
* @param string $value
* The value to store
+ * @param string $updated (optional)
+ * The datetime to store
* @return mixed Stored $value or false
*/
- static public function Set($uid, $family, $key, $value, $updated=NULL) {
+ static public function Set($uid, $family, $key, $value, $updated = NULL) {
// this catches subtle errors where this function has been called
// with local_channel() when not logged in (which returns false)
@@ -131,14 +133,19 @@ class PConfig {
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
+ $now = datetime_convert();
if (! $updated) {
- $updated = datetime_convert();
+ //Sometimes things happen fast... very fast.
+ //To make sure legitimate updates aren't rejected
+ //because not enough time has passed. We say our updates
+ //happened just a short time in the past rather than right now.
+ $updated = datetime_convert('UTC','UTC','-2 seconds');
}
$hash = hash('sha256',$family.':'.$key);
if (self::Get($uid, 'hz_delpconfig', $hash) !== false) {
- if (self::Get($uid, 'hz_delpconfig', $hash) > $updated) {
+ if (self::Get($uid, 'hz_delpconfig', $hash) > $now) {
logger('Refusing to update pconfig with outdated info (Item deleted more recently).', LOGGER_NORMAL, LOG_ERR);
return self::Get($uid,$family,$key);
} else {
@@ -173,7 +180,7 @@ class PConfig {
}
else {
- $new = (\App::$config[$uid][$family]['pcfgud:'.$key] < $updated);
+ $new = (\App::$config[$uid][$family]['pcfgud:'.$key] < $now);
if ($new) {
@@ -234,16 +241,18 @@ class PConfig {
* The category of the configuration value
* @param string $key
* The configuration key to delete
- * @return mixed
+ * @param string $updated (optional)
+ * The datetime to store
+ * @return boolean
*/
static public function Delete($uid, $family, $key, $updated = NULL) {
if(is_null($uid) || $uid === false)
return false;
- $updated = ($updated) ? $updated : datetime_convert();
-
- $newer = (\App::$config[$uid][$family]['pcfgud:'.$key] < $updated);
+ $updated = ($updated) ? $updated : datetime_convert('UTC','UTC','-2 seconds');
+ $now = datetime_convert();
+ $newer = (\App::$config[$uid][$family]['pcfgud:'.$key] < $now);
if (! $newer) {
logger('Refusing to delete pconfig with outdated delete request.', LOGGER_NORMAL, LOG_ERR);
@@ -266,22 +275,13 @@ class PConfig {
dbesc($key)
);
+ // Synchronize delete with clones.
+
if ($family != 'hz_delpconfig') {
$hash = hash('sha256',$family.':'.$key);
set_pconfig($uid,'hz_delpconfig',$hash,$updated);
}
- // Synchronize delete with clones.
-
- if(! array_key_exists('transient', \App::$config[$uid]))
- \App::$config[$uid]['transient'] = array();
- if(! array_key_exists($family, \App::$config[$uid]['transient']))
- \App::$config[$uid]['transient'][$family] = array();
-
- if ($new) {
- \App::$config[$uid]['transient'][$family]['pcfgdel:'.$key] = $updated;
- }
-
return $ret;
}
diff --git a/Zotlabs/Lib/Share.php b/Zotlabs/Lib/Share.php
index d3ecbf7fa..3a2ab1783 100644
--- a/Zotlabs/Lib/Share.php
+++ b/Zotlabs/Lib/Share.php
@@ -54,6 +54,7 @@ class Share {
if(! $this->item)
return $obj;
+ $obj['asld'] = $this->item['mid'];
$obj['type'] = $this->item['obj_type'];
$obj['id'] = $this->item['mid'];
$obj['content'] = $this->item['body'];
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
index 83d243177..40c0fca4b 100644
--- a/Zotlabs/Lib/ThreadItem.php
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -76,7 +76,7 @@ class ThreadItem {
* _ false on failure
*/
- public function get_template_data($conv_responses, $thread_level=1) {
+ public function get_template_data($conv_responses, $thread_level=1, $conv_flags = []) {
$result = array();
@@ -101,6 +101,7 @@ class ThreadItem {
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
+
$shareable = ((($conv->get_profile_owner() == local_channel() && local_channel()) && ($item['item_private'] != 1)) ? true : false);
// allow an exemption for sharing stuff from your private feeds
@@ -115,6 +116,19 @@ class ThreadItem {
$privacy_warning = true;
}
+ if ($lock) {
+ if (($item['mid'] == $item['parent_mid']) && count(get_terms_oftype($item['term'],TERM_FORUM))) {
+ $privacy_warning = true;
+ $conv_flags['parent_privacy_warning'] = true;
+ }
+ }
+
+ $privacy_warning = (isset($conv_flags['parent_privacy_warning'])) ? $conv_flags['parent_privacy_warning'] : $privacy_warning;
+
+ if ($lock && $privacy_warning) {
+ $lock = t('Privacy conflict. Discretion advised.');
+ }
+
$mode = $conv->get_mode();
switch($item['item_type']) {
@@ -293,8 +307,15 @@ class ThreadItem {
$dislike = array( t("I don't like this \x28toggle\x29"), t("dislike"));
}
- if ($shareable)
- $share = array( t('Share This'), t('share'));
+ if ($shareable) {
+ // This actually turns out not to be possible in some protocol stacks without opening up hundreds of new issues.
+ // Will allow it only for uri resolvable sources.
+ if(strpos($item['mid'],'http') === 0) {
+ $share = []; //Not yet ready for primetime
+ //$share = array( t('Repeat This'), t('repeat'));
+ }
+ $embed = array( t('Share This'), t('share'));
+ }
$dreport = '';
@@ -408,12 +429,13 @@ class ThreadItem {
'like' => $like,
'dislike' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike : ''),
'share' => $share,
+ 'embed' => $embed,
'rawmid' => $item['mid'],
'plink' => get_plink($item),
'edpost' => $edpost, // ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
- 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''),
+ 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts') && ($item['item_type'] == ITEM_TYPE_POST)) ? $star : ''),
'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''),
- 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''),
+ 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing') && ($item['item_type'] == ITEM_TYPE_POST)) ? $filer : ''),
'bookmark' => (($conv->get_profile_owner() == local_channel() && local_channel() && $has_bookmarks) ? t('Save Bookmarks') : ''),
'addtocal' => (($has_event) ? t('Add to Calendar') : ''),
'drop' => $drop,
@@ -470,7 +492,7 @@ class ThreadItem {
if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
foreach($children as $child) {
- $result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1);
+ $result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1,$conv_flags);
}
// Collapse
if(($nb_children > $visible_comments) || ($thread_level > 1)) {
diff --git a/Zotlabs/Lib/ThreadListener.php b/Zotlabs/Lib/ThreadListener.php
new file mode 100644
index 000000000..308e02255
--- /dev/null
+++ b/Zotlabs/Lib/ThreadListener.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+class ThreadListener {
+
+ static public function store($target_id,$portable_id,$ltype = 0) {
+ $x = self::fetch($target_id,$portable_id,$ltype = 0);
+ if(! $x) {
+ $r = q("insert into listeners ( target_id, portable_id, ltype ) values ( '%s', '%s' , %d ) ",
+ dbesc($target_id),
+ dbesc($portable_id),
+ intval($ltype)
+ );
+ }
+ }
+
+ static public function fetch($target_id,$portable_id,$ltype = 0) {
+ $x = q("select * from listeners where target_id = '%s' and portable_id = '%s' and ltype = %d limit 1",
+ dbesc($target_id),
+ dbesc($portable_id),
+ intval($ltype)
+ );
+ if($x) {
+ return $x[0];
+ }
+ return false;
+ }
+
+ static public function fetch_by_target($target_id,$ltype = 0) {
+ $x = q("select * from listeners where target_id = '%s' and ltype = %d",
+ dbesc($target_id),
+ intval($ltype)
+ );
+
+ return $x;
+ }
+
+ static public function delete_by_target($target_id, $ltype = 0) {
+ return q("delete from listeners where target_id = '%s' and ltype = %d",
+ dbesc($target_id),
+ intval($ltype)
+ );
+ }
+
+ static public function delete_by_pid($portable_id, $ltype = 0) {
+ return q("delete from listeners where portable_id = '%s' and ltype = %d",
+ dbesc($portable_id),
+ intval($ltype)
+ );
+ }
+
+}
diff --git a/Zotlabs/Lib/ZotURL.php b/Zotlabs/Lib/ZotURL.php
new file mode 100644
index 000000000..d1c705fcb
--- /dev/null
+++ b/Zotlabs/Lib/ZotURL.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+use Zotlabs\Zot6\HTTPSig;
+
+
+class ZotURL {
+
+ static public function fetch($url,$channel) {
+
+ $ret = [ 'success' => false ];
+
+ if(strpos($url,'x-zot:') !== 0) {
+ return $ret;
+ }
+
+
+ if(! $url) {
+ return $ret;
+ }
+
+ $portable_url = substr($url,6);
+ $u = explode('/',$portable_url);
+ $portable_id = $u[0];
+
+ $hosts = self::lookup($portable_id);
+
+ if(! $hosts) {
+ return $ret;
+ }
+
+ foreach($hosts as $h) {
+ $newurl = $h . '/id/' . $portable_url;
+
+ $m = parse_url($newurl);
+
+ $data = json_encode([ 'zot_token' => random_string() ]);
+
+ if($channel && $m) {
+
+ $headers = [
+ 'Accept' => 'application/x-zot+json',
+ 'Content-Type' => 'application/x-zot+json',
+ 'X-Zot-Token' => random_string(),
+ 'Digest' => HTTPSig::generate_digest_header($data),
+ 'Host' => $m['host'],
+ '(request-target)' => 'post ' . get_request_string($newurl)
+ ];
+ $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false);
+ }
+ else {
+ $h = [ 'Accept: application/x-zot+json' ];
+ }
+
+ $result = [];
+
+ $redirects = 0;
+ $x = z_post_url($newurl,$data,$redirects, [ 'headers' => $h ] );
+ if($x['success']) {
+ return $x;
+ }
+ }
+
+ return $ret;
+
+ }
+
+ static public function is_zoturl($s) {
+
+ if(strpos($url,'x-zot:') === 0) {
+ return true;
+ }
+ return false;
+ }
+
+
+ static public function lookup($portable_id) {
+
+ $r = q("select * from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and site_dead = 0 order by hubloc_primary desc",
+ dbesc($portable_id)
+ );
+
+ if(! $r) {
+ // extend to network lookup
+ return false;
+ }
+ return ids_to_array($r,'hubloc_url');
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php
index 8ccdaf4f5..88b84b9d2 100644
--- a/Zotlabs/Module/Admin.php
+++ b/Zotlabs/Module/Admin.php
@@ -86,7 +86,7 @@ class Admin extends \Zotlabs\Web\Controller {
// list total user accounts, expirations etc.
$accounts = array();
- $r = q("SELECT COUNT(*) AS total, COUNT(CASE WHEN account_expires > %s THEN 1 ELSE NULL END) AS expiring, COUNT(CASE WHEN account_expires < %s AND account_expires > '%s' THEN 1 ELSE NULL END) AS expired, COUNT(CASE WHEN (account_flags & %d)>0 THEN 1 ELSE NULL END) AS blocked FROM account",
+ $r = q("SELECT COUNT(CASE WHEN account_id > 0 THEN 1 ELSE NULL END) AS total, COUNT(CASE WHEN account_expires > %s THEN 1 ELSE NULL END) AS expiring, COUNT(CASE WHEN account_expires < %s AND account_expires > '%s' THEN 1 ELSE NULL END) AS expired, COUNT(CASE WHEN (account_flags & %d)>0 THEN 1 ELSE NULL END) AS blocked FROM account",
db_utcnow(),
db_utcnow(),
dbesc(NULL_DATE),
diff --git a/Zotlabs/Module/Admin/Addons.php b/Zotlabs/Module/Admin/Addons.php
index b35922aef..b8e3e3a2e 100644
--- a/Zotlabs/Module/Admin/Addons.php
+++ b/Zotlabs/Module/Admin/Addons.php
@@ -375,6 +375,9 @@ class Addons {
if($files) {
foreach($files as $file) {
if (is_dir($file)){
+ if($file == 'addon/addon_common/')
+ continue;
+
list($tmp, $id) = array_map('trim', explode('/', $file));
$info = get_plugin_info($id);
$enabled = in_array($id,\App::$plugins);
@@ -476,4 +479,4 @@ class Addons {
return(strcmp(strtolower($a[2]['name']),strtolower($b[2]['name'])));
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php
index 09b038729..55c8ca928 100644
--- a/Zotlabs/Module/Admin/Site.php
+++ b/Zotlabs/Module/Admin/Site.php
@@ -119,7 +119,7 @@ class Site {
del_config('system', 'admininfo');
} else {
require_once('include/text.php');
- linkify_tags($a, $admininfo, local_channel());
+ linkify_tags($admininfo, local_channel());
set_config('system', 'admininfo', $admininfo);
}
set_config('system','siteinfo',$siteinfo);
diff --git a/Zotlabs/Module/Affinity.php b/Zotlabs/Module/Affinity.php
new file mode 100644
index 000000000..f0d99f1e7
--- /dev/null
+++ b/Zotlabs/Module/Affinity.php
@@ -0,0 +1,94 @@
+<?php
+
+namespace Zotlabs\Module;
+
+use App;
+use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Libsync;
+
+class Affinity extends \Zotlabs\Web\Controller {
+
+ function post() {
+
+ if(! local_channel())
+ return;
+
+ if(! Apps::system_app_installed(local_channel(),'Affinity Tool'))
+ return;
+
+ check_form_security_token_redirectOnErr('affinity', 'affinity');
+
+ $cmax = intval($_POST['affinity_cmax']);
+ if($cmax < 0 || $cmax > 99)
+ $cmax = 99;
+
+ $cmin = intval($_POST['affinity_cmin']);
+ if($cmin < 0 || $cmin > 99)
+ $cmin = 0;
+
+ $lock = intval($_POST['affinity_lock']);
+
+ set_pconfig(local_channel(),'affinity','cmin',$cmin);
+ set_pconfig(local_channel(),'affinity','cmax',$cmax);
+ set_pconfig(local_channel(),'affinity','lock',$lock);
+
+ info( t('Affinity Tool settings updated.') . EOL);
+
+ Libsync::build_sync_packet();
+
+ }
+
+
+ function get() {
+
+ if(! local_channel())
+ return;
+
+ $desc = t('This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream.');
+ if(! Apps::system_app_installed(local_channel(),'Affinity Tool')) {
+ //Do not display any associated widgets at this point
+ App::$pdl = '';
+
+ $o = '<b>' . t('Affinity Tool App') . ' (' . t('Not Installed') . '):</b><br>';
+ $o .= $desc;
+ return $o;
+ }
+
+ $text = t('The numbers below represent the minimum and maximum slider default positions for your network/stream page as a percentage.');
+
+ $content = '<div class="section-content-info-wrapper">' . $text . '</div>';
+
+ $cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
+ $cmax = (($cmax) ? $cmax : 99);
+ $content .= replace_macros(get_markup_template('field_input.tpl'), array(
+ '$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, t('0-99 default 99'))
+ ));
+
+ $cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
+ $cmin = (($cmin) ? $cmin : 0);
+ $content .= replace_macros(get_markup_template('field_input.tpl'), array(
+ '$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, t('0-99 - default 0'))
+ ));
+
+ $lock = intval(get_pconfig(local_channel(),'affinity','lock',1));
+
+ $content .= replace_macros(get_markup_template('field_checkbox.tpl'), array(
+ '$field' => array('affinity_lock', t('Persistent affinity levels'), $lock, t('If disabled the max and min levels will be reset to default after page reload'), ['No','Yes'])
+ ));
+
+ $tpl = get_markup_template("settings_addon.tpl");
+
+ $o = replace_macros($tpl, array(
+ '$action_url' => 'affinity',
+ '$form_security_token' => get_form_security_token("affinity"),
+ '$title' => t('Affinity Tool Settings'),
+ '$content' => $content,
+ '$baseurl' => z_root(),
+ '$submit' => t('Submit'),
+ ));
+
+ return $o;
+ }
+
+
+}
diff --git a/Zotlabs/Module/Appman.php b/Zotlabs/Module/Appman.php
index f50dcc2ab..39689665e 100644
--- a/Zotlabs/Module/Appman.php
+++ b/Zotlabs/Module/Appman.php
@@ -90,12 +90,12 @@ class Appman extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
- if(argc() > 2) {
+ if(argc() > 3) {
if(argv(2) === 'moveup') {
- Zlib\Apps::moveup(local_channel(),argv(1));
+ Zlib\Apps::moveup(local_channel(),argv(1),argv(3));
}
if(argv(2) === 'movedown') {
- Zlib\Apps::movedown(local_channel(),argv(1));
+ Zlib\Apps::movedown(local_channel(),argv(1),argv(3));
}
goaway(z_root() . '/apporder');
}
diff --git a/Zotlabs/Module/Apporder.php b/Zotlabs/Module/Apporder.php
index a9f66ba69..eac1abc2d 100644
--- a/Zotlabs/Module/Apporder.php
+++ b/Zotlabs/Module/Apporder.php
@@ -17,25 +17,28 @@ class Apporder extends \Zotlabs\Web\Controller {
nav_set_selected('Order Apps');
- $syslist = array();
- $list = Zlib\Apps::app_list(local_channel(), false, ['nav_featured_app', 'nav_pinned_app']);
- if($list) {
- foreach($list as $li) {
- $syslist[] = Zlib\Apps::app_encode($li);
+ foreach( [ 'nav_featured_app', 'nav_pinned_app' ] as $l ) {
+ $syslist = [];
+ $list = Zlib\Apps::app_list(local_channel(), false, [ $l ]);
+ if($list) {
+ foreach($list as $li) {
+ $syslist[] = Zlib\Apps::app_encode($li);
+ }
}
- }
- Zlib\Apps::translate_system_apps($syslist);
+
+ Zlib\Apps::translate_system_apps($syslist);
- usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
+ usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
- $syslist = Zlib\Apps::app_order(local_channel(),$syslist);
+ $syslist = Zlib\Apps::app_order(local_channel(),$syslist, $l);
- foreach($syslist as $app) {
- if(strpos($app['categories'],'nav_pinned_app') !== false) {
- $navbar_apps[] = Zlib\Apps::app_render($app,'nav-order');
- }
- else {
- $nav_apps[] = Zlib\Apps::app_render($app,'nav-order');
+ foreach($syslist as $app) {
+ if($l === 'nav_pinned_app') {
+ $navbar_apps[] = Zlib\Apps::app_render($app,'nav-order');
+ }
+ elseif(strpos($app['categories'],'nav_pinned_app') === false) {
+ $nav_apps[] = Zlib\Apps::app_render($app,'nav-order');
+ }
}
}
diff --git a/Zotlabs/Module/Articles.php b/Zotlabs/Module/Articles.php
index 58c16be45..ca132c01e 100644
--- a/Zotlabs/Module/Articles.php
+++ b/Zotlabs/Module/Articles.php
@@ -17,8 +17,16 @@ class Articles extends Controller {
if(argc() > 1)
$which = argv(1);
- else
- return;
+
+ if(! $which) {
+ if(local_channel()) {
+ $channel = App::get_channel();
+ if($channel && $channel['channel_address'])
+ $which = $channel['channel_address'];
+ } else {
+ return;
+ }
+ }
profile_load($which);
diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php
index b66de158b..3f0e93de5 100644
--- a/Zotlabs/Module/Cards.php
+++ b/Zotlabs/Module/Cards.php
@@ -10,9 +10,13 @@ require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
+/**
+ * @brief Provides the Cards module.
+ *
+ */
class Cards extends Controller {
- function init() {
+ public function init() {
if(argc() > 1)
$which = argv(1);
@@ -20,14 +24,15 @@ class Cards extends Controller {
return;
profile_load($which);
-
}
/**
* {@inheritDoc}
- * @see \Zotlabs\Web\Controller::get()
+ * @see \\Zotlabs\\Web\\Controller::get()
+ *
+ * @return string Parsed HTML from template 'cards.tpl'
*/
- function get($update = 0, $load = false) {
+ public function get($update = 0, $load = false) {
if(observer_prohibited(true)) {
return login();
@@ -99,7 +104,6 @@ class Cards extends Controller {
}
-
if(perm_is_allowed($owner, $ob_hash, 'write_pages')) {
$x = [
@@ -110,7 +114,7 @@ class Cards extends Controller {
'nickname' => $channel['channel_address'],
'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
+ 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php
index 12d87885f..5fdefd805 100644
--- a/Zotlabs/Module/Channel.php
+++ b/Zotlabs/Module/Channel.php
@@ -124,6 +124,11 @@ class Channel extends Controller {
$mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
+ if(strpos($mid,'b64.') === 0)
+ $decoded = @base64url_decode(substr($mid,4));
+ if($decoded)
+ $mid = $decoded;
+
$datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
$datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
@@ -375,6 +380,9 @@ class Channel extends Controller {
if((! $update) && (! $load)) {
+ if($decoded)
+ $mid = 'b64.' . base64url_encode($mid);
+
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
// because browser prefetching might change it on us. We have to deliver it with the page.
diff --git a/Zotlabs/Module/Chanview.php b/Zotlabs/Module/Chanview.php
index 779c7e646..2e653d030 100644
--- a/Zotlabs/Module/Chanview.php
+++ b/Zotlabs/Module/Chanview.php
@@ -106,7 +106,7 @@ class Chanview extends \Zotlabs\Web\Controller {
if (\App::$poi) {
$url = \App::$poi['xchan_url'];
- if(\App::$poi['xchan_network'] === 'zot') {
+ if(in_array(\App::$poi['xchan_network'], ['zot', 'zot6'])) {
$is_zot = true;
}
if(local_channel()) {
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index a9f643306..a587324df 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -101,7 +101,8 @@ class Connedit extends \Zotlabs\Web\Controller {
}
- $profile_id = $_POST['profile_assign'];
+ $profile_id = ((array_key_exists('profile_assign',$_POST)) ? $_POST['profile_assign'] : $orig_record[0]['abook_profile']);
+
if($profile_id) {
$r = q("SELECT profile_guid FROM profile WHERE profile_guid = '%s' AND uid = %d LIMIT 1",
dbesc($profile_id),
@@ -113,18 +114,23 @@ class Connedit extends \Zotlabs\Web\Controller {
}
}
- $abook_incl = escape_tags($_POST['abook_incl']);
- $abook_excl = escape_tags($_POST['abook_excl']);
-
+ $abook_incl = ((array_key_exists('abook_incl',$_POST)) ? escape_tags($_POST['abook_incl']) : $orig_record[0]['abook_incl']);
+ $abook_excl = ((array_key_exists('abook_excl',$_POST)) ? escape_tags($_POST['abook_excl']) : $orig_record[0]['abook_excl']);
+
+
$hidden = intval($_POST['hidden']);
$priority = intval($_POST['poll']);
if($priority > 5 || $priority < 0)
$priority = 0;
+ if(! array_key_exists('closeness',$_POST)) {
+ $_POST['closeness'] = 80;
+ }
$closeness = intval($_POST['closeness']);
- if($closeness < 0)
- $closeness = 99;
+ if($closeness < 0 || $closeness > 99) {
+ $closeness = 80;
+ }
$rating = intval($_POST['rating']);
if($rating < (-10))
@@ -231,6 +237,8 @@ class Connedit extends \Zotlabs\Web\Controller {
}
$abook_pending = (($new_friend) ? 0 : $orig_record[0]['abook_pending']);
+
+
$r = q("UPDATE abook SET abook_profile = '%s', abook_closeness = %d, abook_pending = %d,
abook_incl = '%s', abook_excl = '%s'
@@ -702,7 +710,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$tpl = get_markup_template("abook_edit.tpl");
- if(feature_enabled(local_channel(),'affinity')) {
+ if(Apps::system_app_installed(local_channel(),'Affinity Tool')) {
$sections['affinity'] = [
'label' => t('Affinity'),
@@ -733,9 +741,12 @@ class Connedit extends \Zotlabs\Web\Controller {
}
$slider_tpl = get_markup_template('contact_slider.tpl');
+
+ $slideval = intval($contact['abook_closeness']);
+
$slide = replace_macros($slider_tpl,array(
'$min' => 1,
- '$val' => (($contact['abook_closeness']) ? $contact['abook_closeness'] : 99),
+ '$val' => $slideval,
'$labels' => $label_str,
));
}
@@ -892,7 +903,7 @@ class Connedit extends \Zotlabs\Web\Controller {
'$inherited' => t('inherited'),
'$submit' => t('Submit'),
'$lbl_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $contact['xchan_name']),
- '$close' => $contact['abook_closeness'],
+ '$close' => (($contact['abook_closeness']) ? $contact['abook_closeness'] : 80),
'$them' => t('Their Settings'),
'$me' => t('My Settings'),
'$perms' => $perms,
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index d1755c183..04e5f9fce 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -178,8 +178,7 @@ class Display extends \Zotlabs\Web\Controller {
$static = ((array_key_exists('static',$_REQUEST)) ? intval($_REQUEST['static']) : 0);
-
-
+
$simple_update = (($update) ? " AND item_unseen = 1 " : '');
if($update && $_SESSION['loadtime'])
@@ -314,7 +313,7 @@ class Display extends \Zotlabs\Web\Controller {
}
}
- if(! $r) {
+ if($r === null) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner_xchan can't match
if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
@@ -375,8 +374,7 @@ class Display extends \Zotlabs\Web\Controller {
}
$o .= '</noscript>';
- if ($items[0]['title'])
- \App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
+ \App::$page['title'] = (($items[0]['title']) ? $items[0]['title'] . " - " . \App::$page['title'] : \App::$page['title']);
$o .= conversation($items, 'display', $update, 'client');
}
diff --git a/Zotlabs/Module/Dreport.php b/Zotlabs/Module/Dreport.php
index 16ae7941f..2c125b7a9 100644
--- a/Zotlabs/Module/Dreport.php
+++ b/Zotlabs/Module/Dreport.php
@@ -80,8 +80,9 @@ class Dreport extends \Zotlabs\Web\Controller {
return;
}
- $r = q("select * from dreport where dreport_xchan = '%s' and dreport_mid = '%s'",
+ $r = q("select * from dreport where (dreport_xchan = '%s' or dreport_xchan = '%s') and dreport_mid = '%s'",
dbesc($channel['channel_hash']),
+ dbesc($channel['channel_portable_id']),
dbesc($mid)
);
diff --git a/Zotlabs/Module/Embed.php b/Zotlabs/Module/Embed.php
new file mode 100644
index 000000000..77b9254dd
--- /dev/null
+++ b/Zotlabs/Module/Embed.php
@@ -0,0 +1,22 @@
+<?php
+namespace Zotlabs\Module;
+
+require_once('include/security.php');
+require_once('include/bbcode.php');
+
+
+class Embed extends \Zotlabs\Web\Controller {
+
+ function init() {
+
+ $post_id = ((argc() > 1) ? intval(argv(1)) : 0);
+
+ if(! $post_id)
+ killme();
+
+ echo '[share=' . $post_id . '][/share]';
+ killme();
+
+ }
+
+}
diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php
index bcbb0e116..2df14c239 100644
--- a/Zotlabs/Module/Embedphotos.php
+++ b/Zotlabs/Module/Embedphotos.php
@@ -3,8 +3,10 @@
namespace Zotlabs\Module;
/**
- * @brief
+ * @brief Embedphoto endpoint.
*
+ * Provide an AJAX endpoint to fill the embedPhotoModal with folders and photos
+ * selection.
*/
class Embedphotos extends \Zotlabs\Web\Controller {
@@ -13,42 +15,42 @@ class Embedphotos extends \Zotlabs\Web\Controller {
}
/**
+ * @brief This is the POST destination for the embedphotos button.
*
- * This is the POST destination for the embedphotos button
- *
+ * @return string A JSON string.
*/
- function post() {
+ public function post() {
if (argc() > 1 && argv(1) === 'album') {
// API: /embedphotos/album
- $name = (x($_POST,'name') ? $_POST['name'] : null );
- if(!$name) {
+ $name = (x($_POST, 'name') ? $_POST['name'] : null );
+ if (!$name) {
json_return_and_die(array('errormsg' => 'Error retrieving album', 'status' => false));
}
$album = $this->embedphotos_widget_album(array('channel' => \App::get_channel(), 'album' => $name));
json_return_and_die(array('status' => true, 'content' => $album));
}
- if(argc() > 1 && argv(1) === 'albumlist') {
+ if (argc() > 1 && argv(1) === 'albumlist') {
// API: /embedphotos/albumlist
- $album_list = $this->embedphotos_album_list($a);
+ $album_list = $this->embedphotos_album_list();
json_return_and_die(array('status' => true, 'albumlist' => $album_list));
}
- if(argc() > 1 && argv(1) === 'photolink') {
+ if (argc() > 1 && argv(1) === 'photolink') {
// API: /embedphotos/photolink
- $href = (x($_POST,'href') ? $_POST['href'] : null );
- if(!$href) {
+ $href = (x($_POST, 'href') ? $_POST['href'] : null );
+ if (!$href) {
json_return_and_die(array('errormsg' => 'Error retrieving link ' . $href, 'status' => false));
}
- $resource_id = array_pop(explode("/", $href));
+ $resource_id = array_pop(explode('/', $href));
$r = q("SELECT obj from item where resource_type = 'photo' and resource_id = '%s' limit 1",
dbesc($resource_id)
);
- if(!$r) {
+ if (!$r) {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
}
$obj = json_decode($r[0]['obj'], true);
- if(x($obj,'body')) {
+ if (x($obj, 'body')) {
$photolink = $obj['body'];
- } elseif (x($obj,'bbcode')) {
+ } elseif (x($obj, 'bbcode')) {
$photolink = $obj['bbcode'];
} else {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
@@ -58,48 +60,51 @@ class Embedphotos extends \Zotlabs\Web\Controller {
}
/**
- * Copied from include/widgets.php::widget_album() with a modification to get the profile_uid from
- * the input array as in widget_item()
+ * @brief Get photos from an album.
+ *
+ * @see \\Zotlabs\\Widget\\Album::widget()
*
- * @param array $args
- * @return string with HTML
+ * @param array $args associative array with
+ * * \e array \b channel
+ * * \e string \b album
+ * @return string with HTML code from 'photo_album.tpl'
*/
- function embedphotos_widget_album($args) {
-
+ protected function embedphotos_widget_album($args) {
$channel_id = 0;
- if(array_key_exists('channel', $args))
+
+ if (array_key_exists('channel', $args)) {
$channel = $args['channel'];
- $channel_id = intval($channel['channel_id']);
- if(! $channel_id)
+ $channel_id = intval($channel['channel_id']);
+ }
+ if (! $channel_id)
$channel_id = \App::$profile_uid;
- if(! $channel_id)
+ if (! $channel_id)
return '';
- $owner_uid = $channel_id;
require_once('include/security.php');
$sql_extra = permissions_sql($channel_id);
- if(! perm_is_allowed($channel_id,get_observer_hash(),'view_storage'))
+ if (! perm_is_allowed($channel_id, get_observer_hash(), 'view_storage'))
return '';
- if($args['album'])
+ if (isset($args['album']))
$album = (($args['album'] === '/') ? '' : $args['album']);
- if($args['title'])
+ if (isset($args['title']))
$title = $args['title'];
/**
- * This may return incorrect permissions if you have multiple directories of the same name.
+ * @note This may return incorrect permissions if you have multiple directories of the same name.
* It is a limitation of the photo table using a name for a photo album instead of a folder hash
*/
- if($album) {
+ if ($album) {
require_once('include/attach.php');
$x = q("select hash from attach where filename = '%s' and uid = %d limit 1",
dbesc($album),
- intval($owner_uid)
+ intval($channel_id)
);
- if($x) {
- $y = attach_can_view_folder($owner_uid,get_observer_hash(),$x[0]['hash']);
- if(! $y)
+ if ($x) {
+ $y = attach_can_view_folder($channel_id, get_observer_hash(), $x[0]['hash']);
+ if (! $y)
return '';
}
}
@@ -110,30 +115,33 @@ class Embedphotos extends \Zotlabs\Web\Controller {
(SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
ORDER BY created $order",
- intval($owner_uid),
+ intval($channel_id),
dbesc($album),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE)
);
- $photos = array();
- if(count($r)) {
+ $photos = [];
+ if (count($r)) {
$twist = 'rotright';
- foreach($r as $rr) {
- if($twist == 'rotright')
+ foreach ($r as $rr) {
+ if ($twist == 'rotright')
$twist = 'rotleft';
else
$twist = 'rotright';
+ $ph = photo_factory('');
+ $phototypes = $ph->supportedTypes();
+
$ext = $phototypes[$rr['mimetype']];
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
- $imagelink = (z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $rr['resource_id']
+ $imagelink = (z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $rr['resource_id']
. (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
- $photos[] = array(
+ $photos[] = [
'id' => $rr['id'],
'twist' => ' ' . $twist . rand(2,4),
'link' => $imagelink,
@@ -143,35 +151,43 @@ class Embedphotos extends \Zotlabs\Web\Controller {
'desc'=> $desc_e,
'ext' => $ext,
'hash'=> $rr['resource_id'],
- 'unknown' => t('Unknown')
- );
+ 'unknown' => t('Unknown'),
+ ];
}
}
$tpl = get_markup_template('photo_album.tpl');
- $o .= replace_macros($tpl, array(
+ $o = replace_macros($tpl, [
'$photos' => $photos,
'$album' => (($title) ? $title : $album),
'$album_id' => rand(),
- '$album_edit' => array(t('Edit Album'), $album_edit),
+ '$album_edit' => array(t('Edit Album'), false),
'$can_post' => false,
'$upload' => array(t('Upload'), z_root() . '/photos/' . \App::$profile['channel_address'] . '/upload/' . bin2hex($album)),
'$order' => false,
- '$upload_form' => $upload_form,
- '$no_fullscreen_btn' => true
- ));
+ '$upload_form' => '',
+ '$no_fullscreen_btn' => true,
+ ]);
return $o;
}
- function embedphotos_album_list($a) {
+ /**
+ * @brief Get albums observer is allowed to see.
+ *
+ * @see photos_albums_list()
+ *
+ * @return NULL|array
+ */
+ protected function embedphotos_album_list() {
require_once('include/photos.php');
$p = photos_albums_list(\App::get_channel(), \App::get_observer());
- if($p['success']) {
+
+ if ($p['success']) {
return $p['albums'];
- } else {
- return null;
}
+
+ return null;
}
}
diff --git a/Zotlabs/Module/Events.php b/Zotlabs/Module/Events.php
index 7e5204e62..e883db49f 100644
--- a/Zotlabs/Module/Events.php
+++ b/Zotlabs/Module/Events.php
@@ -97,8 +97,8 @@ class Events extends \Zotlabs\Web\Controller {
$type = escape_tags(trim($_POST['type']));
require_once('include/text.php');
- linkify_tags($a, $desc, local_channel());
- linkify_tags($a, $location, local_channel());
+ linkify_tags($desc, local_channel());
+ linkify_tags($location, local_channel());
//$action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
diff --git a/Zotlabs/Module/Filestorage.php b/Zotlabs/Module/Filestorage.php
index 23bd63f95..2c247cd65 100644
--- a/Zotlabs/Module/Filestorage.php
+++ b/Zotlabs/Module/Filestorage.php
@@ -5,6 +5,8 @@ namespace Zotlabs\Module;
*
*/
+
+
class Filestorage extends \Zotlabs\Web\Controller {
function post() {
@@ -71,14 +73,6 @@ class Filestorage extends \Zotlabs\Web\Controller {
return;
}
- // Since we have ACL'd files in the wild, but don't have ACL here yet, we
- // need to return for anyone other than the owner, despite the perms check for now.
-
- $is_owner = (((local_channel()) && ($owner == local_channel())) ? true : false);
- if(! ($is_owner || is_site_admin())){
- info( t('Permission Denied.') . EOL );
- return;
- }
if(argc() > 3 && argv(3) === 'delete') {
@@ -101,18 +95,31 @@ class Filestorage extends \Zotlabs\Web\Controller {
}
$file = intval(argv(2));
- $r = q("SELECT hash FROM attach WHERE id = %d AND uid = %d LIMIT 1",
+ $r = q("SELECT hash, creator FROM attach WHERE id = %d AND uid = %d LIMIT 1",
dbesc($file),
intval($owner)
);
if(! $r) {
+ notice( t('File not found.') . EOL);
+
if($json_return)
json_return_and_die([ 'success' => false ]);
- notice( t('File not found.') . EOL);
goaway(z_root() . '/cloud/' . $which);
}
+ if(local_channel() !== $owner) {
+ if($r[0]['creator'] && $r[0]['creator'] !== $ob_hash) {
+ notice( t('Permission denied.') . EOL);
+
+ if($json_return)
+ json_return_and_die([ 'success' => false ]);
+
+ goaway(z_root() . '/cloud/' . $which);
+ }
+ }
+
+
$f = $r[0];
$channel = channelx_by_n($owner);
@@ -134,6 +141,19 @@ class Filestorage extends \Zotlabs\Web\Controller {
goaway(dirname($url));
}
+
+
+
+ // Since we have ACL'd files in the wild, but don't have ACL here yet, we
+ // need to return for anyone other than the owner, despite the perms check for now.
+
+ $is_owner = (((local_channel()) && ($owner == local_channel())) ? true : false);
+ if(! ($is_owner || is_site_admin())){
+ info( t('Permission Denied.') . EOL );
+ return;
+ }
+
+
if(argc() > 3 && argv(3) === 'edit') {
require_once('include/acl_selectors.php');
if(! $perms['write_storage']) {
diff --git a/Zotlabs/Module/Group.php b/Zotlabs/Module/Group.php
index c8ccaa2cb..12edf8428 100644
--- a/Zotlabs/Module/Group.php
+++ b/Zotlabs/Module/Group.php
@@ -66,6 +66,9 @@ class Group extends Controller {
$groupname = notags(trim($_POST['groupname']));
$public = intval($_POST['public']);
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
+ call_hooks ('privacygroup_extras_post',$hookinfo);
+
if((strlen($groupname)) && (($groupname != $group['gname']) || ($public != $group['visible']))) {
$r = q("UPDATE pgrp SET gname = '%s', visible = %d WHERE uid = %d AND id = %d",
dbesc($groupname),
@@ -75,6 +78,8 @@ class Group extends Controller {
);
if($r)
info( t('Privacy group updated.') . EOL );
+
+
build_sync_packet(local_channel(),null,true);
}
@@ -127,6 +132,10 @@ class Group extends Controller {
$i++;
}
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>argv(1) ];
+ call_hooks ('privacygroup_extras',$hookinfo);
+ $pgrp_extras = $hookinfo['pgrp_extras'];
+
$tpl = get_markup_template('privacy_groups.tpl');
$o = replace_macros($tpl, [
'$title' => t('Privacy Groups'),
@@ -136,6 +145,7 @@ class Group extends Controller {
// new group form
'$gname' => array('groupname',t('Privacy group name')),
'$public' => array('public',t('Members are visible to other channels'), false),
+ '$pgrp_extras' => $pgrp_extras,
'$form_security_token' => get_form_security_token("group_edit"),
'$submit' => t('Submit'),
@@ -166,8 +176,11 @@ class Group extends Controller {
);
if($r)
$result = group_rmv(local_channel(),$r[0]['gname']);
- if($result)
+ if($result) {
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$argv(2) ];
+ call_hooks ('privacygroup_extras_drop',$hookinfo);
info( t('Privacy group removed.') . EOL);
+ }
else
notice( t('Unable to remove privacy group.') . EOL);
}
@@ -230,6 +243,10 @@ class Group extends Controller {
}
}
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
+ call_hooks ('privacygroup_extras',$hookinfo);
+ $pgrp_extras = $hookinfo['pgrp_extras'];
+
$context = $context + array(
'$title' => sprintf(t('Privacy Group: %s'), $group['gname']),
'$details_label' => t('Edit'),
@@ -240,6 +257,7 @@ class Group extends Controller {
'$form_security_token_edit' => get_form_security_token('group_edit'),
'$delete' => t('Delete Group'),
'$form_security_token_drop' => get_form_security_token("group_drop"),
+ '$pgrp_extras' => $pgrp_extras,
);
}
@@ -283,6 +301,7 @@ class Group extends Controller {
$context['$groupeditor'] = $groupeditor;
$context['$desc'] = t('Click a channel to toggle membership');
+ $context['$pgrp_extras'] = $pgrp_extras;
if($change) {
$tpl = get_markup_template('groupeditor.tpl');
diff --git a/Zotlabs/Module/Id.php b/Zotlabs/Module/Id.php
new file mode 100644
index 000000000..15abfa2a3
--- /dev/null
+++ b/Zotlabs/Module/Id.php
@@ -0,0 +1,119 @@
+<?php
+
+namespace Zotlabs\Module;
+
+/**
+ *
+ * Controller for responding to x-zot: protocol requests
+ * x-zot:_jkfRG85nJ-714zn-LW_VbTFW8jSjGAhAydOcJzHxqHkvEHWG2E0RbA_pbch-h4R63RG1YJZifaNzgccoLa3MQ/453c1678-1a79-4af7-ab65-6b012f6cab77
+ *
+ */
+
+use Zotlabs\Lib\Activity;
+use Zotlabs\Lib\ActivityStreams;
+use Zotlabs\Lib\LDSignatures;
+use Zotlabs\Zot6\HTTPSig;
+use Zotlabs\Web\Controller;
+use Zotlabs\Lib\Libzot;
+use Zotlabs\Lib\ThreadListener;
+use Zotlabs\Lib\IConfig;
+use Zotlabs\Lib\Enotify;
+use App;
+
+require_once('include/attach.php');
+require_once('include/bbcode.php');
+require_once('include/security.php');
+
+
+class Id extends Controller {
+
+ function init() {
+
+ if(Libzot::is_zot_request()) {
+
+ $conversation = false;
+
+ $request_portable_id = argv(1);
+ if(argc() > 2) {
+ $item_id = argv(2);
+ }
+
+ $portable_id = EMPTY_STR;
+
+ $sigdata = HTTPSig::verify(EMPTY_STR);
+ if($sigdata['portable_id'] && $sigdata['header_valid']) {
+ $portable_id = $sigdata['portable_id'];
+ }
+
+
+ $chan = channelx_by_hash($request_portable_id);
+
+ if($chan) {
+ $channel_id = $chan['channel_id'];
+ if(! $item_id) {
+ $handler = new Channel();
+ App::$argc = 2;
+ App::$argv[0] = 'channel';
+ App::$argv[1] = $chan['channel_address'];
+ $handler->init();
+ }
+ }
+ else {
+ http_status_exit(404, 'Not found');
+ }
+
+
+ $item_normal = " and item.item_hidden = 0 and item.item_type = 0 and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_blocked = 0 ";
+
+ $sql_extra = item_permissions_sql(0);
+
+ $r = q("select * from item where uuid = '%s' $item_normal $sql_extra and uid = %d limit 1",
+ dbesc($item_id),
+ intval($channel_id)
+ );
+ if(! $r) {
+
+ $r = q("select * from item where uuid = '%s' $item_normal and uid = %d limit 1",
+ dbesc($item_id),
+ intval($channel_id)
+ );
+ if($r) {
+ http_status_exit(403, 'Forbidden');
+ }
+ http_status_exit(404, 'Not found');
+ }
+
+ if(! perm_is_allowed($chan['channel_id'],get_observer_hash(),'view_stream'))
+ http_status_exit(403, 'Forbidden');
+
+ xchan_query($r,true);
+ $items = fetch_post_tags($r,true);
+
+ $i = Activity::encode_item($items[0]);
+
+ if(! $i)
+ http_status_exit(404, 'Not found');
+
+ $x = array_merge(['@context' => [
+ ACTIVITYSTREAMS_JSONLD_REV,
+ 'https://w3id.org/security/v1',
+ z_root() . ZOT_APSCHEMA_REV
+ ]], $i);
+
+ $headers = [];
+ $headers['Content-Type'] = 'application/x-zot+json' ;
+ $ret = json_encode($x, JSON_UNESCAPED_SLASHES);
+ $headers['Digest'] = HTTPSig::generate_digest_header($ret);
+ $headers['(request-target)'] = strtolower($_SERVER['REQUEST_METHOD']) . ' ' . $_SERVER['REQUEST_URI'];
+ $h = HTTPSig::create_sig($headers,$chan['channel_prvkey'],channel_url($chan));
+ HTTPSig::set_headers($h);
+ echo $ret;
+ killme();
+
+ }
+
+ }
+
+}
+
+
diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php
index 6016328a5..0daf28aa9 100644
--- a/Zotlabs/Module/Import.php
+++ b/Zotlabs/Module/Import.php
@@ -127,6 +127,15 @@ class Import extends \Zotlabs\Web\Controller {
//
// }
+
+ // prevent incompatible osada or zap data from horking your database
+
+ if(array_path_exists('compatibility/codebase',$data)) {
+ notice('Data export format is not compatible with this software');
+ return;
+ }
+
+
if($moving)
$seize = 1;
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 1d64ef60c..ebcf632ef 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -6,6 +6,13 @@ use Zotlabs\Lib\IConfig;
use Zotlabs\Lib\Enotify;
use Zotlabs\Web\Controller;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Activity;
+use Zotlabs\Lib\ActivityStreams;
+use Zotlabs\Lib\LDSignatures;
+use Zotlabs\Zot6\HTTPSig;
+use Zotlabs\Lib\Libzot;
+use Zotlabs\Lib\ThreadListener;
+use App;
require_once('include/crypto.php');
require_once('include/items.php');
@@ -30,6 +37,144 @@ require_once('include/security.php');
class Item extends Controller {
+
+ function init() {
+
+ if(Libzot::is_zot_request()) {
+
+ $conversation = false;
+
+ $item_id = argv(1);
+
+ if(! $item_id)
+ http_status_exit(404, 'Not found');
+
+
+ $portable_id = EMPTY_STR;
+
+ $sigdata = HTTPSig::verify(EMPTY_STR);
+ if($sigdata['portable_id'] && $sigdata['header_valid']) {
+ $portable_id = $sigdata['portable_id'];
+ }
+
+ $item_normal = " and item.item_hidden = 0 and item.item_type = 0 and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_blocked = 0 ";
+
+ $sql_extra = item_permissions_sql(0);
+
+ $r = q("select * from item where mid = '%s' $item_normal $sql_extra limit 1",
+ dbesc(z_root() . '/item/' . $item_id)
+ );
+ if(! $r) {
+
+
+ $r = q("select * from item where mid = '%s' $item_normal limit 1",
+ dbesc(z_root() . '/item/' . $item_id)
+ );
+ if($r) {
+ http_status_exit(403, 'Forbidden');
+ }
+ http_status_exit(404, 'Not found');
+ }
+
+
+ $items = q("select parent as item_id from item where mid = '%s' and uid = %d $item_normal $sql_extra ",
+ dbesc($r[0]['parent_mid']),
+ intval($r[0]['uid'])
+ );
+ if(! $items) {
+ http_status_exit(404, 'Not found');
+ }
+
+ $r = $items;
+
+ $parents_str = ids_to_querystr($r,'item_id');
+
+ $items = q("SELECT item.*, item.id AS item_id FROM item WHERE item.parent IN ( %s ) $item_normal $sql_extra ",
+ dbesc($parents_str)
+ );
+
+ if(! $items) {
+ http_status_exit(404, 'Not found');
+ }
+
+ $r = $items;
+ xchan_query($r,true);
+ $items = fetch_post_tags($r,true);
+
+ $observer = App::get_observer();
+ $parent = $items[0];
+ $recips = (($parent['owner']['xchan_network'] === 'activitypub') ? get_iconfig($parent['id'],'activitypub','recips', []) : []);
+ $to = (($recips && array_key_exists('to',$recips) && is_array($recips['to'])) ? $recips['to'] : null);
+ $nitems = [];
+ foreach($items as $i) {
+
+ $mids = [];
+
+ if(intval($i['item_private'])) {
+ if(! $observer) {
+ continue;
+ }
+ // ignore private reshare, possibly from hubzilla
+ if($i['verb'] === 'Announce') {
+ if(! in_array($i['thr_parent'],$mids)) {
+ $mids[] = $i['thr_parent'];
+ }
+ continue;
+ }
+ // also ignore any children of the private reshares
+ if(in_array($i['thr_parent'],$mids)) {
+ continue;
+ }
+
+ if((! $to) || (! in_array($observer['xchan_url'],$to))) {
+ continue;
+ }
+
+ }
+ $nitems[] = $i;
+ }
+
+ if(! $nitems)
+ http_status_exit(404, 'Not found');
+
+ $chan = channelx_by_n($nitems[0]['uid']);
+
+ if(! $chan)
+ http_status_exit(404, 'Not found');
+
+ if(! perm_is_allowed($chan['channel_id'],get_observer_hash(),'view_stream'))
+ http_status_exit(403, 'Forbidden');
+
+ $i = Activity::encode_item_collection($nitems,'conversation/' . $item_id,'OrderedCollection',( defined('NOMADIC') ? false : true));
+ if($portable_id) {
+ ThreadListener::store(z_root() . '/item/' . $item_id,$portable_id);
+ }
+
+ if(! $i)
+ http_status_exit(404, 'Not found');
+
+ $x = array_merge(['@context' => [
+ ACTIVITYSTREAMS_JSONLD_REV,
+ 'https://w3id.org/security/v1',
+ z_root() . ZOT_APSCHEMA_REV
+ ]], $i);
+
+ $headers = [];
+ $headers['Content-Type'] = 'application/x-zot+json' ;
+ $x['signature'] = LDSignatures::sign($x,$chan);
+ $ret = json_encode($x, JSON_UNESCAPED_SLASHES);
+ $headers['Digest'] = HTTPSig::generate_digest_header($ret);
+ $headers['(request-target)'] = strtolower($_SERVER['REQUEST_METHOD']) . ' ' . $_SERVER['REQUEST_URI'];
+ $h = HTTPSig::create_sig($headers,$chan['channel_prvkey'],channel_url($chan));
+ HTTPSig::set_headers($h);
+ echo $ret;
+ killme();
+
+ }
+ }
+
+
+
function post() {
// This will change. Figure out who the observer is and whether or not
@@ -553,8 +698,8 @@ class Item extends Controller {
// Look for tags and linkify them
- $results = linkify_tags($a, $summary, ($uid) ? $uid : $profile_uid);
- $results = linkify_tags($a, $body, ($uid) ? $uid : $profile_uid);
+ $results = linkify_tags($summary, ($uid) ? $uid : $profile_uid);
+ $results = linkify_tags($body, ($uid) ? $uid : $profile_uid);
if($results) {
@@ -639,9 +784,9 @@ class Item extends Controller {
if(preg_match_all('/(\[share=(.*?)\](.*?)\[\/share\])/',$body,$match)) {
+
// process share by id
- $verb = ACTIVITY_SHARE;
$i = 0;
foreach($match[2] as $mtch) {
$reshare = new \Zotlabs\Lib\Share($mtch);
@@ -760,7 +905,7 @@ class Item extends Controller {
// fix permalinks for cards
if($webpage == ITEM_TYPE_CARD) {
- $plink = z_root() . '/cards/' . $channel['channel_address'] . '/' . (($pagetitle) ? $pagetitle : substr($mid,0,16));
+ $plink = z_root() . '/cards/' . $channel['channel_address'] . '/' . (($pagetitle) ? $pagetitle : $uuid);
}
if(($parent_item) && ($parent_item['item_type'] == ITEM_TYPE_CARD)) {
$r = q("select v from iconfig where iconfig.cat = 'system' and iconfig.k = 'CARD' and iconfig.iid = %d limit 1",
@@ -772,7 +917,7 @@ class Item extends Controller {
}
if($webpage == ITEM_TYPE_ARTICLE) {
- $plink = z_root() . '/articles/' . $channel['channel_address'] . '/' . (($pagetitle) ? $pagetitle : substr($mid,0,16));
+ $plink = z_root() . '/articles/' . $channel['channel_address'] . '/' . (($pagetitle) ? $pagetitle : $uuid);
}
if(($parent_item) && ($parent_item['item_type'] == ITEM_TYPE_ARTICLE)) {
$r = q("select v from iconfig where iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and iconfig.iid = %d limit 1",
@@ -784,7 +929,7 @@ class Item extends Controller {
}
if ((! $plink) && ($item_thread_top)) {
- $plink = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $mid;
+ $plink = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . gen_link_id($mid);
$plink = substr($plink,0,190);
}
diff --git a/Zotlabs/Module/Like.php b/Zotlabs/Module/Like.php
index c39726b88..3d1f503b6 100644
--- a/Zotlabs/Module/Like.php
+++ b/Zotlabs/Module/Like.php
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Activity;
+
require_once('include/security.php');
require_once('include/bbcode.php');
require_once('include/items.php');
@@ -50,7 +52,7 @@ class Like extends \Zotlabs\Web\Controller {
$observer = \App::get_observer();
$interactive = $_REQUEST['interactive'];
- if($interactive) {
+ if((! $observer) || ($interactive)) {
$o .= '<h1>' . t('Like/Dislike') . '</h1>';
$o .= EOL . EOL;
@@ -249,6 +251,9 @@ class Like extends \Zotlabs\Web\Controller {
}
}
else {
+
+ if(! $observer)
+ killme();
// this is used to like an item or comment
@@ -400,6 +405,7 @@ class Like extends \Zotlabs\Web\Controller {
$object = json_encode(array(
'type' => $objtype,
'id' => $item['mid'],
+ 'asld' => Activity::fetch_item( [ 'id' => $item['mid'] ] ),
'parent' => (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']),
'link' => $links,
'title' => $item['title'],
diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php
index 7c7dc0e88..32b4c0281 100644
--- a/Zotlabs/Module/Linkinfo.php
+++ b/Zotlabs/Module/Linkinfo.php
@@ -138,8 +138,8 @@ class Linkinfo extends \Zotlabs\Web\Controller {
}
$image = "";
-
- if(sizeof($siteinfo["images"]) > 0){
+
+ if(is_array($siteinfo["images"]) && count($siteinfo["images"])){
/* Execute below code only if image is present in siteinfo */
$total_images = 0;
@@ -161,7 +161,7 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$total_images ++;
if($max_images && $max_images >= $total_images)
break;
- }
+ }
}
if(strlen($text)) {
diff --git a/Zotlabs/Module/Mail.php b/Zotlabs/Module/Mail.php
index d38c1d88c..3202d38a5 100644
--- a/Zotlabs/Module/Mail.php
+++ b/Zotlabs/Module/Mail.php
@@ -34,7 +34,7 @@ class Mail extends \Zotlabs\Web\Controller {
}
else {
$body = cleanup_bbcode($body);
- $results = linkify_tags($a, $body, local_channel());
+ $results = linkify_tags($body, local_channel());
if(preg_match_all('/(\[attachment\](.*?)\[\/attachment\])/',$body,$match)) {
$attachments = array();
@@ -111,7 +111,7 @@ class Mail extends \Zotlabs\Web\Controller {
}
require_once('include/text.php');
- linkify_tags($a, $body, local_channel());
+ linkify_tags($body, local_channel());
if(! $recipient) {
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index b93faa612..2019082ed 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Group;
+use Zotlabs\Lib\Apps;
use App;
require_once('include/items.php');
@@ -114,8 +116,8 @@ class Network extends \Zotlabs\Web\Controller {
$def_acl = array('allow_gid' => '<' . $r[0]['hash'] . '>');
}
- $default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1));
- $default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1));
+ $default_cmin = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1));
+ $default_cmax = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1));
$cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0);
$star = ((x($_GET,'star')) ? intval($_GET['star']) : 0);
@@ -132,6 +134,13 @@ class Network extends \Zotlabs\Web\Controller {
$deftag = '';
+ if (Apps::system_app_installed(local_channel(),'Affinity Tool')) {
+ $affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
+ if ($affinity_locked) {
+ set_pconfig(local_channel(),'affinity','cmin',$cmin);
+ set_pconfig(local_channel(),'affinity','cmax',$cmax);
+ }
+ }
if(x($_GET,'search') || $file || (!$pf && $cid) || $hashtags || $verb || $category || $conv || $unseen)
$nouveau = true;
diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php
index a9022a03a..98aa480fe 100644
--- a/Zotlabs/Module/New_channel.php
+++ b/Zotlabs/Module/New_channel.php
@@ -134,7 +134,7 @@ class New_channel extends \Zotlabs\Web\Controller {
$default_role = '';
$aid = get_account_id();
if($aid) {
- $r = q("select count(channel_id) as total from channel where channel_account_id = %d",
+ $r = q("select count(channel_id) as total from channel where channel_account_id = %d and channel_removed = 0",
intval($aid)
);
if($r && (! intval($r[0]['total']))) {
@@ -145,7 +145,7 @@ class New_channel extends \Zotlabs\Web\Controller {
$canadd = true;
if($r && ($limit !== false)) {
$channel_usage_message = sprintf( t("You have created %1$.0f of %2$.0f allowed channels."), $r[0]['total'], $limit);
- if ($r[0]['total'] >= $limit) {
+ if ($r[0]['total'] > $limit) {
$canadd = false;
}
}
diff --git a/Zotlabs/Module/Notes.php b/Zotlabs/Module/Notes.php
index 178a6bce0..7572f7420 100644
--- a/Zotlabs/Module/Notes.php
+++ b/Zotlabs/Module/Notes.php
@@ -1,28 +1,31 @@
<?php
-namespace Zotlabs\Module; /** @file */
+namespace Zotlabs\Module;
use App;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Apps;
+/**
+ * @brief Notes Module controller.
+ */
class Notes extends Controller {
function post() {
-
+
if(! local_channel())
return EMPTY_STR;
if(! Apps::system_app_installed(local_channel(), 'Notes'))
return EMPTY_STR;
-
+
$ret = array('success' => true);
if(array_key_exists('note_text',$_REQUEST)) {
$body = escape_tags($_REQUEST['note_text']);
-
+
// I've had my notes vanish into thin air twice in four years.
- // Provide a backup copy if there were contents previously
+ // Provide a backup copy if there were contents previously
// and there are none being saved now.
-
+
if(! $body) {
$old_text = get_pconfig(local_channel(),'notes','text');
if($old_text)
@@ -40,11 +43,9 @@ class Notes extends Controller {
logger('notes saved.', LOGGER_DEBUG);
json_return_and_die($ret);
-
}
function get() {
-
if(! local_channel())
return EMPTY_STR;
@@ -61,7 +62,6 @@ class Notes extends Controller {
$arr = ['app' => true];
return $w->widget($arr);
-
}
-
+
}
diff --git a/Zotlabs/Module/Oep.php b/Zotlabs/Module/Oep.php
index 0f20a5f9a..c0d8e15e5 100644
--- a/Zotlabs/Module/Oep.php
+++ b/Zotlabs/Module/Oep.php
@@ -181,7 +181,7 @@ class Oep extends \Zotlabs\Web\Controller {
dbesc($res)
);
if($r) {
- $sql_extra = "and item.id = " . intval($r[0]['iid']) . " ";
+ $sql_extra .= " and item.id = " . intval($r[0]['iid']) . " ";
}
else {
return $ret;
@@ -194,6 +194,9 @@ class Oep extends \Zotlabs\Web\Controller {
intval(ITEM_TYPE_CARD)
);
+ if(! $r)
+ return;
+
$item_normal = " and item.item_hidden = 0 and item.item_type in (0,6) and item.item_deleted = 0
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
@@ -255,7 +258,6 @@ class Oep extends \Zotlabs\Web\Controller {
if(! $channel)
return $ret;
-
if(! perm_is_allowed($channel['channel_id'],get_observer_hash(),'view_pages'))
return $ret;
@@ -265,7 +267,7 @@ class Oep extends \Zotlabs\Web\Controller {
dbesc($res)
);
if($r) {
- $sql_extra = "and item.id = " . intval($r[0]['iid']) . " ";
+ $sql_extra .= " and item.id = " . intval($r[0]['iid']) . " ";
}
else {
return $ret;
@@ -278,6 +280,9 @@ class Oep extends \Zotlabs\Web\Controller {
intval(ITEM_TYPE_ARTICLE)
);
+ if(! $r)
+ return;
+
$item_normal = " and item.item_hidden = 0 and item.item_type in (0,7) and item.item_deleted = 0
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
diff --git a/Zotlabs/Module/Pconfig.php b/Zotlabs/Module/Pconfig.php
index 44fe5d9a9..06b94b34f 100644
--- a/Zotlabs/Module/Pconfig.php
+++ b/Zotlabs/Module/Pconfig.php
@@ -22,6 +22,11 @@ class Pconfig extends \Zotlabs\Web\Controller {
$k = trim(escape_tags($_POST['k']));
$v = trim($_POST['v']);
$aj = intval($_POST['aj']);
+
+ // Do not store "serialized" data received in the $_POST
+ if (preg_match('|^a:[0-9]+:{.*}$|s',$v) || preg_match('|O:8:"stdClass":[0-9]+:{.*}$|s',$v)) {
+ return;
+ }
if(in_array(argv(2),$this->disallowed_pconfig())) {
notice( t('This setting requires special processing and editing has been blocked.') . EOL);
diff --git a/Zotlabs/Module/Photo.php b/Zotlabs/Module/Photo.php
index 30e8340e2..96a4e1f40 100644
--- a/Zotlabs/Module/Photo.php
+++ b/Zotlabs/Module/Photo.php
@@ -1,19 +1,20 @@
<?php
+
+
namespace Zotlabs\Module;
require_once('include/security.php');
require_once('include/attach.php');
require_once('include/photo/photo_driver.php');
-
class Photo extends \Zotlabs\Web\Controller {
function init() {
- $prvcachecontrol = false;
$streaming = null;
$channel = null;
$person = 0;
+ $renew = false;
switch(argc()) {
case 4:
@@ -29,7 +30,15 @@ class Photo extends \Zotlabs\Web\Controller {
killme();
// NOTREACHED
}
-
+
+ $cache_mode = array(
+ 'on' => false,
+ 'age' => 86400,
+ 'exp' => true,
+ 'leak' => false
+ );
+ call_hooks('cache_mode_hook', $cache_mode);
+
$observer_xchan = get_observer_hash();
$ismodified = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
@@ -106,13 +115,14 @@ class Photo extends \Zotlabs\Web\Controller {
License link: http://creativecommons.org/licenses/by/3.0/
*/
+ // @FIXME It seems this part doesn't work because we are not setting such cookie
$cookie_value = false;
if (isset($_COOKIE['devicePixelRatio'])) {
$cookie_value = intval($_COOKIE['devicePixelRatio']);
}
else {
// Force revalidation of cache on next request
- $cache_directive = 'no-cache';
+ // $prvcachecontrol = 'no-cache';
$status = 'no cookie';
}
@@ -129,27 +139,42 @@ class Photo extends \Zotlabs\Web\Controller {
$resolution = 1;
}
- $r = q("SELECT uid, photo_usage FROM photo WHERE resource_id = '%s' AND imgscale = %d LIMIT 1",
+ $r = q("SELECT uid, photo_usage, display_path FROM photo WHERE resource_id = '%s' AND imgscale = %d LIMIT 1",
dbesc($photo),
intval($resolution)
);
if($r) {
-
$allowed = (-1);
- if(intval($r[0]['photo_usage'])) {
+ $u = intval($r[0]['photo_usage']);
+ if($u) {
$allowed = 1;
- if(intval($r[0]['photo_usage']) === PHOTO_COVER)
+ if($u === PHOTO_COVER)
if($resolution < PHOTO_RES_COVER_1200)
$allowed = (-1);
- if(intval($r[0]['photo_usage']) === PHOTO_PROFILE)
+ if($u === PHOTO_PROFILE)
if(! in_array($resolution,[4,5,6]))
$allowed = (-1);
+ if($u === PHOTO_CACHE) {
+ // Validate cache
+ $cache = array(
+ 'resid' => $photo,
+ 'status' => false
+ );
+ if($cache_mode['on'])
+ call_hooks('cache_url_hook', $cache);
+ if(! $cache['status']) {
+ $url = htmlspecialchars_decode($r[0]['display_path']);
+ if(strpos(z_root(),'https:') !== false && strpos($url,'https:') === false)
+ $url = z_root() . '/sslify/' . $filename . '?f=&url=' . urlencode($url);
+ header("Location: " . $url);
+ killme();
+ }
+ }
}
- if($allowed === (-1)) {
+ if($allowed === (-1))
$allowed = attach_can_view($r[0]['uid'],$observer_xchan,$photo);
- }
$channel = channelx_by_n($r[0]['uid']);
@@ -158,18 +183,21 @@ class Photo extends \Zotlabs\Web\Controller {
dbesc($photo),
intval($resolution)
);
-
+
$exists = (($e) ? true : false);
-
+
if($exists && $allowed) {
+ $expires = strtotime($e[0]['expires'] . 'Z');
$data = dbunescbin($e[0]['content']);
$filesize = $e[0]['filesize'];
$mimetype = $e[0]['mimetype'];
$modified = strtotime($e[0]['edited'] . 'Z');
- if(intval($e[0]['os_storage']))
+
+ if(intval($e[0]['os_storage'])) {
$streaming = $data;
+ }
if($e[0]['allow_cid'] != '' || $e[0]['allow_gid'] != '' || $e[0]['deny_gid'] != '' || $e[0]['deny_gid'] != '')
- $prvcachecontrol = true;
+ $prvcachecontrol = 'no-store, no-cache, must-revalidate';
}
else {
if(! $allowed) {
@@ -180,9 +208,9 @@ class Photo extends \Zotlabs\Web\Controller {
}
}
- } else {
+ }
+ else
http_status_exit(404,'not found');
- }
}
header_remove('Pragma');
@@ -225,24 +253,14 @@ class Photo extends \Zotlabs\Web\Controller {
$mimetype = $ph->getType();
}
}
-
- // @FIXME Seems never invoked
- // Writing in cachefile
- if (isset($cachefile) && $cachefile != '') {
- file_put_contents($cachefile, $data);
- $modified = filemtime($cachefile);
- }
-
- header("Content-type: " . $mimetype);
-
- if($prvcachecontrol) {
+ if(isset($prvcachecontrol)) {
// it is a private photo that they have no permission to view.
// tell the browser not to cache it, in case they authenticate
// and subsequently have permission to see it
- header("Cache-Control: no-store, no-cache, must-revalidate");
+ header("Cache-Control: " . $prvcachecontrol);
}
else {
@@ -255,18 +273,23 @@ class Photo extends \Zotlabs\Web\Controller {
// This has performance considerations but we highly recommend you
// leave it alone.
- $cache = get_config('system','photo_cache_time', 86400); // 1 day by default
+ $maxage = $cache_mode['age'];
- header("Expires: " . gmdate("D, d M Y H:i:s", time() + $cache) . " GMT");
- header("Cache-Control: max-age=" . $cache);
+ if($cache_mode['exp'] || (! isset($expires)) || (isset($expires) && $expires - 60 < time()))
+ $expires = time() + $maxage;
+ else
+ $maxage = $expires - time();
+
+ header("Expires: " . gmdate("D, d M Y H:i:s", $expires) . " GMT");
+ header("Cache-Control: max-age=" . $maxage);
}
+ header("Content-type: " . $mimetype);
header("Last-Modified: " . gmdate("D, d M Y H:i:s", $modified) . " GMT");
header("Content-Length: " . (isset($filesize) ? $filesize : strlen($data)));
// If it's a file resource, stream it.
-
if($streaming && $channel) {
if(strpos($streaming,'store') !== false)
$istream = fopen($streaming,'rb');
diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php
index 21f6293ef..a761dbd14 100644
--- a/Zotlabs/Module/Photos.php
+++ b/Zotlabs/Module/Photos.php
@@ -422,7 +422,7 @@ class Photos extends \Zotlabs\Web\Controller {
require_once('include/text.php');
$profile_uid = \App::$profile['profile_uid'];
- $results = linkify_tags($a, $rawtags, (local_channel()) ? local_channel() : $profile_uid);
+ $results = linkify_tags($rawtags, (local_channel()) ? local_channel() : $profile_uid);
$success = $results['success'];
$post_tags = array();
@@ -988,7 +988,7 @@ class Photos extends \Zotlabs\Web\Controller {
$photo = array(
'href' => z_root() . '/photo/' . $hires['resource_id'] . '-' . $hires['imgscale'] . '.' . $phototypes[$hires['mimetype']],
'title'=> t('View Full Size'),
- 'src' => z_root() . '/photo/' . $lores['resource_id'] . '-' . $lores['imgscale'] . '.' . $phototypes[$lores['mimetype']] . '?f=&_u=' . datetime_convert('','','','ymdhis')
+ 'src' => z_root() . '/photo/' . $lores['resource_id'] . '-' . $lores['imgscale'] . '.' . $phototypes[$lores['mimetype']]
);
if($nextlink)
@@ -1122,6 +1122,7 @@ class Photos extends \Zotlabs\Web\Controller {
$comments = '';
if(! $r) {
if($observer && ($can_post || $can_comment)) {
+ $feature_auto_save_draft = ((feature_enabled($owner_uid, 'auto_save_draft')) ? "true" : "false");
$commentbox = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$mode' => 'photos',
@@ -1137,7 +1138,8 @@ class Photos extends \Zotlabs\Web\Controller {
'$submit' => t('Submit'),
'$preview' => t('Preview'),
'$ww' => '',
- '$feature_encrypt' => false
+ '$feature_encrypt' => false,
+ '$auto_save_draft' => $feature_auto_save_draft
));
}
}
@@ -1270,8 +1272,14 @@ class Photos extends \Zotlabs\Web\Controller {
if(feature_enabled($owner_uid,'dislike'))
$response_verbs[] = 'dislike';
-
$responses = get_responses($conv_responses,$response_verbs,'',$link_item);
+
+ $hookdata = [
+ 'onclick' => '$.colorbox({href: \'' . $photo['href'] . '\'}); return false;',
+ 'raw_photo' => $ph[0],
+ 'nickname' => \App::$data['channel']['channel_address']
+ ];
+ call_hooks('photo_view_filter', $hookdata);
$photo_tpl = get_markup_template('photo_view.tpl');
$o .= replace_macros($photo_tpl, array(
@@ -1309,6 +1317,7 @@ class Photos extends \Zotlabs\Web\Controller {
'$comments' => $comments,
'$commentbox' => $commentbox,
'$paginate' => $paginate,
+ '$onclick' => $hookdata['onclick']
));
\App::$data['photo_html'] = $o;
diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index f660c3b55..a367b1062 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -330,6 +330,7 @@ class Ping extends \Zotlabs\Web\Controller {
$notifs[] = array(
'notify_link' => z_root() . '/mail/' . $zz['id'],
'name' => $zz['xchan_name'],
+ 'addr' => $zz['xchan_addr'],
'url' => $zz['xchan_url'],
'photo' => $zz['xchan_photo_s'],
'when' => relative_date($zz['created']),
@@ -346,6 +347,10 @@ class Ping extends \Zotlabs\Web\Controller {
if(argc() > 1 && (argv(1) === 'network' || argv(1) === 'home')) {
$result = array();
+ if(argv(1) === 'home') {
+ $sql_extra .= ' and item_wall = 1 ';
+ }
+
$r = q("SELECT * FROM item
WHERE uid = %d
AND item_unseen = 1
@@ -361,8 +366,6 @@ class Ping extends \Zotlabs\Web\Controller {
if($r) {
xchan_query($r);
foreach($r as $item) {
- if((argv(1) === 'home') && (! intval($item['item_wall'])))
- continue;
$result[] = \Zotlabs\Lib\Enotify::format($item);
}
}
@@ -383,6 +386,7 @@ class Ping extends \Zotlabs\Web\Controller {
$result[] = array(
'notify_link' => z_root() . '/connections/ifpending',
'name' => $rr['xchan_name'],
+ 'addr' => $rr['xchan_addr'],
'url' => $rr['xchan_url'],
'photo' => $rr['xchan_photo_s'],
'when' => relative_date($rr['abook_created']),
@@ -407,6 +411,7 @@ class Ping extends \Zotlabs\Web\Controller {
$result[] = array(
'notify_link' => z_root() . '/admin/accounts',
'name' => $rr['account_email'],
+ 'addr' => $rr['account_email'],
'url' => '',
'photo' => z_root() . '/' . get_default_profile_photo(48),
'when' => relative_date($rr['account_created']),
@@ -444,6 +449,7 @@ class Ping extends \Zotlabs\Web\Controller {
$result[] = array(
'notify_link' => z_root() . '/events', /// @FIXME this takes you to an edit page and it may not be yours, we really want to just view the single event --> '/events/event/' . $rr['event_hash'],
'name' => $rr['xchan_name'],
+ 'addr' => $rr['xchan_addr'],
'url' => $rr['xchan_url'],
'photo' => $rr['xchan_photo_s'],
'when' => $when,
@@ -460,7 +466,7 @@ class Ping extends \Zotlabs\Web\Controller {
if(argc() > 1 && (argv(1) === 'files')) {
$result = array();
- $r = q("SELECT item.created, xchan.xchan_name, xchan.xchan_url, xchan.xchan_photo_s FROM item
+ $r = q("SELECT item.created, xchan.xchan_name, xchan.xchan_addr, xchan.xchan_url, xchan.xchan_photo_s FROM item
LEFT JOIN xchan on author_xchan = xchan_hash
WHERE item.verb = '%s'
AND item.obj_type = '%s'
@@ -477,6 +483,7 @@ class Ping extends \Zotlabs\Web\Controller {
$result[] = array(
'notify_link' => z_root() . '/sharedwithme',
'name' => $rr['xchan_name'],
+ 'addr' => $rr['xchan_addr'],
'url' => $rr['xchan_url'],
'photo' => $rr['xchan_photo_s'],
'when' => relative_date($rr['created']),
@@ -658,6 +665,7 @@ class Ping extends \Zotlabs\Web\Controller {
if($r[0]['unseen']) {
$forums[$x]['notify_link'] = (($forums[$x]['private_forum']) ? $forums[$x]['xchan_url'] : z_root() . '/network/?f=&pf=1&unseen=1&cid=' . $forums[$x]['abook_id']);
$forums[$x]['name'] = $forums[$x]['xchan_name'];
+ $forums[$x]['addr'] = $forums[$x]['xchan_addr'];
$forums[$x]['url'] = $forums[$x]['xchan_url'];
$forums[$x]['photo'] = $forums[$x]['xchan_photo_s'];
$forums[$x]['unseen'] = $r[0]['unseen'];
diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php
index de4075ba9..33e7d8a9d 100644
--- a/Zotlabs/Module/Profiles.php
+++ b/Zotlabs/Module/Profiles.php
@@ -354,20 +354,20 @@ class Profiles extends \Zotlabs\Web\Controller {
require_once('include/text.php');
- linkify_tags($a, $likes, local_channel());
- linkify_tags($a, $dislikes, local_channel());
- linkify_tags($a, $about, local_channel());
- linkify_tags($a, $interest, local_channel());
- linkify_tags($a, $interest, local_channel());
- linkify_tags($a, $contact, local_channel());
- linkify_tags($a, $channels, local_channel());
- linkify_tags($a, $music, local_channel());
- linkify_tags($a, $book, local_channel());
- linkify_tags($a, $tv, local_channel());
- linkify_tags($a, $film, local_channel());
- linkify_tags($a, $romance, local_channel());
- linkify_tags($a, $work, local_channel());
- linkify_tags($a, $education, local_channel());
+ linkify_tags($likes, local_channel());
+ linkify_tags($dislikes, local_channel());
+ linkify_tags($about, local_channel());
+ linkify_tags($interest, local_channel());
+ linkify_tags($interest, local_channel());
+ linkify_tags($contact, local_channel());
+ linkify_tags($channels, local_channel());
+ linkify_tags($music, local_channel());
+ linkify_tags($book, local_channel());
+ linkify_tags($tv, local_channel());
+ linkify_tags($film, local_channel());
+ linkify_tags($romance, local_channel());
+ linkify_tags($work, local_channel());
+ linkify_tags($education, local_channel());
$with = ((x($_POST,'with')) ? escape_tags(trim($_POST['with'])) : '');
diff --git a/Zotlabs/Module/Rmagic.php b/Zotlabs/Module/Rmagic.php
index 33a6689ca..8c1e5cdab 100644
--- a/Zotlabs/Module/Rmagic.php
+++ b/Zotlabs/Module/Rmagic.php
@@ -14,6 +14,15 @@ class Rmagic extends \Zotlabs\Web\Controller {
$r = q("select hubloc_url from hubloc where hubloc_addr = '%s' limit 1",
dbesc($me)
);
+ if(! $r) {
+ $w = discover_by_webbie($me);
+ if($w) {
+ $r = q("select hubloc_url from hubloc where hubloc_addr = '%s' limit 1",
+ dbesc($me)
+ );
+ }
+ }
+
if($r) {
if($r[0]['hubloc_url'] === z_root())
goaway(z_root() . '/login');
@@ -49,7 +58,16 @@ class Rmagic extends \Zotlabs\Web\Controller {
$r = q("select hubloc_url from hubloc where hubloc_addr = '%s' limit 1",
dbesc($address)
);
+ if(! $r) {
+ $w = discover_by_webbie($address);
+ if($w) {
+ $r = q("select hubloc_url from hubloc where hubloc_addr = '%s' limit 1",
+ dbesc($address)
+ );
+ }
+ }
}
+
if($r) {
$url = $r[0]['hubloc_url'];
}
diff --git a/Zotlabs/Module/Settings/Featured.php b/Zotlabs/Module/Settings/Featured.php
index 542a05363..d5d740aff 100644
--- a/Zotlabs/Module/Settings/Featured.php
+++ b/Zotlabs/Module/Settings/Featured.php
@@ -10,20 +10,6 @@ class Featured {
call_hooks('feature_settings_post', $_POST);
- if($_POST['affinity_slider-submit']) {
- $cmax = intval($_POST['affinity_cmax']);
- if($cmax < 0 || $cmax > 99)
- $cmax = 99;
- $cmin = intval($_POST['affinity_cmin']);
- if($cmin < 0 || $cmin > 99)
- $cmin = 0;
- set_pconfig(local_channel(),'affinity','cmin',$cmin);
- set_pconfig(local_channel(),'affinity','cmax',$cmax);
-
- info( t('Affinity Slider settings updated.') . EOL);
-
- }
-
build_sync_packet();
return;
}
@@ -37,30 +23,10 @@ class Featured {
if(! $r)
$settings_addons = t('No feature settings configured');
- if(feature_enabled(local_channel(),'affinity')) {
-
- $cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
- $cmax = (($cmax) ? $cmax : 99);
- $setting_fields .= replace_macros(get_markup_template('field_input.tpl'), array(
- '$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, t('0-99 default 99'))
- ));
- $cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
- $cmin = (($cmin) ? $cmin : 0);
- $setting_fields .= replace_macros(get_markup_template('field_input.tpl'), array(
- '$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, t('0-99 - default 0'))
- ));
-
- $settings_addons .= replace_macros(get_markup_template('generic_addon_settings.tpl'), array(
- '$addon' => array('affinity_slider', '' . t('Affinity Slider Settings'), '', t('Submit')),
- '$content' => $setting_fields
- ));
- }
-
call_hooks('feature_settings', $settings_addons);
$this->sortpanels($settings_addons);
-
$tpl = get_markup_template("settings_addons.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_featured"),
diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php
index c0716ca7c..370b7b9f8 100644
--- a/Zotlabs/Module/Setup.php
+++ b/Zotlabs/Module/Setup.php
@@ -441,13 +441,18 @@ class Setup extends \Zotlabs\Web\Controller {
require_once 'include/environment.php';
$help = '';
+ $mem_warning = '';
$result = getPhpiniUploadLimits();
+ if($result['post_max_size'] < 4194304 || $result['max_upload_filesize'] < 4194304) {
+ $mem_warning = '<strong>' .t('This is not sufficient to upload larger images or files. You should be able to upload at least 4 MB at once.') . '</strong>';
+ }
$help = sprintf(t('Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once.'),
userReadableSize($result['post_max_size']),
userReadableSize($result['max_upload_filesize']),
$result['max_file_uploads']
);
+ $help .= $mem_warning;
$help .= '<br><br>' . t('You can adjust these settings in the server php.ini file.');
$this->check_add($checks, t('PHP upload limits'), true, false, $help);
diff --git a/Zotlabs/Module/Share.php b/Zotlabs/Module/Share.php
index c6d0be051..53a06b072 100644
--- a/Zotlabs/Module/Share.php
+++ b/Zotlabs/Module/Share.php
@@ -1,6 +1,11 @@
<?php
namespace Zotlabs\Module;
+use App;
+use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Activity;
+
+
require_once('include/security.php');
require_once('include/bbcode.php');
@@ -14,23 +19,23 @@ class Share extends \Zotlabs\Web\Controller {
if(! $post_id)
killme();
- echo '[share=' . $post_id . '][/share]';
- killme();
+ if(! local_channel()) {
+ killme();
+ }
+ $observer = App::get_observer();
- /**
- * The remaining code is deprecated and handled in Zotlabs/Lib/Share.php at post
- * submission time.
- */
+ $channel = App::get_channel();
- if(! (local_channel() || remote_channel()))
- killme();
-
$r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
intval($post_id)
);
if(! $r)
killme();
+
+
+
+
if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
killme();
@@ -46,59 +51,86 @@ class Share extends \Zotlabs\Web\Controller {
if($r[0]['mimetype'] !== 'text/bbcode')
killme();
-
- /** @FIXME eventually we want to post remotely via rpost on your home site */
- // When that works remove this next bit:
-
- if(! local_channel())
- killme();
-
+
xchan_query($r);
- $is_photo = (($r[0]['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
- if($is_photo) {
- $object = json_decode($r[0]['obj'],true);
- $photo_bb = $object['body'];
- }
-
- if (strpos($r[0]['body'], "[/share]") !== false) {
- $pos = strpos($r[0]['body'], "[share");
- $o = substr($r[0]['body'], $pos);
- } else {
- $o = "[share author='" . urlencode($r[0]['author']['xchan_name']) .
- "' profile='" . $r[0]['author']['xchan_url'] .
- "' avatar='" . $r[0]['author']['xchan_photo_s'] .
- "' link='" . $r[0]['plink'] .
- "' auth='" . (($r[0]['author']['network'] === 'zot') ? 'true' : 'false') .
- "' posted='" . $r[0]['created'] .
- "' message_id='" . $r[0]['mid'] .
- "']";
- if($r[0]['title'])
- $o .= '[b]'.$r[0]['title'].'[/b]'."\r\n";
- $o .= (($is_photo) ? $photo_bb . "\r\n" . $r[0]['body'] : $r[0]['body']);
- $o .= "[/share]";
- }
-
- if(local_channel()) {
- echo $o;
+ $arr = [];
+
+ $item = $r[0];
+
+ $owner_uid = $r[0]['uid'];
+ $owner_aid = $r[0]['aid'];
+
+ $can_comment = false;
+ if((array_key_exists('owner',$item)) && intval($item['owner']['abook_self']))
+ $can_comment = perm_is_allowed($item['uid'],$observer['xchan_hash'],'post_comments');
+ else
+ $can_comment = can_comment_on_post($observer['xchan_hash'],$item);
+
+ if(! $can_comment) {
+ notice( t('Permission denied') . EOL);
killme();
}
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($item['owner_xchan'])
+ );
+
+ if($r)
+ $thread_owner = $r[0];
+ else
+ killme();
- $observer = \App::get_observer();
- $parsed = $observer['xchan_url'];
- if($parsed) {
- $post_url = $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '')
- . '/rpost';
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($item['author_xchan'])
+ );
+ if($r)
+ $item_author = $r[0];
+ else
+ killme();
- /**
- * @FIXME we were probably called from JS so we don't know the return page.
- * In fact we won't be able to load the remote page.
- * we might need an iframe
- */
+
+ $arr['aid'] = $owner_aid;
+ $arr['uid'] = $owner_uid;
+
+ $arr['item_origin'] = 1;
+ $arr['item_wall'] = $item['item_wall'];
+ $arr['uuid'] = item_message_id();
+ $arr['mid'] = z_root() . '/activity/' . $arr['uuid'];
+ $arr['parent_mid'] = $item['mid'];
+
+ $mention = '@[zrl=' . $item['author']['xchan_url'] . ']' . $item['author']['xchan_name'] . '[/zrl]';
+ $arr['body'] = sprintf( t('&#x1f501; Repeated %1$s\'s %2$s'), $mention, Activity::activity_obj_mapper($item['obj_type']));
+
+ $arr['author_xchan'] = $channel['channel_hash'];
+ $arr['owner_xchan'] = $item['author_xchan'];
+ $arr['obj'] = Activity::encode_item($item);
+ $arr['obj_type'] = $item['obj_type'];
+ $arr['verb'] = 'Announce';
+
+ $post = item_store($arr);
+
+ $post_id = $post['item_id'];
+
+ $arr['id'] = $post_id;
- $x = z_post_url($post_url, array('f' => '', 'body' => $o ));
- killme();
+ call_hooks('post_local_end', $arr);
+
+ info( t('Post repeated') . EOL);
+
+ $r = q("select * from item where id = %d",
+ intval($post_id)
+ );
+ if($r) {
+ xchan_query($r);
+ $sync_item = fetch_post_tags($r);
+ build_sync_packet($channel['channel_id'], [ 'item' => [ encode_item($sync_item[0],true) ] ]);
}
+
+ Master::Summon([ 'Notifier','like',$post_id ]);
+
+ killme();
+
}
}
diff --git a/Zotlabs/Module/Sslify.php b/Zotlabs/Module/Sslify.php
index 2891f3691..37be4423b 100644
--- a/Zotlabs/Module/Sslify.php
+++ b/Zotlabs/Module/Sslify.php
@@ -12,10 +12,16 @@ class Sslify extends \Zotlabs\Web\Controller {
list($k,$v) = array_map("trim", explode(":", trim($l), 2));
$hdrs[strtolower($k)] = $v;
}
- if (array_key_exists('content-type', $hdrs)) {
- $type = $hdrs['content-type'];
- header('Content-Type: ' . $type);
- }
+
+ if (array_key_exists('content-type', $hdrs))
+ header('Content-Type: ' . $hdrs['content-type']);
+ if (array_key_exists('last-modified', $hdrs))
+ header('Last-Modified: ' . $hdrs['last-modified']);
+ if (array_key_exists('cache-control', $hdrs))
+ header('Cache-Control: ' . $hdrs['cache-control']);
+ if (array_key_exists('expires', $hdrs))
+ header('Expires: ' . $hdrs['expires']);
+
echo $x['body'];
killme();
diff --git a/Zotlabs/Module/Viewsrc.php b/Zotlabs/Module/Viewsrc.php
index 119990b57..3e49b9db4 100644
--- a/Zotlabs/Module/Viewsrc.php
+++ b/Zotlabs/Module/Viewsrc.php
@@ -25,10 +25,10 @@ class Viewsrc extends \Zotlabs\Web\Controller {
notice( t('Item not found.') . EOL);
}
- $item_normal = item_normal();
+ $item_normal = item_normal_search();
if(local_channel() && $item_id) {
- $r = q("select id, item_flags, mimetype, item_obscured, body, llink, plink from item where uid in (%d , %d) and id = %d $item_normal limit 1",
+ $r = q("select id, mid, item_flags, mimetype, item_obscured, body, llink, plink from item where uid in (%d , %d) and id = %d $item_normal limit 1",
intval(local_channel()),
intval($sys['channel_id']),
intval($item_id)
@@ -53,7 +53,7 @@ class Viewsrc extends \Zotlabs\Web\Controller {
if(is_ajax()) {
echo '<div class="p-1">';
- echo '<div>id: ' . $r[0]['id'] . ' | <a href="' . $r[0]['plink'] . '" target="_blank">plink</a> | <a href="' . $r[0]['llink'] . '" target="_blank">llink</a></div>';
+ echo '<div>id: ' . $r[0]['id'] . ' | <a href="' . $r[0]['plink'] . '" target="_blank">plink</a> | <a href="' . $r[0]['llink'] . '" target="_blank">llink</a><br>mid: ' . $r[0]['mid'] . '</div>';
echo '<hr>';
echo '<pre class="p-1">' . $o . '</pre>';
echo '</div>';
diff --git a/Zotlabs/Module/Wfinger.php b/Zotlabs/Module/Wfinger.php
index e4591df12..03275abbc 100644
--- a/Zotlabs/Module/Wfinger.php
+++ b/Zotlabs/Module/Wfinger.php
@@ -43,6 +43,9 @@ class Wfinger extends \Zotlabs\Web\Controller {
if(strpos($resource,'acct:') === 0) {
$channel = str_replace('acct:','',$resource);
+ if(substr($channel,0,1) === '@' && strpos(substr($channel,1),'@')) {
+ $channel = substr($channel,1);
+ }
if(strpos($channel,'@') !== false) {
$host = substr($channel,strpos($channel,'@')+1);
diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php
index 892810241..502f96a62 100644
--- a/Zotlabs/Module/Wiki.php
+++ b/Zotlabs/Module/Wiki.php
@@ -442,8 +442,8 @@ class Wiki extends Controller {
$mimeType = $_POST['mimetype'];
if($mimeType === 'text/bbcode') {
- $linkconverted = NativeWikiPage::convert_links($content,$wikiURL);
- $html = zidify_links(smilies(bbcode($linkconverted)));
+ $html = zidify_links(smilies(bbcode($content)));
+ $html = NativeWikiPage::convert_links($html,$wikiURL);
}
elseif($mimeType === 'text/markdown') {
$linkconverted = NativeWikiPage::convert_links($content,$wikiURL);
diff --git a/Zotlabs/Photo/PhotoDriver.php b/Zotlabs/Photo/PhotoDriver.php
new file mode 100644
index 000000000..c47a7c3b2
--- /dev/null
+++ b/Zotlabs/Photo/PhotoDriver.php
@@ -0,0 +1,498 @@
+<?php
+
+namespace Zotlabs\Photo;
+
+/**
+ * @brief Abstract photo driver class.
+ *
+ * Inheritance seems not to be the best design pattern for such photo drivers.
+ */
+abstract class PhotoDriver {
+
+ /**
+ * @brief This variable keeps the image.
+ *
+ * For GD it is a PHP image resource.
+ * For ImageMagick it is an \Imagick object.
+ *
+ * @var resource|\Imagick
+ */
+ protected $image;
+
+ /**
+ * @var integer
+ */
+ protected $width;
+
+ /**
+ * @var integer
+ */
+ protected $height;
+
+ /**
+ * @var boolean
+ */
+ protected $valid;
+
+ /**
+ * @brief The mimetype of the image.
+ *
+ * @var string
+ */
+ protected $type;
+
+ /**
+ * @brief Supported mimetypes by the used photo driver.
+ *
+ * @var array
+ */
+ protected $types;
+
+ /**
+ * @brief Return an array with supported mimetypes.
+ *
+ * @return array
+ * Associative array with mimetype as key and file extension as value.
+ */
+ abstract public function supportedTypes();
+
+ abstract protected function load($data, $type);
+
+ abstract protected function destroy();
+
+ abstract protected function setDimensions();
+
+ /**
+ * @brief Return the current image.
+ *
+ * @fixme Shouldn't his method be protected, because outside of the current
+ * driver it makes no sense at all because of the different return values.
+ *
+ * @return boolean|resource|\Imagick
+ * false on failure, a PHP image resource for GD driver, an \Imagick object
+ * for ImageMagick driver.
+ */
+ abstract public function getImage();
+
+ abstract public function doScaleImage($new_width, $new_height);
+
+ abstract public function rotate($degrees);
+
+ abstract public function flip($horiz = true, $vert = false);
+
+ /**
+ * @brief Crops the image.
+ *
+ * @param int $maxx width of the new image
+ * @param int $maxy height of the new image
+ * @param int $x x-offset for region
+ * @param int $y y-offset for region
+ * @param int $w width of region
+ * @param int $h height of region
+ *
+ * @return boolean|void false on failure
+ */
+ abstract public function cropImageRect($maxx, $maxy, $x, $y, $w, $h);
+
+ /**
+ * @brief Return a binary string from the image resource.
+ *
+ * @return string A Binary String.
+ */
+ abstract public function imageString();
+
+ abstract public function clearexif();
+
+
+ /**
+ * @brief PhotoDriver constructor.
+ *
+ * @param string $data Image
+ * @param string $type mimetype
+ */
+ public function __construct($data, $type = '') {
+ $this->types = $this->supportedTypes();
+ if(! array_key_exists($type, $this->types)) {
+ $type = 'image/jpeg';
+ }
+ $this->type = $type;
+ $this->valid = false;
+ $this->load($data, $type);
+ }
+
+ public function __destruct() {
+ if($this->is_valid())
+ $this->destroy();
+ }
+
+ /**
+ * @brief Is it a valid image object.
+ *
+ * @return boolean
+ */
+ public function is_valid() {
+ return $this->valid;
+ }
+
+ /**
+ * @brief Get the width of the image.
+ *
+ * @return boolean|number Width of image in pixels, or false on failure
+ */
+ public function getWidth() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->width;
+ }
+
+ /**
+ * @brief Get the height of the image.
+ *
+ * @return boolean|number Height of image in pixels, or false on failure
+ */
+ public function getHeight() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->height;
+ }
+
+ /**
+ * @brief Saves the image resource to a file in filesystem.
+ *
+ * @param string $path Path and filename where to save the image
+ * @return boolean False on failure, otherwise true
+ */
+ public function saveImage($path) {
+ if(! $this->is_valid())
+ return false;
+
+ return (file_put_contents($path, $this->imageString()) ? true : false);
+ }
+
+ /**
+ * @brief Return mimetype of the image resource.
+ *
+ * @return boolean|string False on failure, otherwise mimetype.
+ */
+ public function getType() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->type;
+ }
+
+ /**
+ * @brief Return file extension of the image resource.
+ *
+ * @return boolean|string False on failure, otherwise file extension.
+ */
+ public function getExt() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->types[$this->getType()];
+ }
+
+ /**
+ * @brief Scale image to max pixel size in either dimension.
+ *
+ * @param int $max maximum pixel size in either dimension
+ * @param boolean $float_height (optional)
+ * If true allow height to float to any length on tall images, constraining
+ * only the width
+ * @return boolean|void false on failure, otherwise void
+ */
+ public function scaleImage($max, $float_height = true) {
+ if(! $this->is_valid())
+ return false;
+
+ $width = $this->width;
+ $height = $this->height;
+
+ $dest_width = $dest_height = 0;
+
+ if((! $width) || (! $height))
+ return false;
+
+ if($width > $max && $height > $max) {
+
+ // very tall image (greater than 16:9)
+ // constrain the width - let the height float.
+
+ if(((($height * 9) / 16) > $width) && ($float_height)) {
+ $dest_width = $max;
+ $dest_height = intval(($height * $max) / $width);
+ } // else constrain both dimensions
+ elseif($width > $height) {
+ $dest_width = $max;
+ $dest_height = intval(($height * $max) / $width);
+ } else {
+ $dest_width = intval(($width * $max) / $height);
+ $dest_height = $max;
+ }
+ } else {
+ if($width > $max) {
+ $dest_width = $max;
+ $dest_height = intval(($height * $max) / $width);
+ } else {
+ if($height > $max) {
+
+ // very tall image (greater than 16:9)
+ // but width is OK - don't do anything
+
+ if(((($height * 9) / 16) > $width) && ($float_height)) {
+ $dest_width = $width;
+ $dest_height = $height;
+ } else {
+ $dest_width = intval(($width * $max) / $height);
+ $dest_height = $max;
+ }
+ } else {
+ $dest_width = $width;
+ $dest_height = $height;
+ }
+ }
+ }
+ $this->doScaleImage($dest_width, $dest_height);
+ }
+
+ public function scaleImageUp($min) {
+ if(! $this->is_valid()) {
+ return false;
+ }
+
+ $width = $this->width;
+ $height = $this->height;
+
+ $dest_width = $dest_height = 0;
+
+ if((! $width) || (! $height))
+ return false;
+
+ if($width < $min && $height < $min) {
+ if($width > $height) {
+ $dest_width = $min;
+ $dest_height = intval(($height * $min) / $width);
+ } else {
+ $dest_width = intval(($width * $min) / $height);
+ $dest_height = $min;
+ }
+ } else {
+ if($width < $min) {
+ $dest_width = $min;
+ $dest_height = intval(($height * $min) / $width);
+ } else {
+ if($height < $min) {
+ $dest_width = intval(($width * $min) / $height);
+ $dest_height = $min;
+ } else {
+ $dest_width = $width;
+ $dest_height = $height;
+ }
+ }
+ }
+ $this->doScaleImage($dest_width, $dest_height);
+ }
+
+ /**
+ * @brief Scales image to a square.
+ *
+ * @param int $dim Pixel of square image
+ * @return boolean|void false on failure, otherwise void
+ */
+ public function scaleImageSquare($dim) {
+ if(! $this->is_valid())
+ return false;
+
+ $this->doScaleImage($dim, $dim);
+ }
+
+ /**
+ * @brief Crops a square image.
+ *
+ * @see cropImageRect()
+ *
+ * @param int $max size of the new image
+ * @param int $x x-offset for region
+ * @param int $y y-offset for region
+ * @param int $w width of region
+ * @param int $h height of region
+ *
+ * @return boolean|void false on failure
+ */
+ public function cropImage($max, $x, $y, $w, $h) {
+ if(! $this->is_valid())
+ return false;
+
+ $this->cropImageRect($max, $max, $x, $y, $w, $h);
+ }
+
+ /**
+ * @brief Reads exif data from a given filename.
+ *
+ * @param string $filename
+ * @return boolean|array
+ */
+ public function exif($filename) {
+ if((! function_exists('exif_read_data'))
+ || (! in_array($this->getType(), ['image/jpeg', 'image/tiff'])))
+ {
+ return false;
+ }
+
+ /*
+ * PHP 7.2 allows you to use a stream resource, which should reduce/avoid
+ * memory exhaustion on large images.
+ */
+
+ if(version_compare(PHP_VERSION, '7.2.0') >= 0) {
+ $f = @fopen($filename, 'rb');
+ } else {
+ $f = $filename;
+ }
+
+ if($f) {
+ return @exif_read_data($f, null, true);
+ }
+
+ return false;
+ }
+
+ /**
+ * @brief Orients current image based on exif orientation information.
+ *
+ * @param array $exif
+ * @return boolean true if oriented, otherwise false
+ */
+ public function orient($exif) {
+ if(! ($this->is_valid() && $exif)) {
+ return false;
+ }
+
+ $ort = ((array_key_exists('IFD0', $exif)) ? $exif['IFD0']['Orientation'] : $exif['Orientation']);
+
+ if(! $ort) {
+ return false;
+ }
+
+ switch($ort) {
+ case 1 : // nothing
+ break;
+ case 2 : // horizontal flip
+ $this->flip();
+ break;
+ case 3 : // 180 rotate left
+ $this->rotate(180);
+ break;
+ case 4 : // vertical flip
+ $this->flip(false, true);
+ break;
+ case 5 : // vertical flip + 90 rotate right
+ $this->flip(false, true);
+ $this->rotate(-90);
+ break;
+ case 6 : // 90 rotate right
+ $this->rotate(-90);
+ break;
+ case 7 : // horizontal flip + 90 rotate right
+ $this->flip();
+ $this->rotate(-90);
+ break;
+ case 8 : // 90 rotate left
+ $this->rotate(90);
+ break;
+ default :
+ break;
+ }
+
+ return true;
+ }
+
+ /**
+ * @brief Save photo to database.
+ *
+ * @param array $arr
+ * @param boolean $skipcheck (optional) default false
+ * @return boolean|array
+ */
+ public function save($arr, $skipcheck = false) {
+ if(! ($skipcheck || $this->is_valid())) {
+ logger('Attempt to store invalid photo.');
+ return false;
+ }
+
+ $p = [];
+
+ $p['aid'] = ((intval($arr['aid'])) ? intval($arr['aid']) : 0);
+ $p['uid'] = ((intval($arr['uid'])) ? intval($arr['uid']) : 0);
+ $p['xchan'] = (($arr['xchan']) ? $arr['xchan'] : '');
+ $p['resource_id'] = (($arr['resource_id']) ? $arr['resource_id'] : '');
+ $p['filename'] = (($arr['filename']) ? $arr['filename'] : '');
+ $p['mimetype'] = (($arr['mimetype']) ? $arr['mimetype'] : $this->getType());
+ $p['album'] = (($arr['album']) ? $arr['album'] : '');
+ $p['imgscale'] = ((intval($arr['imgscale'])) ? intval($arr['imgscale']) : 0);
+ $p['allow_cid'] = (($arr['allow_cid']) ? $arr['allow_cid'] : '');
+ $p['allow_gid'] = (($arr['allow_gid']) ? $arr['allow_gid'] : '');
+ $p['deny_cid'] = (($arr['deny_cid']) ? $arr['deny_cid'] : '');
+ $p['deny_gid'] = (($arr['deny_gid']) ? $arr['deny_gid'] : '');
+ $p['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
+ $p['title'] = (($arr['title']) ? $arr['title'] : '');
+ $p['description'] = (($arr['description']) ? $arr['description'] : '');
+ $p['photo_usage'] = intval($arr['photo_usage']);
+ $p['os_storage'] = intval($arr['os_storage']);
+ $p['os_path'] = $arr['os_path'];
+ $p['os_syspath'] = ((array_key_exists('os_syspath', $arr)) ? $arr['os_syspath'] : '');
+ $p['display_path'] = (($arr['display_path']) ? $arr['display_path'] : '');
+ $p['width'] = (($arr['width']) ? $arr['width'] : $this->getWidth());
+ $p['height'] = (($arr['height']) ? $arr['height'] : $this->getHeight());
+ $p['expires'] = (($arr['expires']) ? $arr['expires'] : gmdate('Y-m-d H:i:s', time() + get_config('system', 'photo_cache_time', 86400)));
+
+ if(! intval($p['imgscale']))
+ logger('save: ' . print_r($arr, true), LOGGER_DATA);
+
+ $x = q("select id, created from photo where resource_id = '%s' and uid = %d and xchan = '%s' and imgscale = %d limit 1", dbesc($p['resource_id']), intval($p['uid']), dbesc($p['xchan']), intval($p['imgscale']));
+
+ if($x) {
+ $p['created'] = (($x['created']) ? $x['created'] : $p['edited']);
+ $r = q("UPDATE photo set
+ aid = %d,
+ uid = %d,
+ xchan = '%s',
+ resource_id = '%s',
+ created = '%s',
+ edited = '%s',
+ filename = '%s',
+ mimetype = '%s',
+ album = '%s',
+ height = %d,
+ width = %d,
+ content = '%s',
+ os_storage = %d,
+ filesize = %d,
+ imgscale = %d,
+ photo_usage = %d,
+ title = '%s',
+ description = '%s',
+ os_path = '%s',
+ display_path = '%s',
+ allow_cid = '%s',
+ allow_gid = '%s',
+ deny_cid = '%s',
+ deny_gid = '%s',
+ expires = '%s'
+ where id = %d",
+ intval($p['aid']), intval($p['uid']), dbesc($p['xchan']), dbesc($p['resource_id']), dbescdate($p['created']), dbescdate($p['edited']), dbesc(basename($p['filename'])), dbesc($p['mimetype']), dbesc($p['album']), intval($p['height']), intval($p['width']), (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())), intval($p['os_storage']), (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())), intval($p['imgscale']), intval($p['photo_usage']), dbesc($p['title']), dbesc($p['description']), dbesc($p['os_path']), dbesc($p['display_path']), dbesc($p['allow_cid']), dbesc($p['allow_gid']), dbesc($p['deny_cid']), dbesc($p['deny_gid']), dbescdate($p['expires']), intval($x[0]['id']));
+ } else {
+ $p['created'] = (($arr['created']) ? $arr['created'] : $p['edited']);
+ $r = q("INSERT INTO photo
+ ( aid, uid, xchan, resource_id, created, edited, filename, mimetype, album, height, width, content, os_storage, filesize, imgscale, photo_usage, title, description, os_path, display_path, allow_cid, allow_gid, deny_cid, deny_gid, expires )
+ VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )", intval($p['aid']), intval($p['uid']), dbesc($p['xchan']), dbesc($p['resource_id']), dbescdate($p['created']), dbescdate($p['edited']), dbesc(basename($p['filename'])), dbesc($p['mimetype']), dbesc($p['album']), intval($p['height']), intval($p['width']), (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())), intval($p['os_storage']), (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())), intval($p['imgscale']), intval($p['photo_usage']), dbesc($p['title']), dbesc($p['description']), dbesc($p['os_path']), dbesc($p['display_path']), dbesc($p['allow_cid']), dbesc($p['allow_gid']), dbesc($p['deny_cid']), dbesc($p['deny_gid']), dbescdate($p['expires']));
+ }
+ logger('Photo save imgscale ' . $p['imgscale'] . ' returned ' . intval($r));
+
+ return $r;
+ }
+
+}
diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php
new file mode 100644
index 000000000..4054e1866
--- /dev/null
+++ b/Zotlabs/Photo/PhotoGd.php
@@ -0,0 +1,176 @@
+<?php
+
+namespace Zotlabs\Photo;
+
+/**
+ * @brief GD photo driver.
+ *
+ */
+class PhotoGd extends PhotoDriver {
+
+ /**
+ * {@inheritDoc}
+ * @see \Zotlabs\Photo\PhotoDriver::supportedTypes()
+ */
+ public function supportedTypes() {
+ $t = [];
+ $t['image/jpeg'] = 'jpg';
+ if(imagetypes() & IMG_PNG)
+ $t['image/png'] = 'png';
+ if(imagetypes() & IMG_GIF)
+ $t['image/gif'] = 'gif';
+
+ return $t;
+ }
+
+ protected function load($data, $type) {
+ $this->valid = false;
+ if(! $data)
+ return;
+
+ $this->image = @imagecreatefromstring($data);
+ if($this->image !== false) {
+ $this->valid = true;
+ $this->setDimensions();
+ imagealphablending($this->image, false);
+ imagesavealpha($this->image, true);
+ }
+ }
+
+ protected function setDimensions() {
+ $this->width = imagesx($this->image);
+ $this->height = imagesy($this->image);
+ }
+
+ /**
+ * @brief GD driver does not preserve EXIF, so not need to clear it.
+ *
+ * @return void
+ */
+ public function clearexif() {
+ return;
+ }
+
+ protected function destroy() {
+ if($this->is_valid()) {
+ imagedestroy($this->image);
+ }
+ }
+
+ /**
+ * @brief Return a PHP image resource of the current image.
+ *
+ * @see \Zotlabs\Photo\PhotoDriver::getImage()
+ *
+ * @return boolean|resource
+ */
+ public function getImage() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->image;
+ }
+
+ public function doScaleImage($dest_width, $dest_height) {
+
+ $dest = imagecreatetruecolor($dest_width, $dest_height);
+ $width = imagesx($this->image);
+ $height = imagesy($this->image);
+
+ imagealphablending($dest, false);
+ imagesavealpha($dest, true);
+ if($this->type == 'image/png')
+ imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
+
+ imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
+ if($this->image)
+ imagedestroy($this->image);
+
+ $this->image = $dest;
+ $this->setDimensions();
+ }
+
+ public function rotate($degrees) {
+ if(! $this->is_valid())
+ return false;
+
+ $this->image = imagerotate($this->image, $degrees, 0);
+ $this->setDimensions();
+ }
+
+ public function flip($horiz = true, $vert = false) {
+ if(! $this->is_valid())
+ return false;
+
+ $w = imagesx($this->image);
+ $h = imagesy($this->image);
+ $flipped = imagecreate($w, $h);
+ if($horiz) {
+ for($x = 0; $x < $w; $x++) {
+ imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h);
+ }
+ }
+ if($vert) {
+ for($y = 0; $y < $h; $y++) {
+ imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1);
+ }
+ }
+ $this->image = $flipped;
+ $this->setDimensions(); // Shouldn't really be necessary
+ }
+
+ public function cropImageRect($maxx, $maxy, $x, $y, $w, $h) {
+ if(! $this->is_valid())
+ return false;
+
+ $dest = imagecreatetruecolor($maxx, $maxy);
+ imagealphablending($dest, false);
+ imagesavealpha($dest, true);
+ if($this->type == 'image/png')
+ imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
+
+ imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $maxx, $maxy, $w, $h);
+ if($this->image)
+ imagedestroy($this->image);
+
+ $this->image = $dest;
+ $this->setDimensions();
+ }
+
+ /**
+ * {@inheritDoc}
+ * @see \Zotlabs\Photo\PhotoDriver::imageString()
+ */
+ public function imageString() {
+ if(! $this->is_valid())
+ return false;
+
+ $quality = false;
+
+ ob_start();
+
+ switch($this->getType()){
+ case 'image/png':
+ $quality = get_config('system', 'png_quality');
+ if((! $quality) || ($quality > 9))
+ $quality = PNG_QUALITY;
+
+ \imagepng($this->image, NULL, $quality);
+ break;
+ case 'image/jpeg':
+ // gd can lack imagejpeg(), but we verify during installation it is available
+ default:
+ $quality = get_config('system', 'jpeg_quality');
+ if((! $quality) || ($quality > 100))
+ $quality = JPEG_QUALITY;
+
+ \imagejpeg($this->image, NULL, $quality);
+ break;
+ }
+ $string = ob_get_contents();
+ ob_end_clean();
+
+ return $string;
+ }
+
+}
diff --git a/include/photo/photo_imagick.php b/Zotlabs/Photo/PhotoImagick.php
index 89577e71e..a7026e8ca 100644
--- a/include/photo/photo_imagick.php
+++ b/Zotlabs/Photo/PhotoImagick.php
@@ -1,40 +1,44 @@
-<?php /** @file */
+<?php
+namespace Zotlabs\Photo;
-require_once('include/photo/photo_driver.php');
+/**
+ * @brief ImageMagick photo driver.
+ */
+class PhotoImagick extends PhotoDriver {
-
-class photo_imagick extends photo_driver {
-
-
- function supportedTypes() {
- return array(
+ public function supportedTypes() {
+ return [
'image/jpeg' => 'jpg',
'image/png' => 'png',
- 'image/gif' => 'gif'
- );
+ 'image/gif' => 'gif',
+ ];
}
- public function get_FormatsMap() {
- return array(
+ private function get_FormatsMap() {
+ return [
'image/jpeg' => 'JPG',
'image/png' => 'PNG',
- 'image/gif' => 'GIF'
- );
+ 'image/gif' => 'GIF',
+ ];
}
- function load($data, $type) {
+ protected function load($data, $type) {
$this->valid = false;
- $this->image = new Imagick();
+ $this->image = new \Imagick();
if(! $data)
return;
- $this->image->readImageBlob($data);
-
+ try {
+ $this->image->readImageBlob($data);
+ } catch(\Exception $e) {
+ logger('Imagick readImageBlob() exception:' . print_r($e, true));
+ return;
+ }
- /**
+ /*
* Setup the image to the format it will be saved to
*/
@@ -47,19 +51,18 @@ class photo_imagick extends photo_driver {
// Always coalesce, if it is not a multi-frame image it won't hurt anyway
$this->image = $this->image->coalesceImages();
-
$this->valid = true;
$this->setDimensions();
- /**
+ /*
* setup the compression here, so we'll do it only once
*/
switch($this->getType()) {
- case "image/png":
- $quality = get_config('system','png_quality');
+ case 'image/png':
+ $quality = get_config('system', 'png_quality');
if((! $quality) || ($quality > 9))
$quality = PNG_QUALITY;
- /**
+ /*
* From http://www.imagemagick.org/script/command-line-options.php#quality:
*
* 'For the MNG and PNG image formats, the quality value sets
@@ -70,56 +73,64 @@ class photo_imagick extends photo_driver {
$quality = $quality * 10;
$this->image->setCompressionQuality($quality);
break;
- case "image/jpeg":
- $quality = get_config('system','jpeg_quality');
+ case 'image/jpeg':
+ $quality = get_config('system', 'jpeg_quality');
if((! $quality) || ($quality > 100))
$quality = JPEG_QUALITY;
$this->image->setCompressionQuality($quality);
default:
break;
-
}
}
}
- public function destroy() {
+ protected function destroy() {
if($this->is_valid()) {
$this->image->clear();
$this->image->destroy();
}
}
-
- public function setDimensions() {
+ protected function setDimensions() {
$this->width = $this->image->getImageWidth();
$this->height = $this->image->getImageHeight();
}
-
+ /**
+ * @brief Strips the image of all profiles and comments.
+ *
+ * Keep ICC profile for better colors.
+ *
+ * @see \Zotlabs\Photo\PhotoDriver::clearexif()
+ */
public function clearexif() {
-
- $profiles = $this->image->getImageProfiles("icc", true);
+ $profiles = $this->image->getImageProfiles('icc', true);
$this->image->stripImage();
- if(!empty($profiles)) {
- $this->image->profileImage("icc", $profiles['icc']);
+ if(! empty($profiles)) {
+ $this->image->profileImage('icc', $profiles['icc']);
}
}
-
+ /**
+ * @brief Return a \Imagick object of the current image.
+ *
+ * @see \Zotlabs\Photo\PhotoDriver::getImage()
+ *
+ * @return boolean|\Imagick
+ */
public function getImage() {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
$this->image = $this->image->deconstructImages();
return $this->image;
}
- public function doScaleImage($dest_width,$dest_height) {
-
- /**
+ public function doScaleImage($dest_width, $dest_height) {
+ /*
* If it is not animated, there will be only one iteration here,
* so don't bother checking
*/
@@ -127,82 +138,63 @@ class photo_imagick extends photo_driver {
$this->image->setFirstIterator();
do {
$this->image->scaleImage($dest_width, $dest_height);
- } while ($this->image->nextImage());
+ } while($this->image->nextImage());
$this->setDimensions();
}
public function rotate($degrees) {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
$this->image->setFirstIterator();
do {
// ImageMagick rotates in the opposite direction of imagerotate()
- $this->image->rotateImage(new ImagickPixel(), -$degrees);
- } while ($this->image->nextImage());
+ $this->image->rotateImage(new \ImagickPixel(), -$degrees);
+ } while($this->image->nextImage());
$this->setDimensions();
}
public function flip($horiz = true, $vert = false) {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
$this->image->setFirstIterator();
do {
if($horiz) $this->image->flipImage();
if($vert) $this->image->flopImage();
- } while ($this->image->nextImage());
+ } while($this->image->nextImage());
$this->setDimensions(); // Shouldn't really be necessary
}
- public function cropImage($max,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
-
- $this->image->setFirstIterator();
- do {
- $this->image->cropImage($w, $h, $x, $y);
- /**
- * We need to remove the canvas,
- * or the image is not resized to the crop:
- * http://php.net/manual/en/imagick.cropimage.php#97232
- */
- $this->image->setImagePage(0, 0, 0, 0);
- } while ($this->image->nextImage());
-
- $this->doScaleImage($max,$max);
- }
-
- public function cropImageRect($maxx,$maxy,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
+ public function cropImageRect($maxx, $maxy, $x, $y, $w, $h) {
+ if(! $this->is_valid())
+ return false;
$this->image->setFirstIterator();
do {
$this->image->cropImage($w, $h, $x, $y);
- /**
+ /*
* We need to remove the canvas,
* or the image is not resized to the crop:
* http://php.net/manual/en/imagick.cropimage.php#97232
*/
$this->image->setImagePage(0, 0, 0, 0);
- } while ($this->image->nextImage());
+ } while($this->image->nextImage());
- $this->doScaleImage($maxx,$maxy);
+ $this->doScaleImage($maxx, $maxy);
}
public function imageString() {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
/* Clean it */
$this->image = $this->image->deconstructImages();
+
return $this->image->getImagesBlob();
}
-
-
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index c2d70b854..fde66efcd 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -205,17 +205,21 @@ class Browser extends DAV\Browser\Plugin {
// upload access. system.thumbnail_security should be set to 1 if you want to include these
// types
+ $is_creator = false;
$photo_icon = '';
$preview_style = intval(get_config('system','thumbnail_security',0));
- $r = q("select content from attach where hash = '%s' and uid = %d limit 1",
+ $r = q("select content, creator from attach where hash = '%s' and uid = %d limit 1",
dbesc($attachHash),
intval($owner)
);
- if($r && file_exists(dbunescbin($r[0]['content']) . '.thumb')) {
- $photo_icon = 'data:image/jpeg;base64,' . base64_encode(file_get_contents(dbunescbin($r[0]['content']) . '.thumb'));
-// logger('found thumb: ' . $photo_icon);
+ if($r) {
+ $is_creator = (($r[0]['creator'] === get_observer_hash()) ? true : false);
+ if(file_exists(dbunescbin($r[0]['content']) . '.thumb')) {
+ $photo_icon = 'data:image/jpeg;base64,' . base64_encode(file_get_contents(dbunescbin($r[0]['content']) . '.thumb'));
+// logger('found thumb: ' . $photo_icon);
+ }
}
if(strpos($type,'image/') === 0 && $attachHash) {
@@ -247,6 +251,7 @@ class Browser extends DAV\Browser\Plugin {
$ft['attachIcon'] = (($size) ? $attachIcon : '');
// @todo Should this be an item value, not a global one?
$ft['is_owner'] = $is_owner;
+ $ft['is_creator'] = $is_creator;
$ft['fullPath'] = $fullPath;
$ft['displayName'] = $displayName;
$ft['type'] = $type;
@@ -256,6 +261,7 @@ class Browser extends DAV\Browser\Plugin {
$ft['iconFromType'] = getIconFromType($type);
$f[] = $ft;
+
}
diff --git a/Zotlabs/Update/_1228.php b/Zotlabs/Update/_1228.php
index f8a506bb4..9e6bf8047 100644
--- a/Zotlabs/Update/_1228.php
+++ b/Zotlabs/Update/_1228.php
@@ -11,8 +11,8 @@ class _1228 {
if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
$r1 = q("ALTER TABLE item ADD uuid text NOT NULL DEFAULT '' ");
- $r2 = q("create index \"uuid_idx\" on channel (\"uuid\")");
- $r3 = q("ALTER TABLE item add summary TEXT NOT NULL");
+ $r2 = q("create index \"uuid_idx\" on item (\"uuid\")");
+ $r3 = q("ALTER TABLE item add summary TEXT NOT NULL DEFAULT ''");
$r = ($r1 && $r2 && $r3);
}
diff --git a/Zotlabs/Update/_1229.php b/Zotlabs/Update/_1229.php
new file mode 100644
index 000000000..8e8711644
--- /dev/null
+++ b/Zotlabs/Update/_1229.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1229 {
+
+ function run() {
+
+ q("START TRANSACTION");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE photo ADD expires timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r2 = q("create index \"photo_expires_idx\" on photo (\"expires\")");
+
+ $r = ($r1 && $r2);
+ }
+ else {
+ $r = q("ALTER TABLE `photo` ADD `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' ,
+ ADD INDEX `expires` (`expires`)");
+ }
+
+ if($r) {
+ q("COMMIT");
+ return UPDATE_SUCCESS;
+ }
+
+ q("ROLLBACK");
+ return UPDATE_FAILED;
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1230.php b/Zotlabs/Update/_1230.php
new file mode 100644
index 000000000..fe59f2e08
--- /dev/null
+++ b/Zotlabs/Update/_1230.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1230 {
+
+ function run() {
+ q("update abook set abook_closeness = 80 where abook_closeness = 0 and abook_self = 0");
+ return UPDATE_SUCCESS;
+
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php
index 4f2a3f1f7..fe0a3fbf9 100644
--- a/Zotlabs/Web/Session.php
+++ b/Zotlabs/Web/Session.php
@@ -15,7 +15,7 @@ class Session {
private $handler = null;
private $session_started = false;
-
+ private $custom_handler = false;
public function init() {
$gc_probability = 50;
@@ -23,25 +23,46 @@ class Session {
ini_set('session.gc_probability', $gc_probability);
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_httponly', 1);
-
+
+ $this->custom_handler = boolval(get_config('system', 'session_custom', false));
+
/*
* Set our session storage functions.
*/
+
+ if($this->custom_handler) {
+ /* Custom handler (files, memached, redis..) */
+
+ $session_save_handler = strval(get_config('system', 'session_save_handler', Null));
+ $session_save_path = strval(get_config('system', 'session_save_path', Null));
+ $session_gc_probability = intval(get_config('system', 'session_gc_probability', 1));
+ $session_gc_divisor = intval(get_config('system', 'session_gc_divisor', 100));
+ if(!$session_save_handler || !$session_save_path) {
+ logger('Session save handler or path not set.',LOGGER_NORMAL,LOG_ERR);
+ }
+ else {
+ ini_set('session.save_handler', $session_save_handler);
+ ini_set('session.save_path', $session_save_path);
+ ini_set('session.gc_probability', $session_gc_probability);
+ ini_set('session.gc_divisor', $session_gc_divisor);
+ }
+ }
+ else {
+ $handler = new \Zotlabs\Web\SessionHandler();
- $handler = new \Zotlabs\Web\SessionHandler();
-
- $this->handler = $handler;
+ $this->handler = $handler;
- $x = session_set_save_handler($handler,false);
- if(! $x)
- logger('Session save handler initialisation failed.',LOGGER_NORMAL,LOG_ERR);
+ $x = session_set_save_handler($handler,false);
+ if(! $x)
+ logger('Session save handler initialisation failed.',LOGGER_NORMAL,LOG_ERR);
+ }
// Force cookies to be secure (https only) if this site is SSL enabled.
// Must be done before session_start().
$arr = session_get_cookie_params();
-
+
// Note when setting cookies: set the domain to false which creates a single domain
// cookie. If you use a hostname it will create a .domain.com wildcard which will
// have some nasty side effects if you have any other subdomains running hubzilla.
@@ -86,14 +107,15 @@ class Session {
$arr = session_get_cookie_params();
- if($this->handler && $this->session_started) {
+ if(($this->handler || $this->custom_handler) && $this->session_started) {
session_regenerate_id(true);
// force SessionHandler record creation with the new session_id
// which occurs as a side effect of read()
-
- $this->handler->read(session_id());
+ if (! $this->custom_handler) {
+ $this->handler->read(session_id());
+ }
}
else
logger('no session handler');
diff --git a/Zotlabs/Widget/Affinity.php b/Zotlabs/Widget/Affinity.php
index 4fb2874ae..572af0503 100644
--- a/Zotlabs/Widget/Affinity.php
+++ b/Zotlabs/Widget/Affinity.php
@@ -2,55 +2,65 @@
namespace Zotlabs\Widget;
+use Zotlabs\Lib\Apps;
+
class Affinity {
function widget($arr) {
if(! local_channel())
- return '';
-
- $default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : 0);
- $default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : 99);
+ return;
+
+ if(! Apps::system_app_installed(local_channel(),'Affinity Tool'))
+ return;
+
+ $default_cmin = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmin',0) : 0);
+ $default_cmax = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmax',99) : 99);
$cmin = ((x($_REQUEST,'cmin')) ? intval($_REQUEST['cmin']) : $default_cmin);
$cmax = ((x($_REQUEST,'cmax')) ? intval($_REQUEST['cmax']) : $default_cmax);
+ $affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
+ if ($affinity_locked) {
+ set_pconfig(local_channel(),'affinity','cmin',$cmin);
+ set_pconfig(local_channel(),'affinity','cmax',$cmax);
+ }
+
+ $labels = array(
+ t('Me'),
+ t('Family'),
+ t('Friends'),
+ t('Acquaintances'),
+ t('All')
+ );
+ call_hooks('affinity_labels',$labels);
+
+ $label_str = '';
- if(feature_enabled(local_channel(),'affinity')) {
-
- $labels = array(
- t('Me'),
- t('Family'),
- t('Friends'),
- t('Acquaintances'),
- t('All')
- );
- call_hooks('affinity_labels',$labels);
- $label_str = '';
-
- if($labels) {
- foreach($labels as $l) {
- if($label_str) {
- $label_str .= ", '|'";
- $label_str .= ", '" . $l . "'";
- }
- else
- $label_str .= "'" . $l . "'";
+ if($labels) {
+ foreach($labels as $l) {
+ if($label_str) {
+ $label_str .= ", '|'";
+ $label_str .= ", '" . $l . "'";
}
+ else
+ $label_str .= "'" . $l . "'";
}
-
- $tpl = get_markup_template('main_slider.tpl');
- $x = replace_macros($tpl,array(
- '$val' => $cmin . ',' . $cmax,
- '$refresh' => t('Refresh'),
- '$labels' => $label_str,
- ));
-
- $arr = array('html' => $x);
- call_hooks('main_slider',$arr);
- return $arr['html'];
}
- return '';
+
+ $tpl = get_markup_template('main_slider.tpl');
+ $x = replace_macros($tpl,array(
+ '$val' => $cmin . ',' . $cmax,
+ '$refresh' => t('Refresh'),
+ '$labels' => $label_str,
+ ));
+
+ $arr = array('html' => $x);
+ call_hooks('main_slider',$arr);
+
+ return $arr['html'];
+
+
}
}
- \ No newline at end of file
+
diff --git a/Zotlabs/Widget/Notifications.php b/Zotlabs/Widget/Notifications.php
index 0f9f609e4..37d9139ec 100644
--- a/Zotlabs/Widget/Notifications.php
+++ b/Zotlabs/Widget/Notifications.php
@@ -24,7 +24,7 @@ class Notifications {
],
'filter' => [
'posts_label' => t('Show new posts only'),
- 'name_label' => t('Filter by name')
+ 'name_label' => t('Filter by name or address')
]
];
@@ -43,7 +43,7 @@ class Notifications {
],
'filter' => [
'posts_label' => t('Show new posts only'),
- 'name_label' => t('Filter by name')
+ 'name_label' => t('Filter by name or address')
]
];
@@ -119,7 +119,7 @@ class Notifications {
'label' => t('Forums'),
'title' => t('Forums'),
'filter' => [
- 'name_label' => t('Filter by name')
+ 'name_label' => t('Filter by name or address')
]
];
}
@@ -150,7 +150,7 @@ class Notifications {
],
'filter' => [
'posts_label' => t('Show new posts only'),
- 'name_label' => t('Filter by name')
+ 'name_label' => t('Filter by name or address')
]
];
}
diff --git a/Zotlabs/Widget/Settings_menu.php b/Zotlabs/Widget/Settings_menu.php
index c537c3835..25b80a4b4 100644
--- a/Zotlabs/Widget/Settings_menu.php
+++ b/Zotlabs/Widget/Settings_menu.php
@@ -42,19 +42,12 @@ class Settings_menu {
);
-
$tabs[] = array(
'label' => t('Display settings'),
'url' => z_root().'/settings/display',
'selected' => ((argv(1) === 'display') ? 'active' : ''),
);
- $tabs[] = array(
- 'label' => t('Addon settings'),
- 'url' => z_root().'/settings/featured',
- 'selected' => ((argv(1) === 'featured') ? 'active' : ''),
- );
-
if($hublocs) {
$tabs[] = array(
'label' => t('Manage locations'),
diff --git a/Zotlabs/Zot/Finger.php b/Zotlabs/Zot/Finger.php
index 77634777a..cb38c7f2b 100644
--- a/Zotlabs/Zot/Finger.php
+++ b/Zotlabs/Zot/Finger.php
@@ -55,7 +55,7 @@ class Finger {
$r = q("select xchan.*, hubloc.* from xchan
left join hubloc on xchan_hash = hubloc_hash
- where xchan_addr = '%s' and hubloc_primary = 1 and hubloc_deleted = 0 limit 1",
+ where xchan_addr = '%s' and hubloc_primary = 1 and hubloc_deleted = 0 and hubloc_network = 'zot' limit 1",
dbesc($xchan_addr)
);
diff --git a/Zotlabs/Zot6/Zot6Handler.php b/Zotlabs/Zot6/Zot6Handler.php
index e320e7825..8f8957037 100644
--- a/Zotlabs/Zot6/Zot6Handler.php
+++ b/Zotlabs/Zot6/Zot6Handler.php
@@ -29,7 +29,7 @@ class Zot6Handler implements IHandler {
// Implementation of specific methods follows;
- // These generally do a small amout of validation and call Libzot
+ // These generally do a small amout of validation and call Libzot
// to do any heavy lifting
static function reply_notify($data,$hub) {
@@ -40,7 +40,7 @@ class Zot6Handler implements IHandler {
$x = Libzot::fetch($data);
$ret['delivery_report'] = $x;
-
+
$ret['success'] = true;
return $ret;
@@ -58,11 +58,11 @@ class Zot6Handler implements IHandler {
*
* @param array $sender
* @param array $recipients
+ * @param array $hub
*
- * @return json_return_and_die()
+ * @return array
*/
-
- static function reply_refresh($sender, $recipients,$hub) {
+ static function reply_refresh($sender, $recipients, $hub) {
$ret = array('success' => false);
if($recipients) {
@@ -70,19 +70,18 @@ class Zot6Handler implements IHandler {
// This would be a permissions update, typically for one connection
foreach ($recipients as $recip) {
-
$r = q("select channel.*,xchan.* from channel
left join xchan on channel_portable_id = xchan_hash
where xchan_hash ='%s' limit 1",
dbesc($recip)
);
-
+ /// @FIXME $msgtype is undefined
$x = Libzot::refresh( [ 'hubloc_id_url' => $hub['hubloc_id_url'] ], $r[0], (($msgtype === 'force_refresh') ? true : false));
}
}
else {
// system wide refresh
-
+ /// @FIXME $msgtype is undefined
$x = Libzot::refresh( [ 'hubloc_id_url' => $hub['hubloc_id_url'] ], null, (($msgtype === 'force_refresh') ? true : false));
}
@@ -100,17 +99,16 @@ class Zot6Handler implements IHandler {
* for that packet. We will create a message_list array of the entire conversation starting with
* the missing parent and invoke delivery to the sender of the packet.
*
- * Zotlabs/Daemon/Deliver.php (for local delivery) and
+ * Zotlabs/Daemon/Deliver.php (for local delivery) and
* mod/post.php???? @fixme (for web delivery) detect the existence of
* this 'message_list' at the destination and split it into individual messages which are
* processed/delivered in order.
*
- *
* @param array $data
+ * @param array $hub
* @return array
*/
-
- static function reply_message_request($data,$hub) {
+ static function reply_message_request($data, $hub) {
$ret = [ 'success' => false ];
$message_id = EMPTY_STR;
@@ -153,11 +151,10 @@ class Zot6Handler implements IHandler {
/*
* fetch the requested conversation
*/
-
+ /// @FIXME $sender_hash is undefined
$messages = zot_feed($c[0]['channel_id'],$sender_hash, [ 'message_id' => $data['message_id'], 'encoding' => 'activitystreams' ]);
return (($messages) ? : [] );
-
}
static function rekey_request($sender,$data,$hub) {
@@ -183,7 +180,7 @@ class Zot6Handler implements IHandler {
dbesc($oldhash)
);
}
- else
+ else
return $ret;
@@ -219,10 +216,10 @@ class Zot6Handler implements IHandler {
*
* @param array $sender
* @param array $recipients
+ * @param array $hub
*
- * return json_return_and_die()
+ * @return array
*/
-
static function reply_purge($sender, $recipients, $hub) {
$ret = array('success' => false);
@@ -259,9 +256,4 @@ class Zot6Handler implements IHandler {
return $ret;
}
-
-
-
-
-
}
diff --git a/app/affinity.apd b/app/affinity.apd
new file mode 100644
index 000000000..3860581aa
--- /dev/null
+++ b/app/affinity.apd
@@ -0,0 +1,7 @@
+version: 1
+url: $baseurl/affinity
+requires: local_channel
+name: Affinity Tool
+photo: icon:arrows-h
+categories: Networking
+desc: This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream.
diff --git a/boot.php b/boot.php
index c74309be0..939fa6d01 100755
--- a/boot.php
+++ b/boot.php
@@ -50,10 +50,10 @@ require_once('include/attach.php');
require_once('include/bbcode.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
-define ( 'STD_VERSION', '3.9.5' );
+define ( 'STD_VERSION', '4.1' );
define ( 'ZOT_REVISION', '6.0a' );
-define ( 'DB_UPDATE_VERSION', 1228 );
+define ( 'DB_UPDATE_VERSION', 1230 );
define ( 'PROJECT_BASE', __DIR__ );
@@ -83,8 +83,8 @@ define ( 'DIRECTORY_REALM', 'RED_GLOBAL');
define ( 'DIRECTORY_FALLBACK_MASTER', 'https://zotadel.net');
$DIRECTORY_FALLBACK_SERVERS = array(
- 'https://hubzilla.zottel.net',
- 'https://zotadel.net'
+ 'https://zotadel.net',
+ 'https://zotsite.net'
);
@@ -217,6 +217,7 @@ define ( 'PHOTO_PROFILE', 0x0001 );
define ( 'PHOTO_XCHAN', 0x0002 );
define ( 'PHOTO_THING', 0x0004 );
define ( 'PHOTO_COVER', 0x0010 );
+define ( 'PHOTO_CACHE', 0x0020 );
define ( 'PHOTO_ADULT', 0x0008 );
define ( 'PHOTO_FLAG_OS', 0x4000 );
@@ -438,6 +439,7 @@ define ( 'TERM_OBJ_APP', 7 );
* various namespaces we may need to parse
*/
define ( 'PROTOCOL_ZOT', 'http://purl.org/zot/protocol' );
+define ( 'PROTOCOL_ZOT6', 'http://purl.org/zot/protocol/6.0' );
define ( 'NAMESPACE_ZOT', 'http://purl.org/zot' );
define ( 'NAMESPACE_DFRN' , 'http://purl.org/macgirvin/dfrn/1.0' );
define ( 'NAMESPACE_THREAD' , 'http://purl.org/syndication/thread/1.0' );
@@ -465,7 +467,7 @@ define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' );
define ( 'ACTIVITYSTREAMS_JSONLD_REV', 'https://www.w3.org/ns/activitystreams' );
-define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.2' );
+define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.3' );
/**
* activity stream defines
*/
@@ -510,6 +512,7 @@ define ( 'ACTIVITY_MOOD', NAMESPACE_ZOT . '/activity/mood' );
define ( 'ACTIVITY_OBJ_COMMENT', NAMESPACE_ACTIVITY_SCHEMA . 'comment' );
define ( 'ACTIVITY_OBJ_ACTIVITY',NAMESPACE_ACTIVITY_SCHEMA . 'activity' );
define ( 'ACTIVITY_OBJ_NOTE', NAMESPACE_ACTIVITY_SCHEMA . 'note' );
+define ( 'ACTIVITY_OBJ_ARTICLE', NAMESPACE_ACTIVITY_SCHEMA . 'article' );
define ( 'ACTIVITY_OBJ_PERSON', NAMESPACE_ACTIVITY_SCHEMA . 'person' );
define ( 'ACTIVITY_OBJ_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'photo' );
define ( 'ACTIVITY_OBJ_P_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'profile-photo' );
@@ -574,6 +577,8 @@ define ( 'ITEM_TYPE_BUG', 4 );
define ( 'ITEM_TYPE_DOC', 5 );
define ( 'ITEM_TYPE_CARD', 6 );
define ( 'ITEM_TYPE_ARTICLE', 7 );
+//OSADA ITEM_TYPE_MAIL = 8
+define ( 'ITEM_TYPE_CUSTOM', 9 );
define ( 'ITEM_IS_STICKY', 1000 );
@@ -728,11 +733,11 @@ class App {
private static $perms = null; // observer permissions
private static $widgets = array(); // widgets for this page
public static $config = array(); // config cache
- public static $override_intltext_templates = array();
- public static $override_markup_templates = array();
- public static $override_templateroot = null;
- public static $override_helproot = null;
- public static $override_helpfiles = array();
+ public static $override_intltext_templates = array();
+ public static $override_markup_templates = array();
+ public static $override_templateroot = null;
+ public static $override_helproot = null;
+ public static $override_helpfiles = array();
public static $session = null;
public static $groups;
@@ -883,7 +888,7 @@ class App {
// removing trailing / - maybe a nginx problem
if (substr(self::$query_string, 0, 1) == "/")
self::$query_string = substr(self::$query_string, 1);
- // change the first & to ?
+ // change the first & to ?
self::$query_string = preg_replace('/&/','?',self::$query_string,1);
}
@@ -1574,7 +1579,7 @@ function login($register = false, $form_id = 'main-login', $hiddens = false, $lo
// Here's the current description of how the register link works (2018-05-15)
- // Register links are enabled on the site home page and login page and navbar.
+ // Register links are enabled on the site home page and login page and navbar.
// They are not shown by default on other pages which may require login.
// If the register link is enabled and registration is closed, the request is directed
@@ -1586,10 +1591,10 @@ function login($register = false, $form_id = 'main-login', $hiddens = false, $lo
// system.register_link may or may not be the same destination as system.sellpage
- // system.sellpage is the destination linked from the /pubsites page on other sites. If
+ // system.sellpage is the destination linked from the /pubsites page on other sites. If
// system.sellpage is not set, the 'register' link in /pubsites will go to 'register' on your
- // site.
-
+ // site.
+
// If system.register_link is set to the word 'none', no registration link will be shown on
// your site.
@@ -1828,8 +1833,6 @@ function proc_run(){
$args = func_get_args();
- $newargs = array();
-
if(! count($args))
return;
@@ -2277,7 +2280,7 @@ function construct_page() {
$cspheader = "Content-Security-Policy:";
foreach ($cspsettings as $cspdirective => $csp) {
if (!in_array($cspdirective,$validcspdirectives)) {
- logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
+ logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
continue;
}
$cspsettingsarray=array_unique($cspsettings[$cspdirective]);
@@ -2396,7 +2399,7 @@ function z_get_temp_dir() {
if(! $temp_dir)
$temp_dir = sys_get_temp_dir();
- return $upload_dir;
+ return $temp_dir;
}
diff --git a/composer.json b/composer.json
index f117cc3b1..e6cefa241 100644
--- a/composer.json
+++ b/composer.json
@@ -40,7 +40,8 @@
"smarty/smarty": "~3.1",
"ramsey/uuid": "^3.8",
"twbs/bootstrap": "4.1.3",
- "blueimp/jquery-file-upload": "^9.25"
+ "blueimp/jquery-file-upload": "^9.25",
+ "desandro/imagesloaded": "^4.1"
},
"require-dev" : {
"phpunit/phpunit" : "@stable",
diff --git a/composer.lock b/composer.lock
index d7e8d11f6..c4fba0975 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "63d0e52cc07f8113059ec30d3637b850",
+ "content-hash": "fe5e71d7076eeddf1c174be4a5c052dd",
"packages": [
{
"name": "blueimp/jquery-file-upload",
- "version": "v9.25.1",
+ "version": "v9.28.0",
"source": {
"type": "git",
"url": "https://github.com/vkhramtsov/jQuery-File-Upload.git",
- "reference": "28891f9b2bc339bcc1ca8d548e5401e8563bf04b"
+ "reference": "ff5accfe2e5c4a522777faa980a90cf86a636d1d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/28891f9b2bc339bcc1ca8d548e5401e8563bf04b",
- "reference": "28891f9b2bc339bcc1ca8d548e5401e8563bf04b",
+ "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/ff5accfe2e5c4a522777faa980a90cf86a636d1d",
+ "reference": "ff5accfe2e5c4a522777faa980a90cf86a636d1d",
"shasum": ""
},
"type": "library",
@@ -59,20 +59,20 @@
"upload",
"widget"
],
- "time": "2018-10-26T07:21:48+00:00"
+ "time": "2018-11-13T05:41:39+00:00"
},
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.10.0",
+ "version": "v1.11.1",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9"
+ "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/d158878425392fe5a0cc34f15dbaf46315ae0ed9",
- "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa",
+ "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa",
"shasum": ""
},
"require": {
@@ -117,7 +117,7 @@
"oauth",
"oauth2"
],
- "time": "2017-11-15T01:41:02+00:00"
+ "time": "2018-12-04T00:29:32+00:00"
},
{
"name": "commerceguys/intl",
@@ -164,6 +164,45 @@
"time": "2017-12-29T00:13:05+00:00"
},
{
+ "name": "desandro/imagesloaded",
+ "version": "v4.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/desandro/imagesloaded.git",
+ "reference": "67c4e57453120935180c45c6820e7d3fbd2ea1f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/desandro/imagesloaded/zipball/67c4e57453120935180c45c6820e7d3fbd2ea1f9",
+ "reference": "67c4e57453120935180c45c6820e7d3fbd2ea1f9",
+ "shasum": ""
+ },
+ "type": "component",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David DeSandro",
+ "homepage": "http://desandro.com/",
+ "role": "developer"
+ }
+ ],
+ "description": "JavaScript is all like _You images done yet or what?_",
+ "homepage": "http://imagesloaded.desandro.com",
+ "keywords": [
+ "dom",
+ "images",
+ "javascript",
+ "jquery-plugin",
+ "library",
+ "loaded",
+ "ui"
+ ],
+ "time": "2018-01-02T16:53:35+00:00"
+ },
+ {
"name": "ezyang/htmlpurifier",
"version": "v4.10.0",
"source": {
@@ -212,16 +251,16 @@
},
{
"name": "league/html-to-markdown",
- "version": "4.8.0",
+ "version": "4.8.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
- "reference": "f9a879a068c68ff47b722de63f58bec79e448f9d"
+ "reference": "250d1bf45f80d15594fb6b316df777d6d4c97ad1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/f9a879a068c68ff47b722de63f58bec79e448f9d",
- "reference": "f9a879a068c68ff47b722de63f58bec79e448f9d",
+ "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/250d1bf45f80d15594fb6b316df777d6d4c97ad1",
+ "reference": "250d1bf45f80d15594fb6b316df777d6d4c97ad1",
"shasum": ""
},
"require": {
@@ -272,7 +311,7 @@
"html",
"markdown"
],
- "time": "2018-09-18T12:18:08+00:00"
+ "time": "2018-12-24T17:21:44+00:00"
},
{
"name": "lukasreschke/id3parser",
@@ -446,16 +485,16 @@
},
{
"name": "psr/log",
- "version": "1.0.2",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"shasum": ""
},
"require": {
@@ -489,7 +528,7 @@
"psr",
"psr-3"
],
- "time": "2016-10-10T12:19:37+00:00"
+ "time": "2018-11-20T15:27:04+00:00"
},
{
"name": "ramsey/uuid",
@@ -1110,7 +1149,7 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -1886,32 +1925,33 @@
},
{
"name": "guzzlehttp/psr7",
- "version": "1.4.2",
+ "version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+ "reference": "9f83dded91781a01c63574e387eaa769be769115"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
- "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
+ "reference": "9f83dded91781a01c63574e387eaa769be769115",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
- "psr/http-message": "~1.0"
+ "psr/http-message": "~1.0",
+ "ralouphie/getallheaders": "^2.0.5"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "1.5-dev"
}
},
"autoload": {
@@ -1941,13 +1981,14 @@
"keywords": [
"http",
"message",
+ "psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
- "time": "2017-03-20T17:10:46+00:00"
+ "time": "2018-12-04T20:46:45+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -2532,20 +2573,21 @@
"testing",
"xunit"
],
+ "abandoned": true,
"time": "2018-02-07T06:47:59+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "6.1.3",
+ "version": "6.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "4d3ae9b21a7d7e440bd0cf65565533117976859f"
+ "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4d3ae9b21a7d7e440bd0cf65565533117976859f",
- "reference": "4d3ae9b21a7d7e440bd0cf65565533117976859f",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
+ "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
"shasum": ""
},
"require": {
@@ -2595,7 +2637,7 @@
"testing",
"xunit"
],
- "time": "2018-10-23T05:59:32+00:00"
+ "time": "2018-10-31T16:06:48+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -2788,16 +2830,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "7.4.3",
+ "version": "7.5.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c151651fb6ed264038d486ea262e243af72e5e64"
+ "reference": "c23d78776ad415d5506e0679723cb461d71f488f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c151651fb6ed264038d486ea262e243af72e5e64",
- "reference": "c151651fb6ed264038d486ea262e243af72e5e64",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c23d78776ad415d5506e0679723cb461d71f488f",
+ "reference": "c23d78776ad415d5506e0679723cb461d71f488f",
"shasum": ""
},
"require": {
@@ -2818,7 +2860,7 @@
"phpunit/php-timer": "^2.0",
"sebastian/comparator": "^3.0",
"sebastian/diff": "^3.0",
- "sebastian/environment": "^3.1 || ^4.0",
+ "sebastian/environment": "^4.0",
"sebastian/exporter": "^3.1",
"sebastian/global-state": "^2.0",
"sebastian/object-enumerator": "^3.0.3",
@@ -2842,7 +2884,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "7.4-dev"
+ "dev-master": "7.5-dev"
}
},
"autoload": {
@@ -2868,7 +2910,7 @@
"testing",
"xunit"
],
- "time": "2018-10-23T05:57:41+00:00"
+ "time": "2018-12-12T07:20:32+00:00"
},
{
"name": "psr/container",
@@ -2970,6 +3012,46 @@
"time": "2016-08-06T14:39:51+00:00"
},
{
+ "name": "ralouphie/getallheaders",
+ "version": "2.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
+ "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~3.7.0",
+ "satooshi/php-coveralls": ">=1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "time": "2016-02-11T07:05:27+00:00"
+ },
+ {
"name": "sebastian/code-unit-reverse-lookup",
"version": "1.0.1",
"source": {
@@ -3136,28 +3218,28 @@
},
{
"name": "sebastian/environment",
- "version": "3.1.0",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+ "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/febd209a219cea7b56ad799b30ebbea34b71eb8f",
+ "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f",
"shasum": ""
},
"require": {
- "php": "^7.0"
+ "php": "^7.1"
},
"require-dev": {
- "phpunit/phpunit": "^6.1"
+ "phpunit/phpunit": "^7.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -3182,7 +3264,7 @@
"environment",
"hhvm"
],
- "time": "2017-07-01T08:51:00+00:00"
+ "time": "2018-11-25T09:31:21+00:00"
},
{
"name": "sebastian/exporter",
@@ -3534,16 +3616,16 @@
},
{
"name": "symfony/browser-kit",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "c55fe9257003b2d95c0211b3f6941e8dfd26dffd"
+ "reference": "db7e59fec9c82d45e745eb500e6ede2d96f4a6e9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c55fe9257003b2d95c0211b3f6941e8dfd26dffd",
- "reference": "c55fe9257003b2d95c0211b3f6941e8dfd26dffd",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/db7e59fec9c82d45e745eb500e6ede2d96f4a6e9",
+ "reference": "db7e59fec9c82d45e745eb500e6ede2d96f4a6e9",
"shasum": ""
},
"require": {
@@ -3560,7 +3642,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -3587,20 +3669,20 @@
],
"description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
- "time": "2018-07-26T09:10:45+00:00"
+ "time": "2018-11-26T11:49:31+00:00"
},
{
"name": "symfony/class-loader",
- "version": "v3.4.17",
+ "version": "v3.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/class-loader.git",
- "reference": "f31333bdff54c7595f834d510a6d2325573ddb36"
+ "reference": "420458095cf60025eb0841276717e0da7f75e50e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/class-loader/zipball/f31333bdff54c7595f834d510a6d2325573ddb36",
- "reference": "f31333bdff54c7595f834d510a6d2325573ddb36",
+ "url": "https://api.github.com/repos/symfony/class-loader/zipball/420458095cf60025eb0841276717e0da7f75e50e",
+ "reference": "420458095cf60025eb0841276717e0da7f75e50e",
"shasum": ""
},
"require": {
@@ -3643,20 +3725,20 @@
],
"description": "Symfony ClassLoader Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T12:28:39+00:00"
+ "time": "2018-11-11T19:48:54+00:00"
},
{
"name": "symfony/config",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "b3d4d7b567d7a49e6dfafb6d4760abc921177c96"
+ "reference": "005d9a083d03f588677d15391a716b1ac9b887c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/b3d4d7b567d7a49e6dfafb6d4760abc921177c96",
- "reference": "b3d4d7b567d7a49e6dfafb6d4760abc921177c96",
+ "url": "https://api.github.com/repos/symfony/config/zipball/005d9a083d03f588677d15391a716b1ac9b887c0",
+ "reference": "005d9a083d03f588677d15391a716b1ac9b887c0",
"shasum": ""
},
"require": {
@@ -3679,7 +3761,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -3706,24 +3788,25 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
- "time": "2018-09-08T13:24:10+00:00"
+ "time": "2018-11-30T22:21:14+00:00"
},
{
"name": "symfony/console",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b"
+ "reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/dc7122fe5f6113cfaba3b3de575d31112c9aa60b",
- "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b",
+ "url": "https://api.github.com/repos/symfony/console/zipball/4dff24e5d01e713818805c1862d2e3f901ee7dd0",
+ "reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0",
"shasum": ""
},
"require": {
"php": "^7.1.3",
+ "symfony/contracts": "^1.0",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
@@ -3747,7 +3830,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -3774,20 +3857,88 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2018-10-03T08:15:46+00:00"
+ "time": "2018-11-27T07:40:44+00:00"
+ },
+ {
+ "name": "symfony/contracts",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/contracts.git",
+ "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf",
+ "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "require-dev": {
+ "psr/cache": "^1.0",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "psr/cache": "When using the Cache contracts",
+ "psr/container": "When using the Service contracts",
+ "symfony/cache-contracts-implementation": "",
+ "symfony/service-contracts-implementation": "",
+ "symfony/translation-contracts-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\": ""
+ },
+ "exclude-from-classmap": [
+ "**/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A set of abstractions extracted out of the Symfony components",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2018-12-05T08:06:11+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v3.4.17",
+ "version": "v3.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "3503415d4aafabc31cd08c3a4ebac7f43fde8feb"
+ "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/3503415d4aafabc31cd08c3a4ebac7f43fde8feb",
- "reference": "3503415d4aafabc31cd08c3a4ebac7f43fde8feb",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/345b9a48595d1ab9630db791dbc3e721bf0233e8",
+ "reference": "345b9a48595d1ab9630db791dbc3e721bf0233e8",
"shasum": ""
},
"require": {
@@ -3827,37 +3978,39 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T16:33:53+00:00"
+ "time": "2018-11-11T19:48:54+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "f6b9d893ad28aefd8942dc0469c8397e2216fe30"
+ "reference": "e4adc57a48d3fa7f394edfffa9e954086d7740e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f6b9d893ad28aefd8942dc0469c8397e2216fe30",
- "reference": "f6b9d893ad28aefd8942dc0469c8397e2216fe30",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e4adc57a48d3fa7f394edfffa9e954086d7740e5",
+ "reference": "e4adc57a48d3fa7f394edfffa9e954086d7740e5",
"shasum": ""
},
"require": {
"php": "^7.1.3",
- "psr/container": "^1.0"
+ "psr/container": "^1.0",
+ "symfony/contracts": "^1.0"
},
"conflict": {
- "symfony/config": "<4.1.1",
+ "symfony/config": "<4.2",
"symfony/finder": "<3.4",
"symfony/proxy-manager-bridge": "<3.4",
"symfony/yaml": "<3.4"
},
"provide": {
- "psr/container-implementation": "1.0"
+ "psr/container-implementation": "1.0",
+ "symfony/service-contracts-implementation": "1.0"
},
"require-dev": {
- "symfony/config": "~4.1",
+ "symfony/config": "~4.2",
"symfony/expression-language": "~3.4|~4.0",
"symfony/yaml": "~3.4|~4.0"
},
@@ -3871,7 +4024,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -3898,20 +4051,20 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T12:40:59+00:00"
+ "time": "2018-12-02T15:59:36+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "80e60271bb288de2a2259662cff125cff4f93f95"
+ "reference": "7438a32108fdd555295f443605d6de2cce473159"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/80e60271bb288de2a2259662cff125cff4f93f95",
- "reference": "80e60271bb288de2a2259662cff125cff4f93f95",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/7438a32108fdd555295f443605d6de2cce473159",
+ "reference": "7438a32108fdd555295f443605d6de2cce473159",
"shasum": ""
},
"require": {
@@ -3928,7 +4081,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -3955,24 +4108,25 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T12:40:59+00:00"
+ "time": "2018-11-26T10:55:26+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e"
+ "reference": "921f49c3158a276d27c0d770a5a347a3b718b328"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bfb30c2ad377615a463ebbc875eba64a99f6aa3e",
- "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/921f49c3158a276d27c0d770a5a347a3b718b328",
+ "reference": "921f49c3158a276d27c0d770a5a347a3b718b328",
"shasum": ""
},
"require": {
- "php": "^7.1.3"
+ "php": "^7.1.3",
+ "symfony/contracts": "^1.0"
},
"conflict": {
"symfony/dependency-injection": "<3.4"
@@ -3991,7 +4145,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -4018,20 +4172,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2018-07-26T09:10:45+00:00"
+ "time": "2018-12-01T08:52:38+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "596d12b40624055c300c8b619755b748ca5cf0b5"
+ "reference": "2f4c8b999b3b7cadb2a69390b01af70886753710"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/596d12b40624055c300c8b619755b748ca5cf0b5",
- "reference": "596d12b40624055c300c8b619755b748ca5cf0b5",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/2f4c8b999b3b7cadb2a69390b01af70886753710",
+ "reference": "2f4c8b999b3b7cadb2a69390b01af70886753710",
"shasum": ""
},
"require": {
@@ -4041,7 +4195,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -4068,20 +4222,20 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T12:40:59+00:00"
+ "time": "2018-11-11T19:52:12+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
+ "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
- "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+ "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
"shasum": ""
},
"require": {
@@ -4127,24 +4281,25 @@
"portable",
"shim"
],
- "time": "2018-08-06T14:22:27+00:00"
+ "time": "2018-09-21T13:07:52+00:00"
},
{
"name": "symfony/translation",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "9f0b61e339160a466ebcde167a6c5521c810e304"
+ "reference": "c0e2191e9bed845946ab3d99767513b56ca7dcd6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/9f0b61e339160a466ebcde167a6c5521c810e304",
- "reference": "9f0b61e339160a466ebcde167a6c5521c810e304",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/c0e2191e9bed845946ab3d99767513b56ca7dcd6",
+ "reference": "c0e2191e9bed845946ab3d99767513b56ca7dcd6",
"shasum": ""
},
"require": {
"php": "^7.1.3",
+ "symfony/contracts": "^1.0.2",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
@@ -4152,6 +4307,9 @@
"symfony/dependency-injection": "<3.4",
"symfony/yaml": "<3.4"
},
+ "provide": {
+ "symfony/translation-contracts-implementation": "1.0"
+ },
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~3.4|~4.0",
@@ -4169,7 +4327,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -4196,20 +4354,20 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T16:36:10+00:00"
+ "time": "2018-12-06T10:45:32+00:00"
},
{
"name": "symfony/yaml",
- "version": "v4.1.6",
+ "version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "367e689b2fdc19965be435337b50bc8adf2746c9"
+ "reference": "c41175c801e3edfda90f32e292619d10c27103d7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9",
- "reference": "367e689b2fdc19965be435337b50bc8adf2746c9",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/c41175c801e3edfda90f32e292619d10c27103d7",
+ "reference": "c41175c801e3edfda90f32e292619d10c27103d7",
"shasum": ""
},
"require": {
@@ -4228,7 +4386,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "4.2-dev"
}
},
"autoload": {
@@ -4255,7 +4413,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2018-10-02T16:36:10+00:00"
+ "time": "2018-11-11T19:52:12+00:00"
},
{
"name": "theseer/tokenizer",
@@ -4299,20 +4457,21 @@
},
{
"name": "webmozart/assert",
- "version": "1.3.0",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
- "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
- "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0"
+ "php": "^5.3.3 || ^7.0",
+ "symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
@@ -4345,7 +4504,7 @@
"check",
"validate"
],
- "time": "2018-01-29T19:49:41+00:00"
+ "time": "2018-12-25T11:19:39+00:00"
}
],
"aliases": [],
diff --git a/doc/hook/collect_public_recipients.bb b/doc/hook/collect_public_recipients.bb
new file mode 100644
index 000000000..de3f4049e
--- /dev/null
+++ b/doc/hook/collect_public_recipients.bb
@@ -0,0 +1,42 @@
+[h2]collect_public_recipients[/h2]
+
+Replace the default list of public recipients (i.e., all contacts).
+
+Allow plugins to create a list of recipients for public messages instead of the default
+of all channel connections.
+
+Called with the following array:
+ [
+ 'recipients' => [],
+ 'item' => $item,
+ 'private_envelope' => $private_envelope,
+ 'include_groups' => $include_groups
+ ];
+
+[code]
+ if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
+
+ $hookinfo = [
+ 'recipients' => [],
+ 'item' => $item,
+ 'private_envelope' => $private_envelope,
+ 'include_groups' => $include_groups
+ ];
+
+ call_hooks('collect_public_recipients',$hookinfo);
+
+ if ($hookinfo['recipients']) {
+ $r = $hookinfo['recipients'];
+ } else {
+ $r = q("select abook_xchan, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 and abook_pending = 0 and abook_archived = 0 ",
+ intval($item['uid'])
+ );
+ }
+
+ if($r) {
+
+ . . .
+
+[/code]
+
+see: include/item.php
diff --git a/doc/hook/daemon_master_release.bb b/doc/hook/daemon_master_release.bb
new file mode 100644
index 000000000..a17216d48
--- /dev/null
+++ b/doc/hook/daemon_master_release.bb
@@ -0,0 +1,5 @@
+[h2]daemon_master_release[/h2]
+
+Permit filtering or alternate methods of processing of background processes when [code] \Zotlabs\Daemon\Master::Release() [/code] is called.
+
+Default behavior is for a new PHP process to fire immediately upon a call to Master::Summon(). This hook permits pre-emption and the ability to provide queuing or other alternatives to this procedure.
diff --git a/doc/hook/item_custom.bb b/doc/hook/item_custom.bb
new file mode 100644
index 000000000..d20c7d76c
--- /dev/null
+++ b/doc/hook/item_custom.bb
@@ -0,0 +1,24 @@
+[h2]item_custom[/h2]
+
+Allow addons to create and process custom item types.
+
+Addon authors will need to use iconfig meta data (with sharing on) or some other method
+to specify and determine whether the custom item is destined for their addon.
+
+It is fed an array of ['item' => ${item_array}, 'allow_exec' => {true/false}]
+
+By default $arr['item']['cancel'] is set to TRUE which will abort storage of the
+custom item in the item table unless the addon unsets it or sets it to false.
+
+[code]
+ if ($arr['item_type']==ITEM_TYPE_CUSTOM) {
+ /* Custom items are not stored by default
+ because they require an addon to process. */
+ $d['item']['cancel']=true;
+
+ call_hooks('item_custom',$d);
+ }
+
+[/code]
+
+see: include/items.php
diff --git a/doc/hook/item_stored.bb b/doc/hook/item_stored.bb
new file mode 100644
index 000000000..8d706cb4e
--- /dev/null
+++ b/doc/hook/item_stored.bb
@@ -0,0 +1,18 @@
+[h2]item_stored[/h2]
+
+Allow addons to continue processing after an item has been stored in the event
+that they need access to the item_id or other data that gets assigned during
+the storage process.
+
+It is fed an array of type item (including terms and iconfig data).
+
+[code]
+ /**
+ * @hooks item_stored
+ * Called after new item is stored in the database.
+ * (By this time we have an item_id and other frequently needed info.)
+ */
+ call_hooks('item_stored',$arr);
+[/code]
+
+see: include/items.php
diff --git a/doc/hook/item_stored_update.bb b/doc/hook/item_stored_update.bb
new file mode 100644
index 000000000..4532a347c
--- /dev/null
+++ b/doc/hook/item_stored_update.bb
@@ -0,0 +1,15 @@
+[h2]item_stored_update[/h2]
+
+Allow addons to continue processing after an item update has been stored
+
+It is fed an array of type item (including terms and iconfig data).
+
+[code]
+ /**
+ * @hooks item_stored_update
+ * Called after updated item is stored in the database.
+ */
+ call_hooks('item_stored_update',$arr);
+[/code]
+
+see: include/items.php
diff --git a/doc/hook/jot_header_tpl_filter.bb b/doc/hook/jot_header_tpl_filter.bb
new file mode 100644
index 000000000..b17d81d03
--- /dev/null
+++ b/doc/hook/jot_header_tpl_filter.bb
@@ -0,0 +1,5 @@
+[h2]jot_header_tpl_filter[/h2]
+
+Allows addon developers to modify the values of replacements fed into jot-header.tpl
+
+cxref: include/conversation.php
diff --git a/doc/hook/jot_tpl_filter.bb b/doc/hook/jot_tpl_filter.bb
new file mode 100644
index 000000000..426da3c56
--- /dev/null
+++ b/doc/hook/jot_tpl_filter.bb
@@ -0,0 +1,5 @@
+[h2]jot_tpl_filter[/h2]
+
+Allows addon developers to alter the macro replacements prior to being fed into jot.tpl
+
+cxref: include/conversation.php
diff --git a/doc/hook/photo_view_filter.bb b/doc/hook/photo_view_filter.bb
new file mode 100644
index 000000000..0780c1edc
--- /dev/null
+++ b/doc/hook/photo_view_filter.bb
@@ -0,0 +1 @@
+[h2]photo_view_filter[/h2]
diff --git a/doc/hook/privacygroup_extras.bb b/doc/hook/privacygroup_extras.bb
new file mode 100644
index 000000000..bd67f2470
--- /dev/null
+++ b/doc/hook/privacygroup_extras.bb
@@ -0,0 +1,12 @@
+[h2]privacygroup_extras[/h2]
+
+Add items to the Privacy Group edit form
+
+[code]
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$argv(1) ];
+ call_hooks ('privacygroup_extras',$hookinfo);
+ $pgrp_extras = $hookinfo['pgrp_extras'];
+[/code]
+
+see: Zotlabs/Module/Group.php
+see: view/tpl/privacy_groups.tpl
diff --git a/doc/hook/privacygroup_extras_drop.bb b/doc/hook/privacygroup_extras_drop.bb
new file mode 100644
index 000000000..fd27ab255
--- /dev/null
+++ b/doc/hook/privacygroup_extras_drop.bb
@@ -0,0 +1,11 @@
+[h2]privacygroup_extras_drop[/h2]
+
+Called after privacy group is dropped
+
+[code]
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$argv(2) ];
+ call_hooks ('privacygroup_extras_drop',$hookinfo);
+[/code]
+
+see: Zotlabs/Module/Group.php
+see: view/tpl/privacy_groups.tpl
diff --git a/doc/hook/privacygroup_extras_post.bb b/doc/hook/privacygroup_extras_post.bb
new file mode 100644
index 000000000..704db1997
--- /dev/null
+++ b/doc/hook/privacygroup_extras_post.bb
@@ -0,0 +1,11 @@
+[h2]privacygroup_extras_post[/h2]
+
+Called as privacy group edit form is edited.
+
+[code]
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
+ call_hooks ('privacygroup_extras_post',$hookinfo);
+[/code]
+
+see: Zotlabs/Module/Group.php
+see: view/tpl/privacy_groups.tpl
diff --git a/doc/hooklist.bb b/doc/hooklist.bb
index d104df380..5a804c819 100644
--- a/doc/hooklist.bb
+++ b/doc/hooklist.bb
@@ -136,6 +136,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/check_siteallowed]check_siteallowed[/zrl]
Used to over-ride or bypass the site black/white block lists
+[zrl=[baseurl]/help/hook/collect_public_recipients]collect_public_recipients[/zrl]
+ Used to establish a list of recipients to send a public message to.
+
[zrl=[baseurl]/help/hook/comment_buttons]comment_buttons[/zrl]
Called when rendering the edit buttons for comments
@@ -190,6 +193,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/daemon_addon]daemon_addon[/zrl]
Called when invoking the extensible background daemon
+[zrl=[baseurl]/help/hook/daemon_master_release]daemon_master_release[/zrl]
+ Called at the start of processing \Zotlabs\Daemon\Master::Release()
+
[zrl=[baseurl]/help/hook/directory_item]directory_item[/zrl]
Called when generating a directory listing for display
@@ -343,9 +349,18 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/item_store]item_store[/zrl]
Called when item_store() stores a record of type item
+[zrl=[baseurl]/help/hook/item_stored]item_stored[/zrl]
+ Called after item_store() has stored a record of type item in the database.
+
+[zrl=[baseurl]/help/hook/item_custom]item_custom[/zrl]
+ Called before item_store() stores a record of type item (allowing addons to process ITEM_TYPE_CUSTOM items).
+
[zrl=[baseurl]/help/hook/item_store_update]item_store_update[/zrl]
Called when item_store_update() is called to update a stored item.
+[zrl=[baseurl]/help/hook/item_stored_update]item_stored_update[/zrl]
+ Called after item_store_update() has updated a stored item.
+
[zrl=[baseurl]/help/hook/item_translate]item_translate[/zrl]
Called from item_store and item_store_update after the post language has been autodetected
@@ -355,6 +370,12 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/jot_tool]jot_tool[/zrl]
Deprecated and possibly obsolete. Allows one to add action buttons to the post editor.
+[zrl=[baseurl]/help/hook/jot_tpl_filter]jot_tpl_filter[/zrl]
+ Called to filter template vars before replacement in jot.tpl.
+
+[zrl=[baseurl]/help/hook/jot_header_tpl_filter]jot_header_tpl_filter[/zrl]
+ Called to filter template vars before replacement in jot_header.tpl.
+
[zrl=[baseurl]/help/hook/legal_webbie]legal_webbie[/zrl]
Called to validate a channel address
@@ -502,6 +523,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/photo_upload_form]photo_upload_form[/zrl]
Called when generating a photo upload form
+[zrl=[baseurl]/help/hook/photo_view_filter]photo_view_filter[/zrl]
+ Called before the data is handed over to the photo_view template
+
[zrl=[baseurl]/help/hook/poke_verbs]poke_verbs[/zrl]
Called when generating the list of actions for "poke" module
@@ -541,6 +565,15 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/prepare_body_init]prepare_body_init[/zrl]
Called before generating the HTML for a displayed conversation item
+[zrl=[baseurl]/help/hook/privacygroup_extras]privacygroup_extras[/zrl]
+ Called before generating the HTML for the Privacy Group edit options
+
+[zrl=[baseurl]/help/hook/privacygroup_extras_delete]privacygroup_extras_delete[/zrl]
+ Called after privacy group is dropped.
+
+[zrl=[baseurl]/help/hook/privacygroup_extras_post]privacygroup_extras_post[/zrl]
+ Called when privacy group edit form is submitted.
+
[zrl=[baseurl]/help/hook/proc_run]proc_run[/zrl]
Called when invoking PHP sub processes
diff --git a/include/attach.php b/include/attach.php
index dd718aa14..17a47d9ac 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -137,7 +137,7 @@ function z_mime_content_type($filename) {
* @param string $hash (optional)
* @param string $filename (optional)
* @param string $filetype (optional)
- * @return associative array with:
+ * @return array Associative array with:
* * \e boolean \b success
* * \e int|boolean \b results amount of found results, or false
* * \e string \b message with error messages if any
@@ -176,15 +176,17 @@ function attach_count_files($channel_id, $observer, $hash = '', $filename = '',
/**
* @brief Returns a list of files/attachments.
*
- * @param $channel_id
- * @param $observer
- * @param $hash (optional)
- * @param $filename (optional)
- * @param $filetype (optional)
- * @param $orderby
- * @param $start
- * @param $entries
- * @return associative array with:
+ * @param int $channel_id
+ * @param string $observer
+ * @param string $hash (optional)
+ * @param string $filename (optional)
+ * @param string $filetype (optional)
+ * @param string $orderby (optional)
+ * @param int $start (optional)
+ * @param int $entries (optional)
+ * @param string $since (optional)
+ * @param string $until (optional)
+ * @return array an associative array with:
* * \e boolean \b success
* * \e array|boolean \b results array with results, or false
* * \e string \b message with error messages if any
@@ -1428,8 +1430,17 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
if(! $r) {
attach_drop_photo($channel_id,$resource);
- $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo'=>$is_photo];
- call_hooks("attach_delete",$arr);
+ $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo' => $is_photo];
+
+ /**
+ * @hooks attach_delete
+ * Called when deleting an attachment from channel.
+ * * \e int \b channel_id - the channel_id
+ * * \e string \b resource
+ * * \e int \b is_photo
+ */
+ call_hooks('attach_delete', $arr);
+
return;
}
@@ -1488,8 +1499,15 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
intval($channel_id)
);
- $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo'=>$is_photo];
- call_hooks("attach_delete",$arr);
+ $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo' => $is_photo];
+ /**
+ * @hooks attach_delete
+ * Called when deleting an attachment from channel.
+ * * \e int \b channel_id - the channel_id
+ * * \e string \b resource
+ * * \e int \b is_photo
+ */
+ call_hooks('attach_delete', $arr);
file_activity($channel_id, $object, $object['allow_cid'], $object['allow_gid'], $object['deny_cid'], $object['deny_gid'], 'update', true);
@@ -1868,7 +1886,7 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
* @param int $channel_id
* @param string $hash
* @param string $url
- * @return array An associative array for the specified file.
+ * @return array Associative array for the specified file.
*/
function get_file_activity_object($channel_id, $hash, $url) {
@@ -2110,7 +2128,7 @@ function attach_export_data($channel, $resource_id, $deleted = false) {
if($attach_ptr['is_photo']) {
- // This query could potentially result in a few megabytes of data use.
+ // This query could potentially result in a few megabytes of data use.
$r = q("select * from photo where resource_id = '%s' and uid = %d order by imgscale asc",
dbesc($resource_id),
@@ -2352,7 +2370,7 @@ function attach_move($channel_id, $resource_id, $new_folder_hash) {
$filename = $r[0]['filename'];
- // don't do duplicate check unless our parent folder has changed.
+ // don't do duplicate check unless our parent folder has changed.
if($r[0]['folder'] !== $new_folder_hash) {
@@ -2468,7 +2486,7 @@ function attach_move($channel_id, $resource_id, $new_folder_hash) {
/**
- * Used to generate a select input box of all your folders
+ * Used to generate a select input box of all your folders
*/
@@ -2551,10 +2569,10 @@ function attach_syspaths($channel_id,$attach_hash) {
/**
* in earlier releases we did not fill in os_path and display_path in the attach DB structure.
- * (It was not needed or used). Going forward we intend to make use of these fields.
+ * (It was not needed or used). Going forward we intend to make use of these fields.
* A cron task checks for empty values (as older attachments may have arrived at our site
- * in a clone operation) and executes attach_syspaths() to generate these field values and correct
- * the attach table entry. The operation is limited to 100 DB entries at a time so as not to
+ * in a clone operation) and executes attach_syspaths() to generate these field values and correct
+ * the attach table entry. The operation is limited to 100 DB entries at a time so as not to
* overload the system in any cron run. Eventually it will catch up with old attach structures
* and switch into maintenance mode to correct any that might arrive in clone packets from older
* sites.
diff --git a/include/bbcode.php b/include/bbcode.php
index c5d6ef998..7531bd774 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -326,22 +326,11 @@ function bb_ShareAttributes($match) {
$auth = is_matrix_url($profile);
}
- // message_id is never used, do we still need it?
- $message_id = "";
- preg_match("/message_id='(.*?)'/ism", $attributes, $matches);
- if ($matches[1] != "")
- $message_id = $matches[1];
-
- if(! $message_id) {
- preg_match("/guid='(.*?)'/ism", $attributes, $matches);
- if ($matches[1] != "")
- $message_id = $matches[1];
- }
-
+ $rnd = mt_rand();
$reldate = '<span class="autotime" title="' . datetime_convert('UTC', date_default_timezone_get(), $posted, 'c') . '" >' . datetime_convert('UTC', date_default_timezone_get(), $posted, 'r') . '</span>';
- $headline = '<div class="shared_container"> <div class="shared_header">';
+ $headline = '<div id="shared_container_' . $rnd . '" class="shared_container"> <div id="shared_header_' . $rnd . '" class="shared_header">';
if ($avatar != "")
$headline .= '<a href="' . (($auth) ? zid($profile) : $profile) . '" ><img src="' . $avatar . '" alt="' . $author . '" height="32" width="32" /></a>';
@@ -363,7 +352,7 @@ function bb_ShareAttributes($match) {
$headline .= '<span>' . $fmt . '</span></div>';
- $text = $headline . '<div class="reshared-content">' . trim($match[2]) . '</div></div>';
+ $text = $headline . '<div id="reshared-content-' . $rnd . '" class="reshared-content">' . trim($match[2]) . '</div></div>';
return $text;
}
@@ -1021,7 +1010,7 @@ function bbcode($Text, $options = []) {
}
// Check for colored text
if (strpos($Text,'[/hl]') !== false) {
- $Text = preg_replace("(\[hl\](.*?)\[\/hl\])ism", "<span style=\"background-color: yellow;\">$1</span>", $Text);
+ $Text = preg_replace("(\[hl\](.*?)\[\/hl\])ism", "<span class=\"default-highlight\">$1</span>", $Text);
$Text = preg_replace("(\[hl=(.*?)\](.*?)\[\/hl\])ism", "<span style=\"background-color: $1;\">$2</span>", $Text);
}
diff --git a/include/channel.php b/include/channel.php
index 1e5570f6b..95a3f96cf 100644
--- a/include/channel.php
+++ b/include/channel.php
@@ -2333,6 +2333,21 @@ function channelx_by_hash($hash) {
return(($r) ? $r[0] : false);
}
+
+/**
+ * @brief Get a channel array by a channel_hash.
+ *
+ * @param string $hash
+ * @return array|boolean false if channel ID not found, otherwise the channel array
+ */
+function channelx_by_portid($hash) {
+ $r = q("SELECT * FROM channel left join xchan on channel_portable_id = xchan_hash WHERE channel_portable_id = '%s' and channel_removed = 0 LIMIT 1",
+ dbesc($hash)
+ );
+
+ return(($r) ? $r[0] : false);
+}
+
/**
* @brief Get a channel array by a channel ID.
*
diff --git a/include/contact_widgets.php b/include/contact_widgets.php
index a105bca19..6ad276b00 100644
--- a/include/contact_widgets.php
+++ b/include/contact_widgets.php
@@ -7,14 +7,14 @@ function findpeople_widget() {
if(get_config('system','invitation_only')) {
$x = get_pconfig(local_channel(),'system','invites_remaining');
if($x || is_site_admin()) {
- App::$page['aside'] .= '<div class="side-link" id="side-invite-remain">'
- . sprintf( tt('%d invitation available','%d invitations available',$x), $x)
- . '</div>' . $inv;
+ App::$page['aside'] .= '<div class="side-link" id="side-invite-remain">'
+ . sprintf( tt('%d invitation available','%d invitations available',$x), $x)
+ . '</div>';
}
}
$advanced_search = ((local_channel() && feature_enabled(local_channel(),'advanced_dirsearch')) ? t('Advanced') : false);
-
+
return replace_macros(get_markup_template('peoplefind.tpl'),array(
'$findpeople' => t('Find Channels'),
'$desc' => t('Enter name or interest'),
@@ -22,7 +22,7 @@ function findpeople_widget() {
'$hint' => t('Examples: Robert Morgenstein, Fishing'),
'$findthem' => t('Find'),
'$suggest' => t('Channel Suggestions'),
- '$similar' => '', // FIXME and uncomment when mod/match working // t('Similar Interests'),
+ '$similar' => '', /// @FIXME fixme and uncomment when mod/match working // t('Similar Interests'),
'$random' => t('Random Profile'),
'$inv' => t('Invite Friends'),
'$advanced_search' => $advanced_search,
@@ -56,12 +56,11 @@ function fileas_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
function categories_widget($baseurl,$selected = '') {
-
+
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -100,14 +99,13 @@ function categories_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
return '';
}
function cardcategories_widget($baseurl,$selected = '') {
-
+
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -128,7 +126,7 @@ function cardcategories_widget($baseurl,$selected = '') {
$item_normal
$sql_extra
order by term.term asc",
- intval(App::$profile['profile_uid']),
+ intval(App::$profile['profile_uid']),
intval(TERM_CATEGORY),
intval(TERM_OBJ_POST),
dbesc(App::$profile['channel_hash'])
@@ -144,15 +142,15 @@ function cardcategories_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
+
return '';
}
function articlecategories_widget($baseurl,$selected = '') {
-
+
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -173,7 +171,7 @@ function articlecategories_widget($baseurl,$selected = '') {
$item_normal
$sql_extra
order by term.term asc",
- intval(App::$profile['profile_uid']),
+ intval(App::$profile['profile_uid']),
intval(TERM_CATEGORY),
intval(TERM_OBJ_POST),
dbesc(App::$profile['channel_hash'])
@@ -189,17 +187,14 @@ function articlecategories_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
+
return '';
}
-
-
-
function common_friends_visitor_widget($profile_uid,$cnt = 25) {
if(local_channel() == $profile_uid)
@@ -218,17 +213,14 @@ function common_friends_visitor_widget($profile_uid,$cnt = 25) {
return;
$r = common_friends($profile_uid,$observer_hash,0,$cnt,true);
-
- return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
+
+ return replace_macros(get_markup_template('remote_friends_common.tpl'), [
'$desc' => t('Common Connections'),
'$base' => z_root(),
'$uid' => $profile_uid,
- '$cid' => $observer,
'$linkmore' => (($t > $cnt) ? 'true' : ''),
'$more' => sprintf( t('View all %d common connections'), $t),
- '$items' => $r
- ));
+ '$items' => $r,
+ ]);
};
-
-
diff --git a/include/conversation.php b/include/conversation.php
index 041994b90..e2dd02ffc 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -1328,7 +1328,7 @@ function hz_status_editor($a, $x, $popup = false) {
$tpl = get_markup_template('jot-header.tpl');
- App::$page['htmlhead'] .= replace_macros($tpl, array(
+ $tplmacros = [
'$baseurl' => z_root(),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$pretext' => ((x($x,'pretext')) ? $x['pretext'] : ''),
@@ -1349,7 +1349,10 @@ function hz_status_editor($a, $x, $popup = false) {
'$nocomment_disabled' => t('Comments disabled'),
'$auto_save_draft' => $feature_auto_save_draft,
'$reset' => $reset
- ));
+ ];
+
+ call_hooks('jot_header_tpl_filter',$tplmacros);
+ App::$page['htmlhead'] .= replace_macros($tpl, $tplmacros);
$tpl = get_markup_template('jot.tpl');
@@ -1389,7 +1392,7 @@ function hz_status_editor($a, $x, $popup = false) {
$sharebutton = (x($x,'button') ? $x['button'] : t('Share'));
$placeholdtext = (x($x,'content_label') ? $x['content_label'] : $sharebutton);
- $o .= replace_macros($tpl, array(
+ $tplmacros = [
'$return_path' => ((x($x, 'return_path')) ? $x['return_path'] : App::$query_string),
'$action' => z_root() . '/item',
'$share' => $sharebutton,
@@ -1463,9 +1466,15 @@ function hz_status_editor($a, $x, $popup = false) {
'$bbcode' => ((x($x, 'bbcode')) ? $x['bbcode'] : false),
'$parent' => ((array_key_exists('parent',$x) && $x['parent']) ? $x['parent'] : 0),
'$reset' => $reset,
- '$is_owner' => ((local_channel() && (local_channel() == $x['profile_uid'])) ? true : false)
- ));
+ '$is_owner' => ((local_channel() && (local_channel() == $x['profile_uid'])) ? true : false),
+ '$custommoretoolsdropdown' => '',
+ '$custommoretoolsbuttons' => '',
+ '$customsubmitright' => []
+ ];
+
+ call_hooks('jot_tpl_filter',$tplmacros);
+ $o .= replace_macros($tpl, $tplmacros);
if ($popup === true) {
$o = '<div id="jot-popup" style="display:none">' . $o . '</div>';
}
diff --git a/include/event.php b/include/event.php
index a34250e7a..fdb9e1415 100644
--- a/include/event.php
+++ b/include/event.php
@@ -6,6 +6,10 @@
use Sabre\VObject;
+use Ramsey\Uuid\Uuid;
+use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
+
+
require_once('include/bbcode.php');
/**
@@ -463,8 +467,13 @@ function event_store_event($arr) {
$hash = $arr['external_id'];
elseif(array_key_exists('event_hash',$arr))
$hash = $arr['event_hash'];
- else
- $hash = random_string() . '@' . App::get_hostname();
+ else {
+ try {
+ $hash = Uuid::uuid4()->toString();
+ } catch (UnsatisfiedDependencyException $e) {
+ $hash = random_string(48);
+ }
+ }
$r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,dtstart,dtend,summary,description,location,etype,
adjust,nofinish, event_status, event_status_date, event_percent, event_repeat, event_sequence, event_priority, event_vdata, allow_cid,allow_gid,deny_cid,deny_gid)
@@ -1126,8 +1135,8 @@ function event_store_item($arr, $event) {
}
if(! $arr['mid']) {
- $arr['uuid'] = item_message_id();
- $arr['mid'] = z_root() . '/item/' . $arr['uuid'];
+ $arr['uuid'] = $event['event_hash'];
+ $arr['mid'] = z_root() . '/event/' . $event['event_hash'];
}
$item_arr['aid'] = $z[0]['channel_account_id'];
diff --git a/include/features.php b/include/features.php
index 05ce3db32..35a4c0dd4 100644
--- a/include/features.php
+++ b/include/features.php
@@ -361,14 +361,6 @@ function get_features($filtered = true, $level = (-1)) {
],
[
- 'affinity',
- t('Affinity Tool'),
- t('Filter stream activity by depth of relationships'),
- false,
- get_config('feature_lock','affinity')
- ],
-
- [
'suggest',
t('Suggest Channels'),
t('Show friend and connection suggestions'),
diff --git a/include/feedutils.php b/include/feedutils.php
index afbe4229e..5e52828c3 100644
--- a/include/feedutils.php
+++ b/include/feedutils.php
@@ -261,13 +261,13 @@ function construct_activity_target($item) {
* @param SimplePie $item
* @return array $author
*/
-
function get_atom_author($feed, $item) {
$author = [];
$found_author = $item->get_author();
if($found_author) {
+ /// @FIXME $rawauthor is undefined here
if($rawauthor) {
if($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data'])
$author['full_name'] = unxmlify($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data']);
@@ -398,10 +398,10 @@ function get_atom_author($feed, $item) {
'author' => $author
];
/**
- * @hooks parse_atom
+ * @hooks parse_atom_author
* * \e SimplePie \b feed - The original SimplePie feed
* * \e SimplePie \b item
- * * \e array \b result - the result array that will also get returned
+ * * \e array \b author - the result array that will also get returned
*/
call_hooks('parse_atom_author', $arr);
@@ -416,10 +416,8 @@ function get_atom_author($feed, $item) {
*
* @param SimplePie $feed
* @param SimplePie $item
- * @param[out] array $author
* @return array Associative array with the parsed item data
*/
-
function get_atom_elements($feed, $item) {
require_once('include/html2bbcode.php');
@@ -669,10 +667,10 @@ function get_atom_elements($feed, $item) {
$termterm = notags(trim(unxmlify($term)));
// Mastodon auto generates an nsfw category tag for any 'content-warning' message.
- // Most people use CW and use both summary/content as a spoiler and we honour that
- // construct so the post will already be collapsed. The generated tag is almost
+ // Most people use CW and use both summary/content as a spoiler and we honour that
+ // construct so the post will already be collapsed. The generated tag is almost
// always wrong and even if it isn't we would already be doing the right thing.
-
+
if($mastodon && $termterm === 'nsfw' && $summary && $res['body'])
continue;
@@ -1336,7 +1334,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) {
continue;
}
- }
+ }
if(! post_is_importable($datarray, $contact))
continue;
@@ -1492,7 +1490,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) {
continue;
}
- }
+ }
if(! post_is_importable($datarray, $contact))
continue;
@@ -1900,7 +1898,7 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0, $
$body = $item['body'];
- if($summary)
+ if($summary)
$body = preg_replace('|^(.*?)\[summary\](.*?)\[/summary\](.*?)$|ism','$1$3',$item['body']);
if($compat)
diff --git a/include/follow.php b/include/follow.php
index 964c43ff2..db77a0160 100644
--- a/include/follow.php
+++ b/include/follow.php
@@ -190,7 +190,7 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
return $result;
}
- $allowed = (($is_zot || $r[0]['xchan_network'] === 'rss') ? 1 : 0);
+ $allowed = (($is_zot || in_array($r[0]['xchan_network'],['rss','zot6'])) ? 1 : 0);
$x = array('channel_id' => $uid, 'follow_address' => $url, 'xchan' => $r[0], 'allowed' => $allowed, 'singleton' => 0);
@@ -266,9 +266,7 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
}
}
else {
- $closeness = get_pconfig($uid,'system','new_abook_closeness');
- if($closeness === false)
- $closeness = 80;
+ $closeness = get_pconfig($uid,'system','new_abook_closeness',80);
$r = abook_store_lowlevel(
[
diff --git a/include/help.php b/include/help.php
index f2aa4add3..e82fa96da 100644
--- a/include/help.php
+++ b/include/help.php
@@ -7,17 +7,18 @@ use \Michelf\MarkdownExtra;
* @brief
*
* @param string $path
- * @return string|unknown
+ * @param string $suffix (optional) default null
+ * @return string
*/
-function get_help_fullpath($path,$suffix=null) {
+function get_help_fullpath($path, $suffix = null) {
$docroot = (\App::$override_helproot) ? \App::$override_helproot : 'doc/';
- $docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot;
+ $docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot;
// Determine the language and modify the path accordingly
$x = determine_help_language();
$lang = $x['language'];
- $url_idx = ($x['from_url'] ? 1 : 0);
+
// The English translation is at the root of /doc/. Other languages are in
// subfolders named by the language code such as "de", "es", etc.
if($lang !== 'en') {
@@ -49,19 +50,18 @@ function get_help_fullpath($path,$suffix=null) {
/**
* @brief
*
- * @param string $tocpath
- * @return string|unknown
+ * @param string $tocpath (optional) default false
+ * @return string
*/
function get_help_content($tocpath = false) {
- global $lang;
$doctype = 'markdown';
$text = '';
$path = (($tocpath !== false) ? $tocpath : '');
- $docroot = (\App::$override_helproot) ? \App::$override_helproot : 'doc/';
- $docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot;
+ $docroot = (\App::$override_helproot) ? \App::$override_helproot : 'doc/';
+ $docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot;
if($tocpath === false && argc() > 1) {
$path = '';
@@ -74,7 +74,7 @@ function get_help_content($tocpath = false) {
if($path) {
- $fullpath = get_help_fullpath($path);
+ $fullpath = get_help_fullpath($path);
$title = basename($path);
if(! $tocpath)
\App::$page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags($title)));
@@ -88,10 +88,10 @@ function get_help_content($tocpath = false) {
load_doc_file($fullpath . '.md') === '' &&
load_doc_file($fullpath . '.bb') === '' &&
load_doc_file($fullpath . '.html') === ''
- ) {
+ ) {
$path = $title;
}
- $fullpath = get_help_fullpath($path);
+ $fullpath = get_help_fullpath($path);
$text = load_doc_file($fullpath . '.md');
if(! $text) {
@@ -111,15 +111,15 @@ function get_help_content($tocpath = false) {
if($tocpath === false) {
if(! $text) {
- $path = 'Site';
- $fullpath = get_help_fullpath($path,'.md');
+ $path = 'Site';
+ $fullpath = get_help_fullpath($path,'.md');
$text = load_doc_file($fullpath . '.md');
\App::$page['title'] = t('Help');
}
if(! $text) {
$doctype = 'bbcode';
- $path = 'main';
- $fullpath = get_help_fullpath($path,'.md');
+ $path = 'main';
+ $fullpath = get_help_fullpath($path,'.md');
$text = load_doc_file($fullpath . '.bb');
goaway('/help/about/about');
\App::$page['title'] = t('Help');
@@ -172,16 +172,20 @@ function preg_callback_help_include($matches) {
}
/**
- * @brief
+ * @brief Determines help language.
+ *
+ * If the language was specified in the URL, override the language preference
+ * of the browser. Default to English if both of these are absent.
*
- * @return boolean|array
+ * @return array Associative array with:
+ * * \e string \b language - 2-letter ISO 639-1 code ("en")
+ * * \e boolean \b from_url - true if language from URL overrides browser default
*/
function determine_help_language() {
$lang_detect = new Text_LanguageDetect();
// Set this mode to recognize language by the short code like "en", "ru", etc.
$lang_detect->setNameMode(2);
- // If the language was specified in the URL, override the language preference
- // of the browser. Default to English if both of these are absent.
+
if($lang_detect->languageExists(argv(1))) {
$lang = argv(1);
$from_url = true;
@@ -212,14 +216,13 @@ function find_doc_file($s) {
}
/**
- * @brief
+ * @brief Search in doc files.
*
- * @param string $s
- * @return number|mixed|unknown|boolean
+ * @param string $s The search string to search for
+ * @return array
*/
function search_doc_files($s) {
-
\App::set_pager_itemspage(60);
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
@@ -277,7 +280,6 @@ function doc_rank_sort($s1, $s2) {
*
* @return string
*/
-
function load_context_help() {
$path = App::$cmd;
@@ -307,7 +309,7 @@ function load_context_help() {
* @brief
*
* @param string $s
- * @return void|boolean[]|number[]|string[]|unknown[]
+ * @return void|array
*/
function store_doc_file($s) {
@@ -351,7 +353,7 @@ function store_doc_file($s) {
$x = item_store_update($item);
}
else {
- $item['uuid'] = $item_message_id();
+ $item['uuid'] = item_message_id();
$item['mid'] = $item['parent_mid'] = z_root() . '/item/' . $item['uuid'];
$x = item_store($item);
}
diff --git a/include/import.php b/include/import.php
index 53b21c317..f391400bd 100644
--- a/include/import.php
+++ b/include/import.php
@@ -12,6 +12,7 @@ require_once('include/perm_upgrade.php');
* @param array $channel
* @param int $account_id
* @param int $seize
+ * @param string $newname (optional)
* @return boolean|array
*/
function import_channel($channel, $account_id, $seize, $newname = '') {
@@ -650,7 +651,7 @@ function import_items($channel, $items, $sync = false, $relocate = null) {
// preserve conversations you've been involved in from being expired
$stored = $item_result['item'];
- if((is_array($stored)) && ($stored['id'] != $stored['parent'])
+ if((is_array($stored)) && ($stored['id'] != $stored['parent'])
&& ($stored['author_xchan'] === $channel['channel_hash'])) {
retain_item($stored['item']['parent']);
}
@@ -672,7 +673,7 @@ function import_items($channel, $items, $sync = false, $relocate = null) {
/**
* @brief Sync items to channel.
*
- * @see import_items
+ * @see import_items()
*
* @param array $channel where to import to
* @param array $items
@@ -1035,8 +1036,9 @@ function import_mail($channel, $mails, $sync = false) {
if(! $m)
continue;
- $m['aid'] = $channel['channel_account_id'];
- $m['uid'] = $channel['channel_id'];
+ $m['account_id'] = $channel['channel_account_id'];
+ $m['channel_id'] = $channel['channel_id'];
+
$mail_id = mail_store($m);
if($sync && $mail_id) {
Zotlabs\Daemon\Master::Summon(array('Notifier','single_mail',$mail_id));
@@ -1048,7 +1050,7 @@ function import_mail($channel, $mails, $sync = false) {
/**
* @brief Synchronise mails.
*
- * @see import_mail
+ * @see import_mail()
* @param array $channel
* @param array $mails
*/
@@ -1336,7 +1338,7 @@ function sync_files($channel, $files) {
if($str)
$str .= ",";
-
+
$str .= " " . TQUOT . $k . TQUOT . " = '" . (($k === 'content') ? dbescbin($v) : dbesc($v)) . "' ";
}
$r = dbq("update photo set " . $str . " where id = " . intval($exists[0]['id']) );
diff --git a/include/items.php b/include/items.php
index 2cee376d0..30e758add 100755
--- a/include/items.php
+++ b/include/items.php
@@ -7,6 +7,7 @@
use Zotlabs\Lib\Enotify;
use Zotlabs\Lib\MarkdownSoap;
use Zotlabs\Lib\MessageFilter;
+use Zotlabs\Lib\ThreadListener;
use Zotlabs\Lib\IConfig;
use Zotlabs\Access\PermissionLimits;
use Zotlabs\Access\AccessList;
@@ -25,7 +26,7 @@ require_once('include/permissions.php');
*
* @param array $item
* @param[out] boolean $private_envelope
- * @param boolean $include_groups
+ * @param boolean $include_groups
* @return array containing the recipients
*/
function collect_recipients($item, &$private_envelope,$include_groups = true) {
@@ -95,9 +96,24 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
//$sys = get_sys_channel();
if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
- $r = q("select abook_xchan, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 and abook_pending = 0 and abook_archived = 0 ",
+
+ $hookinfo = [
+ 'recipients' => [],
+ 'item' => $item,
+ 'private_envelope' => $private_envelope,
+ 'include_groups' => $include_groups
+ ];
+
+ call_hooks('collect_public_recipients',$hookinfo);
+
+ if ($hookinfo['recipients']) {
+ $r = $hookinfo['recipients'];
+ } else {
+ $r = q("select abook_xchan, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 and abook_pending = 0 and abook_archived = 0 ",
intval($item['uid'])
- );
+ );
+ }
+
if($r) {
// filter out restrictive public_policy settings from remote networks
@@ -126,6 +142,22 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
// $recipients[] = $sys['xchan_hash'];
}
+
+ // Forward to thread listeners, *unless* there is even a remote hint that the item
+ // might have some privacy attached. This could be (for instance) an ActivityPub DM
+ // in the middle of a public thread. Unless we can guarantee beyond all doubt that
+ // this is public, don't allow it to go to thread listeners.
+
+ if(! intval($item['item_private'])) {
+ $r = ThreadListener::fetch_by_target($item['parent_mid']);
+ if($r) {
+ foreach($r as $rv) {
+ $recipients[] = $rv['portable_id'];
+ }
+ }
+ }
+
+
// Add the authors of any posts in this thread, if they are known to us.
// This is specifically designed to forward wall-to-wall posts to the original author,
// in case they aren't a connection but have permission to write on our wall.
@@ -395,7 +427,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
if(! $arr['mid']) {
- $arr['uuid'] = ((x($arr,'uuid')) ? $arr['uuid'] : item_message_id());
+ $arr['uuid'] = ((x($arr,'uuid')) ? $arr['uuid'] : item_message_id());
}
$arr['mid'] = ((x($arr,'mid')) ? $arr['mid'] : z_root() . '/item/' . $arr['uuid']);
$arr['parent_mid'] = ((x($arr,'parent_mid')) ? $arr['parent_mid'] : $arr['mid']);
@@ -420,7 +452,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
$arr['comment_policy'] = map_scope(PermissionLimits::Get($channel['channel_id'],'post_comments'));
if ((! $arr['plink']) && (intval($arr['item_thread_top']))) {
- $arr['plink'] = substr(z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . urlencode($arr['mid']),0,190);
+ $arr['plink'] = substr(z_root() . '/channel/' . $channel['channel_address'] . '/' . (filter_var($arr['mid'], FILTER_VALIDATE_URL) === false ? '?f=&mid=' : '') . urlencode($arr['mid']),0,190);
}
@@ -454,6 +486,8 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
*/
call_hooks('post_local_end', $ret['activity']);
}
+ else
+ return $ret;
if($post_id && $deliver) {
Master::Summon([ 'Notifier','activity',$post_id ]);
@@ -1591,6 +1625,14 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
'item' => $arr,
'allow_exec' => $allow_exec
];
+
+ if ($arr['item_type']==ITEM_TYPE_CUSTOM) {
+ /* Custom items are not stored by default
+ because they require an addon to process. */
+ $d['item']['cancel']=true;
+
+ call_hooks('item_custom',$d);
+ }
/**
* @hooks item_store
* Called when item_store() stores a record of type item.
@@ -2016,8 +2058,20 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
*/
call_hooks('post_remote_end', $arr);
+ /**
+ * @hooks item_stored
+ * Called after new item is stored in the database.
+ * (By this time we have an item_id and other frequently needed info.)
+ */
+ call_hooks('item_stored',$arr);
+
item_update_parent_commented($arr);
+
+ if(strpos($arr['body'],'[embed]') !== false) {
+ Master::Summon([ 'Cache_embeds', $current_post ]);
+ }
+
// If _creating_ a deleted item, don't propagate it further or send out notifications.
// We need to store the item details just in case the delete came in before the original post,
// so that we have an item in the DB that's marked deleted and won't store a fresh post
@@ -2049,6 +2103,15 @@ function item_store_update($arr, $allow_exec = false, $deliver = true) {
'item' => $arr,
'allow_exec' => $allow_exec
];
+
+ if ($arr['item_type']==ITEM_TYPE_CUSTOM) {
+ /* Custom items are not stored by default
+ because they require an addon to process. */
+ $d['item']['cancel']=true;
+
+ call_hooks('item_custom_update',$d);
+ }
+
/**
* @hooks item_store_update
* Called when item_store_update() is called to update a stored item. It
@@ -2339,6 +2402,19 @@ function item_store_update($arr, $allow_exec = false, $deliver = true) {
*/
call_hooks('post_remote_update_end', $arr);
+ /**
+ * @hooks item_stored_update
+ * Called after updated item is stored in the database.
+ */
+ call_hooks('item_stored_update',$arr);
+
+ if(strpos($arr['body'],'[embed]') !== false) {
+ Master::Summon([ 'Cache_embeds', $orig_post_id ]);
+ }
+
+
+
+
if($deliver) {
send_status_notifications($orig_post_id,$arr);
tag_deliver($uid,$orig_post_id);
@@ -2355,15 +2431,15 @@ function item_update_parent_commented($item) {
$update_parent = true;
- // update the commented timestamp on the parent
+ // update the commented timestamp on the parent
// - unless this is a moderated comment or a potential clone of an older item
- // which we don't wish to bring to the surface. As the queue only holds deliveries
- // for 3 days, it's suspected of being an older cloned item if the creation time
+ // which we don't wish to bring to the surface. As the queue only holds deliveries
+ // for 3 days, it's suspected of being an older cloned item if the creation time
//is older than that.
if(intval($item['item_blocked']) === ITEM_MODERATED)
$update_parent = false;
-
+
if($item['created'] < datetime_convert('','','now - 4 days'))
$update_parent = false;
@@ -2959,7 +3035,9 @@ function tgroup_check($uid, $item) {
* @param array $channel
* @param array $item
* @param int $item_id
- * @param boolean $parent
+ * @param array $parent
+ * @param boolean $edit (optional) default false
+ * @return void
*/
function start_delivery_chain($channel, $item, $item_id, $parent, $edit = false) {
@@ -2994,7 +3072,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $edit = false)
}
// This will change the author to the post owner. Useful for RSS feeds which are to be syndicated
- // to federated platforms which can't verify the identity of the author.
+ // to federated platforms which can't verify the identity of the author.
// This MAY cause you to run afoul of copyright law.
$rewrite_author = intval(get_abconfig($channel['channel_id'],$item['owner_xchan'],'system','rself'));
@@ -3507,7 +3585,7 @@ function item_expire($uid,$days,$comment_days = 7) {
if(! $comment_days)
$comment_days = 7;
-
+
// $expire_network_only = save your own wall posts
// and just expire conversations started by others
// do not enable this until we can pass bulk delete messages through zot
@@ -3808,6 +3886,8 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
intval(TERM_OBJ_POST)
);
+ ThreadListener::delete_by_target($item['mid']);
+
/** @FIXME remove notifications for this item */
return true;
@@ -4502,7 +4582,7 @@ function set_linkified_perms($linkified, &$str_contact_allow, &$str_group_allow,
$first_access_tag = true;
foreach($linkified as $x) {
- $access_tag = $x['access_tag'];
+ $access_tag = $x['success']['access_tag'];
if(($access_tag) && (! $parent_item)) {
logger('access_tag: ' . $tag . ' ' . print_r($access_tag,true), LOGGER_DATA);
if ($first_access_tag && (! get_pconfig($profile_uid,'system','no_private_mention_acl_override'))) {
@@ -4629,10 +4709,10 @@ function fix_attached_photo_permissions($uid,$xchan_hash,$body,
if(! stristr($image,z_root() . '/photo/'))
continue;
$image_uri = substr($image,strrpos($image,'/') + 1);
- if(strpos($image_uri,'-') !== false)
- $image_uri = substr($image_uri,0, strpos($image_uri,'-'));
- if(strpos($image_uri,'.') !== false)
- $image_uri = substr($image_uri,0, strpos($image_uri,'.'));
+ if(strrpos($image_uri,'-') !== false)
+ $image_uri = substr($image_uri,0, strrpos($image_uri,'-'));
+ if(strrpos($image_uri,'.') !== false)
+ $image_uri = substr($image_uri,0, strrpos($image_uri,'.'));
if(! strlen($image_uri))
continue;
$srch = '<' . $xchan_hash . '>';
@@ -4847,7 +4927,7 @@ function copy_of_pubitem($channel,$mid) {
dbesc($mid),
intval($syschan['channel_id'])
);
-
+
if($r) {
$items = fetch_post_tags($r,true);
foreach($items as $rv) {
@@ -4873,5 +4953,5 @@ function copy_of_pubitem($channel,$mid) {
}
}
- return $result;
+ return $result;
}
diff --git a/include/markdown.php b/include/markdown.php
index 64f0a0854..2513a7d77 100644
--- a/include/markdown.php
+++ b/include/markdown.php
@@ -91,8 +91,6 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
// remove duplicate adjacent code tags
$s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s);
- // Don't show link to full picture (until it is fixed)
- $s = scale_external_images($s, false);
/**
* @hooks markdown_to_bb
diff --git a/include/message.php b/include/message.php
index 936c01631..037c59c60 100644
--- a/include/message.php
+++ b/include/message.php
@@ -44,7 +44,7 @@ function send_message($uid = 0, $recipient = '', $body = '', $subject = '', $rep
$body = cleanup_bbcode($body);
- $results = linkify_tags($a, $body, $uid);
+ $results = linkify_tags($body, $uid);
if(! $raw) {
if(preg_match_all("/\[attachment\](.*?)\[\/attachment\]/",((strpos($body,'[/crypt]')) ? $_POST['media_str'] : $body),$match)) {
diff --git a/include/nav.php b/include/nav.php
index d405b9f06..58e13dd93 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -222,6 +222,9 @@ function nav($template = 'default') {
if(! $settings_url && isset(App::$nav_sel['settings_url']))
$settings_url = App::$nav_sel['settings_url'];
+ $pinned_list = [];
+ $syslist = [];
+
//app bin
if($is_owner) {
if(get_pconfig(local_channel(), 'system','import_system_apps') !== datetime_convert('UTC','UTC','now','Y-m-d')) {
@@ -234,14 +237,29 @@ function nav($template = 'default') {
set_pconfig(local_channel(), 'system','force_import_system_apps', STD_VERSION);
}
- $syslist = array();
- $list = Apps::app_list(local_channel(), false, ['nav_featured_app', 'nav_pinned_app']);
+ $list = Apps::app_list(local_channel(), false, [ 'nav_pinned_app' ]);
+ if($list) {
+ foreach($list as $li) {
+ $pinned_list[] = Apps::app_encode($li);
+ }
+ }
+ Apps::translate_system_apps($pinned_list);
+
+ usort($pinned_list,'Zotlabs\\Lib\\Apps::app_name_compare');
+
+ $pinned_list = Apps::app_order(local_channel(),$pinned_list, 'nav_pinned_app');
+
+
+ $syslist = [];
+ $list = Apps::app_list(local_channel(), false, [ 'nav_featured_app' ]);
+
if($list) {
foreach($list as $li) {
$syslist[] = Apps::app_encode($li);
}
}
Apps::translate_system_apps($syslist);
+
}
else {
$syslist = Apps::get_system_apps(true);
@@ -249,26 +267,38 @@ function nav($template = 'default') {
usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
- $syslist = Apps::app_order(local_channel(),$syslist);
+ $syslist = Apps::app_order(local_channel(),$syslist, 'nav_featured_app');
+
- foreach($syslist as $app) {
- if(\App::$nav_sel['name'] == $app['name'])
- $app['active'] = true;
+ if($pinned_list) {
+ foreach($pinned_list as $app) {
+ if(\App::$nav_sel['name'] == $app['name'])
+ $app['active'] = true;
- if($is_owner) {
- if(strpos($app['categories'],'nav_pinned_app') !== false) {
+ if($is_owner) {
$navbar_apps[] = Apps::app_render($app,'navbar');
}
- else {
- $nav_apps[] = Apps::app_render($app,'nav');
+ elseif(! $is_owner && strpos($app['requires'], 'local_channel') === false) {
+ $navbar_apps[] = Apps::app_render($app,'navbar');
}
}
- elseif(! $is_owner && strpos($app['requires'], 'local_channel') === false) {
- if(strpos($app['categories'],'nav_pinned_app') !== false) {
- $navbar_apps[] = Apps::app_render($app,'navbar');
+ }
+
+
+ if($syslist) {
+ foreach($syslist as $app) {
+ if(\App::$nav_sel['name'] == $app['name'])
+ $app['active'] = true;
+
+ if($is_owner) {
+ if(strpos($app['categories'],'nav_pinned_app') === false) {
+ $nav_apps[] = Apps::app_render($app,'nav');
+ }
}
- else {
- $nav_apps[] = Apps::app_render($app,'nav');
+ elseif(! $is_owner && strpos($app['requires'], 'local_channel') === false) {
+ if(strpos($app['categories'],'nav_pinned_app') === false) {
+ $nav_apps[] = Apps::app_render($app,'nav');
+ }
}
}
}
diff --git a/include/network.php b/include/network.php
index 183a47105..8ac71011e 100644
--- a/include/network.php
+++ b/include/network.php
@@ -1,4 +1,8 @@
<?php
+
+use Zotlabs\Lib\Zotfinger;
+use Zotlabs\Lib\Libzot;
+
/**
* @file include/network.php
* @brief Network related functions.
@@ -116,6 +120,9 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
@curl_setopt($ch, CURLOPT_USERPWD, $opts['http_auth']);
}
+ if(array_key_exists('http_version',$opts))
+ @curl_setopt($ch,CURLOPT_HTTP_VERSION,$opts['http_version']);
+
if(x($opts,'cookiejar'))
@curl_setopt($ch, CURLOPT_COOKIEJAR, $opts['cookiejar']);
if(x($opts,'cookiefile'))
@@ -153,7 +160,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
// Pull out multiple headers, e.g. proxy and continuation headers
// allow for HTTP/2.x without fixing code
- while(preg_match('/^HTTP\/[1-3].+? [1-5][0-9][0-9]/',$base)) {
+ while(preg_match('/^HTTP\/[1-3](\.\d)? [1-5][0-9][0-9]/',$base)) {
$chunk = substr($base,0,strpos($base,"\r\n\r\n")+4);
$header .= $chunk;
$base = substr($base,strlen($chunk));
@@ -286,6 +293,9 @@ function z_post_url($url, $params, $redirects = 0, $opts = array()) {
@curl_setopt($ch, CURLOPT_USERPWD, $opts['http_auth']);
}
+ if(array_key_exists('http_version',$opts))
+ @curl_setopt($ch,CURLOPT_HTTP_VERSION,$opts['http_version']);
+
if(x($opts,'cookiejar'))
@curl_setopt($ch, CURLOPT_COOKIEJAR, $opts['cookiejar']);
if(x($opts,'cookiefile'))
@@ -319,7 +329,7 @@ function z_post_url($url, $params, $redirects = 0, $opts = array()) {
// Pull out multiple headers, e.g. proxy and continuation headers
// allow for HTTP/2.x without fixing code
- while(preg_match('/^HTTP\/[1-3].+? [1-5][0-9][0-9]/',$base)) {
+ while(preg_match('/^HTTP\/[1-3](\.\d)? [1-5][0-9][0-9]/',$base)) {
$chunk = substr($base,0,strpos($base,"\r\n\r\n")+4);
$header .= $chunk;
$base = substr($base,strlen($chunk));
@@ -691,99 +701,6 @@ function sxml2array ( $xmlObject, $out = array () )
/**
- * @brief Scales an external image.
- *
- * @param string $s
- * @param string $include_link default true
- * @param string $scale_replace default false
- * @return string
- */
-function scale_external_images($s, $include_link = true, $scale_replace = false) {
-
- // Picture addresses can contain special characters
- $s = htmlspecialchars_decode($s, ENT_COMPAT);
-
- $matches = null;
- $c = preg_match_all('/\[([zi])mg(.*?)\](.*?)\[\/[zi]mg\]/ism', $s, $matches, PREG_SET_ORDER);
- if($c) {
- require_once('include/photo/photo_driver.php');
-
- foreach($matches as $mtch) {
- logger('data: ' . $mtch[2] . ' ' . $mtch[3]);
-
- if(substr($mtch[2],0,1) == '=') {
- $owidth = intval(substr($mtch[2],1));
- if($owidth > 0 && $owidth < 1024)
- continue;
- }
-
- $hostname = str_replace('www.','',substr(z_root(),strpos(z_root(),'://')+3));
- if(stristr($mtch[3],$hostname))
- continue;
-
- // $scale_replace, if passed, is an array of two elements. The
- // first is the name of the full-size image. The second is the
- // name of a remote, scaled-down version of the full size image.
- // This allows Friendica to display the smaller remote image if
- // one exists, while still linking to the full-size image
- if($scale_replace)
- $scaled = str_replace($scale_replace[0], $scale_replace[1], $mtch[3]);
- else
- $scaled = $mtch[3];
-
- if(! strpbrk(substr($scaled, 0, 1), 'zhfmt'))
- continue;
-
- $i = z_fetch_url($scaled, true);
-
- $cache = get_config('system', 'itemcache');
- if (($cache != '') and is_dir($cache)) {
- $cachefile = $cache . '/' . hash('md5', $scaled);
- file_put_contents($cachefile, $i['body']);
- }
-
- // guess mimetype from headers or filename
-
- $type = guess_image_type($mtch[3], $i['header']);
- if(strpos($type, 'image') === false)
- continue;
-
- if($i['success']) {
- $ph = photo_factory($i['body'], $type);
-
- if(! is_object($ph))
- continue;
-
- if($ph->is_valid()) {
- $orig_width = $ph->getWidth();
- $orig_height = $ph->getHeight();
-
- if($orig_width > 1024 || $orig_height > 1024) {
- $tag = (($match[1] == 'z') ? 'zmg' : 'img');
- $linktag = (($match[1] == 'z') ? 'zrl' : 'url');
- $ph->scaleImage(1024);
- $new_width = $ph->getWidth();
- $new_height = $ph->getHeight();
- logger('data: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG);
- $s = str_replace($mtch[0],'[' . $tag . '=' . $new_width . 'x' . $new_height. ']' . $scaled . '[/' . $tag . ']'
- . "\n" . (($include_link)
- ? '[' . $linktag . '=' . $mtch[3] . ']' . t('view full size') . '[/' . $linktag . ']' . "\n"
- : ''),$s);
- logger('new string: ' . $s, LOGGER_DEBUG);
- }
- }
- }
- }
- }
-
- // replace the special char encoding
-
- $s = htmlspecialchars($s, ENT_COMPAT, 'UTF-8');
-
- return $s;
-}
-
-/**
* @brief xml2array() will convert the given XML text to an array in the XML structure.
*
* Link: http://www.bin-co.com/php/scripts/xml2array/
@@ -1196,6 +1113,31 @@ function discover_by_webbie($webbie, $protocol = '') {
}
}
}
+
+ foreach($x['links'] as $link) {
+ if(array_key_exists('rel',$link)) {
+ if($link['rel'] === PROTOCOL_ZOT6 && ((! $protocol) || (strtolower($protocol) === 'zot6'))) {
+ logger('zot6 found for ' . $webbie, LOGGER_DEBUG);
+ $record = Zotfinger::exec($link['href']);
+
+ // Check the HTTP signature
+
+ $hsig = $record['signature'];
+ if($hsig && ($hsig['signer'] === $url || $hsig['signer'] === $link['href']) && $hsig['header_valid'] === true && $hsig['content_valid'] === true)
+ $hsig_valid = true;
+
+ if(! $hsig_valid) {
+ logger('http signature not valid: ' . print_r($hsig,true));
+ continue;
+ }
+
+ $x = Libzot::import_xchan($record['data']);
+ if($x['success']) {
+ return $x['hash'];
+ }
+ }
+ }
+ }
}
logger('webfinger: ' . print_r($x,true), LOGGER_DATA, LOG_INFO);
diff --git a/include/oembed.php b/include/oembed.php
index e5557dc11..426197c5f 100755
--- a/include/oembed.php
+++ b/include/oembed.php
@@ -221,7 +221,11 @@ function oembed_fetch_url($embedurl){
if(strpos(strtolower($embedurl),'.pdf') !== false) {
$action = 'allow';
- $j = [ 'html' => '<object data="' . $embedurl . '" type="application/pdf" width="500" height="720">' . '<a href="' . $embedurl . '">' . t('View PDF') . '</a></object>', 'width' => 500, 'height' => 720, 'type' => 'pdf' ];
+ $j = [
+ 'html' => '<object data="' . $embedurl . '" type="application/pdf" style="width: 100%; height: 300px;"></object>',
+ 'title' => t('View PDF'),
+ 'type' => 'pdf'
+ ];
}
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index b70a13622..c11580bdc 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -1,18 +1,34 @@
-<?php /** @file */
+<?php
+use Zotlabs\Photo\PhotoDriver;
+use Zotlabs\Photo\PhotoGd;
+use Zotlabs\Photo\PhotoImagick;
+
+/**
+ * @brief Return a PhotoDriver object.
+ *
+ * Use this factory when manipulating images.
+ *
+ * Return a photo driver object implementing ImageMagick or GD.
+ *
+ * @param string $data Image data
+ * @param string $type Mimetype
+ * @return null|PhotoDriver
+ * NULL if unsupported image type or failure, otherwise photo driver object
+ */
function photo_factory($data, $type = null) {
$ph = null;
+ $m = null;
-
- $unsupported_types = array(
+ $unsupported_types = [
'image/bmp',
'image/vnd.microsoft.icon',
'image/tiff',
- 'image/svg+xml'
- );
+ 'image/svg+xml',
+ ];
- if($type && in_array(strtolower($type),$unsupported_types)) {
- logger('photo_factory: unsupported image type');
+ if($type && in_array(strtolower($type), $unsupported_types)) {
+ logger('Unsupported image type ' . $type);
return null;
}
@@ -21,481 +37,62 @@ function photo_factory($data, $type = null) {
if(class_exists('Imagick') && !$ignore_imagick) {
$v = Imagick::getVersion();
preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
- if(version_compare($m[1],'6.6.7') >= 0) {
- require_once('include/photo/photo_imagick.php');
- $ph = new photo_imagick($data,$type);
- }
- else {
+ if(version_compare($m[1], '6.6.7') >= 0) {
+ $ph = new PhotoImagick($data, $type);
+ } else {
// earlier imagick versions have issues with scaling png's
// don't log this because it will just fill the logfile.
- // leave this note here so those who are looking for why
+ // leave this note here so those who are looking for why
// we aren't using imagick can find it
}
}
if(! $ph) {
- require_once('include/photo/photo_gd.php');
- $ph = new photo_gd($data,$type);
+ $ph = new PhotoGd($data, $type);
}
return $ph;
}
-
-
-abstract class photo_driver {
-
- protected $image;
- protected $width;
- protected $height;
- protected $valid;
- protected $type;
- protected $types;
-
- abstract function supportedTypes();
-
- abstract function load($data,$type);
-
- abstract function destroy();
-
- abstract function setDimensions();
-
- abstract function getImage();
-
- abstract function doScaleImage($new_width,$new_height);
-
- abstract function rotate($degrees);
-
- abstract function flip($horiz = true, $vert = false);
-
- abstract function cropImage($max,$x,$y,$w,$h);
-
- abstract function cropImageRect($maxx,$maxy,$x,$y,$w,$h);
-
- abstract function imageString();
-
- abstract function clearexif();
-
- public function __construct($data, $type='') {
- $this->types = $this->supportedTypes();
- if (! array_key_exists($type,$this->types)){
- $type='image/jpeg';
- }
- $this->type = $type;
- $this->valid = false;
- $this->load($data,$type);
- }
-
- public function __destruct() {
- if($this->is_valid())
- $this->destroy();
- }
-
- public function is_valid() {
- return $this->valid;
- }
-
- public function getWidth() {
- if(!$this->is_valid())
- return FALSE;
- return $this->width;
- }
-
- public function getHeight() {
- if(!$this->is_valid())
- return FALSE;
- return $this->height;
- }
-
-
- public function saveImage($path) {
- if(!$this->is_valid())
- return FALSE;
- file_put_contents($path, $this->imageString());
- }
-
-
- public function getType() {
- if(!$this->is_valid())
- return FALSE;
-
- return $this->type;
- }
-
- public function getExt() {
- if(!$this->is_valid())
- return FALSE;
-
- return $this->types[$this->getType()];
- }
-
- /**
- * @brief scale image
- * int $max maximum pixel size in either dimension
- * boolean $float_height - if true allow height to float to any length on tall images,
- * constraining only the width
- */
-
- public function scaleImage($max, $float_height = true) {
- if(!$this->is_valid())
- return FALSE;
-
- $width = $this->width;
- $height = $this->height;
-
- $dest_width = $dest_height = 0;
-
- if((! $width)|| (! $height))
- return FALSE;
-
- if($width > $max && $height > $max) {
-
- // very tall image (greater than 16:9)
- // constrain the width - let the height float.
-
- if(((($height * 9) / 16) > $width) && ($float_height)) {
- $dest_width = $max;
- $dest_height = intval(( $height * $max ) / $width);
- }
-
- // else constrain both dimensions
-
- elseif($width > $height) {
- $dest_width = $max;
- $dest_height = intval(( $height * $max ) / $width);
- }
- else {
- $dest_width = intval(( $width * $max ) / $height);
- $dest_height = $max;
- }
- }
- else {
- if( $width > $max ) {
- $dest_width = $max;
- $dest_height = intval(( $height * $max ) / $width);
- }
- else {
- if( $height > $max ) {
-
- // very tall image (greater than 16:9)
- // but width is OK - don't do anything
-
- if(((($height * 9) / 16) > $width) && ($float_height)) {
- $dest_width = $width;
- $dest_height = $height;
- }
- else {
- $dest_width = intval(( $width * $max ) / $height);
- $dest_height = $max;
- }
- }
- else {
- $dest_width = $width;
- $dest_height = $height;
- }
- }
- }
- $this->doScaleImage($dest_width,$dest_height);
- }
-
- public function scaleImageUp($min) {
- if(!$this->is_valid())
- return FALSE;
-
-
- $width = $this->width;
- $height = $this->height;
-
- $dest_width = $dest_height = 0;
-
- if((! $width)|| (! $height))
- return FALSE;
-
- if($width < $min && $height < $min) {
- if($width > $height) {
- $dest_width = $min;
- $dest_height = intval(( $height * $min ) / $width);
- }
- else {
- $dest_width = intval(( $width * $min ) / $height);
- $dest_height = $min;
- }
- }
- else {
- if( $width < $min ) {
- $dest_width = $min;
- $dest_height = intval(( $height * $min ) / $width);
- }
- else {
- if( $height < $min ) {
- $dest_width = intval(( $width * $min ) / $height);
- $dest_height = $min;
- }
- else {
- $dest_width = $width;
- $dest_height = $height;
- }
- }
- }
- $this->doScaleImage($dest_width,$dest_height);
- }
-
-
- public function scaleImageSquare($dim) {
- if(!$this->is_valid())
- return FALSE;
- $this->doScaleImage($dim,$dim);
- }
-
-
- /**
- * @brief reads exif data from filename
- */
-
- public function exif($filename) {
-
-
- if((! function_exists('exif_read_data'))
- || (! in_array($this->getType(), [ 'image/jpeg' , 'image/tiff'] ))) {
- return false;
- }
-
- /*
- * PHP 7.2 allows you to use a stream resource, which should reduce/avoid
- * memory exhaustion on large images.
- */
-
- if(version_compare(PHP_VERSION,'7.2.0') >= 0) {
- $f = @fopen($filename,'rb');
- }
- else {
- $f = $filename;
- }
-
- if($f) {
- return @exif_read_data($f,null,true);
- }
-
- return false;
- }
-
- /**
- * @brief orients current image based on exif orientation information
- */
-
- public function orient($exif) {
-
- if(! ($this->is_valid() && $exif)) {
- return false;
- }
-
- $ort = ((array_key_exists('IFD0',$exif)) ? $exif['IFD0']['Orientation'] : $exif['Orientation']);
-
- if(! $ort) {
- return false;
- }
-
- switch($ort) {
- case 1: // nothing
- break;
- case 2: // horizontal flip
- $this->flip();
- break;
- case 3: // 180 rotate left
- $this->rotate(180);
- break;
- case 4: // vertical flip
- $this->flip(false, true);
- break;
- case 5: // vertical flip + 90 rotate right
- $this->flip(false, true);
- $this->rotate(-90);
- break;
- case 6: // 90 rotate right
- $this->rotate(-90);
- break;
- case 7: // horizontal flip + 90 rotate right
- $this->flip();
- $this->rotate(-90);
- break;
- case 8: // 90 rotate left
- $this->rotate(90);
- break;
- default:
- break;
- }
-
- return true;
- }
-
-
- public function save($arr) {
-
- if(! $this->is_valid()) {
- logger('attempt to store invalid photo.');
- return false;
- }
-
- $p = array();
-
- $p['aid'] = ((intval($arr['aid'])) ? intval($arr['aid']) : 0);
- $p['uid'] = ((intval($arr['uid'])) ? intval($arr['uid']) : 0);
- $p['xchan'] = (($arr['xchan']) ? $arr['xchan'] : '');
- $p['resource_id'] = (($arr['resource_id']) ? $arr['resource_id'] : '');
- $p['filename'] = (($arr['filename']) ? $arr['filename'] : '');
- $p['album'] = (($arr['album']) ? $arr['album'] : '');
- $p['imgscale'] = ((intval($arr['imgscale'])) ? intval($arr['imgscale']) : 0);
- $p['allow_cid'] = (($arr['allow_cid']) ? $arr['allow_cid'] : '');
- $p['allow_gid'] = (($arr['allow_gid']) ? $arr['allow_gid'] : '');
- $p['deny_cid'] = (($arr['deny_cid']) ? $arr['deny_cid'] : '');
- $p['deny_gid'] = (($arr['deny_gid']) ? $arr['deny_gid'] : '');
- $p['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
- $p['title'] = (($arr['title']) ? $arr['title'] : '');
- $p['description'] = (($arr['description']) ? $arr['description'] : '');
- $p['photo_usage'] = intval($arr['photo_usage']);
- $p['os_storage'] = intval($arr['os_storage']);
- $p['os_path'] = $arr['os_path'];
- $p['os_syspath'] = ((array_key_exists('os_syspath',$arr)) ? $arr['os_syspath'] : '');
- $p['display_path'] = (($arr['display_path']) ? $arr['display_path'] : '');
- $p['width'] = (($arr['width']) ? $arr['width'] : $this->getWidth());
- $p['height'] = (($arr['height']) ? $arr['height'] : $this->getHeight());
-
- if(! intval($p['imgscale']))
- logger('save: ' . print_r($arr,true), LOGGER_DATA);
-
- $x = q("select id, created from photo where resource_id = '%s' and uid = %d and xchan = '%s' and imgscale = %d limit 1",
- dbesc($p['resource_id']),
- intval($p['uid']),
- dbesc($p['xchan']),
- intval($p['imgscale'])
- );
-
- if($x) {
- $p['created'] = (($x['created']) ? $x['created'] : $p['edited']);
- $r = q("UPDATE photo set
- aid = %d,
- uid = %d,
- xchan = '%s',
- resource_id = '%s',
- created = '%s',
- edited = '%s',
- filename = '%s',
- mimetype = '%s',
- album = '%s',
- height = %d,
- width = %d,
- content = '%s',
- os_storage = %d,
- filesize = %d,
- imgscale = %d,
- photo_usage = %d,
- title = '%s',
- description = '%s',
- os_path = '%s',
- display_path = '%s',
- allow_cid = '%s',
- allow_gid = '%s',
- deny_cid = '%s',
- deny_gid = '%s'
- where id = %d",
-
- intval($p['aid']),
- intval($p['uid']),
- dbesc($p['xchan']),
- dbesc($p['resource_id']),
- dbesc($p['created']),
- dbesc($p['edited']),
- dbesc(basename($p['filename'])),
- dbesc($this->getType()),
- dbesc($p['album']),
- intval($p['height']),
- intval($p['width']),
- (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())),
- intval($p['os_storage']),
- (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())),
- intval($p['imgscale']),
- intval($p['photo_usage']),
- dbesc($p['title']),
- dbesc($p['description']),
- dbesc($p['os_path']),
- dbesc($p['display_path']),
- dbesc($p['allow_cid']),
- dbesc($p['allow_gid']),
- dbesc($p['deny_cid']),
- dbesc($p['deny_gid']),
- intval($x[0]['id'])
- );
- }
- else {
- $p['created'] = (($arr['created']) ? $arr['created'] : $p['edited']);
- $r = q("INSERT INTO photo
- ( aid, uid, xchan, resource_id, created, edited, filename, mimetype, album, height, width, content, os_storage, filesize, imgscale, photo_usage, title, description, os_path, display_path, allow_cid, allow_gid, deny_cid, deny_gid )
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )",
- intval($p['aid']),
- intval($p['uid']),
- dbesc($p['xchan']),
- dbesc($p['resource_id']),
- dbesc($p['created']),
- dbesc($p['edited']),
- dbesc(basename($p['filename'])),
- dbesc($this->getType()),
- dbesc($p['album']),
- intval($p['height']),
- intval($p['width']),
- (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())),
- intval($p['os_storage']),
- (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())),
- intval($p['imgscale']),
- intval($p['photo_usage']),
- dbesc($p['title']),
- dbesc($p['description']),
- dbesc($p['os_path']),
- dbesc($p['display_path']),
- dbesc($p['allow_cid']),
- dbesc($p['allow_gid']),
- dbesc($p['deny_cid']),
- dbesc($p['deny_gid'])
- );
- }
- logger('photo save ' . $p['imgscale'] . ' returned ' . intval($r));
- return $r;
- }
-
-}
-
-
-
/**
- * Guess image mimetype from filename or from Content-Type header
+ * @brief Guess image mimetype from filename or from Content-Type header.
*
- * @arg $filename string Image filename
- * @arg $headers string Headers to check for Content-Type (from curl request)
+ * @param string $filename
+ * Image filename
+ * @param string $headers (optional)
+ * Headers to check for Content-Type (from curl request)
+ * @return null|string Guessed mimetype
*/
-
function guess_image_type($filename, $headers = '') {
// logger('Photo: guess_image_type: '.$filename . ($headers?' from curl headers':''), LOGGER_DEBUG);
$type = null;
- if ($headers) {
+ $m = null;
- $hdrs=array();
- $h = explode("\n",$headers);
+ if($headers) {
+ $hdrs = [];
+ $h = explode("\n", $headers);
foreach ($h as $l) {
- list($k,$v) = array_map("trim", explode(":", trim($l), 2));
+ list($k, $v) = array_map('trim', explode(':', trim($l), 2));
$hdrs[strtolower($k)] = $v;
}
- logger('Curl headers: '.var_export($hdrs, true), LOGGER_DEBUG);
- if (array_key_exists('content-type', $hdrs))
- $type = $hdrs['content-type'];
+ logger('Curl headers: ' .var_export($hdrs, true), LOGGER_DEBUG);
+ if(array_key_exists('content-type', $hdrs)) {
+ $ph = photo_factory('');
+ $types = $ph->supportedTypes();
+
+ if(array_key_exists($hdrs['content-type'], $types))
+ $type = $hdrs['content-type'];
+ }
}
- if (is_null($type)){
+ if(is_null($type)){
$ignore_imagick = get_config('system', 'ignore_imagick');
// Guessing from extension? Isn't that... dangerous?
if(class_exists('Imagick') && file_exists($filename) && is_readable($filename) && !$ignore_imagick) {
$v = Imagick::getVersion();
preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
- if(version_compare($m[1],'6.6.7') >= 0) {
+ if(version_compare($m[1], '6.6.7') >= 0) {
/**
* Well, this not much better,
* but at least it comes from the data inside the image,
@@ -507,7 +104,7 @@ function guess_image_type($filename, $headers = '') {
else {
// earlier imagick versions have issues with scaling png's
// don't log this because it will just fill the logfile.
- // leave this note here so those who are looking for why
+ // leave this note here so those who are looking for why
// we aren't using imagick can find it
}
}
@@ -523,7 +120,7 @@ function guess_image_type($filename, $headers = '') {
}
}
- if(is_null($type) && (strpos($filename,'http') === false)) {
+ if(is_null($type) && (strpos($filename, 'http') === false)) {
$size = getimagesize($filename);
$ph = photo_factory('');
$types = $ph->supportedTypes();
@@ -542,33 +139,36 @@ function guess_image_type($filename, $headers = '') {
}
logger('Photo: guess_image_type: filename = ' . $filename . ' type = ' . $type, LOGGER_DEBUG);
- return $type;
+ return $type;
}
-
-function delete_thing_photo($url,$ob_hash) {
+/**
+ * @brief Delete thing photo from database.
+ *
+ * @param string $url
+ * @param string $ob_hash
+ * @return void
+ */
+function delete_thing_photo($url, $ob_hash) {
$hash = basename($url);
- $hash = substr($hash,0,strpos($hash,'-'));
+ $hash = substr($hash, 0, strpos($hash, '-'));
- // hashes should be 32 bytes.
+ // hashes should be 32 bytes.
if((! $ob_hash) || (strlen($hash) < 16))
- return;
+ return;
- $r = q("delete from photo where xchan = '%s' and photo_usage = %d and resource_id = '%s'",
+ q("delete from photo where xchan = '%s' and photo_usage = %d and resource_id = '%s'",
dbesc($ob_hash),
intval(PHOTO_THING),
dbesc($hash)
);
-
}
-
-
/**
- * @brief fetches an photo from external site and prepares its miniatures.
+ * @brief Fetches a photo from external site and prepares its miniatures.
*
* @param string $photo
* external URL to fetch base image
@@ -587,224 +187,215 @@ function delete_thing_photo($url,$ob_hash) {
* * \e boolean \b 4 => TRUE if fetch failure
* * \e string \b 5 => modification date
*/
+function import_xchan_photo($photo, $xchan, $thing = false, $force = false) {
+ $modified = '';
+ $o = null;
+
+ $flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
+ $album = (($thing) ? 'Things' : 'Contact Photos');
+
+ logger('Updating channel photo from ' . $photo . ' for ' . $xchan, LOGGER_DEBUG);
+
+ if($thing) {
+ $hash = photo_new_resource();
+ } else {
+ $r = q("select resource_id, edited, mimetype from photo where xchan = '%s' and photo_usage = %d and imgscale = 4 limit 1", dbesc($xchan), intval(PHOTO_XCHAN));
+ if($r) {
+ $hash = $r[0]['resource_id'];
+ $modified = $r[0]['edited'];
+ $type = $r[0]['mimetype'];
+ } else {
+ $hash = photo_new_resource();
+ }
+ }
-function import_xchan_photo($photo,$xchan,$thing = false,$force = false) {
-
- $modified = '';
-
- $flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
- $album = (($thing) ? 'Things' : 'Contact Photos');
-
- logger('import_xchan_photo: updating channel photo from ' . $photo . ' for ' . $xchan, LOGGER_DEBUG);
-
- if($thing) {
- $hash = photo_new_resource();
- }
- else {
- $r = q("select resource_id, edited, mimetype from photo where xchan = '%s' and photo_usage = %d and imgscale = 4 limit 1",
- dbesc($xchan),
- intval(PHOTO_XCHAN)
- );
- if($r) {
- $hash = $r[0]['resource_id'];
- $modified = $r[0]['edited'];
- $type = $r[0]['mimetype'];
- }
- else {
- $hash = photo_new_resource();
- }
- }
-
- $photo_failure = false;
- $img_str = '';
-
- if($photo) {
- $filename = basename($photo);
-
- if($force || $modified == '') {
- $result = z_fetch_url($photo,true);
- }
- else {
- $h = array('headers' => array("If-Modified-Since: " . gmdate("D, d M Y H:i:s", strtotime($modified . "Z")) . " GMT"));
- $result = z_fetch_url($photo,true,0,$h);
- }
-
- if($result['success']) {
- $img_str = $result['body'];
- $type = guess_image_type($photo, $result['header']);
- $modified = gmdate('Y-m-d H:i:s', (preg_match('/last-modified: (.+) \S+/i', $result['header'], $o) ? strtotime($o[1] . 'Z') : time()));
-
- if(is_null($type))
- $photo_failure = true;
- }
- elseif($result['return_code'] == 304) {
- $photo = z_root() . '/photo/' . $hash . '-4';
- $thumb = z_root() . '/photo/' . $hash . '-5';
- $micro = z_root() . '/photo/' . $hash . '-6';
- }
- else {
- $photo_failure = true;
- }
-
- }
- else
- $photo_failure = true;
-
- if(! $photo_failure && $result['return_code'] != 304) {
- $img = photo_factory($img_str, $type);
- if($img->is_valid()) {
- $width = $img->getWidth();
- $height = $img->getHeight();
-
- if($width && $height) {
- if(($width / $height) > 1.2) {
- // crop out the sides
- $margin = $width - $height;
- $img->cropImage(300,($margin / 2),0,$height,$height);
- }
- elseif(($height / $width) > 1.2) {
- // crop out the bottom
- $margin = $height - $width;
- $img->cropImage(300,0,0,$width,$width);
-
- }
- else {
- $img->scaleImageSquare(300);
- }
-
- }
- else
- $photo_failure = true;
-
- $p = array(
- 'xchan' => $xchan,
- 'resource_id' => $hash,
- 'filename' => basename($photo),
- 'album' => $album,
- 'photo_usage' => $flags,
- 'imgscale' => 4,
- 'edited' => $modified
- );
-
- $r = $img->save($p);
-
- if($r === false)
- $photo_failure = true;
-
- $img->scaleImage(80);
- $p['imgscale'] = 5;
-
- $r = $img->save($p);
-
- if($r === false)
- $photo_failure = true;
-
- $img->scaleImage(48);
- $p['imgscale'] = 6;
-
- $r = $img->save($p);
-
- if($r === false)
- $photo_failure = true;
-
- $photo = z_root() . '/photo/' . $hash . '-4';
- $thumb = z_root() . '/photo/' . $hash . '-5';
- $micro = z_root() . '/photo/' . $hash . '-6';
- }
- else {
- logger('import_xchan_photo: invalid image from ' . $photo);
- $photo_failure = true;
- }
- }
- if($photo_failure) {
- $default = get_default_profile_photo();
- $photo = z_root() . '/' . $default;
- $thumb = z_root() . '/' . get_default_profile_photo(80);
- $micro = z_root() . '/' . get_default_profile_photo(48);
- $type = 'image/png';
- $modified = gmdate('Y-m-d H:i:s', filemtime($default));
- }
-
- logger('HTTP code: ' . $result['return_code'] . '; modified: ' . $modified . '; failure: ' . ($photo_failure ? 'yes' : 'no') . '; URL: ' . $photo, LOGGER_DEBUG);
- return(array($photo,$thumb,$micro,$type,$photo_failure,$modified));
-
-}
-
-function import_channel_photo_from_url($photo,$aid,$uid) {
+ $photo_failure = false;
+ $img_str = '';
if($photo) {
- $filename = basename($photo);
- $result = z_fetch_url($photo,true);
+ if($force || $modified == '') {
+ $result = z_fetch_url($photo, true);
+ } else {
+ $h = [
+ 'headers' => [
+ 'If-Modified-Since: ' . gmdate('D, d M Y H:i:s', strtotime($modified . 'Z')) . ' GMT'
+ ]
+ ];
+ $result = z_fetch_url($photo, true, 0, $h);
+ }
if($result['success']) {
$img_str = $result['body'];
$type = guess_image_type($photo, $result['header']);
+ $modified = gmdate('Y-m-d H:i:s', (preg_match('/last-modified: (.+) \S+/i', $result['header'], $o) ? strtotime($o[1] . 'Z') : time()));
+ if(is_null($type))
+ $photo_failure = true;
+ } elseif($result['return_code'] == 304) {
+ $photo = z_root() . '/photo/' . $hash . '-4';
+ $thumb = z_root() . '/photo/' . $hash . '-5';
+ $micro = z_root() . '/photo/' . $hash . '-6';
+ } else {
+ $photo_failure = true;
+ }
+ } else {
+ $photo_failure = true;
+ }
- if(is_null($type))
- $photo_failure = true;
+ if(!$photo_failure && $result['return_code'] != 304) {
+ $img = photo_factory($img_str, $type);
+ if($img->is_valid()) {
+ $width = $img->getWidth();
+ $height = $img->getHeight();
+
+ if($width && $height) {
+ if(($width / $height) > 1.2) {
+ // crop out the sides
+ $margin = $width - $height;
+ $img->cropImage(300, ($margin / 2), 0, $height, $height);
+ } elseif(($height / $width) > 1.2) {
+ // crop out the bottom
+ $margin = $height - $width;
+ $img->cropImage(300, 0, 0, $width, $width);
+ } else {
+ $img->scaleImageSquare(300);
+ }
+ } else {
+ $photo_failure = true;
+ }
+
+ $p = [
+ 'xchan' => $xchan,
+ 'resource_id' => $hash,
+ 'filename' => basename($photo),
+ 'album' => $album,
+ 'photo_usage' => $flags,
+ 'imgscale' => 4,
+ 'edited' => $modified,
+ ];
+
+ $r = $img->save($p);
+ if($r === false)
+ $photo_failure = true;
+
+ $img->scaleImage(80);
+ $p['imgscale'] = 5;
+ $r = $img->save($p);
+ if($r === false)
+ $photo_failure = true;
+
+ $img->scaleImage(48);
+ $p['imgscale'] = 6;
+ $r = $img->save($p);
+ if($r === false)
+ $photo_failure = true;
+
+ $photo = z_root() . '/photo/' . $hash . '-4';
+ $thumb = z_root() . '/photo/' . $hash . '-5';
+ $micro = z_root() . '/photo/' . $hash . '-6';
+ } else {
+ logger('Invalid image from ' . $photo);
+ $photo_failure = true;
}
}
- else {
- $photo_failure = true;
+ if($photo_failure) {
+ $default = get_default_profile_photo();
+ $photo = z_root() . '/' . $default;
+ $thumb = z_root() . '/' . get_default_profile_photo(80);
+ $micro = z_root() . '/' . get_default_profile_photo(48);
+ $type = 'image/png';
+ $modified = gmdate('Y-m-d H:i:s', filemtime($default));
}
- import_channel_photo($img_str,$type,$aid,$uid);
+ logger('HTTP code: ' . $result['return_code'] . '; modified: ' . $modified
+ . '; failure: ' . ($photo_failure ? 'yes' : 'no') . '; URL: ' . $photo, LOGGER_DEBUG);
- return $type;
+ return([$photo, $thumb, $micro, $type, $photo_failure, $modified]);
}
+/**
+ * @brief Import channel photo from a URL.
+ *
+ * @param string $photo URL to a photo
+ * @param int $aid
+ * @param int $uid channel_id
+ * @return null|string Guessed image mimetype or null.
+ */
+function import_channel_photo_from_url($photo, $aid, $uid) {
+ $type = null;
-function import_channel_photo($photo,$type,$aid,$uid) {
+ if($photo) {
+ $result = z_fetch_url($photo, true);
+
+ if($result['success']) {
+ $img_str = $result['body'];
+ $type = guess_image_type($photo, $result['header']);
- logger('import_channel_photo: importing channel photo for ' . $uid, LOGGER_DEBUG);
+ import_channel_photo($img_str, $type, $aid, $uid);
+ }
+ }
- $hash = photo_new_resource();
+ return $type;
+}
- $photo_failure = false;
+/**
+ * @brief Import a channel photo and prepare its miniatures.
+ *
+ * @param string $photo Image data
+ * @param string $type
+ * @param int $aid
+ * @param int $uid channel_id
+ * @return boolean|string false on failure, otherwise resource_id of photo
+ */
+function import_channel_photo($photo, $type, $aid, $uid) {
+ logger('Importing channel photo for ' . $uid, LOGGER_DEBUG);
+ $photo_failure = false;
+ $hash = photo_new_resource();
$filename = $hash;
$img = photo_factory($photo, $type);
if($img->is_valid()) {
+ // config array for image save method
+ $p = [
+ 'aid' => $aid,
+ 'uid' => $uid,
+ 'resource_id' => $hash,
+ 'filename' => $filename,
+ 'album' => t('Profile Photos'),
+ 'photo_usage' => PHOTO_PROFILE,
+ 'imgscale' => 4,
+ ];
+
+ // photo size
$img->scaleImageSquare(300);
-
- $p = array('aid' => $aid, 'uid' => $uid, 'resource_id' => $hash, 'filename' => $filename, 'album' => t('Profile Photos'), 'photo_usage' => PHOTO_PROFILE, 'imgscale' => 4);
-
$r = $img->save($p);
-
if($r === false)
$photo_failure = true;
+ // thumb size
$img->scaleImage(80);
$p['imgscale'] = 5;
-
$r = $img->save($p);
-
if($r === false)
$photo_failure = true;
+ // micro size
$img->scaleImage(48);
$p['imgscale'] = 6;
-
$r = $img->save($p);
-
if($r === false)
$photo_failure = true;
- }
- else {
- logger('import_channel_photo: invalid image.');
+ } else {
+ logger('Invalid image.');
$photo_failure = true;
}
- //return(($photo_failure)? false : true);
-
if($photo_failure)
return false;
else
return $hash;
-
}
diff --git a/include/photo/photo_gd.php b/include/photo/photo_gd.php
deleted file mode 100644
index e98ac2827..000000000
--- a/include/photo/photo_gd.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php /** @file */
-
-
-require_once('include/photo/photo_driver.php');
-
-
-class photo_gd extends photo_driver {
-
- function supportedTypes() {
- $t = array();
- $t['image/jpeg'] ='jpg';
- if (imagetypes() & IMG_PNG) $t['image/png'] = 'png';
- if (imagetypes() & IMG_GIF) $t['image/gif'] = 'gif';
- return $t;
-
- }
-
- function load($data, $type) {
- $this->valid = false;
- if(! $data)
- return;
-
- $this->image = @imagecreatefromstring($data);
- if($this->image !== FALSE) {
- $this->valid = true;
- $this->setDimensions();
- imagealphablending($this->image, false);
- imagesavealpha($this->image, true);
- }
- }
-
- function setDimensions() {
- $this->width = imagesx($this->image);
- $this->height = imagesy($this->image);
- }
-
-
- public function clearexif() {
- return;
- }
-
-
- public function destroy() {
- if($this->is_valid()) {
- imagedestroy($this->image);
- }
- }
-
- public function getImage() {
- if(!$this->is_valid())
- return FALSE;
-
- return $this->image;
- }
-
- public function doScaleImage($dest_width,$dest_height) {
-
- $dest = imagecreatetruecolor( $dest_width, $dest_height );
- $width = imagesx($this->image);
- $height = imagesy($this->image);
-
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
- if($this->image)
- imagedestroy($this->image);
- $this->image = $dest;
- $this->setDimensions();
- }
-
- public function rotate($degrees) {
- if(!$this->is_valid())
- return FALSE;
-
- $this->image = imagerotate($this->image,$degrees,0);
- $this->setDimensions();
- }
-
- public function flip($horiz = true, $vert = false) {
- if(!$this->is_valid())
- return FALSE;
-
- $w = imagesx($this->image);
- $h = imagesy($this->image);
- $flipped = imagecreate($w, $h);
- if($horiz) {
- for ($x = 0; $x < $w; $x++) {
- imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h);
- }
- }
- if($vert) {
- for ($y = 0; $y < $h; $y++) {
- imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1);
- }
- }
- $this->image = $flipped;
- $this->setDimensions(); // Shouldn't really be necessary
- }
-
- public function cropImage($max,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
-
- $dest = imagecreatetruecolor( $max, $max );
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $max, $max, $w, $h);
- if($this->image)
- imagedestroy($this->image);
- $this->image = $dest;
- $this->setDimensions();
- }
-
- public function cropImageRect($maxx,$maxy,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
-
- $dest = imagecreatetruecolor( $maxx, $maxy );
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $maxx, $maxy, $w, $h);
- if($this->image)
- imagedestroy($this->image);
- $this->image = $dest;
- $this->setDimensions();
- }
-
-
-
- public function imageString() {
- if(!$this->is_valid())
- return FALSE;
-
- $quality = FALSE;
-
- ob_start();
-
- switch($this->getType()){
- case "image/png":
- $quality = get_config('system','png_quality');
- if((! $quality) || ($quality > 9))
- $quality = PNG_QUALITY;
- imagepng($this->image,NULL, $quality);
- break;
- case "image/jpeg":
- default:
- $quality = get_config('system','jpeg_quality');
- if((! $quality) || ($quality > 100))
- $quality = JPEG_QUALITY;
- imagejpeg($this->image,NULL,$quality);
- break;
- }
- $string = ob_get_contents();
- ob_end_clean();
-
- return $string;
- }
-
-}
diff --git a/include/photos.php b/include/photos.php
index ae51703e0..44406e0b0 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -356,7 +356,7 @@ function photo_upload($channel, $observer, $args) {
$large_photos = feature_enabled($channel['channel_id'], 'large_photos');
- linkify_tags($a, $args['body'], $channel_id);
+ linkify_tags($args['body'], $channel_id);
if($large_photos) {
$scale = 1;
diff --git a/include/plugin.php b/include/plugin.php
index 8ceb6417e..c789ad522 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -7,13 +7,15 @@
/**
- * @brief Handle errors in plugin calls
+ * @brief Handle errors in plugin calls.
*
* @param string $plugin name of the addon
- * @param string $error_text text of error
- * @param bool $uninstall uninstall plugin
+ * @param string $notice UI visible text of error
+ * @param string $log technical error message for logging
+ * @param bool $uninstall (optional) default false
+ * uninstall plugin on error
*/
-function handleerrors_plugin($plugin,$notice,$log,$uninstall=false){
+function handleerrors_plugin($plugin, $notice, $log, $uninstall = false){
logger("Addons: [" . $plugin . "] Error: ".$log, LOGGER_ERROR);
if ($notice != '') {
notice("[" . $plugin . "] Error: ".$notice, LOGGER_ERROR);
@@ -23,7 +25,7 @@ function handleerrors_plugin($plugin,$notice,$log,$uninstall=false){
$idx = array_search($plugin, \App::$plugins);
unset(\App::$plugins[$idx]);
uninstall_plugin($plugin);
- set_config("system","addon", implode(", ",\App::$plugins));
+ set_config("system", "addon", implode(", ", \App::$plugins));
}
}
@@ -213,8 +215,8 @@ function reload_plugins() {
try {
$func();
} catch (Exception $e) {
- handleerrors_plugin($plugin,"","UNLOAD FAILED (uninstalling) : ".$e->getMessage(),true);
- continue;
+ handleerrors_plugin($pl, '', 'UNLOAD FAILED (uninstalling) : ' . $e->getMessage(),true);
+ continue;
}
}
if(function_exists($pl . '_load')) {
@@ -222,8 +224,8 @@ function reload_plugins() {
try {
$func();
} catch (Exception $e) {
- handleerrors_plugin($plugin,"","LOAD FAILED (uninstalling): ".$e->getMessage(),true);
- continue;
+ handleerrors_plugin($pl, '', 'LOAD FAILED (uninstalling): ' . $e->getMessage(),true);
+ continue;
}
}
q("UPDATE addon SET tstamp = %d WHERE id = %d",
@@ -305,7 +307,7 @@ function plugins_sync() {
* @return array
*/
function visible_plugin_list() {
-
+
$r = q("select * from addon where hidden = 0 order by aname asc");
$x = (($r) ? ids_to_array($r,'aname') : array());
$y = [];
@@ -315,7 +317,7 @@ function visible_plugin_list() {
$y[] = $xv;
}
}
- }
+ }
return $y;
}
@@ -381,8 +383,6 @@ function unregister_hook($hook, $file, $function) {
* array in their theme_init() and use this to customise the app behaviour.
* use insert_hook($hookname,$function_name) to do this.
*/
-
-
function load_hooks() {
App::$hooks = [];
@@ -456,21 +456,21 @@ function insert_hook($hook, $fn, $version = 0, $priority = 0) {
function call_hooks($name, &$data = null) {
$a = 0;
- if (isset(App::$hooks[$name])) {
+ if (isset(App::$hooks[$name])) {
foreach(App::$hooks[$name] as $hook) {
if ($name != 'permit_hook') { // avoid looping
$checkhook = [
- 'name'=>$name,
- 'hook'=>$hook,
- 'data'=>$data,
+ 'name'=>$name,
+ 'hook'=>$hook,
+ 'data'=>$data,
// Note: Since PHP uses COPY-ON-WRITE
- // for variables, there is no cost to
+ // for variables, there is no cost to
// passing the $data structure (unless
// the permit_hook processors change the
// information it contains.
- 'permit'=>true
- ];
+ 'permit'=>true
+ ];
call_hooks('permit_hook',$checkhook);
if (!$checkhook['permit']) {
continue;
@@ -618,7 +618,7 @@ function get_widget_info($widget){
}
}
- if(! ($widget_found && $f))
+ if(! ($widget_found && $f))
return $info;
$f = escape_tags($f);
@@ -736,8 +736,8 @@ function get_theme_info($theme){
'description' => '',
'author' => array(),
'version' => '',
- 'minversion' => '',
- 'maxversion' => '',
+ 'minversion' => STD_VERSION,
+ 'maxversion' => STD_VERSION,
'compat' => '',
'credits' => '',
'maintainer' => array(),
@@ -1041,7 +1041,7 @@ function get_intltext_template($s, $root = '') {
if (isset(\App::$override_intltext_templates[$testroot][$s]["content"])) {
return \App::$override_intltext_templates[$testroot][$s]["content"];
} else {
- if (isset(\App::$override_intltext_templates[$testroot][$s]["root"]) &&
+ if (isset(\App::$override_intltext_templates[$testroot][$s]["root"]) &&
isset(\App::$override_intltext_templates[$testroot][$s]["file"])) {
$s = \App::$override_intltext_templates[$testroot][$s]["file"];
$root = \App::$override_intltext_templates[$testroot][$s]["root"];
@@ -1058,37 +1058,38 @@ function get_intltext_template($s, $root = '') {
}
function get_markup_template($s, $root = '') {
- $testroot = ($root=='') ? $testroot = "ROOT" : $root;
+ $testroot = ($root=='') ? $testroot = "ROOT" : $root;
- $t = App::template_engine();
+ $t = App::template_engine();
- if (isset(\App::$override_markup_templates[$testroot][$s]["content"])) {
- return \App::$override_markup_templates[$testroot][$s]["content"];
- } else {
- if (isset(\App::$override_markup_templates[$testroot][$s]["root"]) &&
- isset(\App::$override_markup_templates[$testroot][$s]["file"])) {
- $root = \App::$override_markup_templates[$testroot][$s]["root"];
- $s = \App::$override_markup_templates[$testroot][$s]["file"];
- $template = $t->get_markup_template($s, $root);
- } elseif (\App::$override_templateroot) {
- $newroot = \App::$override_templateroot;
- if ($newroot != '' && substr($newroot,-1) != '/' ) {
- $newroot .= '/';
- }
- $newroot .= $root;
- $template = $t->get_markup_template($s, $newroot);
- } else {
- $template = $t->get_markup_template($s, $root);
+ if (isset(\App::$override_markup_templates[$testroot][$s]["content"])) {
+ return \App::$override_markup_templates[$testroot][$s]["content"];
+ } else {
+ if (isset(\App::$override_markup_templates[$testroot][$s]["root"]) &&
+ isset(\App::$override_markup_templates[$testroot][$s]["file"])) {
+ $root = \App::$override_markup_templates[$testroot][$s]["root"];
+ $s = \App::$override_markup_templates[$testroot][$s]["file"];
+ $template = $t->get_markup_template($s, $root);
+ } elseif (\App::$override_templateroot) {
+ $newroot = \App::$override_templateroot;
+ if ($newroot != '' && substr($newroot,-1) != '/' ) {
+ $newroot .= '/';
+ }
+ $newroot .= $root;
+ $template = $t->get_markup_template($s, $newroot);
+ } else {
+ $template = $t->get_markup_template($s, $root);
}
- return $template;
- }
+ return $template;
+ }
}
/**
- * @brief
+ * @brief Test if a folder exists.
*
* @param string $folder
* @return boolean|string
+ * False if folder does not exist, or canonicalized absolute pathname
*/
function folder_exists($folder) {
// Get canonicalized absolute pathname
diff --git a/include/queue_fn.php b/include/queue_fn.php
index f7e2922c6..85f98aaf9 100644
--- a/include/queue_fn.php
+++ b/include/queue_fn.php
@@ -13,7 +13,7 @@ function update_queue_item($id, $add_priority = 0) {
return;
- $y = q("select min(outq_created) as earliest from outq where outq_posturl = '%s'",
+ $y = q("select outq_created as earliest from outq where outq_posturl = '%s' order by earliest limit 1",
dbesc($x[0]['outq_posturl'])
);
@@ -311,4 +311,4 @@ function queue_deliver($outq, $immediate = false) {
return;
}
-} \ No newline at end of file
+}
diff --git a/include/text.php b/include/text.php
index 646bfe749..ad5f84b54 100644
--- a/include/text.php
+++ b/include/text.php
@@ -41,12 +41,12 @@ function replace_macros($s, $r) {
$t = App::template_engine();
- try {
- $output = $t->replace_macros($arr['template'], $arr['params']);
- } catch (Exception $e) {
- logger("Unable to render template: ".$e->getMessage());
- $output = "<h3>ERROR: there was an error creating the output.</h3>";
- }
+ try {
+ $output = $t->replace_macros($arr['template'], $arr['params']);
+ } catch (Exception $e) {
+ logger('Unable to render template: ' . $e->getMessage());
+ $output = '<h3>ERROR: there was an error creating the output.</h3>';
+ }
return $output;
}
@@ -539,7 +539,14 @@ function paginate(&$a) {
return $o;
}
-
+/**
+ * @brief
+ *
+ * @param int $i
+ * @param string $more
+ * @param string $less
+ * @return string Parsed HTML from template 'alt_pager.tpl'
+ */
function alt_pager($i, $more = '', $less = '') {
if(! $more)
@@ -810,7 +817,7 @@ function activity_match($haystack,$needle) {
* and strip the period from any tags which end with one.
*
* @param string $s
- * @return Returns array of tags found, or empty array.
+ * @return array Returns an array of tags found, or empty array.
*/
function get_tags($s) {
$ret = array();
@@ -826,6 +833,9 @@ function get_tags($s) {
// ignore anything in [color= ], because it may contain color codes which are mistaken for tags
$s = preg_replace('/\[color=(.*?)\]/sm','',$s);
+ // skip anchors in URL
+ $s = preg_replace('/\[url=(.*?)\]/sm','',$s);
+
// match any double quoted tags
if(preg_match_all('/([@#\!]\&quot\;.*?\&quot\;)/',$s,$match)) {
@@ -897,6 +907,7 @@ function tag_sort_length($a,$b) {
function total_sort($a,$b) {
if($a['total'] == $b['total'])
return 0;
+
return(($b['total'] > $a['total']) ? 1 : (-1));
}
@@ -983,7 +994,7 @@ function contact_block() {
// There is no setting to discover if you are bi-directionally connected
// Use the ability to post comments as an indication that this relationship is more
- // than wishful thinking; even though soapbox channels and feeds will disable it.
+ // than wishful thinking; even though soapbox channels and feeds will disable it.
if(! intval(get_abconfig(App::$profile['uid'],$rr['xchan_hash'],'their_perms','post_comments'))) {
$rr['oneway'] = true;
@@ -1001,9 +1012,15 @@ function contact_block() {
'$micropro' => $micropro,
));
- $arr = array('contacts' => $r, 'output' => $o);
-
+ $arr = ['contacts' => $r, 'output' => $o];
+ /**
+ * @hooks contact_block_end
+ * Called at the end of contact_block(), but can not manipulate the output.
+ * * \e array \b contacts - Result array from database
+ * * \e string \b output - the generated output
+ */
call_hooks('contact_block_end', $arr);
+
return $o;
}
@@ -1090,7 +1107,7 @@ function searchbox($s,$id='search-box',$url='/search',$save = false) {
* @return string
*/
function linkify($s, $me = false) {
- $s = preg_replace("/(https?\:\/\/[a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\@\~\#\'\%\$\!\+\,\@]*)/u", (($me) ? ' <a href="$1" rel="me" >$1</a>' : ' <a href="$1" >$1</a>'), $s);
+ $s = preg_replace("/(https?\:\/\/[a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\@\~\#\'\%\$\!\+\,\@]*)/u", (($me) ? ' <a href="$1" rel="me nofollow" >$1</a>' : ' <a href="$1" >$1</a>'), $s);
$s = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$s);
return($s);
@@ -1108,6 +1125,21 @@ function linkify($s, $me = false) {
* @returns string
*/
function sslify($s) {
+
+ // Local photo cache
+ $str = [
+ 'body' => $s,
+ 'uid' => local_channel()
+ ];
+ /**
+ * @hooks cache_body_hook
+ * * \e string \b body The content to parse and also the return value
+ * * \e int|bool \b uid
+ */
+ call_hooks('cache_body_hook', $str);
+
+ $s = $str['body'];
+
if (strpos(z_root(),'https:') === false)
return $s;
@@ -1117,11 +1149,10 @@ function sslify($s) {
// Complain to your browser maker
$allow = get_config('system','sslify_everything');
-
- $pattern = (($allow) ? "/\<(.*?)src=\"(http\:.*?)\"(.*?)\>/" : "/\<img(.*?)src=\"(http\:.*?)\"(.*?)\>/" );
+ $pattern = (($allow) ? "/\<(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" : "/\<img(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" );
$matches = null;
- $cnt = preg_match_all($pattern,$s,$matches,PREG_SET_ORDER);
+ $cnt = preg_match_all($pattern, $s, $matches, PREG_SET_ORDER);
if ($cnt) {
foreach ($matches as $match) {
$filename = basename( parse_url($match[2], PHP_URL_PATH) );
@@ -1209,7 +1240,11 @@ function get_mood_verbs() {
/**
* @brief Function to list all smilies, both internal and from addons.
*
- * @return Returns array with keys 'texts' and 'icons'
+ * @param boolean $default_only (optional) default false
+ * true will prevent that plugins can add smilies
+ * @return array Returns an associative array with:
+ * * \e array \b texts
+ * * \e array \b icons
*/
function list_smilies($default_only = false) {
@@ -1287,6 +1322,11 @@ function list_smilies($default_only = false) {
if($default_only)
return $params;
+ /**
+ * @hooks smile
+ * * \e array \b texts - default values and also return value
+ * * \e array \b icons - default values and also return value
+ */
call_hooks('smilie', $params);
return $params;
@@ -1442,7 +1482,7 @@ function theme_attachments(&$item) {
foreach($arr as $r) {
$icon = getIconFromType($r['type']);
-
+
if($r['title'])
$label = urldecode(htmlspecialchars($r['title'], ENT_COMPAT, 'UTF-8'));
@@ -1612,6 +1652,10 @@ function generate_named_map($location) {
function prepare_body(&$item,$attach = false,$opts = false) {
+ /**
+ * @hooks prepare_body_init
+ * * \e array \b item
+ */
call_hooks('prepare_body_init', $item);
$s = '';
@@ -1638,18 +1682,29 @@ function prepare_body(&$item,$attach = false,$opts = false) {
$s .= prepare_binary($item);
}
else {
- $s .= prepare_text($item['body'],$item['mimetype'], $opts);
+ if($item['summary']) {
+ $s .= prepare_text('[summary]' . $item['summary'] . '[/summary]' . $item['body'],$item['mimetype'],$opts);
+ }
+ else {
+ $s .= prepare_text($item['body'],$item['mimetype'], $opts);
+ }
}
$event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? format_event_obj($item['obj']) : false);
- $prep_arr = array(
+ $prep_arr = [
'item' => $item,
'html' => $event ? $event['content'] : $s,
'event' => $event['header'],
'photo' => $photo
- );
-
+ ];
+ /**
+ * @hooks prepare_body
+ * * \e array \b item
+ * * \e string \b html - the parsed HTML to return
+ * * \e string \b event - the event header to return
+ * * \e string \b photo - the photo to return
+ */
call_hooks('prepare_body', $prep_arr);
$s = $prep_arr['html'];
@@ -1681,7 +1736,14 @@ function prepare_body(&$item,$attach = false,$opts = false) {
if(local_channel() == $item['uid'])
$filer = format_filer($item);
- $s = sslify($s);
+ if($s)
+ $s = sslify($s);
+
+ if($photo)
+ $photo = sslify($photo);
+
+ if($event)
+ $event = sslify($event);
$prep_arr = array(
'item' => $item,
@@ -1712,17 +1774,24 @@ function prepare_binary($item) {
/**
- * @brief Given a text string, convert from bbcode to html and add smilie icons.
+ * @brief Given a text string, convert from content_type to HTML.
*
- * @param string $text
- * @param string $content_type (optional) default text/bbcode
- * @param boolean $cache (optional) default false
+ * Take a text in plain text, html, markdown, bbcode, PDL or PHP and prepare
+ * it to return HTML.
*
+ * In bbcode this function will add smilie icons.
+ *
+ * @param string $text
+ * @param string $content_type (optional)
+ * default 'text/bbcode', other values are 'text/plain', 'text/html',
+ * 'text/markdown', 'application/x-pdl', 'application/x-php'
+ * @param boolean|array $opts (optional)
+ * default false, otherwise configuration array for bbcode()
* @return string
+ * The parsed $text as prepared HTML.
*/
function prepare_text($text, $content_type = 'text/bbcode', $opts = false) {
-
switch($content_type) {
case 'text/plain':
$s = escape_tags($text);
@@ -1762,8 +1831,8 @@ function prepare_text($text, $content_type = 'text/bbcode', $opts = false) {
default:
require_once('include/bbcode.php');
- if(stristr($text,'[nosmile]'))
- $s = bbcode($text, [ 'cache' => $cache ]);
+ if(stristr($text, '[nosmile]'))
+ $s = bbcode($text, ((is_array($opts)) ? $opts : [] ));
else
$s = smilies(bbcode($text, ((is_array($opts)) ? $opts : [] )));
@@ -2123,7 +2192,7 @@ function legal_webbie($s) {
return '';
// WARNING: This regex may not work in a federated environment.
- // You will probably want something like
+ // You will probably want something like
// preg_replace('/([^a-z0-9\_])/','',strtolower($s));
$r = preg_replace('/([^a-z0-9\-\_])/','',strtolower($s));
@@ -2222,19 +2291,24 @@ function ids_to_querystr($arr,$idx = 'id',$quote = false) {
}
/**
- * @brief array_elm_to_str($arr,$elm,$delim = ',') extract unique individual elements from an array of arrays and return them as a string separated by a delimiter
- * similar to ids_to_querystr, but allows a different delimiter instead of a db-quote option
- * empty elements (evaluated after trim()) are ignored.
- * @param $arr array
- * @param $elm array key to extract from sub-array
- * @param $delim string default ','
- * @param $each filter function to apply to each element before evaluation, default is 'trim'.
+ * @brief Extract unique individual elements from an array of arrays and return
+ * them as a string separated by a delimiter.
+ *
+ * Similar to ids_to_querystr, but allows a different delimiter instead of a
+ * db-quote option empty elements (evaluated after trim()) are ignored.
+ *
+ * @see ids_to_querystr()
+ *
+ * @param array $arr
+ * @param string $elm key to extract from sub-array
+ * @param string $delim (optional) default ','
+ * @param string $each (optional) default is 'trim'
+ * Filter function to apply to each element before evaluation.
* @returns string
*/
-
-function array_elm_to_str($arr,$elm,$delim = ',',$each = 'trim') {
-
+function array_elm_to_str($arr, $elm, $delim = ',', $each = 'trim') {
$tmp = [];
+
if($arr && is_array($arr)) {
foreach($arr as $x) {
if(is_array($x) && array_key_exists($elm,$x)) {
@@ -2245,7 +2319,8 @@ function array_elm_to_str($arr,$elm,$delim = ',',$each = 'trim') {
}
}
}
- return implode($delim,$tmp);
+
+ return implode($delim, $tmp);
}
function trim_and_unpunify($s) {
@@ -2469,9 +2544,9 @@ function design_tools() {
}
/**
- * @brief Creates website portation tools menu
+ * @brief Creates website portation tools menu.
*
- * @return string
+ * @return string Parsed HTML code from template 'website_portation_tools.tpl'
*/
function website_portation_tools() {
@@ -2484,7 +2559,7 @@ function website_portation_tools() {
$sys = true;
}
- return replace_macros(get_markup_template('website_portation_tools.tpl'), array(
+ return replace_macros(get_markup_template('website_portation_tools.tpl'), [
'$title' => t('Import'),
'$import_label' => t('Import website...'),
'$import_placeholder' => t('Select folder to import'),
@@ -2501,7 +2576,7 @@ function website_portation_tools() {
'$cloud_export_desc' => t('/path/to/export/folder'),
'$cloud_export_hint' => t('Enter a path to a cloud files destination.'),
'$cloud_export_select' => t('Specify folder'),
- ));
+ ]);
}
/**
@@ -2561,8 +2636,9 @@ function extra_query_args() {
* @param boolean $in_network default true
* @return boolean true if replaced, false if not replaced
*/
-function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $in_network = true) {
+function handle_tag(&$body, &$str_tags, $profile_uid, $tag, $in_network = true) {
+ $channel = App::get_channel();
$replaced = false;
$r = null;
$match = array();
@@ -2618,21 +2694,20 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
$str_tags .= $newtag;
}
- return [
- 'replaced' => $replaced,
- 'termtype' => $termtype,
- 'term' => $basetag,
- 'url' => $url,
- 'contact' => []
- ];
-
+ return [ [
+ 'replaced' => $replaced,
+ 'termtype' => $termtype,
+ 'term' => $basetag,
+ 'url' => $url,
+ 'contact' => [],
+ 'access_tag' => '',
+ ]];
}
// END hashtags
// BEGIN mentions
-
if ( in_array($termtype, [ TERM_MENTION, TERM_FORUM ] )) {
// The @! tag and !! tag will alter permissions
@@ -2643,13 +2718,13 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
$exclusive = (((strpos(substr($tag,1), '!') === 0) && $in_network) ? true : false);
//is it already replaced?
- if(strpos($tag,'[zrl=') || strpos($tag,'[url='))
+ if(strpos($tag,"[zrl=") || strpos($tag,"[url="))
return $replaced;
// get the channel name
// First extract the name or name fragment we are going to replace
- $name = substr($tag,(($exclusive) ? 2 : 1));
+ $name = substr($tag,(($exclusive) ? 2 : 1));
$newname = $name; // make a copy that we can mess with
$tagcid = 0;
@@ -2661,7 +2736,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
$newname = substr($name,1);
$newname = substr($newname,0,-1);
- $r = q("select * from xchan where xchan_addr = '%s' or xchan_url = '%s' limit 1",
+ $r = q("select * from xchan where xchan_addr = '%s' or xchan_url = '%s'",
dbesc($newname),
dbesc($newname)
);
@@ -2684,7 +2759,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
// select someone from this user's contacts by name
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1",
+ WHERE xchan_name = '%s' AND abook_channel = %d ",
dbesc($newname),
intval($profile_uid)
);
@@ -2692,8 +2767,8 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
// select anybody by full hubloc_addr
if((! $r) && strpos($newname,'@')) {
- $r = q("SELECT * FROM xchan left join hubloc on xchan_hash = hubloc_hash
- WHERE hubloc_addr = '%s' LIMIT 1",
+ $r = q("SELECT * FROM xchan left join hubloc on xchan_hash = hubloc_hash
+ WHERE hubloc_addr = '%s' ",
dbesc($newname)
);
}
@@ -2702,7 +2777,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
if(! $r) {
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_addr like ('%s') AND abook_channel = %d LIMIT 1",
+ WHERE xchan_addr like ('%s') AND abook_channel = %d ",
dbesc(((strpos($newname,'@')) ? $newname : $newname . '@%')),
intval($profile_uid)
);
@@ -2710,17 +2785,62 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
}
+
+
+
+
+ $fn_results = [];
+ $access_tag = EMPTY_STR;
+
+
// $r is set if we found something
- $channel = App::get_channel();
-
if($r) {
- $profile = $r[0]['xchan_url'];
- $newname = $r[0]['xchan_name'];
- // add the channel's xchan_hash to $access_tag if exclusive
- if($exclusive) {
- $access_tag .= 'cid:' . $r[0]['xchan_hash'];
+ foreach($r as $xc) {
+ $profile = $xc['xchan_url'];
+ $newname = $xc['xchan_name'];
+ // add the channel's xchan_hash to $access_tag if exclusive
+ if($exclusive) {
+ $access_tag = 'cid:' . $xc['xchan_hash'];
+ }
+
+ // if there is a url for this channel
+
+ if(isset($profile)) {
+ $replaced = true;
+ //create profile link
+ $profile = str_replace(',','%2c',$profile);
+ $url = $profile;
+ if($termtype === TERM_FORUM) {
+ $newtag = '!' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('!' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+ else {
+ // ( $termtype === TERM_MENTION )
+ $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+
+ // append tag to str_tags
+ if(! stristr($str_tags,$newtag)) {
+ if(strlen($str_tags))
+ $str_tags .= ',';
+ $str_tags .= $newtag;
+ }
+ }
+
+
+ $fn_results[] = [
+ 'replaced' => $replaced,
+ 'termtype' => $termtype,
+ 'term' => $newname,
+ 'url' => $url,
+ 'access_tag' => $access_tag,
+ 'contact' => (($r) ? $xc : []),
+ ];
+
}
+
}
else {
@@ -2732,7 +2852,6 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
// weird - as all the other tags are linked to something.
if(local_channel() && local_channel() == $profile_uid) {
- require_once('include/group.php');
$grp = group_byname($profile_uid,$name);
if($grp) {
@@ -2749,58 +2868,62 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
}
}
}
- }
- // if there is a url for this channel
- if(isset($profile)) {
- $replaced = true;
- //create profile link
- $profile = str_replace(',','%2c',$profile);
- $url = $profile;
- if($termtype === TERM_FORUM) {
- $newtag = '!' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
- $body = str_replace('!' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
- }
- else {
- // ( $termtype === TERM_MENTION )
- $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
- $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
- }
+ // if there is a url for this channel
+
+ if(isset($profile)) {
+ $replaced = true;
+ //create profile link
+ $profile = str_replace(',','%2c',$profile);
+ $url = $profile;
+ if($termtype === TERM_FORUM) {
+ $newtag = '!' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('!' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+ else {
+ // ( $termtype === TERM_MENTION )
+ $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
- // append tag to str_tags
- if(! stristr($str_tags,$newtag)) {
- if(strlen($str_tags))
- $str_tags .= ',';
- $str_tags .= $newtag;
+ // append tag to str_tags
+ if(! stristr($str_tags,$newtag)) {
+ if(strlen($str_tags))
+ $str_tags .= ',';
+ $str_tags .= $newtag;
+ }
}
+
+ $fn_results[] = [
+ 'replaced' => $replaced,
+ 'termtype' => $termtype,
+ 'term' => $newname,
+ 'url' => $url,
+ 'access_tag' => $access_tag,
+ 'contact' => [],
+ ];
}
}
+
+ return $fn_results;
- return [
- 'replaced' => $replaced,
- 'termtype' => $termtype,
- 'term' => $newname,
- 'url' => $url,
- 'contact' => (($r) ? $r[0] : [])
- ];
}
-function linkify_tags($a, &$body, $uid, $in_network = true) {
+function linkify_tags(&$body, $uid, $in_network = true) {
$str_tags = EMPTY_STR;
- $tagged = [];
$results = [];
$tags = get_tags($body);
if(count($tags)) {
foreach($tags as $tag) {
- $access_tag = '';
- $success = handle_tag($a, $body, $access_tag, $str_tags, ($uid) ? $uid : App::$profile_uid , $tag, $in_network);
+ $success = handle_tag($body, $str_tags, ($uid) ? $uid : App::$profile_uid , $tag, $in_network);
- $results[] = array('success' => $success, 'access_tag' => $access_tag);
- if($success['replaced']) $tagged[] = $tag;
+ foreach($success as $handled_tag) {
+ $results[] = [ 'success' => $handled_tag ];
+ }
}
}
@@ -2858,7 +2981,7 @@ function getIconFromType($type) {
'video/x-matroska' => 'fa-file-video-o'
);
- $catMap = [
+ $catMap = [
'application' => 'fa-file-code-o',
'multipart' => 'fa-folder',
'audio' => 'fa-file-audio-o',
@@ -2866,7 +2989,7 @@ function getIconFromType($type) {
'text' => 'fa-file-text-o',
'image' => 'fa=file-picture-o',
'message' => 'fa-file-text-o'
- ];
+ ];
$iconFromType = '';
@@ -2876,7 +2999,7 @@ function getIconFromType($type) {
}
else {
$parts = explode('/',$type);
- if($parts[0] && $catMap[$parts[0]]) {
+ if($parts[0] && $catMap[$parts[0]]) {
$iconFromType = $catMap[$parts[0]];
}
}
@@ -2964,9 +3087,9 @@ function item_url_replace($channel,&$item,$old,$new,$oldnick = '') {
json_url_replace('/' . $oldnick . '/' ,'/' . $channel['channel_address'] . '/' ,$item['target']);
}
- $x = preg_replace("/".preg_quote($old,'/')."\/(search|\w+\/".$channel['channel_address'].")/", $new.'/${1}', $item['body']);
- if($x) {
- $item['body'] = $x;
+ $x = preg_replace("/".preg_quote($old,'/')."\/(search|\w+\/".$channel['channel_address'].")/", $new.'/${1}', $item['body']);
+ if($x) {
+ $item['body'] = $x;
$item['sig'] = base64url_encode(rsa_sign($item['body'],$channel['channel_prvkey']));
$item['item_verified'] = 1;
}
@@ -3076,7 +3199,13 @@ function pdl_selector($uid, $current='') {
intval($uid)
);
- $arr = array('channel_id' => $uid, 'current' => $current, 'entries' => $r);
+ $arr = ['channel_id' => $uid, 'current' => $current, 'entries' => $r];
+ /**
+ * @hooks pdl_selector
+ * * \e int \b channel_id
+ * * \e string \b current
+ * * \e array \b entries - Result from database query
+ */
call_hooks('pdl_selector', $arr);
$entries = $arr['entries'];
@@ -3132,7 +3261,7 @@ function flatten_array_recursive($arr) {
* @param string $lang Which language should be highlighted
* @return string
* Important: The returned text has the text pattern 'http' translated to '%eY9-!' which should be converted back
- * after further processing. This was done to prevent oembed links from occurring inside code blocks.
+ * after further processing. This was done to prevent oembed links from occurring inside code blocks.
* See include/bbcode.php
*/
function text_highlight($s, $lang) {
@@ -3151,7 +3280,6 @@ function text_highlight($s, $lang) {
'language' => $lang,
'success' => false
];
-
/**
* @hooks text_highlight
* * \e string \b text
@@ -3295,8 +3423,6 @@ function cleanup_bbcode($body) {
$body = preg_replace('/\[\/code\]\s*\[code\]/ism',"\n",$body);
- $body = scale_external_images($body,false);
-
return $body;
}
@@ -3354,13 +3480,17 @@ function punify($s) {
}
-// Be aware that unpunify will only convert domain names and not pathnames
-
+/**
+ * Be aware that unpunify() will only convert domain names and not pathnames.
+ *
+ * @param string $s
+ * @return string
+ */
function unpunify($s) {
require_once('vendor/simplepie/simplepie/idn/idna_convert.class.php');
$x = new idna_convert(['encoding' => 'utf8']);
- return $x->decode($s);
+ return $x->decode($s);
}
@@ -3368,7 +3498,7 @@ function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
-
+
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
@@ -3396,7 +3526,7 @@ function get_forum_channels($uid) {
intval($uid)
);
- if($x2) {
+ if($x2) {
$xf = ids_to_querystr($x2,'xchan',true);
// private forums
@@ -3409,9 +3539,9 @@ function get_forum_channels($uid) {
}
}
- $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 ");
+ $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 ");
- $r = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d and abook_pending = 0 and abook_ignored = 0 and abook_blocked = 0 and abook_archived = 0 $sql_extra order by xchan_name",
+ $r = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_addr, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d and abook_pending = 0 and abook_ignored = 0 and abook_blocked = 0 and abook_archived = 0 $sql_extra order by xchan_name",
intval($uid)
);
@@ -3445,14 +3575,14 @@ function print_array($arr, $level = 0) {
$o .= $tabs . '[' . $k . '] => ' . print_array($v, $level + 1) . "\n";
}
else {
- $o .= $tabs . '[' . $k . '] => ' . print_val($v) . ",\n";
+ $o .= $tabs . '[' . $k . '] => ' . print_val($v) . ",\n";
}
}
}
$o .= substr($tabs,0,-1) . ']' . (($level) ? ',' : ';' ). "\n";
return $o;
}
-
+
}
function print_val($v) {
@@ -3467,6 +3597,28 @@ function print_val($v) {
}
+function array_path_exists($str,$arr) {
+
+ $ptr = $arr;
+ $search = explode('/', $str);
+
+ if($search) {
+ foreach($search as $s) {
+ if(array_key_exists($s,$ptr)) {
+ $ptr = $ptr[$s];
+ }
+ else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ return false;
+
+}
+
+
/**
* @brief Generate a unique ID.
*
@@ -3474,11 +3626,11 @@ function print_val($v) {
*/
function new_uuid() {
- try {
- $hash = Uuid::uuid4()->toString();
- } catch (UnsatisfiedDependencyException $e) {
- $hash = random_string(48);
- }
+ try {
+ $hash = Uuid::uuid4()->toString();
+ } catch (UnsatisfiedDependencyException $e) {
+ $hash = random_string(48);
+ }
- return $hash;
+ return $hash;
}
diff --git a/include/zid.php b/include/zid.php
index fe06948ba..a37ebe1f6 100644
--- a/include/zid.php
+++ b/include/zid.php
@@ -70,9 +70,9 @@ function zid($s, $address = '') {
$zurl .= '#' . $fragment;
$arr = [
- 'url' => $s,
- 'zid' => urlencode($myaddr),
- 'result' => $zurl
+ 'url' => $s,
+ 'zid' => urlencode($myaddr),
+ 'result' => $zurl
];
/**
* @hooks zid
diff --git a/include/zot.php b/include/zot.php
index d031b4a96..3b089831b 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -174,7 +174,7 @@ function zot_build_packet($channel, $type = 'notify', $recipients = null, $remot
* packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check'
* @param array $recipients
* envelope information, array ( 'guid' => string, 'guid_sig' => string ); empty for public posts
- * @param string msg
+ * @param string $msg
* optional message
* @param string $remote_key
* optional public site key of target hub used to encrypt entire packet
@@ -1100,6 +1100,8 @@ function zot_process_response($hub, $arr, $outq) {
return;
}
+ $dreport = true;
+
$x = json_decode($arr['body'], true);
if(! $x) {
@@ -1116,31 +1118,44 @@ function zot_process_response($hub, $arr, $outq) {
}
if(! (is_array($x['delivery_report']) && count($x['delivery_report']))) {
logger('encrypted delivery report could not be decrypted');
- return;
+ $dreport = false;
}
}
- foreach($x['delivery_report'] as $xx) {
- call_hooks('dreport_process',$xx);
- if(is_array($xx) && array_key_exists('message_id',$xx) && DReport::is_storable($xx)) {
- q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s','%s','%s','%s','%s','%s' ) ",
- dbesc($xx['message_id']),
- dbesc($xx['location']),
- dbesc($xx['recipient']),
- dbesc($xx['name']),
- dbesc($xx['status']),
- dbesc(datetime_convert('UTC','UTC',$xx['date'])),
- dbesc($xx['sender'])
- );
+ if($dreport) {
+ foreach($x['delivery_report'] as $xx) {
+ call_hooks('dreport_process',$xx);
+ if(is_array($xx) && array_key_exists('message_id',$xx) && DReport::is_storable($xx)) {
+
+ // legacy zot recipients add a space and their name to the xchan. split those if true.
+ $legacy_recipient = strpos($xx['recipient'], ' ');
+ if($legacy_recipient !== false) {
+ $legacy_recipient_parts = explode(' ', $xx['recipient'], 2);
+ $xx['recipient'] = $legacy_recipient_parts[0];
+ $xx['name'] = $legacy_recipient_parts[1];
+ }
+
+ q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s','%s','%s','%s','%s','%s' ) ",
+ dbesc($xx['message_id']),
+ dbesc($xx['location']),
+ dbesc($xx['recipient']),
+ dbesc($xx['name']),
+ dbesc($xx['status']),
+ dbesc(datetime_convert('UTC','UTC',$xx['date'])),
+ dbesc($xx['sender'])
+ );
+ }
}
}
}
- // we have a more descriptive delivery report, so discard the per hub 'queued' report.
- q("delete from dreport where dreport_queue = '%s' ",
- dbesc($outq['outq_hash'])
- );
+ if($dreport) {
+ // we have a more descriptive delivery report, so discard the per hub 'queued' report.
+ q("delete from dreport where dreport_queue = '%s' ",
+ dbesc($outq['outq_hash'])
+ );
+ }
// update the timestamp for this site
@@ -1232,6 +1247,7 @@ function zot_fetch($arr) {
$datatosend = json_encode(crypto_encapsulate(json_encode($data),$hub['hubloc_sitekey'], $algorithm));
$import = zot_zot($url,$datatosend);
+
}
else {
$algorithm = zot_best_algorithm($hub['site_crypto']);
@@ -1813,7 +1829,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
else {
$arr['item_wall'] = 0;
}
-
+
if ((! $tag_delivery) && (! $local_public)) {
$allowed = (perm_is_allowed($channel['channel_id'],$sender['hash'],$perm));
@@ -1827,7 +1843,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$allowed = can_comment_on_post($d['hash'],$parent[0]);
}
}
-
+
if (! $allowed) {
logger("permission denied for delivery to channel {$channel['channel_id']} {$channel['channel_address']}");
$DR->update('permission denied');
@@ -2314,7 +2330,7 @@ function process_mail_delivery($sender, $arr, $deliveries) {
if(! perm_is_allowed($channel['channel_id'],$sender['hash'],'post_mail')) {
- /*
+ /*
* Always allow somebody to reply if you initiated the conversation. It's anti-social
* and a bit rude to send a private message to somebody and block their ability to respond.
* If you are being harrassed and want to put an end to it, delete the conversation.
@@ -2342,7 +2358,7 @@ function process_mail_delivery($sender, $arr, $deliveries) {
);
if($r) {
if(intval($arr['mail_recalled'])) {
- msg_drop($r[0]['id'], $channel['channel_id'], $r[0]['conv_guid']);
+ msg_drop($r[0]['id'], $channel['channel_id'], $r[0]['conv_guid']);
$DR->update('mail recalled');
$result[] = $DR->get();
logger('mail_recalled');
@@ -3231,7 +3247,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
$channel = $r[0];
- // don't provide these in the export
+ // don't provide these in the export
unset($channel['channel_active']);
unset($channel['channel_password']);
@@ -3600,7 +3616,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
if(array_key_exists('channel_pageflags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) {
// Several pageflags are site-specific and cannot be sync'd.
- // Only allow those bits which are shareable from the remote and then
+ // Only allow those bits which are shareable from the remote and then
// logically OR with the local flags
$arr['channel']['channel_pageflags'] = $arr['channel']['channel_pageflags'] & (PAGE_HIDDEN|PAGE_AUTOCONNECT|PAGE_APPLICATION|PAGE_PREMIUM|PAGE_ADULT);
@@ -4913,6 +4929,7 @@ function zot_reply_pickup($data) {
dbesc($data['secret']),
dbesc($data['callback'])
);
+
if(! $r) {
$ret['message'] = 'nothing to pick up';
logger('mod_zot: pickup: ' . $ret['message']);
@@ -4922,12 +4939,13 @@ function zot_reply_pickup($data) {
/*
* Everything is good if we made it here, so find all messages that are going to this location
- * and send them all.
+ * and send them all - or a reasonable number if there are a lot so we don't overflow memory.
*/
- $r = q("select * from outq where outq_posturl = '%s'",
+ $r = q("select * from outq where outq_posturl = '%s' limit 100",
dbesc($data['callback'])
);
+
if($r) {
logger('mod_zot: successful pickup message received from ' . $data['callback'] . ' ' . count($r) . ' message(s) picked up', LOGGER_DEBUG);
@@ -4953,6 +4971,19 @@ function zot_reply_pickup($data) {
}
}
+ // It's possible that we have more than 100 messages waiting to be sent.
+
+ // See if there are any more messages in the queue.
+ $x = q("select * from outq where outq_posturl = '%s' order by outq_created limit 1",
+ dbesc($data['callback'])
+ );
+
+ // If so, kick off a new delivery notification for the next batch
+ if ($x) {
+ logger("Send additional pickup request.", LOGGER_DEBUG);
+ queue_deliver($x[0],true);
+ }
+
// this is a bit of a hack because we don't have the hubloc_url here, only the callback url.
// worst case is we'll end up using aes256cbc if they've got a different post endpoint
@@ -4964,6 +4995,8 @@ function zot_reply_pickup($data) {
$encrypted = crypto_encapsulate(json_encode($ret),$sitekey,$algorithm);
json_return_and_die($encrypted);
+ // @FIXME: There is a possibility that the transmission will get interrupted
+ // and fail - in which case this packet of messages will be lost.
/* pickup: end */
}
@@ -5024,7 +5057,7 @@ function zot_reply_auth_check($data,$encrypted_packet) {
}
// There should be exactly one recipient, the original auth requestor
-
+ /// @FIXME $recipients is undefined here.
$ret['message'] .= 'recipients ' . print_r($recipients,true) . EOL;
if ($data['recipients']) {
diff --git a/install/sample-lighttpd.conf b/install/sample-lighttpd.conf
index db26c3b64..b65d86645 100644
--- a/install/sample-lighttpd.conf
+++ b/install/sample-lighttpd.conf
@@ -79,7 +79,7 @@ $HTTP["url"] =~ "\.(out|log|htaccess)$" {
url.access-deny = ("")
}
-$HTTP["url"] =~ "(^|/)\.git|(^|/)store" {
+$HTTP["url"] =~ "(^|/)\.git|(^|/)store|(^|/)util" {
url.access-deny = ("")
}
diff --git a/install/sample-nginx.conf b/install/sample-nginx.conf
index 839f208ae..6a986d426 100644
--- a/install/sample-nginx.conf
+++ b/install/sample-nginx.conf
@@ -141,5 +141,10 @@ server {
deny all;
}
+#deny access to util
+ location ~ /util {
+ deny all;
+ }
+
}
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
index 3e3e6fe88..49a2c476a 100644
--- a/install/schema_mysql.sql
+++ b/install/schema_mysql.sql
@@ -947,6 +947,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
`resource_id` char(191) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
+ `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`title` char(191) NOT NULL DEFAULT '',
`description` text NOT NULL,
`album` char(191) NOT NULL DEFAULT '',
@@ -979,6 +980,7 @@ CREATE TABLE IF NOT EXISTS `photo` (
KEY `xchan` (`xchan`),
KEY `filesize` (`filesize`),
KEY `resource_id` (`resource_id`),
+ KEY `expires` (`expires`),
KEY `is_nsfw` (`is_nsfw`),
KEY `os_storage` (`os_storage`),
KEY `photo_usage` (`photo_usage`)
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index 44f98b944..1b6cab51b 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -928,6 +928,7 @@ CREATE TABLE "photo" (
"resource_id" text NOT NULL,
"created" timestamp NOT NULL,
"edited" timestamp NOT NULL,
+ "expires" timestamp NOT NULL,
"title" text NOT NULL,
"description" text NOT NULL,
"album" text NOT NULL,
@@ -961,6 +962,7 @@ create index "photo_aid" on photo ("aid");
create index "photo_xchan" on photo ("xchan");
create index "photo_filesize" on photo ("filesize");
create index "photo_resource_id" on photo ("resource_id");
+create index "photo_expires_idx" on photo ("expires");
create index "photo_usage" on photo ("photo_usage");
create index "photo_is_nsfw" on photo ("is_nsfw");
create index "photo_os_storage" on photo ("os_storage");
diff --git a/library/imagesloaded/imagesloaded.pkgd.min.js b/library/imagesloaded/imagesloaded.pkgd.min.js
deleted file mode 100644
index c3e71fadc..000000000
--- a/library/imagesloaded/imagesloaded.pkgd.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * imagesLoaded PACKAGED v4.1.0
- * JavaScript is all like "You images are done yet or what?"
- * MIT License
- */
-
-!function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}(this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||[];return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,o=i[n];e=e||[];for(var r=this._onceEvents&&this._onceEvents[t];o;){var s=r&&r[o];s&&(this.off(t,o),delete r[o]),o.apply(this,e),n+=s?0:1,o=i[n]}return this}},t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}(window,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){var e=[];if(Array.isArray(t))e=t;else if("number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e}function o(t,e,r){return this instanceof o?("string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=n(t),this.options=i({},this.options),"function"==typeof e?r=e:i(this.options,e),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(function(){this.check()}.bind(this))):new o(t,e,r)}function r(t){this.img=t}function s(t,e){this.url=t,this.element=e,this.img=new Image}var h=t.jQuery,a=t.console;o.prototype=Object.create(e.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&d[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=t.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var d={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,t),n=i.exec(e.backgroundImage)}},o.prototype.addImage=function(t){var e=new r(t);this.images.push(e)},o.prototype.addBackground=function(t,e){var i=new s(t,e);this.images.push(i)},o.prototype.check=function(){function t(t,i,n){setTimeout(function(){e.progress(t,i,n)})}var e=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(e){e.once("progress",t),e.check()}):void this.complete()},o.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,t,e)},o.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},r.prototype=Object.create(e.prototype),r.prototype.check=function(){var t=this.getIsImageComplete();return t?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&void 0!==this.img.naturalWidth},r.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},r.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var t=this.getIsImageComplete();t&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},o.makeJQueryPlugin=function(e){e=e||t.jQuery,e&&(h=e,h.fn.imagesLoaded=function(t,e){var i=new o(this,t,e);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o}); \ No newline at end of file
diff --git a/tests/phpunit-pgsql.xml b/tests/phpunit-pgsql.xml
index 078056d56..8b11aae31 100644
--- a/tests/phpunit-pgsql.xml
+++ b/tests/phpunit-pgsql.xml
@@ -1,24 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.5/phpunit.xsd"
bootstrap="../boot.php"
forceCoversAnnotation="false"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
verbose="true">
- <testsuite name="Hubzilla default Test Suite">
- <directory suffix="Test.php">./unit/</directory>
- </testsuite>
- <testsuite name="API Test Suite">
- <directory suffix="Test.php" prefix="API">./unit/</directory>
- </testsuite>
+ <testsuites>
+ <testsuite name="Hubzilla default Test Suite">
+ <directory suffix="Test.php">./unit/</directory>
+ </testsuite>
+ <testsuite name="API Test Suite">
+ <directory suffix="Test.php" prefix="API">./unit/</directory>
+ </testsuite>
+ </testsuites>
<groups>
<exclude>
<group>mysql</group>
</exclude>
</groups>
- <!--cover reporting-->
+ <!--coverage reporting-->
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">../Zotlabs/</directory>
@@ -26,21 +28,22 @@
</whitelist>
</filter>
<logging>
- <log type="junit" target="./results/junit.xml" logIncompleteSkipped="false"/>
- <log type="coverage-clover" target="./results/coverage-clover.xml"/>
+ <log type="junit" target="./results/junit.xml"/>
+ <!--<log type="coverage-clover" target="./results/coverage-clover.xml"/>-->
<log type="coverage-html" target="./results/coverage-report/" lowUpperBound="35"
highLowerBound="70"/>
- <log type="testdox-text" target="./results/testdox.txt"/>
+ <!--<log type="testdox-text" target="./results/testdox.txt"/>-->
+ <log type="testdox-html" target="./results/testdox.html"/>
</logging>
<php>
<!-- Default test database config, only used if no environment variables
with same names are set.
!!! Never run against a real database, it will truncate all tables -->
- <env name="hz_db_server" value="127.0.0.1"/>
+ <env name="hz_db_server" value="postgres"/>
<env name="hz_db_scheme" value="pgsql"/>
<env name="hz_db_port" value="5432"/>
- <env name="hz_db_user" value="travis_hz"/>
- <env name="hz_db_pass" value="hubzilla"/>
- <env name="hz_db_database" value="travis_hubzilla"/>
+ <env name="hz_db_user" value="ci-user"/>
+ <env name="hz_db_pass" value="ci-pass"/>
+ <env name="hz_db_database" value="ci-db"/>
</php>
</phpunit>
diff --git a/tests/unit/Photo/PhotoGdTest.php b/tests/unit/Photo/PhotoGdTest.php
new file mode 100644
index 000000000..1d4f9467f
--- /dev/null
+++ b/tests/unit/Photo/PhotoGdTest.php
@@ -0,0 +1,147 @@
+<?php
+
+namespace Zotlabs\Tests\Unit\Photo;
+
+use Zotlabs\Photo\PhotoGd;
+use phpmock\phpunit\PHPMock;
+use Zotlabs\Tests\Unit\UnitTestCase;
+
+/**
+ * @brief PhotoGd test case.
+ *
+ * These tests are not really useful yet, just some obvious behaviour.
+ *
+ * @todo Compare the actual results.
+ * @todo Test different image types.
+ */
+class PhotoGdTest extends UnitTestCase {
+
+ use PHPMock;
+
+ /**
+ * @var PhotoGd
+ */
+ private $photoGd;
+
+ /**
+ * Prepares the environment before running a test.
+ */
+ protected function setUp() {
+ parent::setUp();
+
+ $data = file_get_contents('images/hz-16.png');
+
+ $this->photoGd = new PhotoGd($data, 'image/png');
+ }
+
+ /**
+ * Cleans up the environment after running a test.
+ */
+ protected function tearDown() {
+ $this->photoGd = null;
+
+ parent::tearDown();
+ }
+
+ /**
+ * Tests PhotoGd->supportedTypes()
+ *
+ * Without mocking gd this check is environment dependent.
+ *
+ public function testSupportedTypes() {
+ $sft = $this->photoGd->supportedTypes();
+
+ $this->assertArrayHasKey('image/jpeg', $sft);
+ $this->assertArrayHasKey('image/gif', $sft);
+ $this->assertArrayHasKey('image/png', $sft);
+
+ $this->assertArrayNotHasKey('image/foo', $sft);
+ }
+ */
+
+ /**
+ * Tests PhotoGd->clearexif()
+ */
+ public function testClearexifIsNotImplementedInGdAndDoesNotAlterImageOrReturnSomething() {
+ $data_before = $this->photoGd->getImage();
+ $this->assertNull($this->photoGd->clearexif());
+ $this->assertSame($data_before, $this->photoGd->getImage());
+ }
+
+ /**
+ * Tests PhotoGd->getImage()
+ */
+ public function testGetimageReturnsAResource() {
+ $res = $this->photoGd->getImage();
+ $this->assertIsResource($res);
+ $this->assertEquals('gd', get_resource_type($res));
+ }
+ public function testGetimageReturnsFalseOnFailure() {
+ $this->photoGd = new PhotoGd('');
+ $this->assertFalse($this->photoGd->getImage());
+ }
+
+ /**
+ * Tests PhotoGd->doScaleImage()
+ */
+ public function testDoscaleImageSetsCorrectDimensions() {
+ $this->photoGd->doScaleImage(5, 8);
+
+ $this->assertSame(5, $this->photoGd->getWidth());
+ $this->assertSame(8, $this->photoGd->getHeight());
+ }
+
+ /**
+ * Tests PhotoGd->rotate()
+ */
+ public function testRotate360DegreesCreatesANewImage() {
+ $data = $this->photoGd->getImage();
+ $this->photoGd->rotate(360);
+ $this->assertNotEquals($data, $this->photoGd->getImage());
+ }
+
+ /**
+ * Tests PhotoGd->flip()
+ *
+ public function testFlip() {
+ // TODO Auto-generated PhotoGdTest->testFlip()
+ $this->markTestIncomplete("flip test not implemented");
+
+ $this->photoGd->flip();
+ }
+ */
+
+ /**
+ * Tests PhotoGd->cropImageRect()
+ */
+ public function testCropimagerectSetsCorrectDimensions() {
+ $this->photoGd->cropImageRect(10, 12, 1, 2, 11, 11);
+
+ $this->assertSame(10, $this->photoGd->getWidth());
+ $this->assertSame(12, $this->photoGd->getHeight());
+ }
+
+ /**
+ * Tests PhotoGd->imageString()
+ */
+ public function testImagestringReturnsABinaryString() {
+ // Create a stub for global function get_config()
+ // get_config('system', 'png_quality')
+ // get_config('system', 'jpeg_quality');
+ $gc = $this->getFunctionMock('Zotlabs\Photo', 'get_config');
+ $gc->expects($this->once())->willReturnCallback(
+ function() {
+ switch($this->photoGd->getType()){
+ case 'image/png':
+ return 7;
+ case 'image/jpeg':
+ default:
+ return 70;
+ }
+ }
+ );
+
+ $this->assertIsString($this->photoGd->imageString());
+ }
+
+}
diff --git a/tests/unit/get_tags_test.php b/tests/unit/get_tags_test.php
index 40f016747..bdffd8311 100644
--- a/tests/unit/get_tags_test.php
+++ b/tests/unit/get_tags_test.php
@@ -106,10 +106,9 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$tags=get_tags($text);
- $inform='';
$str_tags='';
foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
+ handle_tag($text, $str_tags, 11, $tag);
}
//correct tags found?
@@ -117,7 +116,6 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(in_array("@Mike", $tags));
//correct output from handle_tag?
- $this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url]", $text);
}
@@ -135,9 +133,8 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(1, count($tags));
$this->assertTrue(in_array("@Mike.because", $tags));
- $inform='';
$str_tags='';
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tags[0]);
+ handle_tag($text, $str_tags, 11, $tags[0]);
// (mike) - This is a tricky case.
// we support mentions as in @mike@example.com - which contains a period.
@@ -149,7 +146,6 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
// $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
// $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url].because", $text);
- $this->assertEquals("", $inform);
$this->assertEquals("", $str_tags);
}
@@ -195,13 +191,11 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(in_array("@Mike This", $tags));
$this->assertTrue(in_array("#test_case", $tags));
- $inform='';
$str_tags='';
foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
+ handle_tag($text, $str_tags, 11, $tag);
}
- $this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?tag=test%20case]test case[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?tag=test%20case]test case[/url]", $text);
@@ -255,16 +249,13 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
//happens right now, but it shouldn't be necessary
$this->assertTrue(in_array("@mike+15 id", $tags));
- $inform='';
$str_tags='';
foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
+ handle_tag($text, $str_tags, 11, $tag);
}
$this->assertEquals("Test with @[url=http://justatest.de]Mike Lastname[/url] id tag", $text);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
- // this test may produce two cid:15 entries - which is OK because duplicates are pruned before delivery
- $this->assertContains("cid:15",$inform);
}
/**
diff --git a/tests/unit/includes/PhotodriverTest.php b/tests/unit/includes/PhotodriverTest.php
new file mode 100644
index 000000000..6f6ad0ffe
--- /dev/null
+++ b/tests/unit/includes/PhotodriverTest.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Zotlabs\Tests\Unit\includes;
+
+//use Zotlabs\Photo\PhotoGd;
+use Zotlabs\Tests\Unit\UnitTestCase;
+//use phpmock\phpunit\PHPMock;
+
+/**
+ * @brief Unit Test cases for include/photo/photo_driver.php file.
+ */
+class PhotodriverTest extends UnitTestCase {
+ //use PHPMock;
+
+ public function testPhotofactoryReturnsNullForUnsupportedType() {
+ // php-mock can not mock global functions which is called by a global function.
+ // If the calling function is in a namespace it would work.
+ //$logger = $this->getFunctionMock(__NAMESPACE__, 'logger');
+ //$logger->expects($this->once());
+
+ //$ph = \photo_factory('', 'image/bmp');
+ //$this->assertNull($ph);
+
+ $this->markTestIncomplete('Need to mock logger(), otherwise not unit testable.');
+ }
+
+ public function testPhotofactoryReturnsPhotogdIfConfigIgnore_imagickIsSet() {
+ // php-mock can not mock global functions which is called by a global function.
+ // If the calling function is in a namespace it would work.
+ //$gc = $this->getFunctionMock(__NAMESPACE__, 'get_config');
+ // simulate get_config('system', 'ignore_imagick') configured
+ //$gc->expects($this->once())->willReturn(1)
+
+ //$ph = \photo_factory(file_get_contents('images/hz-16.png'), 'image/png');
+ //$this->assertInstanceOf(PhotoGd::class, $ph);
+
+ $this->markTestIncomplete('Need to mock get_config(), otherwise not unit testable.');
+ }
+} \ No newline at end of file
diff --git a/util/Doxyfile b/util/Doxyfile
index 7be774a81..14464df81 100644
--- a/util/Doxyfile
+++ b/util/Doxyfile
@@ -1,7 +1,8 @@
INPUT = README.md index.php boot.php include/ install/ util/ view/ Zotlabs/
RECURSIVE = YES
PROJECT_NAME = "The Hubzilla"
-PROJECT_LOGO = images/rm-64.png
+PROJECT_LOGO = images/hz-64.png
+IMAGE_PATH = images/
EXCLUDE = .htconfig.php library/ doc/ store/ vendor/ .git/ util/zotsh/easywebdav/ util/generate-hooks-index/
EXCLUDE_PATTERNS = *smarty3* *strings.php *.out *test*
OUTPUT_DIRECTORY = doc
@@ -33,5 +34,6 @@ INTERACTIVE_SVG = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
# fix @var (https://bugzilla.gnome.org/show_bug.cgi?id=626105)
+# Should be obsolete with doxygen >= 1.8.15
#INPUT_FILTER = "sed -e 's/@var\s/@see /'"
INPUT_FILTER = "php util/Doxygen_phpvarfilter.php"
diff --git a/util/addons b/util/addons
index 3d772bf73..7bd70984e 100755
--- a/util/addons
+++ b/util/addons
@@ -10,6 +10,7 @@ echo <<< EOT
util/addons list all # list all addons (*)= installed, (!)= disabled due to version compatibility
util/addons install foo # install addon named 'foo'
util/addons uninstall foo # uninstall addon named 'foo'
+ util/addons reinstall # reinstall all plugins
EOT;
}
@@ -68,6 +69,20 @@ if($argc == 2 && $argv[1] === 'list') {
killme();
}
+if($argc == 2 && $argv[1] === 'reinstall') {
+ require_once("include/plugin.php");
+ if($plugins) {
+ foreach($plugins as $p) {
+ if($p[1]) {
+ echo "Reinstall: ". $p[0] . "\n";
+ uninstall_plugin($p[0]);
+ install_plugin($p[0]);
+ }
+ }
+ }
+ killme();
+}
+
if($argc == 3 && $argv[1] === 'list' && $argv[2] === 'all') {
if($plugins) {
diff --git a/util/admins b/util/admins
new file mode 100755
index 000000000..3c7f0e83e
--- /dev/null
+++ b/util/admins
@@ -0,0 +1,60 @@
+#!/usr/bin/env php
+<?php
+
+if(!file_exists('include/cli_startup.php')) {
+ echo 'Run admins from the top level Hubzilla web directory, as util/admins <args>' . PHP_EOL;
+ exit(1);
+}
+
+
+
+require_once('include/cli_startup.php');
+
+cli_startup();
+
+$helpArgs = getopt('h', array('help'));
+if (count($helpArgs) === 1) {
+ echo <<<'EndOfOutput'
+adds, removes, or lists admins
+
+Usage: util/admins
+ util/admins list
+ util/admins add <account_id>
+ util/admins remove <account_id>
+
+EndOfOutput;
+ return;
+}
+
+if($argc == 1) {
+ $r = q("select account_id, account_roles, account_email from account");
+ if($r) {
+ foreach($r as $rr) {
+ echo sprintf('%4u %s %s', $rr['account_id'], $rr['account_email'],(($rr['account_roles'] & 4096) ? '*' : '')) . PHP_EOL;
+ }
+ }
+}
+
+
+
+if($argc > 1 && $argv[1] === 'list') {
+ $r = q("select account_id, account_roles, account_email from account where (account_roles & 4096) > 0");
+ if($r) {
+ foreach($r as $rr) {
+ echo sprintf('%4u %s %s', $rr['account_id'], $rr['account_email'],(($rr['account_roles'] & 4096) ? '*' : '')) . PHP_EOL;
+ }
+ }
+}
+
+
+if($argc > 2 && $argv[1] === 'add' && intval($argv[2])) {
+ $r = q("update account set account_roles = (account_roles | 4096) where account_id = %d",
+ intval($argv[2])
+ );
+}
+
+if($argc > 2 && $argv[1] === 'remove' && intval($argv[2])) {
+ $r = q("update account set account_roles = (account_roles - 4096) where account_id = %d and (account_roles & 4096) > 0",
+ intval($argv[2])
+ );
+}
diff --git a/util/hmessages.po b/util/hmessages.po
index 9561cab2b..91cc1f191 100644
--- a/util/hmessages.po
+++ b/util/hmessages.po
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 3.9.2\n"
+"Project-Id-Version: 3.9.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-10-19 11:04+0200\n"
+"POT-Creation-Date: 2019-02-19 10:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -150,11 +150,11 @@ msgid "Special - Group Repository"
msgstr ""
#: ../../Zotlabs/Access/PermissionRoles.php:306
-#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Connedit.php:919
+#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Connedit.php:935
#: ../../Zotlabs/Module/Profiles.php:795 ../../include/selectors.php:60
#: ../../include/selectors.php:77 ../../include/selectors.php:115
-#: ../../include/selectors.php:151 ../../include/event.php:1315
-#: ../../include/event.php:1322 ../../include/connections.php:703
+#: ../../include/selectors.php:151 ../../include/event.php:1327
+#: ../../include/event.php:1334 ../../include/connections.php:703
#: ../../include/connections.php:710
msgid "Other"
msgstr ""
@@ -163,22 +163,22 @@ msgstr ""
msgid "Custom/Expert Mode"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:34
+#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:42
#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
#: ../../Zotlabs/Module/Menu.php:91 ../../Zotlabs/Module/Layouts.php:31
-#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:37
+#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:42
#: ../../Zotlabs/Module/Webpages.php:39 ../../Zotlabs/Module/Filestorage.php:51
-#: ../../addon/gallery/Mod_Gallery.php:47 ../../include/channel.php:1204
+#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1253
msgid "Requested profile is not available."
msgstr ""
#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102
-#: ../../Zotlabs/Module/Articles.php:80 ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:119
-#: ../../Zotlabs/Module/Channel.php:286 ../../Zotlabs/Module/Channel.php:325
+#: ../../Zotlabs/Module/Articles.php:88 ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:168
+#: ../../Zotlabs/Module/Channel.php:335 ../../Zotlabs/Module/Channel.php:374
#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Events.php:271
#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Regmod.php:20
@@ -191,17 +191,17 @@ msgstr ""
#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341
#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
-#: ../../Zotlabs/Module/Mood.php:124 ../../Zotlabs/Module/Connections.php:32
+#: ../../Zotlabs/Module/Mood.php:126 ../../Zotlabs/Module/Connections.php:32
#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:70
#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:59
#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428
#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Poke.php:157
#: ../../Zotlabs/Module/Profile_photo.php:302
#: ../../Zotlabs/Module/Profile_photo.php:315
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:229
-#: ../../Zotlabs/Module/Item.php:248 ../../Zotlabs/Module/Item.php:258
-#: ../../Zotlabs/Module/Item.php:1110 ../../Zotlabs/Module/Page.php:34
-#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:390
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:376
+#: ../../Zotlabs/Module/Item.php:395 ../../Zotlabs/Module/Item.php:405
+#: ../../Zotlabs/Module/Item.php:1281 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:399
#: ../../Zotlabs/Module/Chat.php:115 ../../Zotlabs/Module/Chat.php:120
#: ../../Zotlabs/Module/Menu.php:129 ../../Zotlabs/Module/Menu.php:140
#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
@@ -213,15 +213,15 @@ msgstr ""
#: ../../Zotlabs/Module/Editwebpage.php:89
#: ../../Zotlabs/Module/Editwebpage.php:107
#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Cards.php:81 ../../Zotlabs/Module/Webpages.php:133
+#: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Webpages.php:133
#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:80
-#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Suggest.php:32
+#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Suggest.php:32
#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Cover_photo.php:313
#: ../../Zotlabs/Module/Cover_photo.php:326
-#: ../../Zotlabs/Module/Display.php:448 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Display.php:446 ../../Zotlabs/Module/Network.php:19
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:96
@@ -232,13 +232,14 @@ msgstr ""
#: ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Lib/Chatroom.php:133
#: ../../Zotlabs/Web/WebServer.php:123 ../../addon/keepout/keepout.php:36
-#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:40
-#: ../../include/attach.php:150 ../../include/attach.php:197
-#: ../../include/attach.php:270 ../../include/attach.php:379
-#: ../../include/attach.php:393 ../../include/attach.php:400
-#: ../../include/attach.php:482 ../../include/attach.php:1042
-#: ../../include/attach.php:1116 ../../include/attach.php:1281
-#: ../../include/items.php:3675 ../../include/photos.php:27
+#: ../../addon/flashcards/Mod_Flashcards.php:167
+#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44
+#: ../../include/attach.php:150 ../../include/attach.php:199
+#: ../../include/attach.php:272 ../../include/attach.php:381
+#: ../../include/attach.php:395 ../../include/attach.php:402
+#: ../../include/attach.php:484 ../../include/attach.php:1044
+#: ../../include/attach.php:1118 ../../include/attach.php:1283
+#: ../../include/items.php:3781 ../../include/photos.php:27
msgid "Permission denied."
msgstr ""
@@ -247,7 +248,7 @@ msgstr ""
msgid "Block Name"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2465
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2534
msgid "Blocks"
msgstr ""
@@ -265,11 +266,11 @@ msgstr ""
msgid "Edited"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:108
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:116
#: ../../Zotlabs/Module/Cdav.php:1230 ../../Zotlabs/Module/New_channel.php:189
-#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Menu.php:181
+#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Menu.php:181
#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Cards.php:109 ../../Zotlabs/Module/Webpages.php:254
+#: ../../Zotlabs/Module/Cards.php:113 ../../Zotlabs/Module/Webpages.php:254
#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:390
#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
@@ -283,21 +284,21 @@ msgstr ""
#: ../../Zotlabs/Module/Connections.php:322
#: ../../Zotlabs/Module/Connections.php:342 ../../Zotlabs/Module/Wiki.php:211
#: ../../Zotlabs/Module/Wiki.php:384 ../../Zotlabs/Module/Menu.php:175
-#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:235
+#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:252
#: ../../Zotlabs/Module/Editwebpage.php:142
#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Card_edit.php:99
-#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:534
-#: ../../Zotlabs/Lib/ThreadItem.php:130 ../../Zotlabs/Storage/Browser.php:290
+#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:556
+#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../Zotlabs/Storage/Browser.php:290
#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
-#: ../../include/channel.php:1303 ../../include/channel.php:1307
+#: ../../include/channel.php:1352 ../../include/channel.php:1356
#: ../../include/menu.php:118
msgid "Edit"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1104
+#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1117
#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194
#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Widget/Cdav.php:124
-#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1389
+#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392
msgid "Share"
msgstr ""
@@ -309,12 +310,12 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Thing.php:267
#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editblock.php:139
#: ../../Zotlabs/Module/Connections.php:292
-#: ../../Zotlabs/Module/Photos.php:1205 ../../Zotlabs/Module/Connedit.php:655
-#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Profiles.php:800
+#: ../../Zotlabs/Module/Photos.php:1220 ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:800
#: ../../Zotlabs/Module/Editwebpage.php:167
#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Card_edit.php:129
-#: ../../Zotlabs/Module/Oauth.php:174 ../../Zotlabs/Lib/Apps.php:535
-#: ../../Zotlabs/Lib/ThreadItem.php:150 ../../Zotlabs/Storage/Browser.php:291
+#: ../../Zotlabs/Module/Oauth.php:174 ../../Zotlabs/Lib/Apps.php:557
+#: ../../Zotlabs/Lib/ThreadItem.php:167 ../../Zotlabs/Storage/Browser.php:291
#: ../../include/conversation.php:691 ../../include/conversation.php:736
msgid "Delete"
msgstr ""
@@ -360,20 +361,44 @@ msgstr[1] ""
msgid "Invite App"
msgstr ""
-#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:43
+#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:51
#: ../../Zotlabs/Module/Cdav.php:839 ../../Zotlabs/Module/Cdav.php:848
#: ../../Zotlabs/Module/Permcats.php:62 ../../Zotlabs/Module/Lang.php:17
#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Pubstream.php:20
#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Tokens.php:99
#: ../../Zotlabs/Module/Oauth2.php:106 ../../Zotlabs/Module/Randprof.php:29
-#: ../../Zotlabs/Module/Mood.php:132 ../../Zotlabs/Module/Bookmarks.php:78
+#: ../../Zotlabs/Module/Mood.php:134 ../../Zotlabs/Module/Bookmarks.php:78
#: ../../Zotlabs/Module/Wiki.php:52 ../../Zotlabs/Module/Pdledit.php:42
#: ../../Zotlabs/Module/Poke.php:165 ../../Zotlabs/Module/Chat.php:102
-#: ../../Zotlabs/Module/Notes.php:55 ../../Zotlabs/Module/Defperms.php:189
-#: ../../Zotlabs/Module/Group.php:101 ../../Zotlabs/Module/Cards.php:46
-#: ../../Zotlabs/Module/Webpages.php:48 ../../Zotlabs/Module/Sources.php:88
-#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Probe.php:18
-#: ../../Zotlabs/Module/Oauth.php:100
+#: ../../Zotlabs/Module/Notes.php:56 ../../Zotlabs/Module/Affinity.php:52
+#: ../../Zotlabs/Module/Defperms.php:189 ../../Zotlabs/Module/Group.php:106
+#: ../../Zotlabs/Module/Cards.php:51 ../../Zotlabs/Module/Webpages.php:48
+#: ../../Zotlabs/Module/Sources.php:88 ../../Zotlabs/Module/Suggest.php:40
+#: ../../Zotlabs/Module/Probe.php:18 ../../Zotlabs/Module/Oauth.php:100
+#: ../../addon/skeleton/Mod_Skeleton.php:32
+#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/planets/Mod_Planets.php:20
+#: ../../addon/wppost/Mod_Wppost.php:41 ../../addon/nsfw/Mod_Nsfw.php:33
+#: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/dwpost/Mod_Dwpost.php:36
+#: ../../addon/gallery/Mod_Gallery.php:58 ../../addon/ljpost/Mod_Ljpost.php:36
+#: ../../addon/startpage/Mod_Startpage.php:50
+#: ../../addon/diaspora/Mod_Diaspora.php:55
+#: ../../addon/photocache/Mod_Photocache.php:42
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../addon/nsabait/Mod_Nsabait.php:20
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 ../../addon/rtof/Mod_Rtof.php:36
+#: ../../addon/jappixmini/Mod_Jappixmini.php:96
+#: ../../addon/superblock/Mod_Superblock.php:20
+#: ../../addon/nofed/Mod_Nofed.php:33 ../../addon/redred/Mod_Redred.php:50
+#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/pubcrawl/Mod_Pubcrawl.php:40
+#: ../../addon/libertree/Mod_Libertree.php:35
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53
+#: ../../addon/statusnet/Mod_Statusnet.php:146
+#: ../../addon/twitter/Mod_Twitter.php:78
+#: ../../addon/smileybutton/Mod_Smileybutton.php:35
+#: ../../addon/sendzid/Mod_Sendzid.php:20
+#: ../../addon/pageheader/Mod_Pageheader.php:34
+#: ../../addon/authchoose/Mod_Authchoose.php:28
+#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../addon/pumpio/Mod_Pumpio.php:53
msgid "Not Installed"
msgstr ""
@@ -432,7 +457,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Channels.php:147
#: ../../Zotlabs/Module/Admin/Themes.php:158
#: ../../Zotlabs/Module/Admin/Site.php:289
-#: ../../Zotlabs/Module/Admin/Addons.php:438
+#: ../../Zotlabs/Module/Admin/Addons.php:441
#: ../../Zotlabs/Module/Admin/Profs.php:178
#: ../../Zotlabs/Module/Admin/Account_edit.php:73
#: ../../Zotlabs/Module/Admin/Security.php:112
@@ -446,83 +471,84 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Account.php:103
#: ../../Zotlabs/Module/Settings/Profiles.php:50
#: ../../Zotlabs/Module/Settings/Manage.php:41
-#: ../../Zotlabs/Module/Settings/Featured.php:54
#: ../../Zotlabs/Module/Settings/Channel_home.php:89
#: ../../Zotlabs/Module/Settings/Directory.php:41
#: ../../Zotlabs/Module/Settings/Editor.php:41
#: ../../Zotlabs/Module/Settings/Display.php:189
#: ../../Zotlabs/Module/Settings/Network.php:61
#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326
-#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:565
+#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:574
#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Cal.php:344
-#: ../../Zotlabs/Module/Mood.php:156 ../../Zotlabs/Module/Photos.php:1084
-#: ../../Zotlabs/Module/Photos.php:1124 ../../Zotlabs/Module/Photos.php:1242
+#: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Photos.php:1097
+#: ../../Zotlabs/Module/Photos.php:1138 ../../Zotlabs/Module/Photos.php:1257
#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Pdledit.php:107
-#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Connedit.php:888
+#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Connedit.php:904
#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250
#: ../../Zotlabs/Module/Email_validation.php:40
-#: ../../Zotlabs/Module/Pconfig.php:111 ../../Zotlabs/Module/Defperms.php:265
-#: ../../Zotlabs/Module/Group.php:140 ../../Zotlabs/Module/Group.php:156
-#: ../../Zotlabs/Module/Profiles.php:723 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Sources.php:125 ../../Zotlabs/Module/Sources.php:162
-#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
-#: ../../Zotlabs/Module/Filestorage.php:183 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Module/Oauth.php:111 ../../Zotlabs/Lib/ThreadItem.php:767
-#: ../../Zotlabs/Widget/Eventstools.php:16
+#: ../../Zotlabs/Module/Pconfig.php:116 ../../Zotlabs/Module/Affinity.php:87
+#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Group.php:150
+#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Editpost.php:85 ../../Zotlabs/Module/Sources.php:125
+#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Module/Mail.php:431 ../../Zotlabs/Module/Filestorage.php:183
+#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Oauth.php:111
+#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../Zotlabs/Widget/Eventstools.php:16
#: ../../Zotlabs/Widget/Wiki_pages.php:42
#: ../../Zotlabs/Widget/Wiki_pages.php:99
#: ../../view/theme/redbasic_c/php/config.php:95
#: ../../view/theme/redbasic/php/config.php:94
-#: ../../addon/skeleton/skeleton.php:65 ../../addon/planets/planets.php:153
+#: ../../addon/skeleton/Mod_Skeleton.php:51
#: ../../addon/openclipatar/openclipatar.php:53
#: ../../addon/wppost/Mod_Wppost.php:97 ../../addon/nsfw/Mod_Nsfw.php:61
-#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89
+#: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/dwpost/Mod_Dwpost.php:71
#: ../../addon/likebanner/likebanner.php:57
-#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
-#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/Mod_Startpage.php:73
-#: ../../addon/diaspora/Mod_Diaspora.php:99 ../../addon/hzfiles/hzfiles.php:84
-#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
-#: ../../addon/mailtest/mailtest.php:100
-#: ../../addon/openstreetmap/openstreetmap.php:168
-#: ../../addon/fuzzloc/fuzzloc.php:191 ../../addon/rtof/rtof.php:101
-#: ../../addon/jappixmini/jappixmini.php:371
-#: ../../addon/channelreputation/channelreputation.php:139
-#: ../../addon/nofed/nofed.php:80 ../../addon/redred/redred.php:119
+#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:45
+#: ../../addon/ljpost/Mod_Ljpost.php:73
+#: ../../addon/startpage/Mod_Startpage.php:73
+#: ../../addon/diaspora/Mod_Diaspora.php:99
+#: ../../addon/photocache/Mod_Photocache.php:67
+#: ../../addon/hzfiles/hzfiles.php:84 ../../addon/mailtest/mailtest.php:100
+#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:56 ../../addon/rtof/Mod_Rtof.php:72
+#: ../../addon/jappixmini/Mod_Jappixmini.php:261
+#: ../../addon/channelreputation/channelreputation.php:140
+#: ../../addon/nofed/Mod_Nofed.php:53 ../../addon/redred/Mod_Redred.php:90
#: ../../addon/logrot/logrot.php:35 ../../addon/frphotos/frphotos.php:97
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:63
-#: ../../addon/chords/Mod_Chords.php:60 ../../addon/libertree/libertree.php:85
-#: ../../addon/flattrwidget/flattrwidget.php:124
-#: ../../addon/statusnet/statusnet.php:322
-#: ../../addon/statusnet/statusnet.php:380
-#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:221
-#: ../../addon/twitter/twitter.php:268
-#: ../../addon/smileybutton/smileybutton.php:219
-#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1263
+#: ../../addon/chords/Mod_Chords.php:60
+#: ../../addon/libertree/Mod_Libertree.php:70
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92
+#: ../../addon/statusnet/Mod_Statusnet.php:193
+#: ../../addon/statusnet/Mod_Statusnet.php:251
+#: ../../addon/statusnet/Mod_Statusnet.php:306
+#: ../../addon/statusnet/statusnet.php:602
+#: ../../addon/twitter/Mod_Twitter.php:184
+#: ../../addon/smileybutton/Mod_Smileybutton.php:55
+#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1264
#: ../../addon/cart/submodules/manualcat.php:248
#: ../../addon/cart/submodules/hzservices.php:640
#: ../../addon/cart/submodules/subscriptions.php:410
-#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
-#: ../../addon/xmpp/xmpp.php:69 ../../addon/pumpio/pumpio.php:237
+#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/Mod_Pageheader.php:54
+#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../addon/pumpio/Mod_Pumpio.php:115
#: ../../addon/redfiles/redfiles.php:124 ../../addon/hubwall/hubwall.php:95
#: ../../include/js_strings.php:22
msgid "Submit"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:43
+#: ../../Zotlabs/Module/Articles.php:51
msgid "Articles App"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:44
+#: ../../Zotlabs/Module/Articles.php:52
msgid "Create interactive articles"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:107
+#: ../../Zotlabs/Module/Articles.php:115
msgid "Add Article"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:214 ../../Zotlabs/Lib/Apps.php:302
-#: ../../include/nav.php:482
+#: ../../Zotlabs/Module/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324
+#: ../../include/nav.php:512
msgid "Articles"
msgstr ""
@@ -550,11 +576,11 @@ msgstr ""
#: ../../Zotlabs/Module/Editlayout.php:140 ../../Zotlabs/Module/Cdav.php:944
#: ../../Zotlabs/Module/Cdav.php:1233 ../../Zotlabs/Module/Article_edit.php:131
-#: ../../Zotlabs/Module/Admin/Addons.php:423
+#: ../../Zotlabs/Module/Admin/Addons.php:426
#: ../../Zotlabs/Module/Oauth2.php:117 ../../Zotlabs/Module/Oauth2.php:145
#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Wiki.php:368
#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Connedit.php:925 ../../Zotlabs/Module/Fbrowser.php:66
+#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Fbrowser.php:66
#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:801
#: ../../Zotlabs/Module/Editwebpage.php:169
#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Filer.php:55
@@ -562,17 +588,18 @@ msgstr ""
#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Card_edit.php:131
#: ../../Zotlabs/Module/Oauth.php:112 ../../Zotlabs/Module/Oauth.php:138
#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258
-#: ../../include/conversation.php:1412 ../../include/conversation.php:1461
+#: ../../include/conversation.php:1415 ../../include/conversation.php:1464
msgid "Cancel"
msgstr ""
#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
-#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Cloud.php:126
-#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Dreport.php:10
-#: ../../Zotlabs/Module/Dreport.php:68 ../../Zotlabs/Module/Like.php:296
-#: ../../Zotlabs/Web/WebServer.php:122 ../../addon/redphotos/redphotos.php:119
-#: ../../addon/hzfiles/hzfiles.php:73 ../../addon/frphotos/frphotos.php:82
-#: ../../addon/redfiles/redfiles.php:109 ../../include/items.php:384
+#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Share.php:71
+#: ../../Zotlabs/Module/Cloud.php:126 ../../Zotlabs/Module/Group.php:98
+#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:79
+#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Web/WebServer.php:122
+#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
+#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109
+#: ../../include/items.php:416
msgid "Permission denied"
msgstr ""
@@ -584,8 +611,8 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:337
-#: ../../include/channel.php:1651
+#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:359
+#: ../../include/channel.php:1700
msgid "Profile"
msgstr ""
@@ -611,12 +638,12 @@ msgid "Summary: "
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:811 ../../Zotlabs/Module/Cdav.php:812
-#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Embedphotos.php:146
-#: ../../Zotlabs/Module/Photos.php:819 ../../Zotlabs/Module/Photos.php:1275
-#: ../../Zotlabs/Lib/Activity.php:858 ../../Zotlabs/Lib/Apps.php:994
-#: ../../Zotlabs/Lib/Apps.php:1078 ../../Zotlabs/Storage/Browser.php:164
+#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Embedphotos.php:154
+#: ../../Zotlabs/Module/Photos.php:832 ../../Zotlabs/Module/Photos.php:1296
+#: ../../Zotlabs/Lib/Activity.php:1011 ../../Zotlabs/Lib/Apps.php:1113
+#: ../../Zotlabs/Lib/Apps.php:1197 ../../Zotlabs/Storage/Browser.php:164
#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84
-#: ../../addon/pubcrawl/as.php:963 ../../include/conversation.php:1166
+#: ../../addon/pubcrawl/as.php:959 ../../include/conversation.php:1166
msgid "Unknown"
msgstr ""
@@ -685,14 +712,14 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:924 ../../Zotlabs/Module/Events.php:690
#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Cal.php:338
-#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Photos.php:973
+#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Photos.php:986
msgid "Previous"
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:925 ../../Zotlabs/Module/Events.php:691
#: ../../Zotlabs/Module/Events.php:700 ../../Zotlabs/Module/Setup.php:263
#: ../../Zotlabs/Module/Cal.php:339 ../../Zotlabs/Module/Cal.php:346
-#: ../../Zotlabs/Module/Photos.php:982
+#: ../../Zotlabs/Module/Photos.php:995
msgid "Next"
msgstr ""
@@ -748,8 +775,8 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1215 ../../Zotlabs/Module/Sharedwithme.php:104
#: ../../Zotlabs/Module/Admin/Channels.php:159
#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146
-#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:907
-#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:144
+#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923
+#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:154
#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139
#: ../../Zotlabs/Lib/NativeWikiPage.php:561
#: ../../Zotlabs/Storage/Browser.php:285
@@ -758,15 +785,15 @@ msgstr ""
msgid "Name"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:908
+#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:924
msgid "Organisation"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:909
+#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:925
msgid "Title"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Connedit.php:910
+#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Connedit.php:926
#: ../../Zotlabs/Module/Profiles.php:786
msgid "Phone"
msgstr ""
@@ -774,97 +801,97 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1219
#: ../../Zotlabs/Module/Admin/Accounts.php:171
#: ../../Zotlabs/Module/Admin/Accounts.php:183
-#: ../../Zotlabs/Module/Connedit.php:911 ../../Zotlabs/Module/Profiles.php:787
+#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Profiles.php:787
#: ../../addon/openid/MysqlProvider.php:56
-#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1779
+#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/Mod_Rtof.php:57
+#: ../../addon/redred/Mod_Redred.php:71 ../../include/network.php:1721
msgid "Email"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Connedit.php:912
+#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Connedit.php:928
#: ../../Zotlabs/Module/Profiles.php:788
msgid "Instant messenger"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Connedit.php:913
+#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Connedit.php:929
#: ../../Zotlabs/Module/Profiles.php:789
msgid "Website"
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1222 ../../Zotlabs/Module/Locs.php:118
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:914 ../../Zotlabs/Module/Profiles.php:502
+#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Profiles.php:502
#: ../../Zotlabs/Module/Profiles.php:790
msgid "Address"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Connedit.php:931
#: ../../Zotlabs/Module/Profiles.php:791
msgid "Note"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Connedit.php:916
-#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1308
+#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1320
#: ../../include/connections.php:696
msgid "Mobile"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Connedit.php:917
-#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1309
+#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Connedit.php:933
+#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1321
#: ../../include/connections.php:697
msgid "Home"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Connedit.php:918
-#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1312
+#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Connedit.php:934
+#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1324
#: ../../include/connections.php:700
msgid "Work"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Connedit.php:920
+#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Connedit.php:936
#: ../../Zotlabs/Module/Profiles.php:796
-#: ../../addon/jappixmini/jappixmini.php:368
+#: ../../addon/jappixmini/Mod_Jappixmini.php:216
msgid "Add Contact"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Connedit.php:921
+#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Connedit.php:937
#: ../../Zotlabs/Module/Profiles.php:797
msgid "Add Field"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1231 ../../Zotlabs/Module/Admin/Addons.php:453
+#: ../../Zotlabs/Module/Cdav.php:1231 ../../Zotlabs/Module/Admin/Addons.php:456
#: ../../Zotlabs/Module/Oauth2.php:58 ../../Zotlabs/Module/Oauth2.php:144
-#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Profiles.php:799
+#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Profiles.php:799
#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137
-#: ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Lib/Apps.php:535
msgid "Update"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:942
msgid "P.O. Box"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:927
+#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:943
msgid "Additional"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:928
+#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:944
msgid "Street"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:945
msgid "Locality"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:930
+#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:946
msgid "Region"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:931
+#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:947
msgid "ZIP Code"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Connedit.php:948
#: ../../Zotlabs/Module/Profiles.php:757
msgid "Country"
msgstr ""
@@ -903,7 +930,7 @@ msgid ""
"connections."
msgstr ""
-#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:350
+#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:372
msgid "Permission Categories"
msgstr ""
@@ -912,58 +939,58 @@ msgid "Permission category name"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181
-#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Defperms.php:266
+#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266
msgid "My Settings"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183
-#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Defperms.php:264
+#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264
msgid "inherited"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186
-#: ../../Zotlabs/Module/Connedit.php:894 ../../Zotlabs/Module/Defperms.php:269
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269
msgid "Individual Permissions"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187
-#: ../../Zotlabs/Module/Connedit.php:895
+#: ../../Zotlabs/Module/Connedit.php:911
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
"individual settings. You can <strong>not</strong> change those settings here."
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:39 ../../Zotlabs/Module/Ochannel.php:32
-#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/chess.php:508
+#: ../../Zotlabs/Module/Channel.php:41 ../../Zotlabs/Module/Ochannel.php:32
+#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/Mod_Chess.php:343
msgid "You must be logged in to see this page."
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:54 ../../Zotlabs/Module/Hcard.php:37
+#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37
#: ../../Zotlabs/Module/Profile.php:45
msgid "Posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:61 ../../Zotlabs/Module/Hcard.php:44
+#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44
#: ../../Zotlabs/Module/Profile.php:52
msgid "Only posts"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:116
+#: ../../Zotlabs/Module/Channel.php:165
msgid "Insufficient permissions. Request redirected to profile page."
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:133 ../../Zotlabs/Module/Network.php:163
+#: ../../Zotlabs/Module/Channel.php:182 ../../Zotlabs/Module/Network.php:173
msgid "Search Results For:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:168 ../../Zotlabs/Module/Hq.php:134
+#: ../../Zotlabs/Module/Channel.php:217 ../../Zotlabs/Module/Hq.php:134
#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Display.php:80
-#: ../../Zotlabs/Module/Network.php:193
+#: ../../Zotlabs/Module/Network.php:203
msgid "Reset form"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:424 ../../Zotlabs/Module/Display.php:374
+#: ../../Zotlabs/Module/Channel.php:476 ../../Zotlabs/Module/Display.php:373
msgid ""
"You must enable javascript for your browser to be able to view this content."
msgstr ""
@@ -1050,7 +1077,7 @@ msgstr ""
msgid "You have got no unseen posts..."
msgstr ""
-#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:545
+#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:558
#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:67
#: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Display.php:29
#: ../../Zotlabs/Module/Viewconnections.php:23
@@ -1058,9 +1085,9 @@ msgid "Public access denied."
msgstr ""
#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:338
-#: ../../Zotlabs/Lib/Apps.php:328 ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../Zotlabs/Widget/Activity_filter.php:150 ../../include/text.php:1068
-#: ../../include/text.php:1080 ../../include/acl_selectors.php:118
+#: ../../Zotlabs/Lib/Apps.php:350 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../include/text.php:1084
+#: ../../include/text.php:1096 ../../include/acl_selectors.php:118
#: ../../include/nav.php:183
msgid "Search"
msgstr ""
@@ -1083,7 +1110,7 @@ msgstr ""
msgid "The unmoderated public stream of this hub"
msgstr ""
-#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:352
+#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:374
#: ../../Zotlabs/Widget/Notifications.php:142
msgid "Public Stream"
msgstr ""
@@ -1114,7 +1141,7 @@ msgstr ""
msgid "Manage Channel Locations"
msgstr ""
-#: ../../Zotlabs/Module/Locs.php:119 ../../Zotlabs/Module/Admin.php:115
+#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr ""
@@ -1140,21 +1167,21 @@ msgstr ""
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:44
+#: ../../Zotlabs/Module/Apporder.php:47
msgid "Change Order of Pinned Navbar Apps"
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:44
+#: ../../Zotlabs/Module/Apporder.php:47
msgid "Change Order of App Tray Apps"
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:45
+#: ../../Zotlabs/Module/Apporder.php:48
msgid ""
"Use arrows to move the corresponding app left (top) or right (bottom) in the "
"navbar"
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:45
+#: ../../Zotlabs/Module/Apporder.php:48
msgid "Use arrows to move the corresponding app up or down in the app tray"
msgstr ""
@@ -1210,50 +1237,41 @@ msgstr ""
#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:255
#: ../../Zotlabs/Module/Settings/Channel.php:309
#: ../../Zotlabs/Module/Settings/Display.php:89
-#: ../../Zotlabs/Module/Import.php:554 ../../Zotlabs/Module/Import.php:558
-#: ../../Zotlabs/Module/Import.php:559 ../../Zotlabs/Module/Api.php:99
-#: ../../Zotlabs/Module/Photos.php:699 ../../Zotlabs/Module/Wiki.php:227
-#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:397
-#: ../../Zotlabs/Module/Connedit.php:780 ../../Zotlabs/Module/Menu.php:162
+#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
+#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Module/Api.php:99
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406
+#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Menu.php:162
#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Defperms.php:197
#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Sources.php:124
#: ../../Zotlabs/Module/Sources.php:159
#: ../../Zotlabs/Module/Filestorage.php:178
#: ../../Zotlabs/Module/Filestorage.php:186 ../../Zotlabs/Lib/Libzotdir.php:162
#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1630
+#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1634
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:99
#: ../../view/theme/redbasic/php/config.php:116
-#: ../../addon/planets/planets.php:149 ../../addon/wppost/Mod_Wppost.php:82
-#: ../../addon/wppost/Mod_Wppost.php:86 ../../addon/ijpost/ijpost.php:73
-#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
-#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
-#: ../../addon/ljpost/ljpost.php:82 ../../addon/visage/visage.php:166
-#: ../../addon/nsabait/nsabait.php:157 ../../addon/fuzzloc/fuzzloc.php:178
-#: ../../addon/rtof/rtof.php:81 ../../addon/rtof/rtof.php:85
-#: ../../addon/jappixmini/jappixmini.php:309
-#: ../../addon/jappixmini/jappixmini.php:313
-#: ../../addon/jappixmini/jappixmini.php:343
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-#: ../../addon/jappixmini/jappixmini.php:359
-#: ../../addon/channelreputation/channelreputation.php:111
-#: ../../addon/nofed/nofed.php:72 ../../addon/nofed/nofed.php:76
-#: ../../addon/redred/redred.php:95 ../../addon/redred/redred.php:99
-#: ../../addon/libertree/libertree.php:69
-#: ../../addon/libertree/libertree.php:81
-#: ../../addon/flattrwidget/flattrwidget.php:120
-#: ../../addon/statusnet/statusnet.php:389
-#: ../../addon/statusnet/statusnet.php:411
-#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:246
-#: ../../addon/twitter/twitter.php:255 ../../addon/twitter/twitter.php:264
-#: ../../addon/smileybutton/smileybutton.php:211
-#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86
+#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60
+#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
+#: ../../addon/channelreputation/channelreputation.php:108
+#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63
+#: ../../addon/libertree/Mod_Libertree.php:59
+#: ../../addon/statusnet/Mod_Statusnet.php:260
+#: ../../addon/statusnet/Mod_Statusnet.php:282
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:162
+#: ../../addon/twitter/Mod_Twitter.php:171
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71
-#: ../../addon/cart/cart.php:1257
+#: ../../addon/cart/cart.php:1258
#: ../../addon/cart/submodules/paypalbutton.php:87
#: ../../addon/cart/submodules/paypalbutton.php:95
#: ../../addon/cart/submodules/manualcat.php:63
@@ -1264,9 +1282,8 @@ msgstr ""
#: ../../addon/cart/submodules/hzservices.php:650
#: ../../addon/cart/submodules/subscriptions.php:153
#: ../../addon/cart/submodules/subscriptions.php:425
-#: ../../addon/xmpp/xmpp.php:53 ../../addon/pumpio/pumpio.php:219
-#: ../../addon/pumpio/pumpio.php:223 ../../addon/pumpio/pumpio.php:227
-#: ../../addon/pumpio/pumpio.php:231 ../../include/dir_fns.php:143
+#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98
+#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143
#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
msgid "No"
msgstr ""
@@ -1277,49 +1294,40 @@ msgstr ""
#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:257
#: ../../Zotlabs/Module/Settings/Channel.php:309
#: ../../Zotlabs/Module/Settings/Display.php:89
-#: ../../Zotlabs/Module/Import.php:554 ../../Zotlabs/Module/Import.php:558
-#: ../../Zotlabs/Module/Import.php:559 ../../Zotlabs/Module/Api.php:98
-#: ../../Zotlabs/Module/Photos.php:699 ../../Zotlabs/Module/Wiki.php:227
-#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:397
+#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
+#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Module/Api.php:98
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406
#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221
#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
#: ../../Zotlabs/Module/Filestorage.php:178
#: ../../Zotlabs/Module/Filestorage.php:186 ../../Zotlabs/Lib/Libzotdir.php:162
#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1630
+#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1634
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:99
#: ../../view/theme/redbasic/php/config.php:116
-#: ../../addon/planets/planets.php:149 ../../addon/wppost/Mod_Wppost.php:82
-#: ../../addon/wppost/Mod_Wppost.php:86 ../../addon/ijpost/ijpost.php:73
-#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
-#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
-#: ../../addon/ljpost/ljpost.php:82 ../../addon/visage/visage.php:166
-#: ../../addon/nsabait/nsabait.php:157 ../../addon/fuzzloc/fuzzloc.php:178
-#: ../../addon/rtof/rtof.php:81 ../../addon/rtof/rtof.php:85
-#: ../../addon/jappixmini/jappixmini.php:309
-#: ../../addon/jappixmini/jappixmini.php:313
-#: ../../addon/jappixmini/jappixmini.php:343
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-#: ../../addon/jappixmini/jappixmini.php:359
-#: ../../addon/channelreputation/channelreputation.php:111
-#: ../../addon/nofed/nofed.php:72 ../../addon/nofed/nofed.php:76
-#: ../../addon/redred/redred.php:95 ../../addon/redred/redred.php:99
-#: ../../addon/libertree/libertree.php:69
-#: ../../addon/libertree/libertree.php:81
-#: ../../addon/flattrwidget/flattrwidget.php:120
-#: ../../addon/statusnet/statusnet.php:389
-#: ../../addon/statusnet/statusnet.php:411
-#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:246
-#: ../../addon/twitter/twitter.php:255 ../../addon/twitter/twitter.php:264
-#: ../../addon/smileybutton/smileybutton.php:211
-#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86
+#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60
+#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
+#: ../../addon/channelreputation/channelreputation.php:108
+#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63
+#: ../../addon/libertree/Mod_Libertree.php:59
+#: ../../addon/statusnet/Mod_Statusnet.php:260
+#: ../../addon/statusnet/Mod_Statusnet.php:282
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:162
+#: ../../addon/twitter/Mod_Twitter.php:171
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71
-#: ../../addon/cart/cart.php:1257
+#: ../../addon/cart/cart.php:1258
#: ../../addon/cart/submodules/paypalbutton.php:87
#: ../../addon/cart/submodules/paypalbutton.php:95
#: ../../addon/cart/submodules/manualcat.php:63
@@ -1330,9 +1338,8 @@ msgstr ""
#: ../../addon/cart/submodules/hzservices.php:650
#: ../../addon/cart/submodules/subscriptions.php:153
#: ../../addon/cart/submodules/subscriptions.php:425
-#: ../../addon/xmpp/xmpp.php:53 ../../addon/pumpio/pumpio.php:219
-#: ../../addon/pumpio/pumpio.php:223 ../../addon/pumpio/pumpio.php:227
-#: ../../addon/pumpio/pumpio.php:231 ../../include/dir_fns.php:143
+#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98
+#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143
#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
msgid "Yes"
msgstr ""
@@ -1443,8 +1450,8 @@ msgid "Event not found."
msgstr ""
#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Like.php:386 ../../include/conversation.php:119
-#: ../../include/text.php:2031 ../../include/event.php:1153
+#: ../../Zotlabs/Module/Like.php:394 ../../include/conversation.php:119
+#: ../../include/text.php:2094 ../../include/event.php:1165
msgid "event"
msgstr ""
@@ -1505,14 +1512,14 @@ msgstr ""
msgid "Edit Location"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Photos.php:1125
-#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:777
-#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1356
+#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Photos.php:1139
+#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:805
+#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359
msgid "Preview"
msgstr ""
#: ../../Zotlabs/Module/Events.php:481 ../../addon/hsse/hsse.php:225
-#: ../../include/conversation.php:1428
+#: ../../include/conversation.php:1431
msgid "Permission settings"
msgstr ""
@@ -1537,7 +1544,7 @@ msgid "Delete event"
msgstr ""
#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Cal.php:314
-#: ../../include/text.php:1850
+#: ../../include/text.php:1913
msgid "Link to Source"
msgstr ""
@@ -1554,7 +1561,7 @@ msgid "Create Event"
msgstr ""
#: ../../Zotlabs/Module/Events.php:692 ../../Zotlabs/Module/Cal.php:340
-#: ../../include/channel.php:1654
+#: ../../include/channel.php:1703
msgid "Export"
msgstr ""
@@ -1626,27 +1633,27 @@ msgstr ""
msgid "Hub not found."
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
-#: ../../Zotlabs/Module/Like.php:384 ../../Zotlabs/Lib/Activity.php:1570
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:69
+#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Lib/Activity.php:1959
#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1539 ../../addon/pubcrawl/as.php:1511
-#: ../../include/conversation.php:116 ../../include/text.php:2028
+#: ../../addon/diaspora/Receiver.php:1551 ../../addon/pubcrawl/as.php:1504
+#: ../../include/conversation.php:116 ../../include/text.php:2091
msgid "photo"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:384
-#: ../../Zotlabs/Lib/Activity.php:1570 ../../addon/diaspora/Receiver.php:1539
-#: ../../addon/pubcrawl/as.php:1511 ../../include/conversation.php:144
-#: ../../include/text.php:2034
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:392
+#: ../../Zotlabs/Lib/Activity.php:1959 ../../addon/diaspora/Receiver.php:1551
+#: ../../addon/pubcrawl/as.php:1504 ../../include/conversation.php:144
+#: ../../include/text.php:2097
msgid "status"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:142
+#: ../../Zotlabs/Module/Subthread.php:143
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:144
+#: ../../Zotlabs/Module/Subthread.php:145
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr ""
@@ -1667,9 +1674,9 @@ msgid "Insert web link"
msgstr ""
#: ../../Zotlabs/Module/Article_edit.php:117
-#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:700
-#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Module/Card_edit.php:117
-#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1424
+#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:713
+#: ../../Zotlabs/Module/Photos.php:1083 ../../Zotlabs/Module/Card_edit.php:117
+#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427
msgid "Title (optional)"
msgstr ""
@@ -1708,7 +1715,7 @@ msgid "Use this form to import existing posts and content from an export file."
msgstr ""
#: ../../Zotlabs/Module/Import_items.php:127
-#: ../../Zotlabs/Module/Import.php:548
+#: ../../Zotlabs/Module/Import.php:557
msgid "File to Upload"
msgstr ""
@@ -1719,8 +1726,8 @@ msgstr ""
#: ../../Zotlabs/Module/New_channel.php:157
#: ../../Zotlabs/Module/New_channel.php:164
-#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:256
-#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:293
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256
+#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:323
msgid "Loading"
msgstr ""
@@ -1844,7 +1851,7 @@ msgid "NEW"
msgstr ""
#: ../../Zotlabs/Module/Sharedwithme.php:106
-#: ../../Zotlabs/Storage/Browser.php:287 ../../include/text.php:1457
+#: ../../Zotlabs/Storage/Browser.php:287 ../../include/text.php:1496
msgid "Size"
msgstr ""
@@ -1890,7 +1897,7 @@ msgid ""
msgstr ""
#: ../../Zotlabs/Module/Setup.php:198 ../../Zotlabs/Module/Setup.php:262
-#: ../../Zotlabs/Module/Setup.php:756
+#: ../../Zotlabs/Module/Setup.php:761
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr ""
@@ -2034,229 +2041,235 @@ msgstr ""
msgid "PHP register_argc_argv"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:446
+#: ../../Zotlabs/Module/Setup.php:448
+msgid ""
+"This is not sufficient to upload larger images or files. You should be able "
+"to upload at least 4 MB at once."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:450
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to "
"upload is set to %s. You are allowed to upload up to %d files at once."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:451
+#: ../../Zotlabs/Module/Setup.php:456
msgid "You can adjust these settings in the server php.ini file."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:453
+#: ../../Zotlabs/Module/Setup.php:458
msgid "PHP upload limits"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:476
+#: ../../Zotlabs/Module/Setup.php:481
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:477
+#: ../../Zotlabs/Module/Setup.php:482
msgid ""
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
"installation.php\"."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:480
+#: ../../Zotlabs/Module/Setup.php:485
msgid "Generate encryption keys"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:502
msgid "libCurl PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:498
+#: ../../Zotlabs/Module/Setup.php:503
msgid "GD graphics PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:499
+#: ../../Zotlabs/Module/Setup.php:504
msgid "OpenSSL PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:500
+#: ../../Zotlabs/Module/Setup.php:505
msgid "PDO database PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:501
+#: ../../Zotlabs/Module/Setup.php:506
msgid "mb_string PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:502
+#: ../../Zotlabs/Module/Setup.php:507
msgid "xml PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:503
+#: ../../Zotlabs/Module/Setup.php:508
msgid "zip PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:512 ../../Zotlabs/Module/Setup.php:514
msgid "Apache mod_rewrite module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:507
+#: ../../Zotlabs/Module/Setup.php:512
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
+#: ../../Zotlabs/Module/Setup.php:518 ../../Zotlabs/Module/Setup.php:521
msgid "exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:518
msgid ""
"Error: exec is required but is either not installed or has been disabled in "
"php.ini"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
+#: ../../Zotlabs/Module/Setup.php:524 ../../Zotlabs/Module/Setup.php:527
msgid "shell_exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:524
msgid ""
"Error: shell_exec is required but is either not installed or has been "
"disabled in php.ini"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:527
+#: ../../Zotlabs/Module/Setup.php:532
msgid "Error: libCURL PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:531
+#: ../../Zotlabs/Module/Setup.php:536
msgid ""
"Error: GD PHP module with JPEG support or ImageMagick graphics library "
"required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:535
+#: ../../Zotlabs/Module/Setup.php:540
msgid "Error: openssl PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:546
msgid ""
"Error: PDO database PHP module missing a driver for either mysql or pgsql."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:546
+#: ../../Zotlabs/Module/Setup.php:551
msgid "Error: PDO database PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:550
+#: ../../Zotlabs/Module/Setup.php:555
msgid "Error: mb_string PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:554
+#: ../../Zotlabs/Module/Setup.php:559
msgid "Error: xml PHP module required for DAV but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:558
+#: ../../Zotlabs/Module/Setup.php:563
msgid "Error: zip PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:577 ../../Zotlabs/Module/Setup.php:586
+#: ../../Zotlabs/Module/Setup.php:582 ../../Zotlabs/Module/Setup.php:591
msgid ".htconfig.php is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:582
+#: ../../Zotlabs/Module/Setup.php:587
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\" "
"in the top folder of your web server and it is unable to do so."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:583
+#: ../../Zotlabs/Module/Setup.php:588
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:584
+#: ../../Zotlabs/Module/Setup.php:589
msgid "Please see install/INSTALL.txt for additional information."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:600
+#: ../../Zotlabs/Module/Setup.php:605
msgid ""
"This software uses the Smarty3 template engine to render its web views. "
"Smarty3 compiles templates to PHP to speed up rendering."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:606
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
"write access to the directory %s under the top level web folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:602 ../../Zotlabs/Module/Setup.php:623
+#: ../../Zotlabs/Module/Setup.php:607 ../../Zotlabs/Module/Setup.php:628
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has "
"write access to this folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:603
+#: ../../Zotlabs/Module/Setup.php:608
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:606
+#: ../../Zotlabs/Module/Setup.php:611
#, php-format
msgid "%s is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:622
+#: ../../Zotlabs/Module/Setup.php:627
msgid ""
"This software uses the store directory to save uploaded files. The web "
"server needs to have write access to the store directory under the top level "
"web folder"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:626
+#: ../../Zotlabs/Module/Setup.php:631
msgid "store is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:663
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access "
"to this site."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:664
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:660
+#: ../../Zotlabs/Module/Setup.php:665
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:666
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:662
+#: ../../Zotlabs/Module/Setup.php:667
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:663
+#: ../../Zotlabs/Module/Setup.php:668
msgid ""
"Providers are available that issue free certificates which are browser-valid."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:665
+#: ../../Zotlabs/Module/Setup.php:670
msgid ""
"If you are confident that the certificate is valid and signed by a trusted "
"authority, check to see if you have failed to install an intermediate cert. "
@@ -2264,36 +2277,36 @@ msgid ""
"server communications."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:672
msgid "SSL certificate validation"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:673
+#: ../../Zotlabs/Module/Setup.php:678
msgid ""
"Url rewrite in .htaccess is not working. Check your server configuration."
"Test: "
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:676
+#: ../../Zotlabs/Module/Setup.php:681
msgid "Url rewrite is working"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:690
+#: ../../Zotlabs/Module/Setup.php:695
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:714 ../../addon/rendezvous/rendezvous.php:401
+#: ../../Zotlabs/Module/Setup.php:719 ../../addon/rendezvous/rendezvous.php:401
msgid "Errors encountered creating database tables."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:754
+#: ../../Zotlabs/Module/Setup.php:759
msgid "<h1>What next?</h1>"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:755
+#: ../../Zotlabs/Module/Setup.php:760
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr ""
@@ -2458,7 +2471,7 @@ msgstr[1] ""
msgid "Account not found"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2497
+#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2562
#, php-format
msgid "Account '%s' deleted"
msgstr ""
@@ -2480,9 +2493,9 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:156
#: ../../Zotlabs/Module/Admin/Site.php:287
#: ../../Zotlabs/Module/Admin/Addons.php:341
-#: ../../Zotlabs/Module/Admin/Addons.php:436
+#: ../../Zotlabs/Module/Admin/Addons.php:439
#: ../../Zotlabs/Module/Admin/Security.php:92
-#: ../../Zotlabs/Module/Admin.php:140
+#: ../../Zotlabs/Module/Admin.php:138
msgid "Administration"
msgstr ""
@@ -2520,12 +2533,12 @@ msgid "Deny"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:176
-#: ../../Zotlabs/Module/Connedit.php:623
+#: ../../Zotlabs/Module/Connedit.php:636
msgid "Block"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:177
-#: ../../Zotlabs/Module/Connedit.php:623
+#: ../../Zotlabs/Module/Connedit.php:636
msgid "Unblock"
msgstr ""
@@ -2667,7 +2680,7 @@ msgstr ""
msgid "Disallow Code"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:391
+#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:421
msgid "Channel"
msgstr ""
@@ -2698,8 +2711,8 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:72
#: ../../Zotlabs/Module/Admin/Addons.php:259 ../../Zotlabs/Module/Thing.php:94
#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45
-#: ../../Zotlabs/Module/Display.php:452 ../../Zotlabs/Module/Filestorage.php:24
-#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3587
+#: ../../Zotlabs/Module/Display.php:450 ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3693
msgid "Item not found."
msgstr ""
@@ -2728,9 +2741,9 @@ msgid "Toggle"
msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:125
-#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:314
+#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:336
#: ../../Zotlabs/Widget/Newmember.php:53
-#: ../../Zotlabs/Widget/Settings_menu.php:68 ../../include/nav.php:97
+#: ../../Zotlabs/Widget/Settings_menu.php:61 ../../include/nav.php:97
msgid "Settings"
msgstr ""
@@ -2758,7 +2771,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:187
#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3087
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3210
msgid "Default"
msgstr ""
@@ -2831,7 +2844,7 @@ msgid "Advanced"
msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:297
-#: ../../addon/statusnet/statusnet.php:891
+#: ../../addon/statusnet/statusnet.php:593
msgid "Site name"
msgstr ""
@@ -3027,7 +3040,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:323
#: ../../Zotlabs/Module/Admin/Site.php:324
-#: ../../Zotlabs/Module/Connedit.php:876 ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
@@ -3212,7 +3225,7 @@ msgid "Plugin %s enabled."
msgstr ""
#: ../../Zotlabs/Module/Admin/Addons.php:342
-#: ../../Zotlabs/Module/Admin/Addons.php:437 ../../Zotlabs/Widget/Admin.php:27
+#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27
msgid "Addons"
msgstr ""
@@ -3237,56 +3250,56 @@ msgid "Requires: "
msgstr ""
#: ../../Zotlabs/Module/Admin/Addons.php:358
-#: ../../Zotlabs/Module/Admin/Addons.php:442
+#: ../../Zotlabs/Module/Admin/Addons.php:445
msgid "Disabled - version incompatibility"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:411
+#: ../../Zotlabs/Module/Admin/Addons.php:414
msgid "Enter the public git repository URL of the addon repo."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:412
+#: ../../Zotlabs/Module/Admin/Addons.php:415
msgid "Addon repo git URL"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:413
+#: ../../Zotlabs/Module/Admin/Addons.php:416
msgid "Custom repo name"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:413
+#: ../../Zotlabs/Module/Admin/Addons.php:416
msgid "(optional)"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:414
+#: ../../Zotlabs/Module/Admin/Addons.php:417
msgid "Download Addon Repo"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:421
+#: ../../Zotlabs/Module/Admin/Addons.php:424
msgid "Install new repo"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:535
msgid "Install"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:445
+#: ../../Zotlabs/Module/Admin/Addons.php:448
msgid "Manage Repos"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:446
+#: ../../Zotlabs/Module/Admin/Addons.php:449
msgid "Installed Addon Repositories"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:447
+#: ../../Zotlabs/Module/Admin/Addons.php:450
msgid "Install a New Addon Repository"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:454
+#: ../../Zotlabs/Module/Admin/Addons.php:457
msgid "Switch branch"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:455
-#: ../../Zotlabs/Module/Photos.php:1022 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Admin/Addons.php:458
+#: ../../Zotlabs/Module/Photos.php:1035 ../../Zotlabs/Module/Tagrm.php:137
#: ../../addon/superblock/Mod_Superblock.php:91
msgid "Remove"
msgstr ""
@@ -3333,8 +3346,9 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Profs.php:94
#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
-#: ../../Zotlabs/Widget/Notes.php:23 ../../include/text.php:1069
-#: ../../include/text.php:1081
+#: ../../Zotlabs/Widget/Notes.php:23
+#: ../../addon/queueworker/Mod_Queueworker.php:102 ../../include/text.php:1085
+#: ../../include/text.php:1097
msgid "Save"
msgstr ""
@@ -3540,7 +3554,7 @@ msgid "Visible to:"
msgstr ""
#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
-#: ../../Zotlabs/Module/Acl.php:120 ../../include/acl_selectors.php:88
+#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88
msgctxt "acl"
msgid "Profile"
msgstr ""
@@ -3558,19 +3572,19 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:75
#: ../../Zotlabs/Module/Settings/Channel.php:78
#: ../../Zotlabs/Module/Settings/Channel.php:89
-#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:24
-#: ../../include/selectors.php:134 ../../include/channel.php:444
-#: ../../include/channel.php:445 ../../include/channel.php:452
+#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Widget/Affinity.php:32
+#: ../../include/selectors.php:134 ../../include/channel.php:493
+#: ../../include/channel.php:494 ../../include/channel.php:501
msgid "Friends"
msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:266
#: ../../Zotlabs/Module/Defperms.php:111
#: ../../addon/rendezvous/rendezvous.php:82
-#: ../../addon/openstreetmap/openstreetmap.php:184
+#: ../../addon/openstreetmap/openstreetmap.php:185
#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
-#: ../../addon/twitter/twitter.php:775 ../../addon/piwik/piwik.php:116
-#: ../../addon/xmpp/xmpp.php:102
+#: ../../addon/twitter/twitter.php:605 ../../addon/piwik/piwik.php:116
+#: ../../addon/xmpp/xmpp.php:54
msgid "Settings updated."
msgstr ""
@@ -3644,7 +3658,7 @@ msgstr ""
msgid "Basic Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1528
+#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1577
msgid "Full Name:"
msgstr ""
@@ -3861,7 +3875,7 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:572
#: ../../Zotlabs/Module/Settings/Channel.php:573
#: ../../Zotlabs/Module/Settings/Channel.php:574
-#: ../../addon/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
msgid "Recommended"
msgstr ""
@@ -4070,39 +4084,15 @@ msgstr ""
msgid "Channel Manager Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:23
-msgid "Affinity Slider settings updated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:38
+#: ../../Zotlabs/Module/Settings/Featured.php:24
msgid "No feature settings configured"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:45
-msgid "Default maximum affinity level"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:45
-msgid "0-99 default 99"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:50
-msgid "Default minimum affinity level"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:50
-msgid "0-99 - default 0"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:54
-msgid "Affinity Slider Settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:67
+#: ../../Zotlabs/Module/Settings/Featured.php:33
msgid "Addon Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:68
+#: ../../Zotlabs/Module/Settings/Featured.php:34
msgid "Please save/submit changes to any panel before opening another."
msgstr ""
@@ -4228,18 +4218,18 @@ msgstr ""
msgid "Stream Settings"
msgstr ""
-#: ../../Zotlabs/Module/Embedphotos.php:140 ../../Zotlabs/Module/Photos.php:813
-#: ../../Zotlabs/Module/Photos.php:1352 ../../Zotlabs/Widget/Portfolio.php:87
+#: ../../Zotlabs/Module/Embedphotos.php:148 ../../Zotlabs/Module/Photos.php:826
+#: ../../Zotlabs/Module/Photos.php:1374 ../../Zotlabs/Widget/Portfolio.php:87
#: ../../Zotlabs/Widget/Album.php:78
msgid "View Photo"
msgstr ""
-#: ../../Zotlabs/Module/Embedphotos.php:156 ../../Zotlabs/Module/Photos.php:844
+#: ../../Zotlabs/Module/Embedphotos.php:164 ../../Zotlabs/Module/Photos.php:857
#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95
msgid "Edit Album"
msgstr ""
-#: ../../Zotlabs/Module/Embedphotos.php:158 ../../Zotlabs/Module/Photos.php:714
+#: ../../Zotlabs/Module/Embedphotos.php:166 ../../Zotlabs/Module/Photos.php:727
#: ../../Zotlabs/Module/Profile_photo.php:459
#: ../../Zotlabs/Module/Cover_photo.php:395
#: ../../Zotlabs/Storage/Browser.php:392 ../../Zotlabs/Widget/Cdav.php:133
@@ -4299,7 +4289,7 @@ msgstr ""
msgid "Expires (yyyy-mm-dd)"
msgstr ""
-#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:891
+#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907
msgid "Their Settings"
msgstr ""
@@ -4361,8 +4351,8 @@ msgid "URL for photo of thing (optional)"
msgstr ""
#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372
-#: ../../Zotlabs/Module/Photos.php:704 ../../Zotlabs/Module/Photos.php:1073
-#: ../../Zotlabs/Module/Connedit.php:677 ../../Zotlabs/Module/Chat.php:243
+#: ../../Zotlabs/Module/Photos.php:717 ../../Zotlabs/Module/Photos.php:1086
+#: ../../Zotlabs/Module/Connedit.php:690 ../../Zotlabs/Module/Chat.php:243
#: ../../Zotlabs/Module/Filestorage.php:170 ../../include/acl_selectors.php:123
msgid "Permissions"
msgstr ""
@@ -4383,56 +4373,56 @@ msgstr ""
msgid "Connection added."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:146
+#: ../../Zotlabs/Module/Import.php:155
#, php-format
msgid "Your service plan only allows %d channels."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:173
+#: ../../Zotlabs/Module/Import.php:182
msgid "No channel. Import failed."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:513
+#: ../../Zotlabs/Module/Import.php:522
#: ../../addon/diaspora/import_diaspora.php:141
msgid "Import completed."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:541
+#: ../../Zotlabs/Module/Import.php:550
msgid "You must be logged in to use this feature."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:546
+#: ../../Zotlabs/Module/Import.php:555
msgid "Import Channel"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:547
+#: ../../Zotlabs/Module/Import.php:556
msgid ""
"Use this form to import an existing channel from a different server/hub. You "
"may retrieve the channel identity from the old server/hub via the network or "
"provide an export file."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:549
+#: ../../Zotlabs/Module/Import.php:558
msgid "Or provide the old server/hub details"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:551
+#: ../../Zotlabs/Module/Import.php:560
msgid "Your old identity address (xyz@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:552
+#: ../../Zotlabs/Module/Import.php:561
msgid "Your old login email address"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:553
+#: ../../Zotlabs/Module/Import.php:562
msgid "Your old login password"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:554
+#: ../../Zotlabs/Module/Import.php:563
msgid "Import a few months of posts if possible (limited by available memory"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:556
+#: ../../Zotlabs/Module/Import.php:565
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be "
@@ -4440,44 +4430,44 @@ msgid ""
"location for files, photos, and media."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:558
+#: ../../Zotlabs/Module/Import.php:567
msgid "Make this hub my primary location"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:559
+#: ../../Zotlabs/Module/Import.php:568
msgid "Move this channel (disable all previous locations)"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:560
+#: ../../Zotlabs/Module/Import.php:569
msgid "Use this channel nickname instead of the one provided"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:560
+#: ../../Zotlabs/Module/Import.php:569
msgid ""
"Leave blank to keep your existing channel nickname. You will be randomly "
"assigned a similar nickname if either name is already allocated on this site."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:562
+#: ../../Zotlabs/Module/Import.php:571
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:35
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid "Authentication failed."
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1626
-#: ../../include/channel.php:2341
+#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1630
+#: ../../include/channel.php:2405
msgid "Remote Authentication"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2342
+#: ../../Zotlabs/Module/Rmagic.php:94 ../../include/channel.php:2406
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2343
+#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2407
msgid "Authenticate"
msgstr ""
@@ -4504,7 +4494,7 @@ msgstr ""
#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:785
+#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:615
msgid "Consumer Secret"
msgstr ""
@@ -4570,7 +4560,7 @@ msgstr ""
msgid "Permissions denied."
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:343 ../../include/text.php:2489
+#: ../../Zotlabs/Module/Cal.php:343 ../../include/text.php:2558
msgid "Import"
msgstr ""
@@ -4628,21 +4618,21 @@ msgstr ""
msgid "Create Custom App"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:75 ../../include/conversation.php:268
+#: ../../Zotlabs/Module/Mood.php:76 ../../include/conversation.php:268
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:132
+#: ../../Zotlabs/Module/Mood.php:134
msgid "Mood App"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:133 ../../Zotlabs/Module/Mood.php:153
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155
msgid "Set your current mood and tell your friends"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:152 ../../Zotlabs/Lib/Apps.php:325
+#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:347
msgid "Mood"
msgstr ""
@@ -4683,7 +4673,7 @@ msgstr ""
#: ../../Zotlabs/Module/Connections.php:97
#: ../../Zotlabs/Module/Connections.php:111
-#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Widget/Affinity.php:26
+#: ../../Zotlabs/Module/Connedit.php:727 ../../Zotlabs/Widget/Affinity.php:34
msgid "All"
msgstr ""
@@ -4778,7 +4768,7 @@ msgid "Ignore connection"
msgstr ""
#: ../../Zotlabs/Module/Connections.php:308
-#: ../../Zotlabs/Module/Connedit.php:631
+#: ../../Zotlabs/Module/Connedit.php:644
msgid "Ignore"
msgstr ""
@@ -4786,8 +4776,8 @@ msgstr ""
msgid "Recent activity"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:308
-#: ../../include/text.php:981 ../../include/features.php:125
+#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:330
+#: ../../include/text.php:991 ../../include/features.php:125
msgid "Connections"
msgstr ""
@@ -4869,190 +4859,190 @@ msgstr ""
msgid "Delete Album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1085
+#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1098
msgid "Delete Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:556
+#: ../../Zotlabs/Module/Photos.php:569
msgid "No photos selected"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:605
+#: ../../Zotlabs/Module/Photos.php:618
msgid "Access to this item is restricted."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:648
+#: ../../Zotlabs/Module/Photos.php:661
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:651
+#: ../../Zotlabs/Module/Photos.php:664
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:693
+#: ../../Zotlabs/Module/Photos.php:706
msgid "Upload Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Photos.php:710
msgid "Enter an album name"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:698
+#: ../../Zotlabs/Module/Photos.php:711
msgid "or select an existing album (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:699
+#: ../../Zotlabs/Module/Photos.php:712
msgid "Create a status post for this upload"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:701
+#: ../../Zotlabs/Module/Photos.php:714
msgid "Description (optional)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:787
+#: ../../Zotlabs/Module/Photos.php:800
msgid "Show Newest First"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:789
+#: ../../Zotlabs/Module/Photos.php:802
msgid "Show Oldest First"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:846 ../../Zotlabs/Module/Photos.php:1383
+#: ../../Zotlabs/Module/Photos.php:859 ../../Zotlabs/Module/Photos.php:1405
msgid "Add Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:894
+#: ../../Zotlabs/Module/Photos.php:907
msgid "Permission denied. Access to this item may be restricted."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:896
+#: ../../Zotlabs/Module/Photos.php:909
msgid "Photo not available"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:954
+#: ../../Zotlabs/Module/Photos.php:967
msgid "Use as profile photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:955
+#: ../../Zotlabs/Module/Photos.php:968
msgid "Use as cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:962
+#: ../../Zotlabs/Module/Photos.php:975
msgid "Private Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:977
+#: ../../Zotlabs/Module/Photos.php:990
msgid "View Full Size"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1059
+#: ../../Zotlabs/Module/Photos.php:1072
msgid "Edit photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1061
+#: ../../Zotlabs/Module/Photos.php:1074
msgid "Rotate CW (right)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1062
+#: ../../Zotlabs/Module/Photos.php:1075
msgid "Rotate CCW (left)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1065
+#: ../../Zotlabs/Module/Photos.php:1078
msgid "Move photo to album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1066
+#: ../../Zotlabs/Module/Photos.php:1079
msgid "Enter a new album name"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1067
+#: ../../Zotlabs/Module/Photos.php:1080
msgid "or select an existing one (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1072
+#: ../../Zotlabs/Module/Photos.php:1085
msgid "Add a Tag"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1080
+#: ../../Zotlabs/Module/Photos.php:1093
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1083
+#: ../../Zotlabs/Module/Photos.php:1096
msgid "Flag as adult in album view"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1102 ../../Zotlabs/Lib/ThreadItem.php:289
+#: ../../Zotlabs/Module/Photos.php:1115 ../../Zotlabs/Lib/ThreadItem.php:306
msgid "I like this (toggle)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Lib/ThreadItem.php:290
+#: ../../Zotlabs/Module/Photos.php:1116 ../../Zotlabs/Lib/ThreadItem.php:307
msgid "I don't like this (toggle)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1105 ../../Zotlabs/Lib/ThreadItem.php:441
+#: ../../Zotlabs/Module/Photos.php:1118 ../../Zotlabs/Lib/ThreadItem.php:469
#: ../../include/conversation.php:787
msgid "Please wait"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
-#: ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Module/Photos.php:1254
+#: ../../Zotlabs/Lib/ThreadItem.php:792
msgid "This is you"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1123 ../../Zotlabs/Module/Photos.php:1241
-#: ../../Zotlabs/Lib/ThreadItem.php:766 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1137 ../../Zotlabs/Module/Photos.php:1256
+#: ../../Zotlabs/Lib/ThreadItem.php:794 ../../include/js_strings.php:6
msgid "Comment"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:619
+#: ../../Zotlabs/Module/Photos.php:1154 ../../include/conversation.php:619
msgctxt "title"
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:619
+#: ../../Zotlabs/Module/Photos.php:1154 ../../include/conversation.php:619
msgctxt "title"
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1140 ../../include/conversation.php:620
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
msgctxt "title"
msgid "Agree"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1140 ../../include/conversation.php:620
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
msgctxt "title"
msgid "Disagree"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1140 ../../include/conversation.php:620
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
msgctxt "title"
msgid "Abstain"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1141 ../../include/conversation.php:621
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
msgctxt "title"
msgid "Attending"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1141 ../../include/conversation.php:621
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
msgctxt "title"
msgid "Not attending"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1141 ../../include/conversation.php:621
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
msgctxt "title"
msgid "Might attend"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1158 ../../Zotlabs/Module/Photos.php:1170
-#: ../../Zotlabs/Lib/ThreadItem.php:214 ../../Zotlabs/Lib/ThreadItem.php:226
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Photos.php:1185
+#: ../../Zotlabs/Lib/ThreadItem.php:231 ../../Zotlabs/Lib/ThreadItem.php:243
msgid "View all"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1162 ../../Zotlabs/Lib/ThreadItem.php:218
-#: ../../include/conversation.php:1693 ../../include/channel.php:1546
+#: ../../Zotlabs/Module/Photos.php:1177 ../../Zotlabs/Lib/ThreadItem.php:235
+#: ../../include/conversation.php:1702 ../../include/channel.php:1595
#: ../../include/taxonomy.php:661
msgctxt "noun"
msgid "Like"
@@ -5060,47 +5050,48 @@ msgid_plural "Likes"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Photos.php:1167 ../../Zotlabs/Lib/ThreadItem.php:223
-#: ../../include/conversation.php:1696
+#: ../../Zotlabs/Module/Photos.php:1182 ../../Zotlabs/Lib/ThreadItem.php:240
+#: ../../include/conversation.php:1705
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Photos.php:1267
+#: ../../Zotlabs/Module/Photos.php:1288
msgid "Photo Tools"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1276
+#: ../../Zotlabs/Module/Photos.php:1297
msgid "In This Photo:"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1281
+#: ../../Zotlabs/Module/Photos.php:1302
msgid "Map"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1289 ../../Zotlabs/Lib/ThreadItem.php:429
+#: ../../Zotlabs/Module/Photos.php:1310 ../../Zotlabs/Lib/ThreadItem.php:457
msgctxt "noun"
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1290 ../../Zotlabs/Lib/ThreadItem.php:430
+#: ../../Zotlabs/Module/Photos.php:1311 ../../Zotlabs/Lib/ThreadItem.php:458
msgctxt "noun"
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1295 ../../Zotlabs/Lib/ThreadItem.php:435
+#: ../../Zotlabs/Module/Photos.php:1316 ../../Zotlabs/Lib/ThreadItem.php:463
#: ../../include/acl_selectors.php:125
msgid "Close"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1367 ../../Zotlabs/Module/Photos.php:1380
-#: ../../Zotlabs/Module/Photos.php:1381 ../../include/photos.php:668
+#: ../../Zotlabs/Module/Photos.php:1389 ../../Zotlabs/Module/Photos.php:1402
+#: ../../Zotlabs/Module/Photos.php:1403 ../../include/photos.php:670
msgid "Recent Photos"
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:35 ../../addon/cart/cart.php:1297
+#: ../../Zotlabs/Module/Wiki.php:35
+#: ../../addon/flashcards/Mod_Flashcards.php:34 ../../addon/cart/cart.php:1298
msgid "Profile Unavailable."
msgstr ""
@@ -5113,7 +5104,7 @@ msgid "Provide a wiki for your channel"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:77 ../../addon/cart/myshop.php:37
-#: ../../addon/cart/cart.php:1440
+#: ../../addon/cart/cart.php:1444
#: ../../addon/cart/submodules/paypalbutton.php:456
#: ../../addon/cart/manual_payments.php:93
msgid "Invalid channel"
@@ -5131,8 +5122,8 @@ msgstr ""
msgid "Error downloading wiki: "
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:19
-#: ../../include/nav.php:506
+#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15
+#: ../../include/nav.php:536
msgid "Wikis"
msgstr ""
@@ -5156,18 +5147,18 @@ msgstr ""
#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371
#: ../../Zotlabs/Widget/Wiki_pages.php:38
#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../addon/mdpost/mdpost.php:41
-#: ../../include/text.php:1892
+#: ../../include/text.php:1955
msgid "Markdown"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371
#: ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1890
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1953
msgid "BBcode"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1893
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1956
msgid "Text"
msgstr ""
@@ -5233,14 +5224,14 @@ msgid "Embed image from photo albums"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:400 ../../addon/hsse/hsse.php:208
-#: ../../include/conversation.php:1411
+#: ../../include/conversation.php:1414
msgid "Embed an image from your albums"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:402 ../../Zotlabs/Module/Profile_photo.php:466
#: ../../Zotlabs/Module/Cover_photo.php:400 ../../addon/hsse/hsse.php:210
-#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1413
-#: ../../include/conversation.php:1460
+#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1416
+#: ../../include/conversation.php:1463
msgid "OK"
msgstr ""
@@ -5335,6 +5326,15 @@ msgstr ""
msgid "You must be authenticated."
msgstr ""
+#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1473
+#, php-format
+msgid "&#x1f501; Repeated %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Module/Share.php:119
+msgid "Post repeated"
+msgstr ""
+
#: ../../Zotlabs/Module/Chanview.php:139
msgid "toggle full screen mode"
msgstr ""
@@ -5391,7 +5391,7 @@ msgstr ""
msgid "Poke somebody in your addressbook"
msgstr ""
-#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:326
+#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:348
#: ../../include/conversation.php:1098
msgid "Poke"
msgstr ""
@@ -5427,7 +5427,7 @@ msgstr ""
#: ../../Zotlabs/Module/Profile_photo.php:120
#: ../../Zotlabs/Module/Profile_photo.php:248
-#: ../../include/photo/photo_driver.php:741
+#: ../../include/photo/photo_driver.php:367
msgid "Profile Photos"
msgstr ""
@@ -5534,73 +5534,73 @@ msgstr ""
msgid "Online"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:194
+#: ../../Zotlabs/Module/Item.php:341
msgid "Unable to locate original post."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:479
+#: ../../Zotlabs/Module/Item.php:628
msgid "Empty post discarded."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:866
+#: ../../Zotlabs/Module/Item.php:1037
msgid "Duplicate post suppressed."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1011
+#: ../../Zotlabs/Module/Item.php:1182
msgid "System error. Post not saved."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1047
+#: ../../Zotlabs/Module/Item.php:1218
msgid "Your comment is awaiting approval."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1164
+#: ../../Zotlabs/Module/Item.php:1335
msgid "Unable to obtain post information from database."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1171
+#: ../../Zotlabs/Module/Item.php:1342
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1178
+#: ../../Zotlabs/Module/Item.php:1349
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:337
+#: ../../Zotlabs/Module/Ping.php:338
msgid "sent you a private message"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:390
+#: ../../Zotlabs/Module/Ping.php:394
msgid "added your channel"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:414
+#: ../../Zotlabs/Module/Ping.php:419
msgid "requires approval"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:424
+#: ../../Zotlabs/Module/Ping.php:429
msgid "g A l F d"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:442
+#: ../../Zotlabs/Module/Ping.php:447
msgid "[today]"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:451
+#: ../../Zotlabs/Module/Ping.php:457
msgid "posted an event"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:484
+#: ../../Zotlabs/Module/Ping.php:491
msgid "shared a file with you"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:659
+#: ../../Zotlabs/Module/Ping.php:673
msgid "Private forum"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:659
+#: ../../Zotlabs/Module/Ping.php:673
msgid "Public forum"
msgstr ""
@@ -5612,7 +5612,7 @@ msgstr ""
#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157
#: ../../Zotlabs/Module/Display.php:174
#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185
-#: ../../include/help.php:132
+#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132
msgid "Page not found."
msgstr ""
@@ -5626,302 +5626,302 @@ msgid ""
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:80 ../../Zotlabs/Module/Defperms.php:67
+#: ../../Zotlabs/Module/Connedit.php:81 ../../Zotlabs/Module/Defperms.php:67
msgid "Could not access contact record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:110
+#: ../../Zotlabs/Module/Connedit.php:112
msgid "Could not locate selected profile."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:247
+#: ../../Zotlabs/Module/Connedit.php:256
msgid "Connection updated."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:249
+#: ../../Zotlabs/Module/Connedit.php:258
msgid "Failed to update connection record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:303
+#: ../../Zotlabs/Module/Connedit.php:312
msgid "is now connected to"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:428
+#: ../../Zotlabs/Module/Connedit.php:437
msgid "Could not access address book record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:476
+#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489
msgid "Refresh failed - channel is currently unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:491 ../../Zotlabs/Module/Connedit.php:500
-#: ../../Zotlabs/Module/Connedit.php:509 ../../Zotlabs/Module/Connedit.php:518
-#: ../../Zotlabs/Module/Connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513
+#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "Unable to set address book parameters."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:555
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "Connection has been removed."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Lib/Apps.php:319
+#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:341
#: ../../addon/openclipatar/openclipatar.php:57
#: ../../include/conversation.php:1038 ../../include/nav.php:106
msgid "View Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:598
+#: ../../Zotlabs/Module/Connedit.php:611
#, php-format
msgid "View %s's profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:602
+#: ../../Zotlabs/Module/Connedit.php:615
msgid "Refresh Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:605
+#: ../../Zotlabs/Module/Connedit.php:618
msgid "Fetch updated permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:609
+#: ../../Zotlabs/Module/Connedit.php:622
msgid "Refresh Photo"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:612
+#: ../../Zotlabs/Module/Connedit.php:625
msgid "Fetch updated photo"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:616 ../../include/conversation.php:1048
+#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048
msgid "Recent Activity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:619
+#: ../../Zotlabs/Module/Connedit.php:632
msgid "View recent posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:626
+#: ../../Zotlabs/Module/Connedit.php:639
msgid "Block (or Unblock) all communications with this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:627
+#: ../../Zotlabs/Module/Connedit.php:640
msgid "This connection is blocked!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:631
+#: ../../Zotlabs/Module/Connedit.php:644
msgid "Unignore"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:634
+#: ../../Zotlabs/Module/Connedit.php:647
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:635
+#: ../../Zotlabs/Module/Connedit.php:648
msgid "This connection is ignored!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:639
+#: ../../Zotlabs/Module/Connedit.php:652
msgid "Unarchive"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:639
+#: ../../Zotlabs/Module/Connedit.php:652
msgid "Archive"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:642
+#: ../../Zotlabs/Module/Connedit.php:655
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:643
+#: ../../Zotlabs/Module/Connedit.php:656
msgid "This connection is archived!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:647
+#: ../../Zotlabs/Module/Connedit.php:660
msgid "Unhide"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:647
+#: ../../Zotlabs/Module/Connedit.php:660
msgid "Hide"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:650
+#: ../../Zotlabs/Module/Connedit.php:663
msgid "Hide or Unhide this connection from your other connections"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:651
+#: ../../Zotlabs/Module/Connedit.php:664
msgid "This connection is hidden!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:658
+#: ../../Zotlabs/Module/Connedit.php:671
msgid "Delete this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:666
+#: ../../Zotlabs/Module/Connedit.php:679
msgid "Fetch Vcard"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:669
+#: ../../Zotlabs/Module/Connedit.php:682
msgid "Fetch electronic calling card for this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:680
+#: ../../Zotlabs/Module/Connedit.php:693
msgid "Open Individual Permissions section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:703
+#: ../../Zotlabs/Module/Connedit.php:716
msgid "Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Open Set Affinity section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:22
+#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30
msgid "Me"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:23
+#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31
msgid "Family"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:25
+#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33
msgid "Acquaintances"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:740
+#: ../../Zotlabs/Module/Connedit.php:756
msgid "Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:743
+#: ../../Zotlabs/Module/Connedit.php:759
msgid "Open Custom Filter section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:780
+#: ../../Zotlabs/Module/Connedit.php:796
msgid "Approve this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:780
+#: ../../Zotlabs/Module/Connedit.php:796
msgid "Accept connection to allow communication"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:785
+#: ../../Zotlabs/Module/Connedit.php:801
msgid "Set Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:788
+#: ../../Zotlabs/Module/Connedit.php:804
msgid "Set Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:791
+#: ../../Zotlabs/Module/Connedit.php:807
msgid "Set Affinity & Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:839
+#: ../../Zotlabs/Module/Connedit.php:855
msgid "This connection is unreachable from this location."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:840
+#: ../../Zotlabs/Module/Connedit.php:856
msgid "This connection may be unreachable from other channel locations."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:842
+#: ../../Zotlabs/Module/Connedit.php:858
msgid "Location independence is not supported by their network."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:848
+#: ../../Zotlabs/Module/Connedit.php:864
msgid ""
"This connection is unreachable from this location. Location independence is "
"not supported by their network."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:851 ../../Zotlabs/Module/Defperms.php:254
+#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254
msgid "Connection Default Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:851 ../../include/items.php:4200
+#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4308
#, php-format
msgid "Connection: %s"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:255
+#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255
msgid "Apply these permissions automatically"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:852
+#: ../../Zotlabs/Module/Connedit.php:868
msgid "Connection requests will be approved without your interaction"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:256
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256
msgid "Permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:854 ../../Zotlabs/Module/Defperms.php:257
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257
msgid "Add permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:861
+#: ../../Zotlabs/Module/Connedit.php:877
msgid "This connection's primary address is"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:862
+#: ../../Zotlabs/Module/Connedit.php:878
msgid "Available locations:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:261
+#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:261
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:884
msgid "Connection Tools"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:870
+#: ../../Zotlabs/Module/Connedit.php:886
msgid "Slide to adjust your degree of friendship"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:871 ../../Zotlabs/Module/Rate.php:155
+#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:872
+#: ../../Zotlabs/Module/Connedit.php:888
msgid "Slide to adjust your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:873 ../../Zotlabs/Module/Connedit.php:878
+#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
msgid "Optionally explain your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:875
+#: ../../Zotlabs/Module/Connedit.php:891
msgid "Custom Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:876
+#: ../../Zotlabs/Module/Connedit.php:892
msgid "Only import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:893
msgid "Do not import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:879
+#: ../../Zotlabs/Module/Connedit.php:895
msgid "This information is public!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:884
+#: ../../Zotlabs/Module/Connedit.php:900
msgid "Connection Pending Approval"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:889
+#: ../../Zotlabs/Module/Connedit.php:905
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:896
+#: ../../Zotlabs/Module/Connedit.php:912
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -5929,11 +5929,11 @@ msgid ""
"any impact unless the inherited setting changes."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:897
+#: ../../Zotlabs/Module/Connedit.php:913
msgid "Last update:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:905
+#: ../../Zotlabs/Module/Connedit.php:921
msgid "Details"
msgstr ""
@@ -5976,8 +5976,8 @@ msgid "Please enter a link URL:"
msgstr ""
#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:781
-#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1458
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:809
+#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461
msgid "Encrypt text"
msgstr ""
@@ -6010,13 +6010,13 @@ msgstr ""
msgid "min"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:320
-#: ../../include/features.php:391 ../../include/nav.php:414
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:342
+#: ../../include/features.php:383 ../../include/nav.php:444
msgid "Photos"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:315
-#: ../../Zotlabs/Storage/Browser.php:272 ../../include/nav.php:422
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:337
+#: ../../Zotlabs/Storage/Browser.php:272 ../../include/nav.php:452
msgid "Files"
msgstr ""
@@ -6056,7 +6056,7 @@ msgstr ""
msgid "Submit and proceed"
msgstr ""
-#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2466
+#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2535
msgid "Menus"
msgstr ""
@@ -6108,12 +6108,12 @@ msgstr ""
msgid "Allow bookmarks"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2467
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2536
msgid "Layouts"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:323
-#: ../../include/nav.php:168 ../../include/nav.php:289
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:345
+#: ../../include/nav.php:168 ../../include/nav.php:319
#: ../../include/help.php:117 ../../include/help.php:125
msgid "Help"
msgstr ""
@@ -6130,11 +6130,11 @@ msgstr ""
msgid "Download PDL file"
msgstr ""
-#: ../../Zotlabs/Module/Notes.php:55
+#: ../../Zotlabs/Module/Notes.php:56
msgid "Notes App"
msgstr ""
-#: ../../Zotlabs/Module/Notes.php:56
+#: ../../Zotlabs/Module/Notes.php:57
msgid "A simple notes app with a widget (note: notes are not encrypted)"
msgstr ""
@@ -6179,13 +6179,13 @@ msgstr ""
msgid "Post not found."
msgstr ""
-#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:202
-#: ../../include/bbcode.php:354
+#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:200
+#: ../../include/bbcode.php:343
msgid "post"
msgstr ""
#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
-#: ../../include/text.php:2036
+#: ../../include/text.php:2099
msgid "comment"
msgstr ""
@@ -6194,21 +6194,72 @@ msgstr ""
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr ""
-#: ../../Zotlabs/Module/Pconfig.php:27 ../../Zotlabs/Module/Pconfig.php:63
+#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68
msgid "This setting requires special processing and editing has been blocked."
msgstr ""
-#: ../../Zotlabs/Module/Pconfig.php:52
+#: ../../Zotlabs/Module/Pconfig.php:57
msgid "Configuration Editor"
msgstr ""
-#: ../../Zotlabs/Module/Pconfig.php:53
+#: ../../Zotlabs/Module/Pconfig.php:58
msgid ""
"Warning: Changing some settings could render your channel inoperable. Please "
"leave this page unless you are comfortable with and knowledgeable about how "
"to correctly use this feature."
msgstr ""
+#: ../../Zotlabs/Module/Affinity.php:35
+msgid "Affinity Tool settings updated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:47
+msgid ""
+"This app presents a slider control in your connection editor and also on "
+"your network page. The slider represents your degree of friendship "
+"(affinity) with each connection. It allows you to zoom in or out and display "
+"conversations from only your closest friends or everybody in your stream."
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:52
+msgid "Affinity Tool App"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:57
+msgid ""
+"The numbers below represent the minimum and maximum slider default positions "
+"for your network/stream page as a percentage."
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:64
+msgid "Default maximum affinity level"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:64
+msgid "0-99 default 99"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:70
+msgid "Default minimum affinity level"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:70
+msgid "0-99 - default 0"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:76
+msgid "Persistent affinity levels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:76
+msgid ""
+"If disabled the max and min levels will be reset to default after page reload"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:84
+msgid "Affinity Tool Settings"
+msgstr ""
+
#: ../../Zotlabs/Module/Defperms.php:189
msgid "Default Permissions App"
msgstr ""
@@ -6252,76 +6303,76 @@ msgstr ""
msgid "Could not create privacy group."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:200
-#: ../../include/items.php:4167
+#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213
+#: ../../include/items.php:4275
msgid "Privacy group not found."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:77
+#: ../../Zotlabs/Module/Group.php:80
msgid "Privacy group updated."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:101
+#: ../../Zotlabs/Module/Group.php:106
msgid "Privacy Groups App"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:102
+#: ../../Zotlabs/Module/Group.php:107
msgid "Management of privacy groups"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:132 ../../Zotlabs/Module/Group.php:143
-#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Lib/Group.php:324
-#: ../../Zotlabs/Widget/Activity_filter.php:70 ../../include/nav.php:95
+#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153
+#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Lib/Group.php:324
+#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../include/nav.php:95
#: ../../include/group.php:320
msgid "Privacy Groups"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:133
+#: ../../Zotlabs/Module/Group.php:142
msgid "Add Group"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:137
+#: ../../Zotlabs/Module/Group.php:146
msgid "Privacy group name"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:239
+#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256
msgid "Members are visible to other channels"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:145 ../../Zotlabs/Module/Help.php:81
+#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81
msgid "Members"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:170
+#: ../../Zotlabs/Module/Group.php:182
msgid "Privacy group removed."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:172
+#: ../../Zotlabs/Module/Group.php:185
msgid "Unable to remove privacy group."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:234
+#: ../../Zotlabs/Module/Group.php:251
#, php-format
msgid "Privacy Group: %s"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:236
+#: ../../Zotlabs/Module/Group.php:253
msgid "Privacy group name: "
msgstr ""
-#: ../../Zotlabs/Module/Group.php:241
+#: ../../Zotlabs/Module/Group.php:258
msgid "Delete Group"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:251
+#: ../../Zotlabs/Module/Group.php:269
msgid "Group members"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:253
+#: ../../Zotlabs/Module/Group.php:271
msgid "Not in this group"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:285
+#: ../../Zotlabs/Module/Group.php:303
msgid "Click a channel to toggle membership"
msgstr ""
@@ -6416,7 +6467,7 @@ msgid "View this profile"
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824
-#: ../../include/channel.php:1326
+#: ../../include/channel.php:1375
msgid "Edit visibility"
msgstr ""
@@ -6428,7 +6479,7 @@ msgstr ""
msgid "Change cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1296
+#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1345
msgid "Change profile photo"
msgstr ""
@@ -6594,11 +6645,11 @@ msgstr ""
msgid "Communications"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1322
+#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1371
msgid "Profile Image"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1303
+#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1352
#: ../../include/nav.php:109
msgid "Edit Profiles"
msgstr ""
@@ -6678,7 +6729,7 @@ msgstr ""
msgid "Create a new channel"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:312
+#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:334
#: ../../include/nav.php:92
msgid "Channel Manager"
msgstr ""
@@ -6713,20 +6764,20 @@ msgstr ""
msgid "Delegated Channel"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:46
+#: ../../Zotlabs/Module/Cards.php:51
msgid "Cards App"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:47
+#: ../../Zotlabs/Module/Cards.php:52
msgid "Create personal planning cards"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:108
+#: ../../Zotlabs/Module/Cards.php:112
msgid "Add Card"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:203 ../../Zotlabs/Lib/Apps.php:303
-#: ../../include/nav.php:471
+#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325
+#: ../../include/nav.php:501
msgid "Cards"
msgstr ""
@@ -6825,8 +6876,8 @@ msgstr ""
msgid "Export selected"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:316
-#: ../../include/nav.php:494
+#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:338
+#: ../../include/nav.php:524
msgid "Webpages"
msgstr ""
@@ -6868,13 +6919,13 @@ msgid ""
"password."
msgstr ""
-#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:221
-#: ../../include/channel.php:606
+#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:222
+#: ../../include/channel.php:655
msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:226
-#: ../../include/channel.php:611
+#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:227
+#: ../../include/channel.php:660
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr ""
@@ -6903,69 +6954,69 @@ msgstr ""
msgid "Edit post"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:45
+#: ../../Zotlabs/Module/Dreport.php:56
msgid "Invalid message"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:78
+#: ../../Zotlabs/Module/Dreport.php:90
msgid "no results"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:93
+#: ../../Zotlabs/Module/Dreport.php:104
msgid "channel sync processed"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:97
+#: ../../Zotlabs/Module/Dreport.php:108
msgid "queued"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:101
+#: ../../Zotlabs/Module/Dreport.php:112
msgid "posted"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:105
+#: ../../Zotlabs/Module/Dreport.php:116
msgid "accepted for delivery"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:109
+#: ../../Zotlabs/Module/Dreport.php:120
msgid "updated"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:112
+#: ../../Zotlabs/Module/Dreport.php:123
msgid "update ignored"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:115
+#: ../../Zotlabs/Module/Dreport.php:126
msgid "permission denied"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:119
+#: ../../Zotlabs/Module/Dreport.php:130
msgid "recipient not found"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:122
+#: ../../Zotlabs/Module/Dreport.php:133
msgid "mail recalled"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:125
+#: ../../Zotlabs/Module/Dreport.php:136
msgid "duplicate mail received"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:128
+#: ../../Zotlabs/Module/Dreport.php:139
msgid "mail delivered"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:148
+#: ../../Zotlabs/Module/Dreport.php:159
#, php-format
msgid "Delivery report for %1$s"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:41
+#: ../../Zotlabs/Module/Dreport.php:162 ../../Zotlabs/Widget/Wiki_pages.php:41
#: ../../Zotlabs/Widget/Wiki_pages.php:98
msgid "Options"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:152
+#: ../../Zotlabs/Module/Dreport.php:163
msgid "Redeliver"
msgstr ""
@@ -6993,7 +7044,7 @@ msgstr ""
msgid "*"
msgstr ""
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:344
+#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:366
msgid "Channel Sources"
msgstr ""
@@ -7062,89 +7113,89 @@ msgstr ""
msgid "Unable to remove source."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:54
+#: ../../Zotlabs/Module/Like.php:56
msgid "Like/Dislike"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:59
+#: ../../Zotlabs/Module/Like.php:61
msgid "This action is restricted to members."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:60
+#: ../../Zotlabs/Module/Like.php:62
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
"\"register\">register as a new $Projectname member</a> to continue."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
-#: ../../Zotlabs/Module/Like.php:173
+#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137
+#: ../../Zotlabs/Module/Like.php:175
msgid "Invalid request."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:121 ../../include/conversation.php:122
+#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122
msgid "channel"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:150
+#: ../../Zotlabs/Module/Like.php:152
msgid "thing"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:196
+#: ../../Zotlabs/Module/Like.php:198
msgid "Channel unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:244
+#: ../../Zotlabs/Module/Like.php:246
msgid "Previous action reversed."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:438 ../../Zotlabs/Lib/Activity.php:1605
-#: ../../addon/diaspora/Receiver.php:1568 ../../addon/pubcrawl/as.php:1546
+#: ../../Zotlabs/Module/Like.php:447 ../../Zotlabs/Lib/Activity.php:1994
+#: ../../addon/diaspora/Receiver.php:1491 ../../addon/pubcrawl/as.php:1540
#: ../../include/conversation.php:160
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:440 ../../Zotlabs/Lib/Activity.php:1607
-#: ../../addon/pubcrawl/as.php:1548 ../../include/conversation.php:163
+#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:1996
+#: ../../addon/pubcrawl/as.php:1542 ../../include/conversation.php:163
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:442
+#: ../../Zotlabs/Module/Like.php:451
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:444
+#: ../../Zotlabs/Module/Like.php:453
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:446
+#: ../../Zotlabs/Module/Like.php:455
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:448 ../../addon/diaspora/Receiver.php:2111
+#: ../../Zotlabs/Module/Like.php:457 ../../addon/diaspora/Receiver.php:2137
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:450 ../../addon/diaspora/Receiver.php:2113
+#: ../../Zotlabs/Module/Like.php:459 ../../addon/diaspora/Receiver.php:2139
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:452 ../../addon/diaspora/Receiver.php:2115
+#: ../../Zotlabs/Module/Like.php:461 ../../addon/diaspora/Receiver.php:2141
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:564
+#: ../../Zotlabs/Module/Like.php:572
msgid "Action completed."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:565
+#: ../../Zotlabs/Module/Like.php:573
msgid "Thank you."
msgstr ""
@@ -7171,12 +7222,12 @@ msgstr ""
msgid "Homepage: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:323 ../../include/channel.php:1571
+#: ../../Zotlabs/Module/Directory.php:323 ../../include/channel.php:1620
msgid "Age:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1398
-#: ../../include/event.php:54 ../../include/event.php:86
+#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1447
+#: ../../include/event.php:58 ../../include/event.php:90
msgid "Location:"
msgstr ""
@@ -7184,17 +7235,17 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1600
+#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1649
msgid "Hometown:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:341 ../../include/channel.php:1606
+#: ../../Zotlabs/Module/Directory.php:341 ../../include/channel.php:1655
msgid "About:"
msgstr ""
#: ../../Zotlabs/Module/Directory.php:342 ../../Zotlabs/Module/Suggest.php:71
#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
-#: ../../include/conversation.php:1058 ../../include/channel.php:1383
+#: ../../include/conversation.php:1058 ../../include/channel.php:1432
#: ../../include/connections.php:110
msgid "Connect"
msgstr ""
@@ -7361,7 +7412,7 @@ msgid "Send"
msgstr ""
#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
-#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1453
+#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456
msgid "Set expiration date"
msgstr ""
@@ -7453,12 +7504,12 @@ msgstr ""
msgid "menu"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:183
+#: ../../Zotlabs/Module/Impel.php:185
#, php-format
msgid "%s element installed"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:186
+#: ../../Zotlabs/Module/Impel.php:188
#, php-format
msgid "%s element installation failed"
msgstr ""
@@ -7487,7 +7538,7 @@ msgstr ""
msgid "or select an existing folder (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:164
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:181
msgid "Save to Folder"
msgstr ""
@@ -7606,7 +7657,7 @@ msgstr ""
msgid "yes"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:289 ../../boot.php:1605
+#: ../../Zotlabs/Module/Register.php:289 ../../boot.php:1609
#: ../../include/nav.php:156
msgid "Register"
msgstr ""
@@ -7622,30 +7673,30 @@ msgstr ""
msgid "Cover Photos"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:269 ../../include/items.php:4544
+#: ../../Zotlabs/Module/Cover_photo.php:269 ../../include/items.php:4652
msgid "female"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:270 ../../include/items.php:4545
+#: ../../Zotlabs/Module/Cover_photo.php:270 ../../include/items.php:4653
#, php-format
msgid "%1$s updated her %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:271 ../../include/items.php:4546
+#: ../../Zotlabs/Module/Cover_photo.php:271 ../../include/items.php:4654
msgid "male"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:272 ../../include/items.php:4547
+#: ../../Zotlabs/Module/Cover_photo.php:272 ../../include/items.php:4655
#, php-format
msgid "%1$s updated his %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:274 ../../include/items.php:4549
+#: ../../Zotlabs/Module/Cover_photo.php:274 ../../include/items.php:4657
#, php-format
msgid "%1$s updated their %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:276 ../../include/channel.php:2088
+#: ../../Zotlabs/Module/Cover_photo.php:276 ../../include/channel.php:2137
msgid "cover photo"
msgstr ""
@@ -7661,7 +7712,7 @@ msgstr ""
msgid "Documentation Search"
msgstr ""
-#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:404
+#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:434
msgid "About"
msgstr ""
@@ -7685,11 +7736,11 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: ../../Zotlabs/Module/Display.php:393
+#: ../../Zotlabs/Module/Display.php:391
msgid "Article"
msgstr ""
-#: ../../Zotlabs/Module/Display.php:445
+#: ../../Zotlabs/Module/Display.php:443
msgid "Item has been removed."
msgstr ""
@@ -7705,27 +7756,27 @@ msgstr ""
msgid "Select a tag to remove: "
msgstr ""
-#: ../../Zotlabs/Module/Network.php:107
+#: ../../Zotlabs/Module/Network.php:109
msgid "No such group"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:148
+#: ../../Zotlabs/Module/Network.php:158
msgid "No such channel"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:231
+#: ../../Zotlabs/Module/Network.php:242
msgid "Privacy group is empty"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:242
+#: ../../Zotlabs/Module/Network.php:252
msgid "Privacy group: "
msgstr ""
-#: ../../Zotlabs/Module/Network.php:291 ../../addon/redred/redred.php:65
+#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29
msgid "Invalid channel."
msgstr ""
-#: ../../Zotlabs/Module/Acl.php:359
+#: ../../Zotlabs/Module/Acl.php:360
msgid "network"
msgstr ""
@@ -7829,47 +7880,43 @@ msgstr ""
msgid "Expiring accounts"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:116
-msgid "Clones"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:122
+#: ../../Zotlabs/Module/Admin.php:120
msgid "Message queues"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:136
+#: ../../Zotlabs/Module/Admin.php:134
msgid "Your software should be updated"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:141
+#: ../../Zotlabs/Module/Admin.php:139
msgid "Summary"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:144
+#: ../../Zotlabs/Module/Admin.php:142
msgid "Registered accounts"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:145
+#: ../../Zotlabs/Module/Admin.php:143
msgid "Pending registrations"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:146
+#: ../../Zotlabs/Module/Admin.php:144
msgid "Registered channels"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:147
+#: ../../Zotlabs/Module/Admin.php:145
msgid "Active addons"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:148
+#: ../../Zotlabs/Module/Admin.php:146
msgid "Version"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:149
+#: ../../Zotlabs/Module/Admin.php:147
msgid "Repository version (master)"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:150
+#: ../../Zotlabs/Module/Admin.php:148
msgid "Repository version (dev)"
msgstr ""
@@ -7922,7 +7969,7 @@ msgid ""
"Password reset failed."
msgstr ""
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1634
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1638
msgid "Password Reset"
msgstr ""
@@ -7984,7 +8031,7 @@ msgid "OAuth authentication tokens for mobile and remote apps"
msgstr ""
#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140
-#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:784
+#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:614
msgid "Consumer Key"
msgstr ""
@@ -8001,14 +8048,39 @@ msgid "Connected OAuth Apps"
msgstr ""
#: ../../Zotlabs/Module/Notifications.php:60
-#: ../../Zotlabs/Lib/ThreadItem.php:422
+#: ../../Zotlabs/Lib/ThreadItem.php:450
msgid "Mark all seen"
msgstr ""
-#: ../../Zotlabs/Lib/Activity.php:1417 ../../Zotlabs/Lib/Activity.php:1614
-#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1221
-#: ../../addon/pubcrawl/as.php:1376 ../../addon/pubcrawl/as.php:1555
-#: ../../include/network.php:1778
+#: ../../Zotlabs/Lib/Activity.php:1458
+#, php-format
+msgid "Likes %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1461
+#, php-format
+msgid "Doesn't like %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1464
+#, php-format
+msgid "Will attend %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1467
+#, php-format
+msgid "Will not attend %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1470
+#, php-format
+msgid "May attend %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1806 ../../Zotlabs/Lib/Activity.php:2003
+#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1214
+#: ../../addon/pubcrawl/as.php:1369 ../../addon/pubcrawl/as.php:1549
+#: ../../include/network.php:1720
msgid "ActivityPub"
msgstr ""
@@ -8036,179 +8108,183 @@ msgstr ""
msgid "5. Wizard - I probably know more than you do"
msgstr ""
-#: ../../Zotlabs/Lib/Libzot.php:663 ../../include/zot.php:800
+#: ../../Zotlabs/Lib/Libzot.php:652 ../../include/zot.php:802
msgid "Unable to verify channel signature"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:301
+#: ../../Zotlabs/Lib/Apps.php:322
msgid "Apps"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:304
+#: ../../Zotlabs/Lib/Apps.php:323
+msgid "Affinity Tool"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:326
msgid "Site Admin"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:305 ../../addon/buglink/buglink.php:16
+#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16
msgid "Report Bug"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:306 ../../include/nav.php:460
+#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:490
msgid "Bookmarks"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:307 ../../Zotlabs/Widget/Chatroom_list.php:16
-#: ../../include/nav.php:447 ../../include/nav.php:450
+#: ../../Zotlabs/Lib/Apps.php:329 ../../Zotlabs/Widget/Chatroom_list.php:16
+#: ../../include/nav.php:477 ../../include/nav.php:480
msgid "Chatrooms"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:309
+#: ../../Zotlabs/Lib/Apps.php:331
msgid "Remote Diagnostics"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:310 ../../include/features.php:373
+#: ../../Zotlabs/Lib/Apps.php:332 ../../include/features.php:365
msgid "Suggest Channels"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:311 ../../boot.php:1625 ../../include/nav.php:118
+#: ../../Zotlabs/Lib/Apps.php:333 ../../boot.php:1629 ../../include/nav.php:118
#: ../../include/nav.php:122
msgid "Login"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:313
+#: ../../Zotlabs/Lib/Apps.php:335
msgid "Stream"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:317 ../../include/nav.php:509
+#: ../../Zotlabs/Lib/Apps.php:339 ../../include/nav.php:539
msgid "Wiki"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:318 ../../include/features.php:96
+#: ../../Zotlabs/Lib/Apps.php:340 ../../include/features.php:96
msgid "Channel Home"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:321 ../../include/features.php:269
+#: ../../Zotlabs/Lib/Apps.php:343 ../../include/features.php:269
msgid "Events"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:322 ../../include/features.php:176
+#: ../../Zotlabs/Lib/Apps.php:344 ../../include/features.php:176
msgid "Directory"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:324
+#: ../../Zotlabs/Lib/Apps.php:346
msgid "Mail"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:327
+#: ../../Zotlabs/Lib/Apps.php:349
msgid "Chat"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:329
+#: ../../Zotlabs/Lib/Apps.php:351
msgid "Probe"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:330
+#: ../../Zotlabs/Lib/Apps.php:352
msgid "Suggest"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:331
+#: ../../Zotlabs/Lib/Apps.php:353
msgid "Random Channel"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:332
+#: ../../Zotlabs/Lib/Apps.php:354
msgid "Invite"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:333 ../../Zotlabs/Widget/Admin.php:26
+#: ../../Zotlabs/Lib/Apps.php:355 ../../Zotlabs/Widget/Admin.php:26
msgid "Features"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:334 ../../addon/openid/MysqlProvider.php:69
+#: ../../Zotlabs/Lib/Apps.php:356 ../../addon/openid/MysqlProvider.php:69
msgid "Language"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:335
+#: ../../Zotlabs/Lib/Apps.php:357
msgid "Post"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:336 ../../addon/openid/MysqlProvider.php:58
+#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:58
#: ../../addon/openid/MysqlProvider.php:59
#: ../../addon/openid/MysqlProvider.php:60
msgid "Profile Photo"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:338 ../../include/features.php:405
+#: ../../Zotlabs/Lib/Apps.php:360 ../../include/features.php:397
msgid "Profiles"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:340
+#: ../../Zotlabs/Lib/Apps.php:362
msgid "Notifications"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:341
+#: ../../Zotlabs/Lib/Apps.php:363
msgid "Order Apps"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:342 ../../include/features.php:82
+#: ../../Zotlabs/Lib/Apps.php:364 ../../include/features.php:82
msgid "CalDAV"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:343
+#: ../../Zotlabs/Lib/Apps.php:365
msgid "CardDAV"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:345
+#: ../../Zotlabs/Lib/Apps.php:367
msgid "Guest Access"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:346 ../../Zotlabs/Widget/Notes.php:21
+#: ../../Zotlabs/Lib/Apps.php:368 ../../Zotlabs/Widget/Notes.php:21
msgid "Notes"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:347
+#: ../../Zotlabs/Lib/Apps.php:369
msgid "OAuth Apps Manager"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:348
+#: ../../Zotlabs/Lib/Apps.php:370
msgid "OAuth2 Apps Manager"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:349
+#: ../../Zotlabs/Lib/Apps.php:371
msgid "PDL Editor"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:351
+#: ../../Zotlabs/Lib/Apps.php:373
msgid "Premium Channel"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:353
+#: ../../Zotlabs/Lib/Apps.php:375
msgid "My Chatrooms"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:354
+#: ../../Zotlabs/Lib/Apps.php:376
msgid "Channel Export"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:531
+#: ../../Zotlabs/Lib/Apps.php:553
msgid "Purchase"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:536
+#: ../../Zotlabs/Lib/Apps.php:558
msgid "Undelete"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:545
+#: ../../Zotlabs/Lib/Apps.php:567
msgid "Add to app-tray"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:546
+#: ../../Zotlabs/Lib/Apps.php:568
msgid "Remove from app-tray"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:547
+#: ../../Zotlabs/Lib/Apps.php:569
msgid "Pin to navbar"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:548
+#: ../../Zotlabs/Lib/Apps.php:570
msgid "Unpin from navbar"
msgstr ""
@@ -8305,8 +8381,8 @@ msgstr ""
msgid "Compare"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:746
-#: ../../include/bbcode.php:916
+#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:735
+#: ../../include/bbcode.php:905
msgid "Different viewers will see this text differently"
msgstr ""
@@ -8441,7 +8517,7 @@ msgstr ""
msgid "Room is full"
msgstr ""
-#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2571
+#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2591
#, php-format
msgid "Unable to verify site signature for %s"
msgstr ""
@@ -8450,8 +8526,8 @@ msgstr ""
msgid "$Projectname Notification"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:308
-#: ../../addon/diaspora/util.php:321 ../../addon/diaspora/p.php:48
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:313
+#: ../../addon/diaspora/util.php:326 ../../addon/diaspora/p.php:48
msgid "$projectname"
msgstr ""
@@ -8713,11 +8789,11 @@ msgstr ""
msgid "edited a comment dated %s"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWiki.php:152
+#: ../../Zotlabs/Lib/NativeWiki.php:143
msgid "Wiki updated successfully"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWiki.php:206
+#: ../../Zotlabs/Lib/NativeWiki.php:197
msgid "Wiki files deleted successfully"
msgstr ""
@@ -8731,210 +8807,214 @@ msgstr ""
msgid "Update %s failed. See error logs."
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:99 ../../include/conversation.php:700
+#: ../../Zotlabs/Lib/ThreadItem.php:102 ../../include/conversation.php:700
msgid "Private Message"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:154 ../../Zotlabs/Storage/Browser.php:280
+#: ../../Zotlabs/Lib/ThreadItem.php:129
+msgid "Privacy conflict. Discretion advised."
+msgstr ""
+
+#: ../../Zotlabs/Lib/ThreadItem.php:171 ../../Zotlabs/Storage/Browser.php:280
msgid "Admin Delete"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:160 ../../include/conversation.php:690
+#: ../../Zotlabs/Lib/ThreadItem.php:177 ../../include/conversation.php:690
msgid "Select"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I will attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I will not attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I might attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I agree"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I disagree"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I abstain"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:249 ../../include/conversation.php:695
+#: ../../Zotlabs/Lib/ThreadItem.php:266 ../../include/conversation.php:695
msgid "Toggle Star Status"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:260 ../../include/conversation.php:707
+#: ../../Zotlabs/Lib/ThreadItem.php:277 ../../include/conversation.php:707
msgid "Message signature validated"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/conversation.php:708
+#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:708
msgid "Message signature incorrect"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:269
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "Add Tag"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:273 ../../include/conversation.php:891
+#: ../../Zotlabs/Lib/ThreadItem.php:290 ../../include/conversation.php:891
msgid "Conversation Tools"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:289 ../../include/taxonomy.php:575
+#: ../../Zotlabs/Lib/ThreadItem.php:306 ../../include/taxonomy.php:575
msgid "like"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:290 ../../include/taxonomy.php:576
+#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:576
msgid "dislike"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:294
+#: ../../Zotlabs/Lib/ThreadItem.php:317
msgid "Share This"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:294
+#: ../../Zotlabs/Lib/ThreadItem.php:317
msgid "share"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:303
+#: ../../Zotlabs/Lib/ThreadItem.php:327
msgid "Delivery Report"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:321
+#: ../../Zotlabs/Lib/ThreadItem.php:347
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Lib/ThreadItem.php:355 ../../Zotlabs/Lib/ThreadItem.php:356
+#: ../../Zotlabs/Lib/ThreadItem.php:381 ../../Zotlabs/Lib/ThreadItem.php:382
#, php-format
msgid "View %s's profile - %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:359
+#: ../../Zotlabs/Lib/ThreadItem.php:385
msgid "to"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:360
+#: ../../Zotlabs/Lib/ThreadItem.php:386
msgid "via"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:361
+#: ../../Zotlabs/Lib/ThreadItem.php:387
msgid "Wall-to-Wall"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:362
+#: ../../Zotlabs/Lib/ThreadItem.php:388
msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:375 ../../include/conversation.php:766
+#: ../../Zotlabs/Lib/ThreadItem.php:402 ../../include/conversation.php:766
#, php-format
msgid "from %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:378 ../../include/conversation.php:769
+#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:769
#, php-format
msgid "last edited: %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:379 ../../include/conversation.php:770
+#: ../../Zotlabs/Lib/ThreadItem.php:406 ../../include/conversation.php:770
#, php-format
msgid "Expires: %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:387
+#: ../../Zotlabs/Lib/ThreadItem.php:414
msgid "Attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:388
+#: ../../Zotlabs/Lib/ThreadItem.php:415
msgid "Attendance Options"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:389
+#: ../../Zotlabs/Lib/ThreadItem.php:416
msgid "Vote"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:390
+#: ../../Zotlabs/Lib/ThreadItem.php:417
msgid "Voting Options"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:411
+#: ../../Zotlabs/Lib/ThreadItem.php:439
#: ../../addon/bookmarker/bookmarker.php:38
msgid "Save Bookmarks"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:412
+#: ../../Zotlabs/Lib/ThreadItem.php:440
msgid "Add to Calendar"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:440 ../../include/conversation.php:483
+#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483
msgid "This is an unsaved preview"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:473 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:501 ../../include/js_strings.php:7
#, php-format
msgid "%s show all"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:768 ../../addon/hsse/hsse.php:200
-#: ../../include/conversation.php:1403
+#: ../../Zotlabs/Lib/ThreadItem.php:796 ../../addon/hsse/hsse.php:200
+#: ../../include/conversation.php:1406
msgid "Bold"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:769 ../../addon/hsse/hsse.php:201
-#: ../../include/conversation.php:1404
+#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:201
+#: ../../include/conversation.php:1407
msgid "Italic"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:770 ../../addon/hsse/hsse.php:202
-#: ../../include/conversation.php:1405
+#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:202
+#: ../../include/conversation.php:1408
msgid "Underline"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:771 ../../addon/hsse/hsse.php:203
-#: ../../include/conversation.php:1406
+#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:203
+#: ../../include/conversation.php:1409
msgid "Quote"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:772 ../../addon/hsse/hsse.php:204
-#: ../../include/conversation.php:1407
+#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:204
+#: ../../include/conversation.php:1410
msgid "Code"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:773
+#: ../../Zotlabs/Lib/ThreadItem.php:801
msgid "Image"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:774 ../../addon/hsse/hsse.php:205
-#: ../../include/conversation.php:1408
+#: ../../Zotlabs/Lib/ThreadItem.php:802 ../../addon/hsse/hsse.php:205
+#: ../../include/conversation.php:1411
msgid "Attach/Upload file"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:775
+#: ../../Zotlabs/Lib/ThreadItem.php:803
msgid "Insert Link"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:776
+#: ../../Zotlabs/Lib/ThreadItem.php:804
msgid "Video"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:786
+#: ../../Zotlabs/Lib/ThreadItem.php:814
msgid "Your full name (required)"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:787
+#: ../../Zotlabs/Lib/ThreadItem.php:815
msgid "Your email address (required)"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:788
+#: ../../Zotlabs/Lib/ThreadItem.php:816
msgid "Your website URL (optional)"
msgstr ""
@@ -8954,7 +9034,7 @@ msgstr ""
msgid "parent"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2824
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2941
msgid "Collection"
msgstr ""
@@ -8966,8 +9046,8 @@ msgstr ""
msgid "Addressbook"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:433
-#: ../../include/nav.php:436
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:463
+#: ../../include/nav.php:466
msgid "Calendar"
msgstr ""
@@ -9018,7 +9098,7 @@ msgid "Drop files here to immediately upload"
msgstr ""
#: ../../Zotlabs/Widget/Forums.php:100
-#: ../../Zotlabs/Widget/Activity_filter.php:102
+#: ../../Zotlabs/Widget/Activity_filter.php:73
#: ../../Zotlabs/Widget/Notifications.php:119
#: ../../Zotlabs/Widget/Notifications.php:120
msgid "Forums"
@@ -9101,8 +9181,8 @@ msgid "Select an addressbook to import to"
msgstr ""
#: ../../Zotlabs/Widget/Appcategories.php:43
-#: ../../include/contact_widgets.php:97 ../../include/contact_widgets.php:141
-#: ../../include/contact_widgets.php:186 ../../include/taxonomy.php:409
+#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139
+#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409
#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511
#: ../../include/taxonomy.php:532
msgid "Categories"
@@ -9110,8 +9190,8 @@ msgstr ""
#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31
#: ../../widget/Netselect/Netselect.php:26 ../../include/contact_widgets.php:56
-#: ../../include/contact_widgets.php:100 ../../include/contact_widgets.php:144
-#: ../../include/contact_widgets.php:189
+#: ../../include/contact_widgets.php:99 ../../include/contact_widgets.php:142
+#: ../../include/contact_widgets.php:187
msgid "Everything"
msgstr ""
@@ -9180,71 +9260,67 @@ msgctxt "widget"
msgid "Activity"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:26
-msgid "Personal Posts"
-msgstr ""
-
-#: ../../Zotlabs/Widget/Activity_filter.php:30
-msgid "Show posts that mention or involve me"
+#: ../../Zotlabs/Widget/Activity_filter.php:36
+#, php-format
+msgid "Show posts related to the %s privacy group"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:41
-msgid "Starred Posts"
+#: ../../Zotlabs/Widget/Activity_filter.php:45
+msgid "Show my privacy groups"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:45
-msgid "Show posts that I have starred"
+#: ../../Zotlabs/Widget/Activity_filter.php:66
+msgid "Show posts to this forum"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:65
-#, php-format
-msgid "Show posts related to the %s privacy group"
+#: ../../Zotlabs/Widget/Activity_filter.php:77
+msgid "Show forums"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:74
-msgid "Show my privacy groups"
+#: ../../Zotlabs/Widget/Activity_filter.php:91
+msgid "Starred Posts"
msgstr ""
#: ../../Zotlabs/Widget/Activity_filter.php:95
-msgid "Show posts to this forum"
+msgid "Show posts that I have starred"
msgstr ""
#: ../../Zotlabs/Widget/Activity_filter.php:106
-msgid "Show forums"
+msgid "Personal Posts"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:130
+#: ../../Zotlabs/Widget/Activity_filter.php:110
+msgid "Show posts that mention or involve me"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Activity_filter.php:131
#, php-format
msgid "Show posts that I have filed to %s"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:136
+#: ../../Zotlabs/Widget/Activity_filter.php:137
#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
#: ../../include/features.php:325
msgid "Saved Folders"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:140
+#: ../../Zotlabs/Widget/Activity_filter.php:141
msgid "Show filed post categories"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:154
+#: ../../Zotlabs/Widget/Activity_filter.php:155
msgid "Panel search"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:164
-#: ../../Zotlabs/Widget/Notifications.php:27
-#: ../../Zotlabs/Widget/Notifications.php:46
-#: ../../Zotlabs/Widget/Notifications.php:122
-#: ../../Zotlabs/Widget/Notifications.php:153
+#: ../../Zotlabs/Widget/Activity_filter.php:165
msgid "Filter by name"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:179
+#: ../../Zotlabs/Widget/Activity_filter.php:180
msgid "Remove active filter"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:195
+#: ../../Zotlabs/Widget/Activity_filter.php:196
msgid "Stream Filters"
msgstr ""
@@ -9318,7 +9394,7 @@ msgstr ""
msgid "Page name"
msgstr ""
-#: ../../Zotlabs/Widget/Affinity.php:45
+#: ../../Zotlabs/Widget/Affinity.php:54
msgid "Refresh"
msgstr ""
@@ -9467,15 +9543,11 @@ msgstr ""
msgid "Channel settings"
msgstr ""
-#: ../../Zotlabs/Widget/Settings_menu.php:47
+#: ../../Zotlabs/Widget/Settings_menu.php:46
msgid "Display settings"
msgstr ""
#: ../../Zotlabs/Widget/Settings_menu.php:53
-msgid "Addon settings"
-msgstr ""
-
-#: ../../Zotlabs/Widget/Settings_menu.php:60
msgid "Manage locations"
msgstr ""
@@ -9505,6 +9577,13 @@ msgstr ""
msgid "Show new posts only"
msgstr ""
+#: ../../Zotlabs/Widget/Notifications.php:27
+#: ../../Zotlabs/Widget/Notifications.php:46
+#: ../../Zotlabs/Widget/Notifications.php:122
+#: ../../Zotlabs/Widget/Notifications.php:153
+msgid "Filter by name or address"
+msgstr ""
+
#: ../../Zotlabs/Widget/Notifications.php:35
msgid "New Home Activity"
msgstr ""
@@ -9611,67 +9690,67 @@ msgstr ""
msgid "Network/Protocol"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1782
+#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1724
msgid "Zot"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1780
+#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1722
msgid "Diaspora"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1773
-#: ../../include/network.php:1774
+#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1715
+#: ../../include/network.php:1716
msgid "Friendica"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1775
+#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1717
msgid "OStatus"
msgstr ""
-#: ../../boot.php:1604
+#: ../../boot.php:1608
msgid "Create an account to access services and applications"
msgstr ""
-#: ../../boot.php:1624 ../../include/nav.php:103 ../../include/nav.php:132
+#: ../../boot.php:1628 ../../include/nav.php:103 ../../include/nav.php:132
#: ../../include/nav.php:151
msgid "Logout"
msgstr ""
-#: ../../boot.php:1628
+#: ../../boot.php:1632
msgid "Login/Email"
msgstr ""
-#: ../../boot.php:1629
+#: ../../boot.php:1633
msgid "Password"
msgstr ""
-#: ../../boot.php:1630
+#: ../../boot.php:1634
msgid "Remember me"
msgstr ""
-#: ../../boot.php:1633
+#: ../../boot.php:1637
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:2431
+#: ../../boot.php:2433
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr ""
-#: ../../boot.php:2436
+#: ../../boot.php:2438
msgid "Website SSL certificate is not valid. Please correct."
msgstr ""
-#: ../../boot.php:2552
+#: ../../boot.php:2554
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr ""
-#: ../../boot.php:2557
+#: ../../boot.php:2559
msgid "Cron/Scheduled tasks not running."
msgstr ""
-#: ../../boot.php:2558 ../../include/datetime.php:238
+#: ../../boot.php:2560 ../../include/datetime.php:238
msgid "never"
msgstr ""
@@ -9803,7 +9882,7 @@ msgstr ""
msgid "Errors encountered deleting database table "
msgstr ""
-#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:782
+#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:612
msgid "Submit Settings"
msgstr ""
@@ -9928,15 +10007,23 @@ msgstr ""
msgid "You have no rendezvous. Press the button above to create a rendezvous!"
msgstr ""
-#: ../../addon/skeleton/skeleton.php:59
+#: ../../addon/skeleton/Mod_Skeleton.php:32
+msgid "Skeleton App"
+msgstr ""
+
+#: ../../addon/skeleton/Mod_Skeleton.php:33
+msgid "A skeleton for addons, you can copy/paste"
+msgstr ""
+
+#: ../../addon/skeleton/Mod_Skeleton.php:40
msgid "Some setting"
msgstr ""
-#: ../../addon/skeleton/skeleton.php:61
+#: ../../addon/skeleton/Mod_Skeleton.php:40
msgid "A setting"
msgstr ""
-#: ../../addon/skeleton/skeleton.php:64
+#: ../../addon/skeleton/Mod_Skeleton.php:48
msgid "Skeleton Settings"
msgstr ""
@@ -9947,6 +10034,10 @@ msgid ""
"locations."
msgstr ""
+#: ../../addon/gnusoc/Mod_Gnusoc.php:22
+msgid "GNU-Social Protocol App"
+msgstr ""
+
#: ../../addon/gnusoc/Mod_Gnusoc.php:34
msgid "GNU-Social Protocol"
msgstr ""
@@ -9960,16 +10051,21 @@ msgstr ""
msgid "%1$s is now following %2$s"
msgstr ""
-#: ../../addon/planets/planets.php:121
-msgid "Planets Settings updated."
+#: ../../addon/planets/Mod_Planets.php:20
+#: ../../addon/planets/Mod_Planets.php:23
+msgid "Random Planet App"
msgstr ""
-#: ../../addon/planets/planets.php:149
-msgid "Enable Planets Plugin"
+#: ../../addon/planets/Mod_Planets.php:23
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26
+#: ../../addon/nsabait/Mod_Nsabait.php:24 ../../addon/hsse/Mod_Hsse.php:26
+#: ../../addon/authchoose/Mod_Authchoose.php:33
+msgid "Installed"
msgstr ""
-#: ../../addon/planets/planets.php:153
-msgid "Planets Settings"
+#: ../../addon/planets/Mod_Planets.php:25
+msgid ""
+"Set a random planet from the Star Wars Empire as your location when posting"
msgstr ""
#: ../../addon/openclipatar/openclipatar.php:50
@@ -10001,7 +10097,7 @@ msgstr ""
msgid "Page to load after image selection."
msgstr ""
-#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1307
+#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1356
#: ../../include/nav.php:111
msgid "Edit Profile"
msgstr ""
@@ -10090,10 +10186,97 @@ msgid ""
"view"
msgstr ""
+#: ../../addon/totp/Settings/Totp.php:90
+msgid ""
+"You haven't set a TOTP secret yet.\n"
+"Please click the button below to generate one and register this site\n"
+"with your preferred authenticator app."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:93
+msgid "Your TOTP secret is"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:94
+msgid ""
+"Be sure to save it somewhere in case you lose or replace your mobile "
+"device.\n"
+"Use your mobile device to scan the QR code below to register this site\n"
+"with your preferred authenticator app."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:99
+msgid "Test"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:100
+msgid "Generate New Secret"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:101
+msgid "Go"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:102
+msgid "Enter your password"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:103
+msgid "enter TOTP code from your device"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:104
+msgid "Pass!"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:105
+msgid "Fail"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:106
+msgid "Incorrect password, try again."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:107
+msgid "Record your new TOTP secret and rescan the QR code above."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:115
+msgid "TOTP Settings"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:23
+msgid "TOTP Two-Step Verification"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:24
+msgid "Enter the 2-step verification generated by your authenticator app:"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:25
+msgid "Success!"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:26
+msgid "Invalid code, please try again."
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:27
+msgid "Too many invalid codes..."
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:28
+msgid "Verify"
+msgstr ""
+
#: ../../addon/wppost/Mod_Wppost.php:28
msgid "Wordpress Settings saved."
msgstr ""
+#: ../../addon/wppost/Mod_Wppost.php:41
+msgid "Wordpress Post App"
+msgstr ""
+
#: ../../addon/wppost/Mod_Wppost.php:42
msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API"
msgstr ""
@@ -10151,6 +10334,10 @@ msgstr ""
msgid "NSFW Settings saved."
msgstr ""
+#: ../../addon/nsfw/Mod_Nsfw.php:33
+msgid "NSFW App"
+msgstr ""
+
#: ../../addon/nsfw/Mod_Nsfw.php:34
msgid "Collapse content that contains predefined words"
msgstr ""
@@ -10177,56 +10364,80 @@ msgstr ""
msgid "NSFW"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:42
-msgid "Post to Insanejournal"
+#: ../../addon/queueworker/Mod_Queueworker.php:73
+msgid "Max queueworker threads"
+msgstr ""
+
+#: ../../addon/queueworker/Mod_Queueworker.php:87
+msgid "Assume workers dead after ___ seconds"
+msgstr ""
+
+#: ../../addon/queueworker/Mod_Queueworker.php:99
+msgid "Queueworker Settings"
+msgstr ""
+
+#: ../../addon/ijpost/Mod_Ijpost.php:23
+msgid "Insane Journal Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/ijpost/Mod_Ijpost.php:35
+msgid "Insane Journal Crosspost Connector App"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:73
-msgid "Enable InsaneJournal Post Plugin"
+#: ../../addon/ijpost/Mod_Ijpost.php:36
+msgid "Relay public postings to Insane Journal"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:77
+#: ../../addon/ijpost/Mod_Ijpost.php:53
msgid "InsaneJournal username"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:81
+#: ../../addon/ijpost/Mod_Ijpost.php:57
msgid "InsaneJournal password"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:85
+#: ../../addon/ijpost/Mod_Ijpost.php:61
msgid "Post to InsaneJournal by default"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:89
-msgid "InsaneJournal Post Settings"
+#: ../../addon/ijpost/Mod_Ijpost.php:69
+msgid "Insane Journal Crosspost Connector"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:104
-msgid "Insane Journal Settings saved."
+#: ../../addon/ijpost/ijpost.php:45
+msgid "Post to Insane Journal"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:42
+#: ../../addon/dwpost/dwpost.php:48
msgid "Post to Dreamwidth"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:73
-msgid "Enable Dreamwidth Post Plugin"
+#: ../../addon/dwpost/Mod_Dwpost.php:24
+msgid "Dreamwidth Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/dwpost/Mod_Dwpost.php:36
+msgid "Dreamwidth Crosspost Connector App"
+msgstr ""
+
+#: ../../addon/dwpost/Mod_Dwpost.php:37
+msgid "Relay public postings to Dreamwidth"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:77
+#: ../../addon/dwpost/Mod_Dwpost.php:52
msgid "Dreamwidth username"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:81
+#: ../../addon/dwpost/Mod_Dwpost.php:56
msgid "Dreamwidth password"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:85
+#: ../../addon/dwpost/Mod_Dwpost.php:60
msgid "Post to Dreamwidth by default"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:89
-msgid "Dreamwidth Post Settings"
+#: ../../addon/dwpost/Mod_Dwpost.php:68
+msgid "Dreamwidth Crosspost Connector"
msgstr ""
#: ../../addon/notifyadmin/notifyadmin.php:34
@@ -10360,68 +10571,72 @@ msgstr ""
msgid "0 or blank to import all available"
msgstr ""
-#: ../../addon/irc/irc.php:45
-msgid "Channels to auto connect"
+#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41
+msgid "Popular Channels"
msgstr ""
-#: ../../addon/irc/irc.php:45 ../../addon/irc/irc.php:49
-msgid "Comma separated list"
+#: ../../addon/irc/irc.php:37
+msgid "Channels to auto connect"
msgstr ""
-#: ../../addon/irc/irc.php:49 ../../addon/irc/irc.php:96
-msgid "Popular Channels"
+#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41
+msgid "Comma separated list"
msgstr ""
-#: ../../addon/irc/irc.php:53
+#: ../../addon/irc/irc.php:45
msgid "IRC Settings"
msgstr ""
-#: ../../addon/irc/irc.php:69
+#: ../../addon/irc/irc.php:54
msgid "IRC settings saved."
msgstr ""
-#: ../../addon/irc/irc.php:74
+#: ../../addon/irc/irc.php:58
msgid "IRC Chatroom"
msgstr ""
-#: ../../addon/gallery/gallery.php:47 ../../addon/gallery/Mod_Gallery.php:115
+#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:135
msgid "Gallery"
msgstr ""
-#: ../../addon/gallery/gallery.php:50
+#: ../../addon/gallery/gallery.php:41
msgid "Photo Gallery"
msgstr ""
-#: ../../addon/gallery/Mod_Gallery.php:57
+#: ../../addon/gallery/Mod_Gallery.php:58
+msgid "Gallery App"
+msgstr ""
+
+#: ../../addon/gallery/Mod_Gallery.php:59
msgid "A simple gallery for your photo albums"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:42
-msgid "Post to LiveJournal"
+#: ../../addon/ljpost/Mod_Ljpost.php:36
+msgid "Livejournal Crosspost Connector App"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:70
-msgid "Enable LiveJournal Post Plugin"
+#: ../../addon/ljpost/Mod_Ljpost.php:37
+msgid "Relay public posts to Livejournal"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:74
-msgid "LiveJournal username"
+#: ../../addon/ljpost/Mod_Ljpost.php:54
+msgid "Livejournal username"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:78
-msgid "LiveJournal password"
+#: ../../addon/ljpost/Mod_Ljpost.php:58
+msgid "Livejournal password"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:82
-msgid "Post to LiveJournal by default"
+#: ../../addon/ljpost/Mod_Ljpost.php:62
+msgid "Post to Livejournal by default"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:86
-msgid "LiveJournal Post Settings"
+#: ../../addon/ljpost/Mod_Ljpost.php:70
+msgid "Livejournal Crosspost Connector"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:101
-msgid "LiveJournal Settings saved."
+#: ../../addon/ljpost/ljpost.php:45
+msgid "Post to Livejournal"
msgstr ""
#: ../../addon/openid/openid.php:49
@@ -10442,7 +10657,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/redred.php:111
+#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75
msgid "Nickname"
msgstr ""
@@ -10503,12 +10718,12 @@ msgid "Login failed."
msgstr ""
#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60
-#: ../../include/selectors.php:77 ../../include/channel.php:1487
+#: ../../include/selectors.php:77 ../../include/channel.php:1536
msgid "Male"
msgstr ""
#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60
-#: ../../include/selectors.php:77 ../../include/channel.php:1485
+#: ../../include/selectors.php:77 ../../include/channel.php:1534
msgid "Female"
msgstr ""
@@ -10528,6 +10743,10 @@ msgstr ""
msgid "&lt;blush&gt;"
msgstr ""
+#: ../../addon/startpage/Mod_Startpage.php:50
+msgid "Startpage App"
+msgstr ""
+
#: ../../addon/startpage/Mod_Startpage.php:51
msgid "Set a preferred page to load on login from home page"
msgstr ""
@@ -10699,6 +10918,11 @@ msgstr ""
msgid "declared undying love for"
msgstr ""
+#: ../../addon/diaspora/Receiver.php:1495
+#, php-format
+msgid "%1$s dislikes %2$s's %3$s"
+msgstr ""
+
#: ../../addon/diaspora/Mod_Diaspora.php:40
msgid "Diaspora Protocol Settings updated."
msgstr ""
@@ -10710,6 +10934,10 @@ msgid ""
"locations."
msgstr ""
+#: ../../addon/diaspora/Mod_Diaspora.php:55
+msgid "Diaspora Protocol App"
+msgstr ""
+
#: ../../addon/diaspora/Mod_Diaspora.php:74
msgid "Allow any Diaspora member to comment on your public posts"
msgstr ""
@@ -10734,10 +10962,36 @@ msgstr ""
msgid "No username found in import file."
msgstr ""
-#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:72
+#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:73
msgid "Unable to create a unique channel address. Import failed."
msgstr ""
+#: ../../addon/photocache/Mod_Photocache.php:27
+msgid "Photo Cache settings saved."
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:36
+msgid ""
+"Photo Cache addon saves a copy of images from external sites locally to "
+"increase your anonymity in the web."
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:42
+msgid "Photo Cache App"
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:53
+msgid "Minimal photo size for caching"
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:55
+msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default."
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:64
+msgid "Photo Cache"
+msgstr ""
+
#: ../../addon/testdrive/testdrive.php:104
#, php-format
msgid "Your account on %s will expire in a few days."
@@ -10751,6 +11005,11 @@ msgstr ""
msgid "Add some colour to tag clouds"
msgstr ""
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26
+msgid "Rainbow Tag App"
+msgstr ""
+
#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34
msgid "Rainbow Tag"
msgstr ""
@@ -10807,7 +11066,7 @@ msgid ""
msgstr ""
#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46
-#: ../../addon/xmpp/xmpp.php:91
+#: ../../addon/xmpp/xmpp.php:43
msgid "Save Settings"
msgstr ""
@@ -10851,45 +11110,25 @@ msgstr ""
msgid "Until modified date yyyy-mm-dd"
msgstr ""
-#: ../../addon/visage/visage.php:93
-msgid "Recent Channel/Profile Viewers"
-msgstr ""
-
-#: ../../addon/visage/visage.php:98
-msgid "This plugin/addon has not been configured."
+#: ../../addon/visage/Mod_Visage.php:21
+msgid "Who viewed my channel/profile"
msgstr ""
-#: ../../addon/visage/visage.php:99
-#, php-format
-msgid "Please visit the Visage settings on %s"
-msgstr ""
-
-#: ../../addon/visage/visage.php:99
-msgid "your feature settings page"
+#: ../../addon/visage/Mod_Visage.php:25
+msgid "Recent Channel/Profile Viewers"
msgstr ""
-#: ../../addon/visage/visage.php:112
+#: ../../addon/visage/Mod_Visage.php:36
msgid "No entries."
msgstr ""
-#: ../../addon/visage/visage.php:166
-msgid "Enable Visage Visitor Logging"
-msgstr ""
-
-#: ../../addon/visage/visage.php:170
-msgid "Visage Settings"
-msgstr ""
-
-#: ../../addon/nsabait/nsabait.php:125
-msgid "Nsabait Settings updated."
-msgstr ""
-
-#: ../../addon/nsabait/nsabait.php:157
-msgid "Enable NSAbait Plugin"
+#: ../../addon/nsabait/Mod_Nsabait.php:20
+#: ../../addon/nsabait/Mod_Nsabait.php:24
+msgid "NSA Bait App"
msgstr ""
-#: ../../addon/nsabait/nsabait.php:161
-msgid "NSAbait Settings"
+#: ../../addon/nsabait/Mod_Nsabait.php:26
+msgid "Make yourself a political target"
msgstr ""
#: ../../addon/mailtest/mailtest.php:19
@@ -10924,40 +11163,40 @@ msgstr ""
msgid "View Larger"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/openstreetmap/openstreetmap.php:170
msgid "Tile Server URL"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/openstreetmap/openstreetmap.php:170
msgid ""
"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank"
"\">public tile servers</a>"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:170
+#: ../../addon/openstreetmap/openstreetmap.php:171
msgid "Nominatim (reverse geocoding) Server URL"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:170
+#: ../../addon/openstreetmap/openstreetmap.php:171
msgid ""
"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target="
"\"_blank\">Nominatim servers</a>"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:171
+#: ../../addon/openstreetmap/openstreetmap.php:172
msgid "Default zoom"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:171
+#: ../../addon/openstreetmap/openstreetmap.php:172
msgid ""
"The default zoom level. (1:world, 18:highest, also depends on tile server)"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:172
+#: ../../addon/openstreetmap/openstreetmap.php:173
msgid "Include marker on map"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:172
+#: ../../addon/openstreetmap/openstreetmap.php:173
msgid "Include a marker on the map."
msgstr ""
@@ -10965,120 +11204,128 @@ msgstr ""
msgid "text to include in all outgoing posts from this site"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:148
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22
msgid "Fuzzloc Settings updated."
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:175
-msgid ""
-"Fuzzloc allows you to blur your precise location if your channel uses "
-"browser location mapping."
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34
+msgid "Fuzzy Location App"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:178
-msgid "Enable Fuzzloc Plugin"
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35
+msgid ""
+"Blur your precise location if your channel uses browser location mapping"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:182
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40
msgid "Minimum offset in meters"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:186
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44
msgid "Maximum offset in meters"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:191
-msgid "Fuzzloc Settings"
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53
+msgid "Fuzzy Location"
msgstr ""
-#: ../../addon/rtof/rtof.php:45
+#: ../../addon/rtof/rtof.php:51
msgid "Post to Friendica"
msgstr ""
-#: ../../addon/rtof/rtof.php:62
-msgid "rtof Settings saved."
+#: ../../addon/rtof/Mod_Rtof.php:24
+msgid "Friendica Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/rtof/Mod_Rtof.php:36
+msgid "Friendica Crosspost Connector App"
msgstr ""
-#: ../../addon/rtof/rtof.php:81
-msgid "Allow posting to Friendica"
+#: ../../addon/rtof/Mod_Rtof.php:37
+msgid "Relay public postings to a connected Friendica account"
msgstr ""
-#: ../../addon/rtof/rtof.php:85
+#: ../../addon/rtof/Mod_Rtof.php:49
msgid "Send public postings to Friendica by default"
msgstr ""
-#: ../../addon/rtof/rtof.php:89
+#: ../../addon/rtof/Mod_Rtof.php:53
msgid "Friendica API Path"
msgstr ""
-#: ../../addon/rtof/rtof.php:89 ../../addon/redred/redred.php:103
+#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67
msgid "https://{sitename}/api"
msgstr ""
-#: ../../addon/rtof/rtof.php:93
+#: ../../addon/rtof/Mod_Rtof.php:57
msgid "Friendica login name"
msgstr ""
-#: ../../addon/rtof/rtof.php:97
+#: ../../addon/rtof/Mod_Rtof.php:61
msgid "Friendica password"
msgstr ""
-#: ../../addon/rtof/rtof.php:101
-msgid "Hubzilla to Friendica Post Settings"
+#: ../../addon/rtof/Mod_Rtof.php:69
+msgid "Friendica Crosspost Connector"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1403
-#: ../../include/channel.php:1574
-msgid "Status:"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:96
+msgid "Jappixmini App"
+msgstr ""
+
+#: ../../addon/jappixmini/Mod_Jappixmini.php:97
+msgid "Provides a Facebook-like chat using Jappix Mini"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:309
-msgid "Activate addon"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1452
+#: ../../include/channel.php:1623
+msgid "Status:"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:313
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
msgid "Hide Jappixmini Chat-Widget from the webinterface"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:318
+#: ../../addon/jappixmini/Mod_Jappixmini.php:166
msgid "Jabber username"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:324
+#: ../../addon/jappixmini/Mod_Jappixmini.php:172
msgid "Jabber server"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:330
+#: ../../addon/jappixmini/Mod_Jappixmini.php:178
msgid "Jabber BOSH host URL"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:337
+#: ../../addon/jappixmini/Mod_Jappixmini.php:185
msgid "Jabber password"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
msgid "Encrypt Jabber password with Hubzilla password"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:347 ../../addon/redred/redred.php:115
+#: ../../addon/jappixmini/Mod_Jappixmini.php:195
+#: ../../addon/redred/Mod_Redred.php:79
msgid "Hubzilla password"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
msgid "Approve subscription requests from Hubzilla contacts automatically"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:359
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
msgid "Purge internal list of jabber addresses of contacts"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:364
+#: ../../addon/jappixmini/Mod_Jappixmini.php:212
msgid "Configuration Help"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:371
-msgid "Jappix Mini Settings"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:258
+msgid "Jappixmini Settings"
msgstr ""
#: ../../addon/upgrade_info/upgrade_info.php:43
@@ -11111,81 +11358,85 @@ msgstr ""
msgid "Do not show this again"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:101
-#: ../../addon/channelreputation/channelreputation.php:102
+#: ../../addon/channelreputation/channelreputation.php:98
+#: ../../addon/channelreputation/channelreputation.php:99
#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177
#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259
#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317
msgid "Access Denied"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:109
+#: ../../addon/channelreputation/channelreputation.php:106
msgid "Enable Community Moderation"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:117
+#: ../../addon/channelreputation/channelreputation.php:114
msgid "Reputation automatically given to new members"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:118
+#: ../../addon/channelreputation/channelreputation.php:115
msgid "Reputation will never fall below this value"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:119
+#: ../../addon/channelreputation/channelreputation.php:116
msgid "Minimum reputation before posting is allowed"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:120
+#: ../../addon/channelreputation/channelreputation.php:117
msgid "Minimum reputation before commenting is allowed"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:121
+#: ../../addon/channelreputation/channelreputation.php:118
msgid "Minimum reputation before a member is able to moderate other posts"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:122
+#: ../../addon/channelreputation/channelreputation.php:119
msgid ""
"Max ratio of moderator's reputation that can be added to/deducted from "
"reputation of person being moderated"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:123
+#: ../../addon/channelreputation/channelreputation.php:120
msgid "Reputation \"cost\" to post"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:124
+#: ../../addon/channelreputation/channelreputation.php:121
msgid "Reputation \"cost\" to comment"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:125
+#: ../../addon/channelreputation/channelreputation.php:122
msgid ""
"Reputation automatically recovers at this rate per hour until it reaches "
"minimum_to_post"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:126
+#: ../../addon/channelreputation/channelreputation.php:123
msgid ""
"When minimum_to_moderate > reputation > minimum_to_post reputation recovers "
"at this rate per hour"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:138
+#: ../../addon/channelreputation/channelreputation.php:137
msgid "Community Moderation Settings"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:359
+#: ../../addon/channelreputation/channelreputation.php:365
msgid "Can moderate reputation on my channel."
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:544
-#: ../../addon/channelreputation/channelreputation.php:547
+#: ../../addon/channelreputation/channelreputation.php:549
+#: ../../addon/channelreputation/channelreputation.php:552
msgid "Channel Reputation"
msgstr ""
-#: ../../addon/superblock/superblock.php:318
+#: ../../addon/superblock/superblock.php:337
msgid "Block Completely"
msgstr ""
+#: ../../addon/superblock/Mod_Superblock.php:20
+msgid "Superblock App"
+msgstr ""
+
#: ../../addon/superblock/Mod_Superblock.php:21
msgid "Block channels"
msgstr ""
@@ -11202,60 +11453,71 @@ msgstr ""
msgid "No channels currently blocked"
msgstr ""
-#: ../../addon/nofed/nofed.php:42
-msgid "Federate"
+#: ../../addon/nofed/Mod_Nofed.php:21
+msgid "nofed Settings saved."
msgstr ""
-#: ../../addon/nofed/nofed.php:56
-msgid "nofed Settings saved."
+#: ../../addon/nofed/Mod_Nofed.php:33
+msgid "No Federation App"
msgstr ""
-#: ../../addon/nofed/nofed.php:72
-msgid "Allow Federation Toggle"
+#: ../../addon/nofed/Mod_Nofed.php:34
+msgid ""
+"Prevent posting from being federated to anybody. It will exist only on your "
+"channel page."
msgstr ""
-#: ../../addon/nofed/nofed.php:76
+#: ../../addon/nofed/Mod_Nofed.php:42
msgid "Federate posts by default"
msgstr ""
-#: ../../addon/nofed/nofed.php:80
-msgid "NoFed Settings"
+#: ../../addon/nofed/Mod_Nofed.php:50
+msgid "No Federation"
msgstr ""
-#: ../../addon/redred/redred.php:45
-msgid "Post to Red"
+#: ../../addon/nofed/nofed.php:47
+msgid "Federate"
msgstr ""
-#: ../../addon/redred/redred.php:60
+#: ../../addon/redred/Mod_Redred.php:24
msgid "Channel is required."
msgstr ""
-#: ../../addon/redred/redred.php:76
-msgid "redred Settings saved."
+#: ../../addon/redred/Mod_Redred.php:38
+msgid "Hubzilla Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/redred/Mod_Redred.php:50
+#: ../../addon/statusnet/Mod_Statusnet.php:146
+msgid "Hubzilla Crosspost Connector App"
msgstr ""
-#: ../../addon/redred/redred.php:95
-msgid "Allow posting to another Hubzilla Channel"
+#: ../../addon/redred/Mod_Redred.php:51
+msgid "Relay public postings to another Hubzilla channel"
msgstr ""
-#: ../../addon/redred/redred.php:99
+#: ../../addon/redred/Mod_Redred.php:63
msgid "Send public postings to Hubzilla channel by default"
msgstr ""
-#: ../../addon/redred/redred.php:103
+#: ../../addon/redred/Mod_Redred.php:67
msgid "Hubzilla API Path"
msgstr ""
-#: ../../addon/redred/redred.php:107
+#: ../../addon/redred/Mod_Redred.php:71
msgid "Hubzilla login name"
msgstr ""
-#: ../../addon/redred/redred.php:111
+#: ../../addon/redred/Mod_Redred.php:75
msgid "Hubzilla channel name"
msgstr ""
-#: ../../addon/redred/redred.php:119
-msgid "Hubzilla Crosspost Settings"
+#: ../../addon/redred/Mod_Redred.php:87
+msgid "Hubzilla Crosspost Connector"
+msgstr ""
+
+#: ../../addon/redred/redred.php:50
+msgid "Post to Hubzilla"
msgstr ""
#: ../../addon/logrot/logrot.php:36
@@ -11298,6 +11560,10 @@ msgstr ""
msgid "WYSIWYG status editor"
msgstr ""
+#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26
+msgid "WYSIWYG Status App"
+msgstr ""
+
#: ../../addon/hsse/Mod_Hsse.php:34
msgid "WYSIWYG Status"
msgstr ""
@@ -11334,35 +11600,35 @@ msgstr ""
msgid "Comments disabled"
msgstr ""
-#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1398
+#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401
msgid "Page link name"
msgstr ""
-#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1401
+#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404
msgid "Post as"
msgstr ""
-#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1415
+#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418
msgid "Toggle voting"
msgstr ""
-#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1418
+#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421
msgid "Disable comments"
msgstr ""
-#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1419
+#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422
msgid "Toggle comments"
msgstr ""
-#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1427
+#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430
msgid "Categories (optional, comma-separated list)"
msgstr ""
-#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1450
+#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453
msgid "Other networks and post services"
msgstr ""
-#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1456
+#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459
msgid "Set publish date"
msgstr ""
@@ -11377,6 +11643,10 @@ msgid ""
"locations."
msgstr ""
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40
+msgid "Activitypub Protocol App"
+msgstr ""
+
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:48
msgid "Deliver to ActivityPub recipients in privacy groups"
msgstr ""
@@ -11407,72 +11677,68 @@ msgstr ""
msgid "Project Creator and Tech Lead"
msgstr ""
-#: ../../addon/donate/donate.php:23
-msgid "Admin, developer, directorymin, support bloke"
-msgstr ""
-
-#: ../../addon/donate/donate.php:50
+#: ../../addon/donate/donate.php:49
msgid ""
"And the hundreds of other people and organisations who helped make the "
"Hubzilla possible."
msgstr ""
-#: ../../addon/donate/donate.php:53
+#: ../../addon/donate/donate.php:52
msgid ""
"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving "
"their time and expertise - and often paying out of pocket for services they "
"share with others."
msgstr ""
-#: ../../addon/donate/donate.php:54
+#: ../../addon/donate/donate.php:53
msgid ""
"There is no corporate funding and no ads, and we do not collect and sell "
"your personal information. (We don't control your personal information - "
"<strong>you do</strong>.)"
msgstr ""
-#: ../../addon/donate/donate.php:55
+#: ../../addon/donate/donate.php:54
msgid ""
"Help support our ground-breaking work in decentralisation, web identity, and "
"privacy."
msgstr ""
-#: ../../addon/donate/donate.php:57
+#: ../../addon/donate/donate.php:56
msgid ""
"Your donations keep servers and services running and also helps us to "
"provide innovative new features and continued development."
msgstr ""
-#: ../../addon/donate/donate.php:60
+#: ../../addon/donate/donate.php:59
msgid "Donate"
msgstr ""
-#: ../../addon/donate/donate.php:62
+#: ../../addon/donate/donate.php:61
msgid ""
"Choose a project, developer, or public hub to support with a one-time "
"donation"
msgstr ""
-#: ../../addon/donate/donate.php:63
+#: ../../addon/donate/donate.php:62
msgid "Donate Now"
msgstr ""
-#: ../../addon/donate/donate.php:64
+#: ../../addon/donate/donate.php:63
msgid ""
"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"
msgstr ""
-#: ../../addon/donate/donate.php:65
+#: ../../addon/donate/donate.php:64
msgid ""
"Please indicate if you would like your first name or full name (or nothing) "
"to appear in our sponsor listing"
msgstr ""
-#: ../../addon/donate/donate.php:66
+#: ../../addon/donate/donate.php:65
msgid "Sponsor"
msgstr ""
-#: ../../addon/donate/donate.php:69
+#: ../../addon/donate/donate.php:68
msgid "Special thanks to: "
msgstr ""
@@ -11522,128 +11788,137 @@ msgstr ""
msgid "Quick Reference"
msgstr ""
-#: ../../addon/libertree/libertree.php:38
+#: ../../addon/libertree/libertree.php:43
msgid "Post to Libertree"
msgstr ""
-#: ../../addon/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
+#: ../../addon/libertree/Mod_Libertree.php:25
+msgid "Libertree Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/libertree/Mod_Libertree.php:35
+msgid "Libertree Crosspost Connector App"
+msgstr ""
+
+#: ../../addon/libertree/Mod_Libertree.php:36
+msgid "Relay public posts to Libertree"
msgstr ""
-#: ../../addon/libertree/libertree.php:73
+#: ../../addon/libertree/Mod_Libertree.php:51
msgid "Libertree API token"
msgstr ""
-#: ../../addon/libertree/libertree.php:77
+#: ../../addon/libertree/Mod_Libertree.php:55
msgid "Libertree site URL"
msgstr ""
-#: ../../addon/libertree/libertree.php:81
+#: ../../addon/libertree/Mod_Libertree.php:59
msgid "Post to Libertree by default"
msgstr ""
-#: ../../addon/libertree/libertree.php:85
-msgid "Libertree Post Settings"
+#: ../../addon/libertree/Mod_Libertree.php:67
+msgid "Libertree Crosspost Connector"
msgstr ""
-#: ../../addon/libertree/libertree.php:99
-msgid "Libertree Settings saved."
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41
+msgid "Flattr widget settings updated."
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:45
-msgid "Flattr this!"
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53
+msgid "Flattr Widget App"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:83
-msgid "Flattr widget settings updated."
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54
+msgid "Add a Flattr button to your channel page"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:100
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65
msgid "Flattr user"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:104
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69
msgid "URL of the Thing to flattr"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:104
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69
msgid "If empty channel URL is used"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:108
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73
msgid "Title of the Thing to flattr"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:108
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73
msgid "If empty \"channel name on The Hubzilla\" will be used"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:112
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
msgid "Static or dynamic flattr button"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:112
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
msgid "static"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:112
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
msgid "dynamic"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:116
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
msgid "Alignment of the widget"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:116
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
msgid "left"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:116
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
msgid "right"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:120
-msgid "Enable Flattr widget"
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89
+msgid "Flattr Widget"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:124
-msgid "Flattr Widget Settings"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:143
-msgid "Post to GNU social"
+#: ../../addon/flattrwidget/flattrwidget.php:50
+msgid "Flattr this!"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:195
+#: ../../addon/statusnet/Mod_Statusnet.php:61
msgid ""
"Please contact your site administrator.<br />The provided API URL is not "
"valid."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:232
+#: ../../addon/statusnet/Mod_Statusnet.php:98
msgid "We could not contact the GNU social API with the Path you entered."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:266
+#: ../../addon/statusnet/Mod_Statusnet.php:130
msgid "GNU social settings updated."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:310
+#: ../../addon/statusnet/Mod_Statusnet.php:147
+msgid ""
+"Relay public postings to a connected GNU social account (formerly StatusNet)"
+msgstr ""
+
+#: ../../addon/statusnet/Mod_Statusnet.php:181
msgid "Globally Available GNU social OAuthKeys"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:312
+#: ../../addon/statusnet/Mod_Statusnet.php:183
msgid ""
"There are preconfigured OAuth key pairs for some GNU social servers "
"available. If you are using one of them, please use these credentials.<br /"
">If not feel free to connect to any other GNU social instance (see below)."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:327
+#: ../../addon/statusnet/Mod_Statusnet.php:198
msgid "Provide your own OAuth Credentials"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:329
+#: ../../addon/statusnet/Mod_Statusnet.php:200
msgid ""
"No consumer key pair for GNU social found. Register your Hubzilla Account as "
"an desktop client on your GNU social account, copy the consumer key pair "
@@ -11652,27 +11927,27 @@ msgid ""
"Hubzilla installation at your favourite GNU social installation."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:333
+#: ../../addon/statusnet/Mod_Statusnet.php:204
msgid "OAuth Consumer Key"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:337
+#: ../../addon/statusnet/Mod_Statusnet.php:208
msgid "OAuth Consumer Secret"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:341
+#: ../../addon/statusnet/Mod_Statusnet.php:212
msgid "Base API Path"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:341
+#: ../../addon/statusnet/Mod_Statusnet.php:212
msgid "Remember the trailing /"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:345
+#: ../../addon/statusnet/Mod_Statusnet.php:216
msgid "GNU social application name"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:368
+#: ../../addon/statusnet/Mod_Statusnet.php:239
msgid ""
"To connect to your GNU social account click the button below to get a "
"security code from GNU social which you have to copy into the input box "
@@ -11680,31 +11955,32 @@ msgid ""
"posted to GNU social."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:370
+#: ../../addon/statusnet/Mod_Statusnet.php:241
msgid "Log in with GNU social"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:373
+#: ../../addon/statusnet/Mod_Statusnet.php:244
msgid "Copy the security code from GNU social here"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:383
+#: ../../addon/statusnet/Mod_Statusnet.php:254
msgid "Cancel Connection Process"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:385
+#: ../../addon/statusnet/Mod_Statusnet.php:256
msgid "Current GNU social API is"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:389
+#: ../../addon/statusnet/Mod_Statusnet.php:260
msgid "Cancel GNU social Connection"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:236
+#: ../../addon/statusnet/Mod_Statusnet.php:272
+#: ../../addon/twitter/Mod_Twitter.php:147
msgid "Currently connected to: "
msgstr ""
-#: ../../addon/statusnet/statusnet.php:406
+#: ../../addon/statusnet/Mod_Statusnet.php:277
msgid ""
"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -11712,39 +11988,34 @@ msgid ""
"informing the visitor that the access to your profile has been restricted."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:411
-msgid "Allow posting to GNU social"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:411
-msgid ""
-"If enabled your public postings can be posted to the associated GNU-social "
-"account"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:415
+#: ../../addon/statusnet/Mod_Statusnet.php:282
msgid "Post to GNU social by default"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:415
+#: ../../addon/statusnet/Mod_Statusnet.php:282
msgid ""
"If enabled your public postings will be posted to the associated GNU-social "
"account by default"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:264
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:171
msgid "Clear OAuth configuration"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:432
-msgid "GNU social Post Settings"
+#: ../../addon/statusnet/Mod_Statusnet.php:303
+msgid "GNU-Social Crosspost Connector"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:892
+#: ../../addon/statusnet/statusnet.php:145
+msgid "Post to GNU social"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:594
msgid "API URL"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:895
+#: ../../addon/statusnet/statusnet.php:597
msgid "Application name"
msgstr ""
@@ -11760,57 +12031,65 @@ msgstr ""
msgid "Enter some text"
msgstr ""
-#: ../../addon/chess/chess.php:353 ../../addon/chess/chess.php:542
+#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377
msgid "Invalid game."
msgstr ""
-#: ../../addon/chess/chess.php:359 ../../addon/chess/chess.php:582
+#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417
msgid "You are not a player in this game."
msgstr ""
-#: ../../addon/chess/chess.php:415
+#: ../../addon/chess/Mod_Chess.php:242
msgid "You must be a local channel to create a game."
msgstr ""
-#: ../../addon/chess/chess.php:433
+#: ../../addon/chess/Mod_Chess.php:260
msgid "You must select one opponent that is not yourself."
msgstr ""
-#: ../../addon/chess/chess.php:444
+#: ../../addon/chess/Mod_Chess.php:271
msgid "Random color chosen."
msgstr ""
-#: ../../addon/chess/chess.php:452
+#: ../../addon/chess/Mod_Chess.php:279
msgid "Error creating new game."
msgstr ""
-#: ../../addon/chess/chess.php:486 ../../include/channel.php:1158
+#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1207
msgid "Requested channel is not available."
msgstr ""
-#: ../../addon/chess/chess.php:500
+#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333
+msgid "Chess not installed."
+msgstr ""
+
+#: ../../addon/chess/Mod_Chess.php:326
msgid "You must select a local channel /chess/channelname"
msgstr ""
-#: ../../addon/chess/chess.php:1066
+#: ../../addon/chess/chess.php:642
msgid "Enable notifications"
msgstr ""
-#: ../../addon/twitter/twitter.php:102
-msgid "Post to Twitter"
+#: ../../addon/twitter/Mod_Twitter.php:65
+msgid "Twitter settings updated."
msgstr ""
-#: ../../addon/twitter/twitter.php:158
-msgid "Twitter settings updated."
+#: ../../addon/twitter/Mod_Twitter.php:78
+msgid "Twitter Crosspost Connector App"
msgstr ""
-#: ../../addon/twitter/twitter.php:187
+#: ../../addon/twitter/Mod_Twitter.php:79
+msgid "Relay public posts to Twitter"
+msgstr ""
+
+#: ../../addon/twitter/Mod_Twitter.php:103
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr ""
-#: ../../addon/twitter/twitter.php:209
+#: ../../addon/twitter/Mod_Twitter.php:125
msgid ""
"At this Hubzilla instance the Twitter plugin was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
@@ -11819,15 +12098,15 @@ msgid ""
"be posted to Twitter."
msgstr ""
-#: ../../addon/twitter/twitter.php:211
+#: ../../addon/twitter/Mod_Twitter.php:127
msgid "Log in with Twitter"
msgstr ""
-#: ../../addon/twitter/twitter.php:214
+#: ../../addon/twitter/Mod_Twitter.php:130
msgid "Copy the PIN from Twitter here"
msgstr ""
-#: ../../addon/twitter/twitter.php:241
+#: ../../addon/twitter/Mod_Twitter.php:152
msgid ""
"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -11835,47 +12114,45 @@ msgid ""
"the visitor that the access to your profile has been restricted."
msgstr ""
-#: ../../addon/twitter/twitter.php:246
-msgid "Allow posting to Twitter"
-msgstr ""
-
-#: ../../addon/twitter/twitter.php:246
-msgid ""
-"If enabled your public postings can be posted to the associated Twitter "
-"account"
-msgstr ""
-
-#: ../../addon/twitter/twitter.php:250
+#: ../../addon/twitter/Mod_Twitter.php:157
msgid "Twitter post length"
msgstr ""
-#: ../../addon/twitter/twitter.php:250
+#: ../../addon/twitter/Mod_Twitter.php:157
msgid "Maximum tweet length"
msgstr ""
-#: ../../addon/twitter/twitter.php:255
+#: ../../addon/twitter/Mod_Twitter.php:162
msgid "Send public postings to Twitter by default"
msgstr ""
-#: ../../addon/twitter/twitter.php:255
+#: ../../addon/twitter/Mod_Twitter.php:162
msgid ""
"If enabled your public postings will be posted to the associated Twitter "
"account by default"
msgstr ""
-#: ../../addon/twitter/twitter.php:273
-msgid "Twitter Post Settings"
+#: ../../addon/twitter/Mod_Twitter.php:181
+msgid "Twitter Crosspost Connector"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:107
+msgid "Post to Twitter"
+msgstr ""
+
+#: ../../addon/smileybutton/Mod_Smileybutton.php:35
+msgid "Smileybutton App"
msgstr ""
-#: ../../addon/smileybutton/smileybutton.php:211
-msgid "Deactivate the feature"
+#: ../../addon/smileybutton/Mod_Smileybutton.php:36
+msgid "Adds a smileybutton to the jot editor"
msgstr ""
-#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
msgid "Hide the button and show the smilies directly."
msgstr ""
-#: ../../addon/smileybutton/smileybutton.php:219
+#: ../../addon/smileybutton/Mod_Smileybutton.php:52
msgid "Smileybutton Settings"
msgstr ""
@@ -11891,7 +12168,7 @@ msgstr ""
msgid "Base Merchant Currency"
msgstr ""
-#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1262
+#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263
msgid "Cart Settings"
msgstr ""
@@ -11899,7 +12176,7 @@ msgstr ""
msgid "Access Denied."
msgstr ""
-#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1330
+#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334
msgid "Order Not Found"
msgstr ""
@@ -11912,53 +12189,53 @@ msgstr ""
msgid "DB Cleanup Failure"
msgstr ""
-#: ../../addon/cart/cart.php:564
+#: ../../addon/cart/cart.php:565
msgid "[cart] Item Added"
msgstr ""
-#: ../../addon/cart/cart.php:952
+#: ../../addon/cart/cart.php:953
msgid "Order already checked out."
msgstr ""
-#: ../../addon/cart/cart.php:1255
+#: ../../addon/cart/cart.php:1256
msgid "Drop database tables when uninstalling."
msgstr ""
-#: ../../addon/cart/cart.php:1274 ../../addon/cart/cart.php:1277
+#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278
msgid "Shop"
msgstr ""
-#: ../../addon/cart/cart.php:1391
+#: ../../addon/cart/cart.php:1395
msgid "Cart utilities for orders and payments"
msgstr ""
-#: ../../addon/cart/cart.php:1429
+#: ../../addon/cart/cart.php:1433
msgid "You must be logged into the Grid to shop."
msgstr ""
-#: ../../addon/cart/cart.php:1462
+#: ../../addon/cart/cart.php:1466
#: ../../addon/cart/submodules/paypalbutton.php:392
#: ../../addon/cart/manual_payments.php:68
msgid "Order not found."
msgstr ""
-#: ../../addon/cart/cart.php:1470
+#: ../../addon/cart/cart.php:1474
msgid "Access denied."
msgstr ""
-#: ../../addon/cart/cart.php:1522 ../../addon/cart/cart.php:1665
+#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669
msgid "No Order Found"
msgstr ""
-#: ../../addon/cart/cart.php:1531
+#: ../../addon/cart/cart.php:1535
msgid "An unknown error has occurred Please start again."
msgstr ""
-#: ../../addon/cart/cart.php:1698
+#: ../../addon/cart/cart.php:1702
msgid "Invalid Payment Type. Please start again."
msgstr ""
-#: ../../addon/cart/cart.php:1705
+#: ../../addon/cart/cart.php:1709
msgid "Order not found"
msgstr ""
@@ -12332,6 +12609,10 @@ msgstr ""
msgid "Send your identity to all websites"
msgstr ""
+#: ../../addon/sendzid/Mod_Sendzid.php:20
+msgid "Sendzid App"
+msgstr ""
+
#: ../../addon/sendzid/Mod_Sendzid.php:32
msgid "Send ZID"
msgstr ""
@@ -12390,16 +12671,24 @@ msgstr ""
msgid "I won!"
msgstr ""
-#: ../../addon/pageheader/pageheader.php:43
-msgid "Message to display on every page on this server"
+#: ../../addon/pageheader/Mod_Pageheader.php:22
+msgid "pageheader Settings saved."
msgstr ""
-#: ../../addon/pageheader/pageheader.php:48
-msgid "Pageheader Settings"
+#: ../../addon/pageheader/Mod_Pageheader.php:34
+msgid "Page Header App"
msgstr ""
-#: ../../addon/pageheader/pageheader.php:64
-msgid "pageheader Settings saved."
+#: ../../addon/pageheader/Mod_Pageheader.php:35
+msgid "Inserts a page header"
+msgstr ""
+
+#: ../../addon/pageheader/Mod_Pageheader.php:43
+msgid "Message to display on every page on this server"
+msgstr ""
+
+#: ../../addon/pageheader/Mod_Pageheader.php:51
+msgid "Page Header"
msgstr ""
#: ../../addon/authchoose/Mod_Authchoose.php:22
@@ -12407,6 +12696,11 @@ msgid ""
"Allow magic authentication only to websites of your immediate connections"
msgstr ""
+#: ../../addon/authchoose/Mod_Authchoose.php:28
+#: ../../addon/authchoose/Mod_Authchoose.php:33
+msgid "Authchoose App"
+msgstr ""
+
#: ../../addon/authchoose/Mod_Authchoose.php:39
msgid "Authchoose"
msgstr ""
@@ -12499,35 +12793,39 @@ msgstr ""
msgid "jealous"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:31
+#: ../../addon/xmpp/Mod_Xmpp.php:23
msgid "XMPP settings updated."
msgstr ""
-#: ../../addon/xmpp/xmpp.php:53
-msgid "Enable Chat"
+#: ../../addon/xmpp/Mod_Xmpp.php:35
+msgid "XMPP App"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:58
+#: ../../addon/xmpp/Mod_Xmpp.php:36
+msgid "Embedded XMPP (Jabber) client"
+msgstr ""
+
+#: ../../addon/xmpp/Mod_Xmpp.php:52
msgid "Individual credentials"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:64
+#: ../../addon/xmpp/Mod_Xmpp.php:58
msgid "Jabber BOSH server"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:69
+#: ../../addon/xmpp/Mod_Xmpp.php:67
msgid "XMPP Settings"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:92
+#: ../../addon/xmpp/xmpp.php:44
msgid "Jabber BOSH host"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:93
+#: ../../addon/xmpp/xmpp.php:45
msgid "Use central userbase"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:93
+#: ../../addon/xmpp/xmpp.php:45
msgid ""
"If enabled, members will automatically login to an ejabberd server that has "
"to be installed on this machine with synchronized credentials via the "
@@ -12538,64 +12836,68 @@ msgstr ""
msgid "Who likes me?"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:148
-msgid "You are now authenticated to pumpio."
+#: ../../addon/pumpio/Mod_Pumpio.php:40
+msgid "Pump.io Settings saved."
msgstr ""
-#: ../../addon/pumpio/pumpio.php:149
-msgid "return to the featured settings page"
+#: ../../addon/pumpio/Mod_Pumpio.php:53
+msgid "Pump.io Crosspost Connector App"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:163
-msgid "Post to Pump.io"
+#: ../../addon/pumpio/Mod_Pumpio.php:54
+msgid "Relay public posts to pump.io"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:198
+#: ../../addon/pumpio/Mod_Pumpio.php:73
msgid "Pump.io servername"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:198
+#: ../../addon/pumpio/Mod_Pumpio.php:73
msgid "Without \"http://\" or \"https://\""
msgstr ""
-#: ../../addon/pumpio/pumpio.php:202
+#: ../../addon/pumpio/Mod_Pumpio.php:77
msgid "Pump.io username"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:202
+#: ../../addon/pumpio/Mod_Pumpio.php:77
msgid "Without the servername"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:213
+#: ../../addon/pumpio/Mod_Pumpio.php:88
msgid "You are not authenticated to pumpio"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:215
+#: ../../addon/pumpio/Mod_Pumpio.php:90
msgid "(Re-)Authenticate your pump.io connection"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:219
-msgid "Enable pump.io Post Plugin"
-msgstr ""
-
-#: ../../addon/pumpio/pumpio.php:223
+#: ../../addon/pumpio/Mod_Pumpio.php:94
msgid "Post to pump.io by default"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:227
+#: ../../addon/pumpio/Mod_Pumpio.php:98
msgid "Should posts be public"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:231
+#: ../../addon/pumpio/Mod_Pumpio.php:102
msgid "Mirror all public posts"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:237
-msgid "Pump.io Post Settings"
+#: ../../addon/pumpio/Mod_Pumpio.php:112
+msgid "Pump.io Crosspost Connector"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:266
-msgid "PumpIO Settings saved."
+#: ../../addon/pumpio/pumpio.php:152
+msgid "You are now authenticated to pumpio."
+msgstr ""
+
+#: ../../addon/pumpio/pumpio.php:153
+msgid "return to the featured settings page"
+msgstr ""
+
+#: ../../addon/pumpio/pumpio.php:168
+msgid "Post to Pump.io"
msgstr ""
#: ../../addon/ldapauth/ldapauth.php:70
@@ -12714,11 +13016,11 @@ msgstr ""
msgid "Hermaphrodite"
msgstr ""
-#: ../../include/selectors.php:60 ../../include/channel.php:1491
+#: ../../include/selectors.php:60 ../../include/channel.php:1540
msgid "Neuter"
msgstr ""
-#: ../../include/selectors.php:60 ../../include/channel.php:1493
+#: ../../include/selectors.php:60 ../../include/channel.php:1542
msgid "Non-specific"
msgstr ""
@@ -12918,8 +13220,8 @@ msgstr ""
msgid "%1$s poked %2$s"
msgstr ""
-#: ../../include/conversation.php:251 ../../include/text.php:1146
-#: ../../include/text.php:1150
+#: ../../include/conversation.php:251 ../../include/text.php:1176
+#: ../../include/text.php:1180
msgid "poked"
msgstr ""
@@ -13017,42 +13319,42 @@ msgstr ""
msgid "%s don't like this."
msgstr ""
-#: ../../include/conversation.php:1699
+#: ../../include/conversation.php:1708
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1702
+#: ../../include/conversation.php:1711
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1705
+#: ../../include/conversation.php:1714
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1708
+#: ../../include/conversation.php:1717
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1711
+#: ../../include/conversation.php:1720
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1714
+#: ../../include/conversation.php:1723
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
@@ -13064,11 +13366,11 @@ msgstr[1] ""
msgid "%1$s's bookmarks"
msgstr ""
-#: ../../include/import.php:25
+#: ../../include/import.php:26
msgid "Unable to import a removed channel."
msgstr ""
-#: ../../include/import.php:51
+#: ../../include/import.php:52
msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr ""
@@ -13077,369 +13379,369 @@ msgstr ""
msgid "Cloned channel not found. Import failed."
msgstr ""
-#: ../../include/text.php:498
+#: ../../include/text.php:501
msgid "prev"
msgstr ""
-#: ../../include/text.php:500
+#: ../../include/text.php:503
msgid "first"
msgstr ""
-#: ../../include/text.php:529
+#: ../../include/text.php:532
msgid "last"
msgstr ""
-#: ../../include/text.php:532
+#: ../../include/text.php:535
msgid "next"
msgstr ""
-#: ../../include/text.php:543
+#: ../../include/text.php:553
msgid "older"
msgstr ""
-#: ../../include/text.php:545
+#: ../../include/text.php:555
msgid "newer"
msgstr ""
-#: ../../include/text.php:969
+#: ../../include/text.php:979
msgid "No connections"
msgstr ""
-#: ../../include/text.php:1001
+#: ../../include/text.php:1011
#, php-format
msgid "View all %s connections"
msgstr ""
-#: ../../include/text.php:1057
+#: ../../include/text.php:1073
#, php-format
msgid "Network: %s"
msgstr ""
-#: ../../include/text.php:1146 ../../include/text.php:1150
+#: ../../include/text.php:1176 ../../include/text.php:1180
msgid "poke"
msgstr ""
-#: ../../include/text.php:1151
+#: ../../include/text.php:1181
msgid "ping"
msgstr ""
-#: ../../include/text.php:1151
+#: ../../include/text.php:1181
msgid "pinged"
msgstr ""
-#: ../../include/text.php:1152
+#: ../../include/text.php:1182
msgid "prod"
msgstr ""
-#: ../../include/text.php:1152
+#: ../../include/text.php:1182
msgid "prodded"
msgstr ""
-#: ../../include/text.php:1153
+#: ../../include/text.php:1183
msgid "slap"
msgstr ""
-#: ../../include/text.php:1153
+#: ../../include/text.php:1183
msgid "slapped"
msgstr ""
-#: ../../include/text.php:1154
+#: ../../include/text.php:1184
msgid "finger"
msgstr ""
-#: ../../include/text.php:1154
+#: ../../include/text.php:1184
msgid "fingered"
msgstr ""
-#: ../../include/text.php:1155
+#: ../../include/text.php:1185
msgid "rebuff"
msgstr ""
-#: ../../include/text.php:1155
+#: ../../include/text.php:1185
msgid "rebuffed"
msgstr ""
-#: ../../include/text.php:1178
+#: ../../include/text.php:1208
msgid "happy"
msgstr ""
-#: ../../include/text.php:1179
+#: ../../include/text.php:1209
msgid "sad"
msgstr ""
-#: ../../include/text.php:1180
+#: ../../include/text.php:1210
msgid "mellow"
msgstr ""
-#: ../../include/text.php:1181
+#: ../../include/text.php:1211
msgid "tired"
msgstr ""
-#: ../../include/text.php:1182
+#: ../../include/text.php:1212
msgid "perky"
msgstr ""
-#: ../../include/text.php:1183
+#: ../../include/text.php:1213
msgid "angry"
msgstr ""
-#: ../../include/text.php:1184
+#: ../../include/text.php:1214
msgid "stupefied"
msgstr ""
-#: ../../include/text.php:1185
+#: ../../include/text.php:1215
msgid "puzzled"
msgstr ""
-#: ../../include/text.php:1186
+#: ../../include/text.php:1216
msgid "interested"
msgstr ""
-#: ../../include/text.php:1187
+#: ../../include/text.php:1217
msgid "bitter"
msgstr ""
-#: ../../include/text.php:1188
+#: ../../include/text.php:1218
msgid "cheerful"
msgstr ""
-#: ../../include/text.php:1189
+#: ../../include/text.php:1219
msgid "alive"
msgstr ""
-#: ../../include/text.php:1190
+#: ../../include/text.php:1220
msgid "annoyed"
msgstr ""
-#: ../../include/text.php:1191
+#: ../../include/text.php:1221
msgid "anxious"
msgstr ""
-#: ../../include/text.php:1192
+#: ../../include/text.php:1222
msgid "cranky"
msgstr ""
-#: ../../include/text.php:1193
+#: ../../include/text.php:1223
msgid "disturbed"
msgstr ""
-#: ../../include/text.php:1194
+#: ../../include/text.php:1224
msgid "frustrated"
msgstr ""
-#: ../../include/text.php:1195
+#: ../../include/text.php:1225
msgid "depressed"
msgstr ""
-#: ../../include/text.php:1196
+#: ../../include/text.php:1226
msgid "motivated"
msgstr ""
-#: ../../include/text.php:1197
+#: ../../include/text.php:1227
msgid "relaxed"
msgstr ""
-#: ../../include/text.php:1198
+#: ../../include/text.php:1228
msgid "surprised"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:95
+#: ../../include/text.php:1416 ../../include/js_strings.php:95
msgid "Monday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:96
+#: ../../include/text.php:1416 ../../include/js_strings.php:96
msgid "Tuesday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:97
+#: ../../include/text.php:1416 ../../include/js_strings.php:97
msgid "Wednesday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:98
+#: ../../include/text.php:1416 ../../include/js_strings.php:98
msgid "Thursday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:99
+#: ../../include/text.php:1416 ../../include/js_strings.php:99
msgid "Friday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:100
+#: ../../include/text.php:1416 ../../include/js_strings.php:100
msgid "Saturday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:94
+#: ../../include/text.php:1416 ../../include/js_strings.php:94
msgid "Sunday"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:70
+#: ../../include/text.php:1420 ../../include/js_strings.php:70
msgid "January"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:71
+#: ../../include/text.php:1420 ../../include/js_strings.php:71
msgid "February"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:72
+#: ../../include/text.php:1420 ../../include/js_strings.php:72
msgid "March"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:73
+#: ../../include/text.php:1420 ../../include/js_strings.php:73
msgid "April"
msgstr ""
-#: ../../include/text.php:1381
+#: ../../include/text.php:1420
msgid "May"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:75
+#: ../../include/text.php:1420 ../../include/js_strings.php:75
msgid "June"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:76
+#: ../../include/text.php:1420 ../../include/js_strings.php:76
msgid "July"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:77
+#: ../../include/text.php:1420 ../../include/js_strings.php:77
msgid "August"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:78
+#: ../../include/text.php:1420 ../../include/js_strings.php:78
msgid "September"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:79
+#: ../../include/text.php:1420 ../../include/js_strings.php:79
msgid "October"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:80
+#: ../../include/text.php:1420 ../../include/js_strings.php:80
msgid "November"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:81
+#: ../../include/text.php:1420 ../../include/js_strings.php:81
msgid "December"
msgstr ""
-#: ../../include/text.php:1455
+#: ../../include/text.php:1494
msgid "Unknown Attachment"
msgstr ""
-#: ../../include/text.php:1457 ../../include/feedutils.php:860
+#: ../../include/text.php:1496 ../../include/feedutils.php:858
msgid "unknown"
msgstr ""
-#: ../../include/text.php:1493
+#: ../../include/text.php:1532
msgid "remove category"
msgstr ""
-#: ../../include/text.php:1567
+#: ../../include/text.php:1606
msgid "remove from file"
msgstr ""
-#: ../../include/text.php:1709 ../../include/message.php:13
+#: ../../include/text.php:1765 ../../include/message.php:13
msgid "Download binary/encrypted content"
msgstr ""
-#: ../../include/text.php:1872 ../../include/language.php:423
+#: ../../include/text.php:1935 ../../include/language.php:423
msgid "default"
msgstr ""
-#: ../../include/text.php:1880
+#: ../../include/text.php:1943
msgid "Page layout"
msgstr ""
-#: ../../include/text.php:1880
+#: ../../include/text.php:1943
msgid "You can create your own with the layouts tool"
msgstr ""
-#: ../../include/text.php:1891
+#: ../../include/text.php:1954
msgid "HTML"
msgstr ""
-#: ../../include/text.php:1894
+#: ../../include/text.php:1957
msgid "Comanche Layout"
msgstr ""
-#: ../../include/text.php:1899
+#: ../../include/text.php:1962
msgid "PHP"
msgstr ""
-#: ../../include/text.php:1908
+#: ../../include/text.php:1971
msgid "Page content type"
msgstr ""
-#: ../../include/text.php:2041
+#: ../../include/text.php:2104
msgid "activity"
msgstr ""
-#: ../../include/text.php:2142
+#: ../../include/text.php:2205
msgid "a-z, 0-9, -, and _ only"
msgstr ""
-#: ../../include/text.php:2462
+#: ../../include/text.php:2531
msgid "Design Tools"
msgstr ""
-#: ../../include/text.php:2468
+#: ../../include/text.php:2537
msgid "Pages"
msgstr ""
-#: ../../include/text.php:2490
+#: ../../include/text.php:2559
msgid "Import website..."
msgstr ""
-#: ../../include/text.php:2491
+#: ../../include/text.php:2560
msgid "Select folder to import"
msgstr ""
-#: ../../include/text.php:2492
+#: ../../include/text.php:2561
msgid "Import from a zipped folder:"
msgstr ""
-#: ../../include/text.php:2493
+#: ../../include/text.php:2562
msgid "Import from cloud files:"
msgstr ""
-#: ../../include/text.php:2494
+#: ../../include/text.php:2563
msgid "/cloud/channel/path/to/folder"
msgstr ""
-#: ../../include/text.php:2495
+#: ../../include/text.php:2564
msgid "Enter path to website files"
msgstr ""
-#: ../../include/text.php:2496
+#: ../../include/text.php:2565
msgid "Select folder"
msgstr ""
-#: ../../include/text.php:2497
+#: ../../include/text.php:2566
msgid "Export website..."
msgstr ""
-#: ../../include/text.php:2498
+#: ../../include/text.php:2567
msgid "Export to a zip file"
msgstr ""
-#: ../../include/text.php:2499
+#: ../../include/text.php:2568
msgid "website.zip"
msgstr ""
-#: ../../include/text.php:2500
+#: ../../include/text.php:2569
msgid "Enter a name for the zip file."
msgstr ""
-#: ../../include/text.php:2501
+#: ../../include/text.php:2570
msgid "Export to cloud files"
msgstr ""
-#: ../../include/text.php:2502
+#: ../../include/text.php:2571
msgid "/path/to/export/folder"
msgstr ""
-#: ../../include/text.php:2503
+#: ../../include/text.php:2572
msgid "Enter a path to a cloud files destination."
msgstr ""
-#: ../../include/text.php:2504
+#: ../../include/text.php:2573
msgid "Specify folder"
msgstr ""
@@ -13478,16 +13780,16 @@ msgstr ""
msgid "Advanced example: name=fred and country=iceland"
msgstr ""
-#: ../../include/contact_widgets.php:223
+#: ../../include/contact_widgets.php:218
msgid "Common Connections"
msgstr ""
-#: ../../include/contact_widgets.php:228
+#: ../../include/contact_widgets.php:222
#, php-format
msgid "View all %d common connections"
msgstr ""
-#: ../../include/markdown.php:200 ../../include/bbcode.php:358
+#: ../../include/markdown.php:198 ../../include/bbcode.php:347
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr ""
@@ -13843,92 +14145,92 @@ msgstr ""
msgid "Stored post could not be verified."
msgstr ""
-#: ../../include/activities.php:41
+#: ../../include/activities.php:42
msgid " and "
msgstr ""
-#: ../../include/activities.php:49
+#: ../../include/activities.php:50
msgid "public profile"
msgstr ""
-#: ../../include/activities.php:58
+#: ../../include/activities.php:59
#, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr ""
-#: ../../include/activities.php:59
+#: ../../include/activities.php:60
#, php-format
msgid "Visit %1$s's %2$s"
msgstr ""
-#: ../../include/activities.php:62
+#: ../../include/activities.php:63
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr ""
-#: ../../include/attach.php:265 ../../include/attach.php:374
+#: ../../include/attach.php:267 ../../include/attach.php:376
msgid "Item was not found."
msgstr ""
-#: ../../include/attach.php:282
+#: ../../include/attach.php:284
msgid "Unknown error."
msgstr ""
-#: ../../include/attach.php:567
+#: ../../include/attach.php:569
msgid "No source file."
msgstr ""
-#: ../../include/attach.php:589
+#: ../../include/attach.php:591
msgid "Cannot locate file to replace"
msgstr ""
-#: ../../include/attach.php:608
+#: ../../include/attach.php:610
msgid "Cannot locate file to revise/update"
msgstr ""
-#: ../../include/attach.php:750
+#: ../../include/attach.php:752
#, php-format
msgid "File exceeds size limit of %d"
msgstr ""
-#: ../../include/attach.php:771
+#: ../../include/attach.php:773
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr ""
-#: ../../include/attach.php:953
+#: ../../include/attach.php:955
msgid "File upload failed. Possible system limit or action terminated."
msgstr ""
-#: ../../include/attach.php:982
+#: ../../include/attach.php:984
msgid "Stored file could not be verified. Upload failed."
msgstr ""
-#: ../../include/attach.php:1056 ../../include/attach.php:1072
+#: ../../include/attach.php:1058 ../../include/attach.php:1074
msgid "Path not available."
msgstr ""
-#: ../../include/attach.php:1121 ../../include/attach.php:1286
+#: ../../include/attach.php:1123 ../../include/attach.php:1288
msgid "Empty pathname"
msgstr ""
-#: ../../include/attach.php:1147
+#: ../../include/attach.php:1149
msgid "duplicate filename or path"
msgstr ""
-#: ../../include/attach.php:1172
+#: ../../include/attach.php:1174
msgid "Path not found."
msgstr ""
-#: ../../include/attach.php:1240
+#: ../../include/attach.php:1242
msgid "mkdir failed."
msgstr ""
-#: ../../include/attach.php:1244
+#: ../../include/attach.php:1246
msgid "database storage failed."
msgstr ""
-#: ../../include/attach.php:1292
+#: ../../include/attach.php:1294
msgid "Empty path"
msgstr ""
@@ -13938,301 +14240,297 @@ msgid ""
"form has been opened for too long (>3 hours) before submitting it."
msgstr ""
-#: ../../include/items.php:911 ../../include/items.php:971
+#: ../../include/items.php:955 ../../include/items.php:1015
msgid "(Unknown)"
msgstr ""
-#: ../../include/items.php:1157
+#: ../../include/items.php:1203
msgid "Visible to anybody on the internet."
msgstr ""
-#: ../../include/items.php:1159
+#: ../../include/items.php:1205
msgid "Visible to you only."
msgstr ""
-#: ../../include/items.php:1161
+#: ../../include/items.php:1207
msgid "Visible to anybody in this network."
msgstr ""
-#: ../../include/items.php:1163
+#: ../../include/items.php:1209
msgid "Visible to anybody authenticated."
msgstr ""
-#: ../../include/items.php:1165
+#: ../../include/items.php:1211
#, php-format
msgid "Visible to anybody on %s."
msgstr ""
-#: ../../include/items.php:1167
+#: ../../include/items.php:1213
msgid "Visible to all connections."
msgstr ""
-#: ../../include/items.php:1169
+#: ../../include/items.php:1215
msgid "Visible to approved connections."
msgstr ""
-#: ../../include/items.php:1171
+#: ../../include/items.php:1217
msgid "Visible to specific connections."
msgstr ""
-#: ../../include/items.php:4183
+#: ../../include/items.php:4291
msgid "Privacy group is empty."
msgstr ""
-#: ../../include/items.php:4190
+#: ../../include/items.php:4298
#, php-format
msgid "Privacy group: %s"
msgstr ""
-#: ../../include/items.php:4202
+#: ../../include/items.php:4310
msgid "Connection not found."
msgstr ""
-#: ../../include/items.php:4551
+#: ../../include/items.php:4659
msgid "profile photo"
msgstr ""
-#: ../../include/items.php:4742
+#: ../../include/items.php:4851
#, php-format
msgid "[Edited %s]"
msgstr ""
-#: ../../include/items.php:4742
+#: ../../include/items.php:4851
msgctxt "edit_activity"
msgid "Post"
msgstr ""
-#: ../../include/items.php:4742
+#: ../../include/items.php:4851
msgctxt "edit_activity"
msgid "Comment"
msgstr ""
-#: ../../include/channel.php:42
+#: ../../include/channel.php:43
msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/channel.php:75
+#: ../../include/channel.php:76
msgid "Empty name"
msgstr ""
-#: ../../include/channel.php:78
+#: ../../include/channel.php:79
msgid "Name too long"
msgstr ""
-#: ../../include/channel.php:195
+#: ../../include/channel.php:196
msgid "No account identifier"
msgstr ""
-#: ../../include/channel.php:207
+#: ../../include/channel.php:208
msgid "Nickname is required."
msgstr ""
-#: ../../include/channel.php:284
+#: ../../include/channel.php:287
msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/channel.php:380
+#: ../../include/channel.php:429
msgid "Default Profile"
msgstr ""
-#: ../../include/channel.php:539 ../../include/channel.php:628
+#: ../../include/channel.php:588 ../../include/channel.php:677
msgid "Unable to retrieve modified identity"
msgstr ""
-#: ../../include/channel.php:1304
+#: ../../include/channel.php:1353
msgid "Create New Profile"
msgstr ""
-#: ../../include/channel.php:1325
+#: ../../include/channel.php:1374
msgid "Visible to everybody"
msgstr ""
-#: ../../include/channel.php:1402 ../../include/channel.php:1530
+#: ../../include/channel.php:1451 ../../include/channel.php:1579
msgid "Gender:"
msgstr ""
-#: ../../include/channel.php:1404 ../../include/channel.php:1598
+#: ../../include/channel.php:1453 ../../include/channel.php:1647
msgid "Homepage:"
msgstr ""
-#: ../../include/channel.php:1405
+#: ../../include/channel.php:1454
msgid "Online Now"
msgstr ""
-#: ../../include/channel.php:1458
+#: ../../include/channel.php:1507
msgid "Change your profile photo"
msgstr ""
-#: ../../include/channel.php:1489
+#: ../../include/channel.php:1538
msgid "Trans"
msgstr ""
-#: ../../include/channel.php:1535
+#: ../../include/channel.php:1584
msgid "Like this channel"
msgstr ""
-#: ../../include/channel.php:1559
+#: ../../include/channel.php:1608
msgid "j F, Y"
msgstr ""
-#: ../../include/channel.php:1560
+#: ../../include/channel.php:1609
msgid "j F"
msgstr ""
-#: ../../include/channel.php:1567
+#: ../../include/channel.php:1616
msgid "Birthday:"
msgstr ""
-#: ../../include/channel.php:1580
+#: ../../include/channel.php:1629
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/channel.php:1592
+#: ../../include/channel.php:1641
msgid "Tags:"
msgstr ""
-#: ../../include/channel.php:1596
+#: ../../include/channel.php:1645
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/channel.php:1602
+#: ../../include/channel.php:1651
msgid "Political Views:"
msgstr ""
-#: ../../include/channel.php:1604
+#: ../../include/channel.php:1653
msgid "Religion:"
msgstr ""
-#: ../../include/channel.php:1608
+#: ../../include/channel.php:1657
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/channel.php:1610
+#: ../../include/channel.php:1659
msgid "Likes:"
msgstr ""
-#: ../../include/channel.php:1612
+#: ../../include/channel.php:1661
msgid "Dislikes:"
msgstr ""
-#: ../../include/channel.php:1614
+#: ../../include/channel.php:1663
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/channel.php:1616
+#: ../../include/channel.php:1665
msgid "My other channels:"
msgstr ""
-#: ../../include/channel.php:1618
+#: ../../include/channel.php:1667
msgid "Musical interests:"
msgstr ""
-#: ../../include/channel.php:1620
+#: ../../include/channel.php:1669
msgid "Books, literature:"
msgstr ""
-#: ../../include/channel.php:1622
+#: ../../include/channel.php:1671
msgid "Television:"
msgstr ""
-#: ../../include/channel.php:1624
+#: ../../include/channel.php:1673
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/channel.php:1626
+#: ../../include/channel.php:1675
msgid "Love/Romance:"
msgstr ""
-#: ../../include/channel.php:1628
+#: ../../include/channel.php:1677
msgid "Work/employment:"
msgstr ""
-#: ../../include/channel.php:1630
+#: ../../include/channel.php:1679
msgid "School/education:"
msgstr ""
-#: ../../include/channel.php:1653
+#: ../../include/channel.php:1702
msgid "Like this thing"
msgstr ""
-#: ../../include/event.php:24 ../../include/event.php:71
+#: ../../include/event.php:28 ../../include/event.php:75
msgid "l F d, Y \\@ g:i A"
msgstr ""
-#: ../../include/event.php:32 ../../include/event.php:75
+#: ../../include/event.php:36 ../../include/event.php:79
msgid "Starts:"
msgstr ""
-#: ../../include/event.php:42 ../../include/event.php:79
+#: ../../include/event.php:46 ../../include/event.php:83
msgid "Finishes:"
msgstr ""
-#: ../../include/event.php:1011
+#: ../../include/event.php:1020
msgid "This event has been added to your calendar."
msgstr ""
-#: ../../include/event.php:1227
+#: ../../include/event.php:1239
msgid "Not specified"
msgstr ""
-#: ../../include/event.php:1228
+#: ../../include/event.php:1240
msgid "Needs Action"
msgstr ""
-#: ../../include/event.php:1229
+#: ../../include/event.php:1241
msgid "Completed"
msgstr ""
-#: ../../include/event.php:1230
+#: ../../include/event.php:1242
msgid "In Process"
msgstr ""
-#: ../../include/event.php:1231
+#: ../../include/event.php:1243
msgid "Cancelled"
msgstr ""
-#: ../../include/event.php:1310 ../../include/connections.php:698
+#: ../../include/event.php:1322 ../../include/connections.php:698
msgid "Home, Voice"
msgstr ""
-#: ../../include/event.php:1311 ../../include/connections.php:699
+#: ../../include/event.php:1323 ../../include/connections.php:699
msgid "Home, Fax"
msgstr ""
-#: ../../include/event.php:1313 ../../include/connections.php:701
+#: ../../include/event.php:1325 ../../include/connections.php:701
msgid "Work, Voice"
msgstr ""
-#: ../../include/event.php:1314 ../../include/connections.php:702
+#: ../../include/event.php:1326 ../../include/connections.php:702
msgid "Work, Fax"
msgstr ""
-#: ../../include/network.php:770
-msgid "view full size"
-msgstr ""
-
-#: ../../include/network.php:1776
+#: ../../include/network.php:1718
msgid "GNU-Social"
msgstr ""
-#: ../../include/network.php:1777
+#: ../../include/network.php:1719
msgid "RSS/Atom"
msgstr ""
-#: ../../include/network.php:1781
+#: ../../include/network.php:1723
msgid "Facebook"
msgstr ""
-#: ../../include/network.php:1783
+#: ../../include/network.php:1725
msgid "LinkedIn"
msgstr ""
-#: ../../include/network.php:1784
+#: ../../include/network.php:1726
msgid "XMPP/IM"
msgstr ""
-#: ../../include/network.php:1785
+#: ../../include/network.php:1727
msgid "MySpace"
msgstr ""
@@ -14269,22 +14567,17 @@ msgid ""
"permissions set who is allowed to view the post."
msgstr ""
-#: ../../include/dba/dba_driver.php:178
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr ""
-
-#: ../../include/bbcode.php:200 ../../include/bbcode.php:1201
-#: ../../include/bbcode.php:1204 ../../include/bbcode.php:1209
-#: ../../include/bbcode.php:1212 ../../include/bbcode.php:1215
-#: ../../include/bbcode.php:1218 ../../include/bbcode.php:1223
-#: ../../include/bbcode.php:1226 ../../include/bbcode.php:1231
-#: ../../include/bbcode.php:1234 ../../include/bbcode.php:1237
-#: ../../include/bbcode.php:1240
+#: ../../include/bbcode.php:200 ../../include/bbcode.php:1190
+#: ../../include/bbcode.php:1193 ../../include/bbcode.php:1198
+#: ../../include/bbcode.php:1201 ../../include/bbcode.php:1204
+#: ../../include/bbcode.php:1207 ../../include/bbcode.php:1212
+#: ../../include/bbcode.php:1215 ../../include/bbcode.php:1220
+#: ../../include/bbcode.php:1223 ../../include/bbcode.php:1226
+#: ../../include/bbcode.php:1229
msgid "Image/photo"
msgstr ""
-#: ../../include/bbcode.php:239 ../../include/bbcode.php:1251
+#: ../../include/bbcode.php:239 ../../include/bbcode.php:1240
msgid "Encrypted content"
msgstr ""
@@ -14300,51 +14593,51 @@ msgid ""
"to install it on this site."
msgstr ""
-#: ../../include/bbcode.php:350
+#: ../../include/bbcode.php:339
msgid "card"
msgstr ""
-#: ../../include/bbcode.php:352
+#: ../../include/bbcode.php:341
msgid "article"
msgstr ""
-#: ../../include/bbcode.php:435 ../../include/bbcode.php:443
+#: ../../include/bbcode.php:424 ../../include/bbcode.php:432
msgid "Click to open/close"
msgstr ""
-#: ../../include/bbcode.php:443
+#: ../../include/bbcode.php:432
msgid "spoiler"
msgstr ""
-#: ../../include/bbcode.php:456
+#: ../../include/bbcode.php:445
msgid "View article"
msgstr ""
-#: ../../include/bbcode.php:456
+#: ../../include/bbcode.php:445
msgid "View summary"
msgstr ""
-#: ../../include/bbcode.php:1189
+#: ../../include/bbcode.php:1178
msgid "$1 wrote:"
msgstr ""
-#: ../../include/oembed.php:224
+#: ../../include/oembed.php:226
msgid "View PDF"
msgstr ""
-#: ../../include/oembed.php:347
+#: ../../include/oembed.php:356
msgid " by "
msgstr ""
-#: ../../include/oembed.php:348
+#: ../../include/oembed.php:357
msgid " on "
msgstr ""
-#: ../../include/oembed.php:377
+#: ../../include/oembed.php:386
msgid "Embedded content"
msgstr ""
-#: ../../include/oembed.php:386
+#: ../../include/oembed.php:395
msgid "Embedding disabled"
msgstr ""
@@ -14377,11 +14670,11 @@ msgstr ""
msgid "Provide a personal tag cloud on your channel page"
msgstr ""
-#: ../../include/features.php:116 ../../include/features.php:381
+#: ../../include/features.php:116 ../../include/features.php:373
msgid "Use blog/list mode"
msgstr ""
-#: ../../include/features.php:117 ../../include/features.php:382
+#: ../../include/features.php:117 ../../include/features.php:374
msgid "Comments will be displayed separately"
msgstr ""
@@ -14592,47 +14885,39 @@ msgstr ""
msgid "Ability to display only posts that you've interacted on"
msgstr ""
-#: ../../include/features.php:365
-msgid "Affinity Tool"
-msgstr ""
-
#: ../../include/features.php:366
-msgid "Filter stream activity by depth of relationships"
-msgstr ""
-
-#: ../../include/features.php:374
msgid "Show friend and connection suggestions"
msgstr ""
-#: ../../include/features.php:395
+#: ../../include/features.php:387
msgid "Photo Location"
msgstr ""
-#: ../../include/features.php:396
+#: ../../include/features.php:388
msgid "If location data is available on uploaded photos, link this to a map."
msgstr ""
-#: ../../include/features.php:409
+#: ../../include/features.php:401
msgid "Advanced Profiles"
msgstr ""
-#: ../../include/features.php:410
+#: ../../include/features.php:402
msgid "Additional profile sections and selections"
msgstr ""
-#: ../../include/features.php:417
+#: ../../include/features.php:409
msgid "Profile Import/Export"
msgstr ""
-#: ../../include/features.php:418
+#: ../../include/features.php:410
msgid "Save and load profile details across sites/channels"
msgstr ""
-#: ../../include/features.php:425
+#: ../../include/features.php:417
msgid "Multiple Profiles"
msgstr ""
-#: ../../include/features.php:426
+#: ../../include/features.php:418
msgid "Ability to create multiple profiles"
msgstr ""
@@ -14877,55 +15162,55 @@ msgstr ""
msgid "Site Setup and Configuration"
msgstr ""
-#: ../../include/nav.php:299
+#: ../../include/nav.php:329
msgid "@name, !forum, #tag, ?doc, content"
msgstr ""
-#: ../../include/nav.php:300
+#: ../../include/nav.php:330
msgid "Please wait..."
msgstr ""
-#: ../../include/nav.php:306
+#: ../../include/nav.php:336
msgid "Add Apps"
msgstr ""
-#: ../../include/nav.php:307
+#: ../../include/nav.php:337
msgid "Arrange Apps"
msgstr ""
-#: ../../include/nav.php:308
+#: ../../include/nav.php:338
msgid "Toggle System Apps"
msgstr ""
-#: ../../include/nav.php:394
+#: ../../include/nav.php:424
msgid "Status Messages and Posts"
msgstr ""
-#: ../../include/nav.php:407
+#: ../../include/nav.php:437
msgid "Profile Details"
msgstr ""
-#: ../../include/nav.php:417 ../../include/photos.php:667
+#: ../../include/nav.php:447 ../../include/photos.php:669
msgid "Photo Albums"
msgstr ""
-#: ../../include/nav.php:425
+#: ../../include/nav.php:455
msgid "Files and Storage"
msgstr ""
-#: ../../include/nav.php:463
+#: ../../include/nav.php:493
msgid "Saved Bookmarks"
msgstr ""
-#: ../../include/nav.php:474
+#: ../../include/nav.php:504
msgid "View Cards"
msgstr ""
-#: ../../include/nav.php:485
+#: ../../include/nav.php:515
msgid "View Articles"
msgstr ""
-#: ../../include/nav.php:497
+#: ../../include/nav.php:527
msgid "View Webpages"
msgstr ""
@@ -14952,15 +15237,15 @@ msgctxt "photo_upload"
msgid "%1$s posted %2$s to %3$s"
msgstr ""
-#: ../../include/photos.php:672
+#: ../../include/photos.php:674
msgid "Upload New Photos"
msgstr ""
-#: ../../include/zot.php:773
+#: ../../include/zot.php:775
msgid "Invalid data packet"
msgstr ""
-#: ../../include/zot.php:4235
+#: ../../include/zot.php:4288
msgid "invalid target signature"
msgstr ""
diff --git a/util/udall b/util/udall
index f1d52a1d1..44f37e86e 100755
--- a/util/udall
+++ b/util/udall
@@ -7,7 +7,7 @@ git pull
if [ -d extend ] ; then
for a in theme addon widget ; do
- if [ -d $a ]; then
+ if [ -d extend/$a ]; then
for b in `ls extend/$a` ; do
echo Updating $b
'util/update_'$a'_repo' $b
diff --git a/vendor/blueimp/jquery-file-upload/README.md b/vendor/blueimp/jquery-file-upload/README.md
index d2f104d5c..d9e16ed18 100644
--- a/vendor/blueimp/jquery-file-upload/README.md
+++ b/vendor/blueimp/jquery-file-upload/README.md
@@ -10,7 +10,7 @@ Supports cross-domain, chunked and resumable file uploads and client-side image
## ⚠️ Security Notice
Security related releases:
-* [v9.25.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.25.1) Mitigates some [Potential vulnerabilities with PHP+ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php+imagemagick).
+* [v9.25.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.25.1) Mitigates some [Potential vulnerabilities with PHP+ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php-imagemagick).
* [v9.24.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.24.1) Fixes a [Remote code execution vulnerability in the PHP component](VULNERABILITIES.md#remote-code-execution-vulnerability-in-the-php-component).
* v[9.10.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/9.10.1) Fixes an [Open redirect vulnerability in the GAE components](VULNERABILITIES.md#open-redirect-vulnerability-in-the-gae-components).
* Commit [4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a) (*fixed in all tagged releases*) Fixes a [Cross-site scripting vulnerability in the Iframe Transport](VULNERABILITIES.md#cross-site-scripting-vulnerability-in-the-iframe-transport).
diff --git a/vendor/blueimp/jquery-file-upload/SECURITY.md b/vendor/blueimp/jquery-file-upload/SECURITY.md
index db58f7dd7..86ffc163b 100644
--- a/vendor/blueimp/jquery-file-upload/SECURITY.md
+++ b/vendor/blueimp/jquery-file-upload/SECURITY.md
@@ -113,7 +113,7 @@ location ^~ /path/to/project/server/php/files {
```
## Secure image processing configurations
-The following configuration mitigates [potential image processing vulnerabilities with ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php+imagemagick) by limiting the attack vectors to a small subset of image types (`GIF/JPEG/PNG`).
+The following configuration mitigates [potential image processing vulnerabilities with ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php-imagemagick) by limiting the attack vectors to a small subset of image types (`GIF/JPEG/PNG`).
Please also consider using alternative, safer image processing libraries like [libvips](https://github.com/libvips/libvips) or [imageflow](https://github.com/imazen/imageflow).
diff --git a/vendor/blueimp/jquery-file-upload/angularjs.html b/vendor/blueimp/jquery-file-upload/angularjs.html
index 2051bbf79..e8b05e77f 100644
--- a/vendor/blueimp/jquery-file-upload/angularjs.html
+++ b/vendor/blueimp/jquery-file-upload/angularjs.html
@@ -22,7 +22,7 @@
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for AngularJS. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- blueimp Gallery styles -->
@@ -177,8 +177,8 @@
<a class="play-pause"></a>
<ol class="indicator"></ol>
</div>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js" integrity="sha384-r6jjWwxAypHaESwS5an5J9dkfzwQuKVNV9FZM9B6fnt8PFuY0cVwLhV7BltCZhLy" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
@@ -186,7 +186,7 @@
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- blueimp Gallery script -->
<script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
diff --git a/vendor/blueimp/jquery-file-upload/basic-plus.html b/vendor/blueimp/jquery-file-upload/basic-plus.html
index acee24843..6d53acdc1 100644
--- a/vendor/blueimp/jquery-file-upload/basic-plus.html
+++ b/vendor/blueimp/jquery-file-upload/basic-plus.html
@@ -20,7 +20,7 @@
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
@@ -96,15 +96,15 @@
</div>
</div>
</div>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
-<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
+<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
diff --git a/vendor/blueimp/jquery-file-upload/basic.html b/vendor/blueimp/jquery-file-upload/basic.html
index 232a24624..a9ef6273e 100644
--- a/vendor/blueimp/jquery-file-upload/basic.html
+++ b/vendor/blueimp/jquery-file-upload/basic.html
@@ -20,7 +20,7 @@
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support and progress bar for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
@@ -96,7 +96,7 @@
</div>
</div>
</div>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
@@ -104,7 +104,7 @@
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script>
/*jslint unparam: true */
/*global window, $ */
diff --git a/vendor/blueimp/jquery-file-upload/bower-version-update.js b/vendor/blueimp/jquery-file-upload/bower-version-update.js
index 09ce3927e..09ce3927e 100755..100644
--- a/vendor/blueimp/jquery-file-upload/bower-version-update.js
+++ b/vendor/blueimp/jquery-file-upload/bower-version-update.js
diff --git a/vendor/blueimp/jquery-file-upload/bower.json b/vendor/blueimp/jquery-file-upload/bower.json
index 34594a32f..2a56262a1 100644
--- a/vendor/blueimp/jquery-file-upload/bower.json
+++ b/vendor/blueimp/jquery-file-upload/bower.json
@@ -1,6 +1,6 @@
{
"name": "blueimp-file-upload",
- "version": "9.25.1",
+ "version": "9.28.0",
"title": "jQuery File Upload",
"description": "File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images.",
"keywords": [
diff --git a/vendor/blueimp/jquery-file-upload/cors/postmessage.html b/vendor/blueimp/jquery-file-upload/cors/postmessage.html
index 6a56cf0b6..381a8e0cd 100644
--- a/vendor/blueimp/jquery-file-upload/cors/postmessage.html
+++ b/vendor/blueimp/jquery-file-upload/cors/postmessage.html
@@ -15,7 +15,7 @@
<head>
<meta charset="utf-8">
<title>jQuery File Upload Plugin postMessage API</title>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
</head>
<body>
<script>
diff --git a/vendor/blueimp/jquery-file-upload/index.html b/vendor/blueimp/jquery-file-upload/index.html
index c8c66ad8b..37e08a7cb 100644
--- a/vendor/blueimp/jquery-file-upload/index.html
+++ b/vendor/blueimp/jquery-file-upload/index.html
@@ -22,7 +22,7 @@
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- blueimp Gallery styles -->
@@ -216,7 +216,7 @@
</tr>
{% } %}
</script>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Templates plugin is included to render the upload/download listings -->
@@ -226,7 +226,7 @@
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- blueimp Gallery script -->
<script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
diff --git a/vendor/blueimp/jquery-file-upload/jquery-ui.html b/vendor/blueimp/jquery-file-upload/jquery-ui.html
index 842dd4ca7..e44d41e89 100644
--- a/vendor/blueimp/jquery-file-upload/jquery-ui.html
+++ b/vendor/blueimp/jquery-file-upload/jquery-ui.html
@@ -22,7 +22,7 @@
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- jQuery UI styles -->
-<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/dark-hive/jquery-ui.css" id="theme">
+<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/dark-hive/jquery-ui.css" integrity="sha384-ufZtQaOYGuy/CibAC5jmelOpBu3H78Js7HrXSLo4LGccHUrGGHXt+uaTcDbio3kI" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- Demo styles -->
@@ -201,8 +201,8 @@
</tr>
{% } %}
</script>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha384-Dziy8F2VlJQLMShA6FHWNul/veM9bCkRUaLqr199K94ntO5QUrLJBEbYegdSkkqX" crossorigin="anonymous"></script>
<!-- The Templates plugin is included to render the upload/download listings -->
<script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
diff --git a/vendor/blueimp/jquery-file-upload/package.json b/vendor/blueimp/jquery-file-upload/package.json
index 4b33a0362..0a635397c 100644
--- a/vendor/blueimp/jquery-file-upload/package.json
+++ b/vendor/blueimp/jquery-file-upload/package.json
@@ -1,6 +1,6 @@
{
"name": "blueimp-file-upload",
- "version": "9.25.1",
+ "version": "9.28.0",
"title": "jQuery File Upload",
"description": "File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.",
"keywords": [
diff --git a/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php b/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php
index e44004395..5215e4c0f 100755..100644
--- a/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php
+++ b/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php
@@ -38,9 +38,9 @@ class UploadHandler
'image_resize' => 'Failed to resize image'
);
- protected const IMAGETYPE_GIF = 1;
- protected const IMAGETYPE_JPEG = 2;
- protected const IMAGETYPE_PNG = 3;
+ const IMAGETYPE_GIF = 1;
+ const IMAGETYPE_JPEG = 2;
+ const IMAGETYPE_PNG = 3;
protected $image_objects = array();
@@ -1047,13 +1047,18 @@ class UploadHandler
}
protected function create_scaled_image($file_name, $version, $options) {
- if ($this->options['image_library'] === 2) {
- return $this->imagemagick_create_scaled_image($file_name, $version, $options);
- }
- if ($this->options['image_library'] && extension_loaded('imagick')) {
- return $this->imagick_create_scaled_image($file_name, $version, $options);
+ try {
+ if ($this->options['image_library'] === 2) {
+ return $this->imagemagick_create_scaled_image($file_name, $version, $options);
+ }
+ if ($this->options['image_library'] && extension_loaded('imagick')) {
+ return $this->imagick_create_scaled_image($file_name, $version, $options);
+ }
+ return $this->gd_create_scaled_image($file_name, $version, $options);
+ } catch (\Exception $e) {
+ error_log($e->getMessage());
+ return false;
}
- return $this->gd_create_scaled_image($file_name, $version, $options);
}
protected function destroy_image_object($file_path) {
@@ -1066,12 +1071,12 @@ class UploadHandler
$fp = fopen($file_path, 'r');
$data = fread($fp, 4);
fclose($fp);
- // GIF: 47 49 46
- if (substr($data, 0, 3) === 'GIF') {
+ // GIF: 47 49 46 38
+ if ($data === 'GIF8') {
return self::IMAGETYPE_GIF;
}
- // JPG: FF D8
- if (bin2hex(substr($data, 0, 2)) === 'ffd8') {
+ // JPG: FF D8 FF
+ if (bin2hex(substr($data, 0, 3)) === 'ffd8ff') {
return self::IMAGETYPE_JPEG;
}
// PNG: 89 50 4E 47
@@ -1082,6 +1087,9 @@ class UploadHandler
}
protected function is_valid_image_file($file_path) {
+ if (!preg_match('/\.(gif|jpe?g|png)$/i', $file_path)) {
+ return false;
+ }
return !!$this->imagetype($file_path);
}
diff --git a/vendor/blueimp/jquery-file-upload/server/php/index.php b/vendor/blueimp/jquery-file-upload/server/php/index.php
index 9c2cfb8eb..6caabb710 100644
--- a/vendor/blueimp/jquery-file-upload/server/php/index.php
+++ b/vendor/blueimp/jquery-file-upload/server/php/index.php
@@ -9,7 +9,7 @@
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
-exit;
+
error_reporting(E_ALL | E_STRICT);
require('UploadHandler.php');
$upload_handler = new UploadHandler();
diff --git a/vendor/blueimp/jquery-file-upload/test/index.html b/vendor/blueimp/jquery-file-upload/test/index.html
index 0b5cf57b7..b8c585df5 100644
--- a/vendor/blueimp/jquery-file-upload/test/index.html
+++ b/vendor/blueimp/jquery-file-upload/test/index.html
@@ -20,7 +20,7 @@
<meta charset="utf-8">
<title>jQuery File Upload Plugin Test</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.23.1.css">
+<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.23.1.css" integrity="sha384-RW07PgMHO3eNYL7ddFK/okEi1rjvSeJ3Ck/TxGUHkmzSlGmw4R9/KGJYUD3OicMd" crossorigin="anonymous">
</head>
<body>
<h1 id="qunit-header">jQuery File Upload Plugin Test</h1>
@@ -145,7 +145,7 @@
</tr>
{% } %}
</script>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
<script src="../js/vendor/jquery.ui.widget.js"></script>
<script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
@@ -166,7 +166,7 @@ window.testBasicWidget = $.blueimp.fileupload;
/* global window, $ */
window.testUIWidget = $.blueimp.fileupload;
</script>
-<script src="https://code.jquery.com/qunit/qunit-1.23.1.js"></script>
+<script src="https://code.jquery.com/qunit/qunit-1.23.1.js" integrity="sha384-FJbPWND3tHbuhP8PhCp3Kn0bEtCxaIq+sfkmiJ+Su0jchKFnVbPQTTyPiuwqbkXa" crossorigin="anonymous"></script>
<script src="test.js"></script>
</body>
</html>
diff --git a/vendor/bshaffer/oauth2-server-php/CHANGELOG.md b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
index 7671b2396..1b87f3da3 100644
--- a/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
+++ b/vendor/bshaffer/oauth2-server-php/CHANGELOG.md
@@ -8,7 +8,7 @@ To see the files changed for a given bug, go to https://github.com/bshaffer/oaut
To get the diff between two versions, go to https://github.com/bshaffer/oauth2-server-php/compare/v1.0...v1.1
To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-server-php/commit/XXX where XXX is the change hash
-* 1.10.0 (2017-12-14)
+* 1.10.0 (2017-11-15)
PR: https://github.com/bshaffer/oauth2-server-php/pull/889
@@ -26,7 +26,7 @@ To get the diff for a specific change, go to https://github.com/bshaffer/oauth2-
* #794 - [docs] Fix typo in composer.json
* #885 - [testing] Use PHPUnit\Framework\TestCase instead of PHPUnit_Framework_TestCase
-* 1.9.0 (2016-01-06)
+* 1.9.0 (2017-01-06)
PR: https://github.com/bshaffer/oauth2-server-php/pull/788
diff --git a/vendor/bshaffer/oauth2-server-php/README.md b/vendor/bshaffer/oauth2-server-php/README.md
index f1788e9ce..117743d4f 100644
--- a/vendor/bshaffer/oauth2-server-php/README.md
+++ b/vendor/bshaffer/oauth2-server-php/README.md
@@ -1,7 +1,7 @@
oauth2-server-php
=================
-[![Build Status](https://travis-ci.org/bshaffer/oauth2-server-php.svg?branch=develop)](https://travis-ci.org/bshaffer/oauth2-server-php)
+[![Build Status](https://travis-ci.org/bshaffer/oauth2-server-php.svg?branch=master)](https://travis-ci.org/bshaffer/oauth2-server-php)
[![Total Downloads](https://poser.pugx.org/bshaffer/oauth2-server-php/downloads.png)](https://packagist.org/packages/bshaffer/oauth2-server-php)
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
index c96cb972f..f547bf6e8 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Request.php
@@ -64,7 +64,12 @@ class Request implements RequestInterface
$this->files = $files;
$this->server = $server;
$this->content = $content;
- $this->headers = is_null($headers) ? $this->getHeadersFromServer($this->server) : $headers;
+
+ if ($headers === null) {
+ $headers = array();
+ }
+
+ $this->headers = $headers + $this->getHeadersFromServer($this->server);
}
/**
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
index ccd797ae7..88c1ad5f7 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Response.php
@@ -366,7 +366,7 @@ class Response implements ResponseInterface
if (count($this->parameters) > 0) {
// add parameters to URL redirection
$parts = parse_url($url);
- $sep = isset($parts['query']) && count($parts['query']) > 0 ? '&' : '?';
+ $sep = isset($parts['query']) && !empty($parts['query']) ? '&' : '?';
$url .= $sep . http_build_query($this->parameters);
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
index 0af9705ff..0ee3708aa 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/ResponseType/JwtAccessToken.php
@@ -128,7 +128,7 @@ class JwtAccessToken extends AccessToken
$expires = time() + $this->config['access_lifetime'];
$id = $this->generateAccessToken();
- return array(
+ $payload = array(
'id' => $id, // for BC (see #591)
'jti' => $id,
'iss' => $this->config['issuer'],
@@ -139,5 +139,21 @@ class JwtAccessToken extends AccessToken
'token_type' => $this->config['token_type'],
'scope' => $scope
);
+
+ if (isset($this->config['jwt_extra_payload_callable'])) {
+ if (!is_callable($this->config['jwt_extra_payload_callable'])) {
+ throw new \InvalidArgumentException('jwt_extra_payload_callable is not callable');
+ }
+
+ $extra = call_user_func($this->config['jwt_extra_payload_callable'], $client_id, $user_id, $scope);
+
+ if (!is_array($extra)) {
+ throw new \InvalidArgumentException('jwt_extra_payload_callable must return array');
+ }
+
+ $payload = array_merge($extra, $payload);
+ }
+
+ return $payload;
}
}
diff --git a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
index 62ae8970d..cf040c2bc 100644
--- a/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
+++ b/vendor/bshaffer/oauth2-server-php/src/OAuth2/Server.php
@@ -88,12 +88,12 @@ class Server implements ResourceControllerInterface,
/**
* @var array
*/
- protected $grantTypes = [];
+ protected $grantTypes = array();
/**
* @var array
*/
- protected $responseTypes = [];
+ protected $responseTypes = array();
/**
* @var TokenTypeInterface
@@ -161,6 +161,7 @@ class Server implements ResourceControllerInterface,
// merge all config values. These get passed to our controller objects
$this->config = array_merge(array(
'use_jwt_access_tokens' => false,
+ 'jwt_extra_payload_callable' => null,
'store_encrypted_token_string' => true,
'use_openid_connect' => false,
'id_lifetime' => 3600,
@@ -840,7 +841,7 @@ class Server implements ResourceControllerInterface,
$refreshStorage = $this->storages['refresh_token'];
}
- $config = array_intersect_key($this->config, array_flip(explode(' ', 'store_encrypted_token_string issuer access_lifetime refresh_token_lifetime')));
+ $config = array_intersect_key($this->config, array_flip(explode(' ', 'store_encrypted_token_string issuer access_lifetime refresh_token_lifetime jwt_extra_payload_callable')));
return new JwtAccessToken($this->storages['public_key'], $tokenStorage, $refreshStorage, $config);
}
@@ -1015,4 +1016,4 @@ class Server implements ResourceControllerInterface,
{
return isset($this->config[$name]) ? $this->config[$name] : $default;
}
-} \ No newline at end of file
+}
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
index cbf8f096b..770cd8994 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/RequestTest.php
@@ -86,6 +86,24 @@ class RequestTest extends TestCase
$this->assertEquals('correct', $request->query('client_id', $request->request('client_id')));
}
+ public function testRequestHasHeadersAndServerHeaders()
+ {
+ $request = new Request(
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array('CONTENT_TYPE' => 'text/xml', 'PHP_AUTH_USER' => 'client_id', 'PHP_AUTH_PW' => 'client_pass'),
+ null,
+ array('CONTENT_TYPE' => 'application/json')
+ );
+
+ $this->assertSame('client_id', $request->headers('PHP_AUTH_USER'));
+ $this->assertSame('client_pass', $request->headers('PHP_AUTH_PW'));
+ $this->assertSame('application/json', $request->headers('CONTENT_TYPE'));
+ }
+
private function getTestServer($config = array())
{
$storage = Bootstrap::getInstance()->getMemoryStorage();
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
index 2d2c57ee6..172bc88fd 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseTest.php
@@ -1,6 +1,8 @@
<?php
-namespace OAuth2;use PHPUnit\Framework\TestCase;
+namespace OAuth2;
+
+use PHPUnit\Framework\TestCase;
class ResponseTest extends TestCase
{
@@ -14,4 +16,23 @@ class ResponseTest extends TestCase
$string = $response->getResponseBody('xml');
$this->assertContains('<response><foo>bar</foo><halland>oates</halland></response>', $string);
}
+
+ public function testSetRedirect()
+ {
+ $response = new Response();
+ $url = 'https://foo/bar';
+ $state = 'stateparam';
+ $response->setRedirect(301, $url, $state);
+ $this->assertEquals(
+ sprintf('%s?state=%s', $url, $state),
+ $response->getHttpHeader('Location')
+ );
+
+ $query = 'query=foo';
+ $response->setRedirect(301, $url . '?' . $query, $state);
+ $this->assertEquals(
+ sprintf('%s?%s&state=%s', $url, $query, $state),
+ $response->getHttpHeader('Location')
+ );
+ }
}
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
index 7e37509ef..6195d557a 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/ResponseType/JwtAccessTokenTest.php
@@ -40,6 +40,23 @@ class JwtAccessTokenTest extends TestCase
$this->assertEquals(3600, $delta);
$this->assertEquals($decodedAccessToken['id'], $decodedAccessToken['jti']);
}
+
+ public function testExtraPayloadCallback()
+ {
+ $jwtconfig = array('jwt_extra_payload_callable' => function() {
+ return array('custom_param' => 'custom_value');
+ });
+
+ $server = $this->getTestServer($jwtconfig);
+ $jwtResponseType = $server->getResponseType('token');
+
+ $accessToken = $jwtResponseType->createAccessToken('Test Client ID', 123, 'test', false);
+ $jwt = new Jwt;
+ $decodedAccessToken = $jwt->decode($accessToken['access_token'], null, false);
+
+ $this->assertArrayHasKey('custom_param', $decodedAccessToken);
+ $this->assertEquals('custom_value', $decodedAccessToken['custom_param']);
+ }
public function testGrantJwtAccessToken()
{
@@ -140,7 +157,7 @@ class JwtAccessTokenTest extends TestCase
$this->assertNotNull($response->getParameter('access_token'));
}
- private function getTestServer()
+ private function getTestServer($jwtconfig = array())
{
$memoryStorage = Bootstrap::getInstance()->getMemoryStorage();
@@ -153,7 +170,7 @@ class JwtAccessTokenTest extends TestCase
$server->addGrantType(new ClientCredentials($memoryStorage));
// make the "token" response type a JwtAccessToken
- $config = array('issuer' => 'https://api.example.com');
+ $config = array_merge(array('issuer' => 'https://api.example.com'), $jwtconfig);
$server->addResponseType(new JwtAccessToken($memoryStorage, $memoryStorage, null, $config));
return $server;
diff --git a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
index 57eb39072..4599f69bf 100644
--- a/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
+++ b/vendor/bshaffer/oauth2-server-php/test/OAuth2/Storage/PdoTest.php
@@ -6,7 +6,8 @@ class PdoTest extends BaseTest
{
public function testCreatePdoStorageUsingPdoClass()
{
- $pdo = new \PDO(sprintf('sqlite://%s', Bootstrap::getInstance()->getSqliteDir()));
+ $dsn = sprintf('sqlite:%s', Bootstrap::getInstance()->getSqliteDir());
+ $pdo = new \PDO($dsn);
$storage = new Pdo($pdo);
$this->assertNotNull($storage->getClientDetails('oauth_test_client'));
@@ -14,7 +15,7 @@ class PdoTest extends BaseTest
public function testCreatePdoStorageUsingDSN()
{
- $dsn = sprintf('sqlite://%s', Bootstrap::getInstance()->getSqliteDir());
+ $dsn = sprintf('sqlite:%s', Bootstrap::getInstance()->getSqliteDir());
$storage = new Pdo($dsn);
$this->assertNotNull($storage->getClientDetails('oauth_test_client'));
@@ -22,7 +23,8 @@ class PdoTest extends BaseTest
public function testCreatePdoStorageUsingConfig()
{
- $config = array('dsn' => sprintf('sqlite://%s', Bootstrap::getInstance()->getSqliteDir()));
+ $dsn = sprintf('sqlite:%s', Bootstrap::getInstance()->getSqliteDir());
+ $config = array('dsn' => $dsn);
$storage = new Pdo($config);
$this->assertNotNull($storage->getClientDetails('oauth_test_client'));
diff --git a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
index 3d7bdd4e9..8e428f9b5 100644
--- a/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
+++ b/vendor/bshaffer/oauth2-server-php/test/lib/OAuth2/Storage/Bootstrap.php
@@ -36,7 +36,7 @@ class Bootstrap
{
if (!$this->sqlite) {
$this->removeSqliteDb();
- $pdo = new \PDO(sprintf('sqlite://%s', $this->getSqliteDir()));
+ $pdo = new \PDO(sprintf('sqlite:%s', $this->getSqliteDir()));
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$this->createSqliteDb($pdo);
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 95f7e0978..fce8549f0 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -279,7 +279,7 @@ class ClassLoader
*/
public function setApcuPrefix($apcuPrefix)
{
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
index f0157a6ed..f27399a04 100644
--- a/vendor/composer/LICENSE
+++ b/vendor/composer/LICENSE
@@ -1,56 +1,21 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: Composer
-Upstream-Contact: Jordi Boggiano <j.boggiano@seld.be>
-Source: https://github.com/composer/composer
-Files: *
-Copyright: 2016, Nils Adermann <naderman@naderman.de>
- 2016, Jordi Boggiano <j.boggiano@seld.be>
-License: Expat
+Copyright (c) Nils Adermann, Jordi Boggiano
-Files: src/Composer/Util/TlsHelper.php
-Copyright: 2016, Nils Adermann <naderman@naderman.de>
- 2016, Jordi Boggiano <j.boggiano@seld.be>
- 2013, Evan Coury <me@evancoury.com>
-License: Expat and BSD-2-Clause
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
-License: BSD-2-Clause
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
- .
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- .
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- .
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
-License: Expat
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is furnished
- to do so, subject to the following conditions:
- .
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
- .
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index f3c814e02..de9c63bdc 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -811,6 +811,7 @@ return array(
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
'Zotlabs\\Access\\Permissions' => $baseDir . '/Zotlabs/Access/Permissions.php',
'Zotlabs\\Daemon\\Addon' => $baseDir . '/Zotlabs/Daemon/Addon.php',
+ 'Zotlabs\\Daemon\\Cache_embeds' => $baseDir . '/Zotlabs/Daemon/Cache_embeds.php',
'Zotlabs\\Daemon\\Checksites' => $baseDir . '/Zotlabs/Daemon/Checksites.php',
'Zotlabs\\Daemon\\Cli_suggest' => $baseDir . '/Zotlabs/Daemon/Cli_suggest.php',
'Zotlabs\\Daemon\\Cron' => $baseDir . '/Zotlabs/Daemon/Cron.php',
@@ -876,6 +877,7 @@ return array(
'Zotlabs\\Lib\\System' => $baseDir . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => $baseDir . '/Zotlabs/Lib/Techlevels.php',
'Zotlabs\\Lib\\ThreadItem' => $baseDir . '/Zotlabs/Lib/ThreadItem.php',
+ 'Zotlabs\\Lib\\ThreadListener' => $baseDir . '/Zotlabs/Lib/ThreadListener.php',
'Zotlabs\\Lib\\ThreadStream' => $baseDir . '/Zotlabs/Lib/ThreadStream.php',
'Zotlabs\\Lib\\Verify' => $baseDir . '/Zotlabs/Lib/Verify.php',
'Zotlabs\\Lib\\Webfinger' => $baseDir . '/Zotlabs/Lib/Webfinger.php',
@@ -896,6 +898,7 @@ return array(
'Zotlabs\\Module\\Admin\\Security' => $baseDir . '/Zotlabs/Module/Admin/Security.php',
'Zotlabs\\Module\\Admin\\Site' => $baseDir . '/Zotlabs/Module/Admin/Site.php',
'Zotlabs\\Module\\Admin\\Themes' => $baseDir . '/Zotlabs/Module/Admin/Themes.php',
+ 'Zotlabs\\Module\\Affinity' => $baseDir . '/Zotlabs/Module/Affinity.php',
'Zotlabs\\Module\\Api' => $baseDir . '/Zotlabs/Module/Api.php',
'Zotlabs\\Module\\Appman' => $baseDir . '/Zotlabs/Module/Appman.php',
'Zotlabs\\Module\\Apporder' => $baseDir . '/Zotlabs/Module/Apporder.php',
@@ -938,6 +941,7 @@ return array(
'Zotlabs\\Module\\Editwebpage' => $baseDir . '/Zotlabs/Module/Editwebpage.php',
'Zotlabs\\Module\\Email_resend' => $baseDir . '/Zotlabs/Module/Email_resend.php',
'Zotlabs\\Module\\Email_validation' => $baseDir . '/Zotlabs/Module/Email_validation.php',
+ 'Zotlabs\\Module\\Embed' => $baseDir . '/Zotlabs/Module/Embed.php',
'Zotlabs\\Module\\Embedphotos' => $baseDir . '/Zotlabs/Module/Embedphotos.php',
'Zotlabs\\Module\\Events' => $baseDir . '/Zotlabs/Module/Events.php',
'Zotlabs\\Module\\Fbrowser' => $baseDir . '/Zotlabs/Module/Fbrowser.php',
@@ -981,7 +985,6 @@ return array(
'Zotlabs\\Module\\Mood' => $baseDir . '/Zotlabs/Module/Mood.php',
'Zotlabs\\Module\\Network' => $baseDir . '/Zotlabs/Module/Network.php',
'Zotlabs\\Module\\New_channel' => $baseDir . '/Zotlabs/Module/New_channel.php',
- 'Zotlabs\\Module\\Nojs' => $baseDir . '/Zotlabs/Module/Nojs.php',
'Zotlabs\\Module\\Notes' => $baseDir . '/Zotlabs/Module/Notes.php',
'Zotlabs\\Module\\Notifications' => $baseDir . '/Zotlabs/Module/Notifications.php',
'Zotlabs\\Module\\Notify' => $baseDir . '/Zotlabs/Module/Notify.php',
@@ -1093,6 +1096,9 @@ return array(
'Zotlabs\\Module\\Zot_probe' => $baseDir . '/Zotlabs/Module/Zot_probe.php',
'Zotlabs\\Module\\Zotfeed' => $baseDir . '/Zotlabs/Module/Zotfeed.php',
'Zotlabs\\Module\\Zping' => $baseDir . '/Zotlabs/Module/Zping.php',
+ 'Zotlabs\\Photo\\PhotoDriver' => $baseDir . '/Zotlabs/Photo/PhotoDriver.php',
+ 'Zotlabs\\Photo\\PhotoGd' => $baseDir . '/Zotlabs/Photo/PhotoGd.php',
+ 'Zotlabs\\Photo\\PhotoImagick' => $baseDir . '/Zotlabs/Photo/PhotoImagick.php',
'Zotlabs\\Render\\Comanche' => $baseDir . '/Zotlabs/Render/Comanche.php',
'Zotlabs\\Render\\SimpleTemplate' => $baseDir . '/Zotlabs/Render/SimpleTemplate.php',
'Zotlabs\\Render\\SmartyInterface' => $baseDir . '/Zotlabs/Render/SmartyInterface.php',
@@ -1337,7 +1343,12 @@ return array(
'Zotlabs\\Update\\_1222' => $baseDir . '/Zotlabs/Update/_1222.php',
'Zotlabs\\Update\\_1223' => $baseDir . '/Zotlabs/Update/_1223.php',
'Zotlabs\\Update\\_1224' => $baseDir . '/Zotlabs/Update/_1224.php',
- 'Zotlabs\\Web\\CheckJS' => $baseDir . '/Zotlabs/Web/CheckJS.php',
+ 'Zotlabs\\Update\\_1225' => $baseDir . '/Zotlabs/Update/_1225.php',
+ 'Zotlabs\\Update\\_1226' => $baseDir . '/Zotlabs/Update/_1226.php',
+ 'Zotlabs\\Update\\_1227' => $baseDir . '/Zotlabs/Update/_1227.php',
+ 'Zotlabs\\Update\\_1228' => $baseDir . '/Zotlabs/Update/_1228.php',
+ 'Zotlabs\\Update\\_1229' => $baseDir . '/Zotlabs/Update/_1229.php',
+ 'Zotlabs\\Update\\_1230' => $baseDir . '/Zotlabs/Update/_1230.php',
'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => $baseDir . '/Zotlabs/Web/HTTPSig.php',
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index ce0232306..d4daa13e6 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -979,6 +979,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',
'Zotlabs\\Access\\Permissions' => __DIR__ . '/../..' . '/Zotlabs/Access/Permissions.php',
'Zotlabs\\Daemon\\Addon' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Addon.php',
+ 'Zotlabs\\Daemon\\Cache_embeds' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cache_embeds.php',
'Zotlabs\\Daemon\\Checksites' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Checksites.php',
'Zotlabs\\Daemon\\Cli_suggest' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cli_suggest.php',
'Zotlabs\\Daemon\\Cron' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cron.php',
@@ -1044,6 +1045,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\System' => __DIR__ . '/../..' . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => __DIR__ . '/../..' . '/Zotlabs/Lib/Techlevels.php',
'Zotlabs\\Lib\\ThreadItem' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadItem.php',
+ 'Zotlabs\\Lib\\ThreadListener' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadListener.php',
'Zotlabs\\Lib\\ThreadStream' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadStream.php',
'Zotlabs\\Lib\\Verify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Verify.php',
'Zotlabs\\Lib\\Webfinger' => __DIR__ . '/../..' . '/Zotlabs/Lib/Webfinger.php',
@@ -1064,6 +1066,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Admin\\Security' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Security.php',
'Zotlabs\\Module\\Admin\\Site' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Site.php',
'Zotlabs\\Module\\Admin\\Themes' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Themes.php',
+ 'Zotlabs\\Module\\Affinity' => __DIR__ . '/../..' . '/Zotlabs/Module/Affinity.php',
'Zotlabs\\Module\\Api' => __DIR__ . '/../..' . '/Zotlabs/Module/Api.php',
'Zotlabs\\Module\\Appman' => __DIR__ . '/../..' . '/Zotlabs/Module/Appman.php',
'Zotlabs\\Module\\Apporder' => __DIR__ . '/../..' . '/Zotlabs/Module/Apporder.php',
@@ -1106,6 +1109,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Editwebpage' => __DIR__ . '/../..' . '/Zotlabs/Module/Editwebpage.php',
'Zotlabs\\Module\\Email_resend' => __DIR__ . '/../..' . '/Zotlabs/Module/Email_resend.php',
'Zotlabs\\Module\\Email_validation' => __DIR__ . '/../..' . '/Zotlabs/Module/Email_validation.php',
+ 'Zotlabs\\Module\\Embed' => __DIR__ . '/../..' . '/Zotlabs/Module/Embed.php',
'Zotlabs\\Module\\Embedphotos' => __DIR__ . '/../..' . '/Zotlabs/Module/Embedphotos.php',
'Zotlabs\\Module\\Events' => __DIR__ . '/../..' . '/Zotlabs/Module/Events.php',
'Zotlabs\\Module\\Fbrowser' => __DIR__ . '/../..' . '/Zotlabs/Module/Fbrowser.php',
@@ -1149,7 +1153,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Mood' => __DIR__ . '/../..' . '/Zotlabs/Module/Mood.php',
'Zotlabs\\Module\\Network' => __DIR__ . '/../..' . '/Zotlabs/Module/Network.php',
'Zotlabs\\Module\\New_channel' => __DIR__ . '/../..' . '/Zotlabs/Module/New_channel.php',
- 'Zotlabs\\Module\\Nojs' => __DIR__ . '/../..' . '/Zotlabs/Module/Nojs.php',
'Zotlabs\\Module\\Notes' => __DIR__ . '/../..' . '/Zotlabs/Module/Notes.php',
'Zotlabs\\Module\\Notifications' => __DIR__ . '/../..' . '/Zotlabs/Module/Notifications.php',
'Zotlabs\\Module\\Notify' => __DIR__ . '/../..' . '/Zotlabs/Module/Notify.php',
@@ -1261,6 +1264,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Zot_probe' => __DIR__ . '/../..' . '/Zotlabs/Module/Zot_probe.php',
'Zotlabs\\Module\\Zotfeed' => __DIR__ . '/../..' . '/Zotlabs/Module/Zotfeed.php',
'Zotlabs\\Module\\Zping' => __DIR__ . '/../..' . '/Zotlabs/Module/Zping.php',
+ 'Zotlabs\\Photo\\PhotoDriver' => __DIR__ . '/../..' . '/Zotlabs/Photo/PhotoDriver.php',
+ 'Zotlabs\\Photo\\PhotoGd' => __DIR__ . '/../..' . '/Zotlabs/Photo/PhotoGd.php',
+ 'Zotlabs\\Photo\\PhotoImagick' => __DIR__ . '/../..' . '/Zotlabs/Photo/PhotoImagick.php',
'Zotlabs\\Render\\Comanche' => __DIR__ . '/../..' . '/Zotlabs/Render/Comanche.php',
'Zotlabs\\Render\\SimpleTemplate' => __DIR__ . '/../..' . '/Zotlabs/Render/SimpleTemplate.php',
'Zotlabs\\Render\\SmartyInterface' => __DIR__ . '/../..' . '/Zotlabs/Render/SmartyInterface.php',
@@ -1506,7 +1512,11 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Update\\_1223' => __DIR__ . '/../..' . '/Zotlabs/Update/_1223.php',
'Zotlabs\\Update\\_1224' => __DIR__ . '/../..' . '/Zotlabs/Update/_1224.php',
'Zotlabs\\Update\\_1225' => __DIR__ . '/../..' . '/Zotlabs/Update/_1225.php',
- 'Zotlabs\\Web\\CheckJS' => __DIR__ . '/../..' . '/Zotlabs/Web/CheckJS.php',
+ 'Zotlabs\\Update\\_1226' => __DIR__ . '/../..' . '/Zotlabs/Update/_1226.php',
+ 'Zotlabs\\Update\\_1227' => __DIR__ . '/../..' . '/Zotlabs/Update/_1227.php',
+ 'Zotlabs\\Update\\_1228' => __DIR__ . '/../..' . '/Zotlabs/Update/_1228.php',
+ 'Zotlabs\\Update\\_1229' => __DIR__ . '/../..' . '/Zotlabs/Update/_1229.php',
+ 'Zotlabs\\Update\\_1230' => __DIR__ . '/../..' . '/Zotlabs/Update/_1230.php',
'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPSig.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index af845828e..7f829f6a4 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,20 +1,20 @@
[
{
"name": "blueimp/jquery-file-upload",
- "version": "v9.25.1",
- "version_normalized": "9.25.1.0",
+ "version": "v9.28.0",
+ "version_normalized": "9.28.0.0",
"source": {
"type": "git",
"url": "https://github.com/vkhramtsov/jQuery-File-Upload.git",
- "reference": "28891f9b2bc339bcc1ca8d548e5401e8563bf04b"
+ "reference": "ff5accfe2e5c4a522777faa980a90cf86a636d1d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/28891f9b2bc339bcc1ca8d548e5401e8563bf04b",
- "reference": "28891f9b2bc339bcc1ca8d548e5401e8563bf04b",
+ "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/ff5accfe2e5c4a522777faa980a90cf86a636d1d",
+ "reference": "ff5accfe2e5c4a522777faa980a90cf86a636d1d",
"shasum": ""
},
- "time": "2018-10-26T07:21:48+00:00",
+ "time": "2018-11-13T05:41:39+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -58,17 +58,17 @@
},
{
"name": "bshaffer/oauth2-server-php",
- "version": "v1.10.0",
- "version_normalized": "1.10.0.0",
+ "version": "v1.11.1",
+ "version_normalized": "1.11.1.0",
"source": {
"type": "git",
"url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9"
+ "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/d158878425392fe5a0cc34f15dbaf46315ae0ed9",
- "reference": "d158878425392fe5a0cc34f15dbaf46315ae0ed9",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa",
+ "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa",
"shasum": ""
},
"require": {
@@ -89,7 +89,7 @@
"predis/predis": "Required to use Redis storage",
"thobbs/phpcassa": "Required to use Cassandra storage"
},
- "time": "2017-11-15T01:41:02+00:00",
+ "time": "2018-12-04T00:29:32+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -163,6 +163,47 @@
"description": "Internationalization library powered by CLDR data."
},
{
+ "name": "desandro/imagesloaded",
+ "version": "v4.1.4",
+ "version_normalized": "4.1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/desandro/imagesloaded.git",
+ "reference": "67c4e57453120935180c45c6820e7d3fbd2ea1f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/desandro/imagesloaded/zipball/67c4e57453120935180c45c6820e7d3fbd2ea1f9",
+ "reference": "67c4e57453120935180c45c6820e7d3fbd2ea1f9",
+ "shasum": ""
+ },
+ "time": "2018-01-02T16:53:35+00:00",
+ "type": "component",
+ "installation-source": "dist",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David DeSandro",
+ "homepage": "http://desandro.com/",
+ "role": "developer"
+ }
+ ],
+ "description": "JavaScript is all like _You images done yet or what?_",
+ "homepage": "http://imagesloaded.desandro.com",
+ "keywords": [
+ "dom",
+ "images",
+ "javascript",
+ "jquery-plugin",
+ "library",
+ "loaded",
+ "ui"
+ ]
+ },
+ {
"name": "ezyang/htmlpurifier",
"version": "v4.10.0",
"version_normalized": "4.10.0.0",
@@ -213,17 +254,17 @@
},
{
"name": "league/html-to-markdown",
- "version": "4.8.0",
- "version_normalized": "4.8.0.0",
+ "version": "4.8.1",
+ "version_normalized": "4.8.1.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
- "reference": "f9a879a068c68ff47b722de63f58bec79e448f9d"
+ "reference": "250d1bf45f80d15594fb6b316df777d6d4c97ad1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/f9a879a068c68ff47b722de63f58bec79e448f9d",
- "reference": "f9a879a068c68ff47b722de63f58bec79e448f9d",
+ "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/250d1bf45f80d15594fb6b316df777d6d4c97ad1",
+ "reference": "250d1bf45f80d15594fb6b316df777d6d4c97ad1",
"shasum": ""
},
"require": {
@@ -236,7 +277,7 @@
"phpunit/phpunit": "4.*",
"scrutinizer/ocular": "~1.1"
},
- "time": "2018-09-18T12:18:08+00:00",
+ "time": "2018-12-24T17:21:44+00:00",
"bin": [
"bin/html-to-markdown"
],
@@ -457,23 +498,23 @@
},
{
"name": "psr/log",
- "version": "1.0.2",
- "version_normalized": "1.0.2.0",
+ "version": "1.1.0",
+ "version_normalized": "1.1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
- "time": "2016-10-10T12:19:37+00:00",
+ "time": "2018-11-20T15:27:04+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1141,8 +1182,8 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.9.0",
- "version_normalized": "1.9.0.0",
+ "version": "v1.10.0",
+ "version_normalized": "1.10.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
diff --git a/vendor/desandro/imagesloaded/.gitignore b/vendor/desandro/imagesloaded/.gitignore
new file mode 100644
index 000000000..2486eb53d
--- /dev/null
+++ b/vendor/desandro/imagesloaded/.gitignore
@@ -0,0 +1,5 @@
+bower_components/
+node_modules/
+_site/
+build/
+package-lock.json
diff --git a/vendor/desandro/imagesloaded/.jshintrc b/vendor/desandro/imagesloaded/.jshintrc
new file mode 100644
index 000000000..78aa4af7b
--- /dev/null
+++ b/vendor/desandro/imagesloaded/.jshintrc
@@ -0,0 +1,12 @@
+{
+ "browser": true,
+ "curly": true,
+ "newcap": false,
+ "strict": true,
+ "undef": true,
+ "unused": true,
+ "globals": {
+ "imagesLoaded": false,
+ "QUnit": false
+ }
+}
diff --git a/vendor/desandro/imagesloaded/README.md b/vendor/desandro/imagesloaded/README.md
new file mode 100644
index 000000000..67b799dfd
--- /dev/null
+++ b/vendor/desandro/imagesloaded/README.md
@@ -0,0 +1,362 @@
+# imagesLoaded
+
+<p class="tagline">JavaScript is all like "You images done yet or what?"</p>
+
+[imagesloaded.desandro.com](http://imagesloaded.desandro.com)
+
+Detect when images have been loaded.
+
+## Install
+
+### Download
+
++ [imagesloaded.pkgd.min.js](https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js) minified
++ [imagesloaded.pkgd.js](https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.js) un-minified
+
+### CDN
+
+``` html
+<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
+<!-- or -->
+<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.js"></script>
+```
+
+### Package managers
+
+Install via [npm](https://www.npmjs.com/package/imagesloaded): `npm install imagesloaded`
+
+Install via [Bower](http://bower.io): `bower install imagesloaded --save`
+
+## jQuery
+
+You can use imagesLoaded as a jQuery Plugin.
+
+``` js
+$('#container').imagesLoaded( function() {
+ // images have loaded
+});
+
+// options
+$('#container').imagesLoaded( {
+ // options...
+ },
+ function() {
+ // images have loaded
+ }
+);
+```
+
+`.imagesLoaded()` returns a [jQuery Deferred object](http://api.jquery.com/category/deferred-object/). This allows you to use `.always()`, `.done()`, `.fail()` and `.progress()`.
+
+``` js
+$('#container').imagesLoaded()
+ .always( function( instance ) {
+ console.log('all images loaded');
+ })
+ .done( function( instance ) {
+ console.log('all images successfully loaded');
+ })
+ .fail( function() {
+ console.log('all images loaded, at least one is broken');
+ })
+ .progress( function( instance, image ) {
+ var result = image.isLoaded ? 'loaded' : 'broken';
+ console.log( 'image is ' + result + ' for ' + image.img.src );
+ });
+```
+
+## Vanilla JavaScript
+
+You can use imagesLoaded with vanilla JS.
+
+``` js
+imagesLoaded( elem, callback )
+// options
+imagesLoaded( elem, options, callback )
+// you can use `new` if you like
+new imagesLoaded( elem, callback )
+```
+
++ `elem` _Element, NodeList, Array, or Selector String_
++ `options` _Object_
++ `callback` _Function_ - function triggered after all images have been loaded
+
+Using a callback function is the same as binding it to the `always` event (see below).
+
+``` js
+// element
+imagesLoaded( document.querySelector('#container'), function( instance ) {
+ console.log('all images are loaded');
+});
+// selector string
+imagesLoaded( '#container', function() {...});
+// multiple elements
+var posts = document.querySelectorAll('.post');
+imagesLoaded( posts, function() {...});
+```
+
+Bind events with vanilla JS with .on(), .off(), and .once() methods.
+
+``` js
+var imgLoad = imagesLoaded( elem );
+function onAlways( instance ) {
+ console.log('all images are loaded');
+}
+// bind with .on()
+imgLoad.on( 'always', onAlways );
+// unbind with .off()
+imgLoad.off( 'always', onAlways );
+```
+
+## Background
+
+Detect when background images have loaded, in addition to `<img>`s.
+
+Set `{ background: true }` to detect when the element's background image has loaded.
+
+``` js
+// jQuery
+$('#container').imagesLoaded( { background: true }, function() {
+ console.log('#container background image loaded');
+});
+
+// vanilla JS
+imagesLoaded( '#container', { background: true }, function() {
+ console.log('#container background image loaded');
+});
+```
+
+[See jQuery demo](http://codepen.io/desandro/pen/pjVMPB) or [vanilla JS demo](http://codepen.io/desandro/pen/avKooW) on CodePen.
+
+Set to a selector string like `{ background: '.item' }` to detect when the background images of child elements have loaded.
+
+``` js
+// jQuery
+$('#container').imagesLoaded( { background: '.item' }, function() {
+ console.log('all .item background images loaded');
+});
+
+// vanilla JS
+imagesLoaded( '#container', { background: '.item' }, function() {
+ console.log('all .item background images loaded');
+});
+```
+
+[See jQuery demo](http://codepen.io/desandro/pen/avKoZL) or [vanilla JS demo](http://codepen.io/desandro/pen/vNrBGz) on CodePen.
+
+## Events
+
+### always
+
+``` js
+// jQuery
+$('#container').imagesLoaded().always( function( instance ) {
+ console.log('ALWAYS - all images have been loaded');
+});
+
+// vanilla JS
+imgLoad.on( 'always', function( instance ) {
+ console.log('ALWAYS - all images have been loaded');
+});
+```
+
+Triggered after all images have been either loaded or confirmed broken.
+
++ `instance` _imagesLoaded_ - the imagesLoaded instance
+
+### done
+
+``` js
+// jQuery
+$('#container').imagesLoaded().done( function( instance ) {
+ console.log('DONE - all images have been successfully loaded');
+});
+
+// vanilla JS
+imgLoad.on( 'done', function( instance ) {
+ console.log('DONE - all images have been successfully loaded');
+});
+```
+
+Triggered after all images have successfully loaded without any broken images.
+
+### fail
+
+``` js
+$('#container').imagesLoaded().fail( function( instance ) {
+ console.log('FAIL - all images loaded, at least one is broken');
+});
+
+// vanilla JS
+imgLoad.on( 'fail', function( instance ) {
+ console.log('FAIL - all images loaded, at least one is broken');
+});
+```
+
+Triggered after all images have been loaded with at least one broken image.
+
+### progress
+
+``` js
+imgLoad.on( 'progress', function( instance, image ) {
+ var result = image.isLoaded ? 'loaded' : 'broken';
+ console.log( 'image is ' + result + ' for ' + image.img.src );
+});
+```
+
+Triggered after each image has been loaded.
+
++ `instance` _imagesLoaded_ - the imagesLoaded instance
++ `image` _LoadingImage_ - the LoadingImage instance of the loaded image
+
+<!-- sponsored -->
+
+## Properties
+
+### LoadingImage.img
+
+_Image_ - The `img` element
+
+### LoadingImage.isLoaded
+
+_Boolean_ - `true` when the image has successfully loaded
+
+### imagesLoaded.images
+
+Array of _LoadingImage_ instances for each image detected
+
+``` js
+var imgLoad = imagesLoaded('#container');
+imgLoad.on( 'always', function() {
+ console.log( imgLoad.images.length + ' images loaded' );
+ // detect which image is broken
+ for ( var i = 0, len = imgLoad.images.length; i < len; i++ ) {
+ var image = imgLoad.images[i];
+ var result = image.isLoaded ? 'loaded' : 'broken';
+ console.log( 'image is ' + result + ' for ' + image.img.src );
+ }
+});
+```
+
+## Browserify
+
+imagesLoaded works with [Browserify](http://browserify.org/).
+
+``` bash
+npm install imagesloaded --save
+```
+
+``` js
+var imagesLoaded = require('imagesloaded');
+
+imagesLoaded( elem, function() {...} );
+```
+
+Use `.makeJQueryPlugin` to make to use `.imagesLoaded()` jQuery plugin.
+
+``` js
+var $ = require('jquery');
+var imagesLoaded = require('imagesloaded');
+
+// provide jQuery argument
+imagesLoaded.makeJQueryPlugin( $ );
+// now use .imagesLoaded() jQuery plugin
+$('#container').imagesLoaded( function() {...});
+```
+
+## Webpack
+
+Install imagesLoaded with npm.
+
+``` bash
+npm install imagesloaded
+```
+
+You can then `require('imagesloaded')`.
+
+``` js
+// main.js
+var imagesLoaded = require('imagesloaded');
+
+imagesLoaded( '#container', function() {
+ // images have loaded
+});
+```
+
+Use `.makeJQueryPlugin` to make `.imagesLoaded()` jQuery plugin.
+
+``` js
+// main.js
+var imagesLoaded = require('imagesloaded');
+var $ = require('jquery');
+
+// provide jQuery argument
+imagesLoaded.makeJQueryPlugin( $ );
+// now use .imagesLoaded() jQuery plugin
+$('#container').imagesLoaded( function() {...});
+```
+
+Run webpack.
+
+``` bash
+webpack main.js bundle.js
+```
+
+## RequireJS
+
+imagesLoaded works with [RequireJS](http://requirejs.org).
+
+You can require [imagesloaded.pkgd.js](http://imagesloaded.desandro.com/imagesloaded.pkgd.js).
+
+``` js
+requirejs( [
+ 'path/to/imagesloaded.pkgd.js',
+], function( imagesLoaded ) {
+ imagesLoaded( '#container', function() { ... });
+});
+```
+
+Use `.makeJQueryPlugin` to make `.imagesLoaded()` jQuery plugin.
+
+``` js
+requirejs( [
+ 'jquery',
+ 'path/to/imagesloaded.pkgd.js',
+], function( $, imagesLoaded ) {
+ // provide jQuery argument
+ imagesLoaded.makeJQueryPlugin( $ );
+ // now use .imagesLoaded() jQuery plugin
+ $('#container').imagesLoaded( function() {...});
+});
+```
+
+You can manage dependencies with [Bower](http://bower.io). Set `baseUrl` to `bower_components` and set a path config for all your application code.
+
+``` js
+requirejs.config({
+ baseUrl: 'bower_components/',
+ paths: { // path to your app
+ app: '../'
+ }
+});
+
+requirejs( [
+ 'imagesloaded/imagesloaded',
+ 'app/my-component.js'
+], function( imagesLoaded, myComp ) {
+ imagesLoaded( '#container', function() { ... });
+});
+```
+
+## Browser support
+
++ IE9+
++ Android 2.3+
++ iOS Safari 4+
++ All other modern browsers
+
+Use [imagesLoaded v3](http://imagesloaded.desandro.com/v3/) for IE8 support.
+
+## MIT License
+
+imagesLoaded is released under the [MIT License](http://desandro.mit-license.org/). Have at it.
diff --git a/vendor/desandro/imagesloaded/bower.json b/vendor/desandro/imagesloaded/bower.json
new file mode 100644
index 000000000..795c69f07
--- /dev/null
+++ b/vendor/desandro/imagesloaded/bower.json
@@ -0,0 +1,37 @@
+{
+ "name": "imagesloaded",
+ "description": "JavaScript is all like _You images done yet or what?_",
+ "main": "imagesloaded.js",
+ "dependencies": {
+ "ev-emitter": "^1.0.0"
+ },
+ "devDependencies": {
+ "jquery": ">=1.9 <4.0",
+ "qunit": "^2.0.0"
+ },
+ "ignore": [
+ "**/.*",
+ "test",
+ "package.json",
+ "composer.json",
+ "node_modules",
+ "bower_components",
+ "tests",
+ "sandbox/",
+ "gulpfile.js",
+ "contributing.md"
+ ],
+ "homepage": "http://imagesloaded.desandro.com",
+ "authors": [
+ "David DeSandro"
+ ],
+ "moduleType": [
+ "amd",
+ "globals",
+ "node"
+ ],
+ "keywords": [
+ "images"
+ ],
+ "license": "MIT"
+}
diff --git a/vendor/desandro/imagesloaded/composer.json b/vendor/desandro/imagesloaded/composer.json
new file mode 100644
index 000000000..95ba64c4a
--- /dev/null
+++ b/vendor/desandro/imagesloaded/composer.json
@@ -0,0 +1,15 @@
+{
+ "name": "desandro/imagesloaded",
+ "description": "JavaScript is all like _You images done yet or what?_",
+ "type": "component",
+ "keywords": ["javascript", "library", "images", "loaded", "dom", "ui", "jquery-plugin"],
+ "homepage": "http://imagesloaded.desandro.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "David DeSandro",
+ "homepage": "http://desandro.com/",
+ "role": "developer"
+ }
+ ]
+}
diff --git a/vendor/desandro/imagesloaded/contributing.md b/vendor/desandro/imagesloaded/contributing.md
new file mode 100644
index 000000000..acac280cc
--- /dev/null
+++ b/vendor/desandro/imagesloaded/contributing.md
@@ -0,0 +1,20 @@
+## Submitting issues
+
+### Reduced test case required
+
+All bug reports and problem issues require a [**reduced test case**](http://css-tricks.com/reduced-test-cases/).
+
++ A reduced test case clearly demonstrates the bug or issue.
++ It contains the bare minimum HTML, CSS, and JavaScript required to demonstrate the bug.
++ A link to your production site is **not** a reduced test case.
+
+Create a test case by forking a [CodePen demos](http://codepen.io/desandro/pens/tags/?selected_tag=imagesloaded-docs).
+
++ [progress with jQuery](http://codepen.io/desandro/pen/bIFyl)
++ [progress with vanilla JS](http://codepen.io/desandro/pen/hlzaw)
++ [`{ background: true }` with jQuery](http://codepen.io/desandro/pen/pjVMPB)
++ [`{ background: true }` with vanilla JS](http://codepen.io/desandro/pen/avKooW)
++ [`{ background: '.selector' }` with jQuery](http://codepen.io/desandro/pen/avKoZL)
++ [`{ background: '.selector' }` with vanilla JS](http://codepen.io/desandro/pen/vNrBGz)
+
+Providing a reduced test case is the best way to get your issue addressed. They help you point out the problem. They help me verify and debug the problem. They help others understand the problem. Without a reduced test case, your issue may be closed.
diff --git a/vendor/desandro/imagesloaded/gulpfile.js b/vendor/desandro/imagesloaded/gulpfile.js
new file mode 100644
index 000000000..66f775f3d
--- /dev/null
+++ b/vendor/desandro/imagesloaded/gulpfile.js
@@ -0,0 +1,128 @@
+/*jshint node: true, strict: false */
+
+var fs = require('fs');
+var gulp = require('gulp');
+var rename = require('gulp-rename');
+var replace = require('gulp-replace');
+
+// ----- hint ----- //
+
+var jshint = require('gulp-jshint');
+
+gulp.task( 'hint-js', function() {
+ return gulp.src('imagesloaded.js')
+ .pipe( jshint() )
+ .pipe( jshint.reporter('default') );
+});
+
+gulp.task( 'hint-test', function() {
+ return gulp.src('test/unit/*.js')
+ .pipe( jshint() )
+ .pipe( jshint.reporter('default') );
+});
+
+gulp.task( 'hint-task', function() {
+ return gulp.src('gulpfile.js')
+ .pipe( jshint() )
+ .pipe( jshint.reporter('default') );
+});
+
+var jsonlint = require('gulp-json-lint');
+
+gulp.task( 'jsonlint', function() {
+ return gulp.src( '*.json' )
+ .pipe( jsonlint() )
+ .pipe( jsonlint.report('verbose') );
+});
+
+gulp.task( 'hint', [ 'hint-js', 'hint-test', 'hint-task', 'jsonlint' ]);
+
+// -------------------------- RequireJS makes pkgd -------------------------- //
+
+// refactored from gulp-requirejs-optimize
+// https://www.npmjs.com/package/gulp-requirejs-optimize/
+
+var gutil = require('gulp-util');
+var chalk = require('chalk');
+var rjsOptimize = require('gulp-requirejs-optimize');
+
+// regex for banner comment
+var reBannerComment = new RegExp('^\\s*(?:\\/\\*[\\s\\S]*?\\*\\/)\\s*');
+
+function getBanner() {
+ var src = fs.readFileSync( 'imagesloaded.js', 'utf8' );
+ var matches = src.match( reBannerComment );
+ var banner = matches[0].replace( 'imagesLoaded', 'imagesLoaded PACKAGED' );
+ return banner;
+}
+
+function addBanner( str ) {
+ return replace( /^/, str );
+}
+
+gulp.task( 'requirejs', function() {
+ var banner = getBanner();
+ // HACK src is not needed
+ // should refactor rjsOptimize to produce src
+ return gulp.src('imagesloaded.js')
+ .pipe( rjsOptimize({
+ baseUrl: 'bower_components',
+ optimize: 'none',
+ include: [
+ '../imagesloaded'
+ ]
+ }) )
+ // remove named module
+ .pipe( replace( "'../imagesloaded',", '' ) )
+ // add banner
+ .pipe( addBanner( banner ) )
+ .pipe( rename('imagesloaded.pkgd.js') )
+ .pipe( gulp.dest('.') );
+});
+
+
+// ----- uglify ----- //
+
+var uglify = require('gulp-uglify');
+
+gulp.task( 'uglify', [ 'requirejs' ], function() {
+ var banner = getBanner();
+ gulp.src('imagesloaded.pkgd.js')
+ .pipe( uglify() )
+ // add banner
+ .pipe( addBanner( banner ) )
+ .pipe( rename('imagesloaded.pkgd.min.js') )
+ .pipe( gulp.dest('.') );
+});
+
+// ----- version ----- //
+
+// set version in source files
+
+var minimist = require('minimist');
+
+// use gulp version -t 1.2.3
+gulp.task( 'version', function() {
+ var args = minimist( process.argv.slice(3) );
+ var version = args.t;
+ if ( !version || !/\d+\.\d+\.\d+/.test( version ) ) {
+ gutil.log( 'invalid version: ' + chalk.red( version ) );
+ return;
+ }
+ gutil.log( 'ticking version to ' + chalk.green( version ) );
+
+ gulp.src('imagesloaded.js')
+ .pipe( replace( /imagesLoaded v\d+\.\d+\.\d+/, 'imagesLoaded v' + version ) )
+ .pipe( gulp.dest('.') );
+
+ gulp.src( [ 'bower.json', 'package.json' ] )
+ .pipe( replace( /"version": "\d+\.\d+\.\d+"/, '"version": "' + version + '"' ) )
+ .pipe( gulp.dest('.') );
+});
+
+// ----- default ----- //
+
+gulp.task( 'default', [
+ 'hint',
+ 'uglify'
+]);
diff --git a/vendor/desandro/imagesloaded/imagesloaded.js b/vendor/desandro/imagesloaded/imagesloaded.js
new file mode 100644
index 000000000..f527a71e9
--- /dev/null
+++ b/vendor/desandro/imagesloaded/imagesloaded.js
@@ -0,0 +1,377 @@
+/*!
+ * imagesLoaded v4.1.4
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+
+( function( window, factory ) { 'use strict';
+ // universal module definition
+
+ /*global define: false, module: false, require: false */
+
+ if ( typeof define == 'function' && define.amd ) {
+ // AMD
+ define( [
+ 'ev-emitter/ev-emitter'
+ ], function( EvEmitter ) {
+ return factory( window, EvEmitter );
+ });
+ } else if ( typeof module == 'object' && module.exports ) {
+ // CommonJS
+ module.exports = factory(
+ window,
+ require('ev-emitter')
+ );
+ } else {
+ // browser global
+ window.imagesLoaded = factory(
+ window,
+ window.EvEmitter
+ );
+ }
+
+})( typeof window !== 'undefined' ? window : this,
+
+// -------------------------- factory -------------------------- //
+
+function factory( window, EvEmitter ) {
+
+'use strict';
+
+var $ = window.jQuery;
+var console = window.console;
+
+// -------------------------- helpers -------------------------- //
+
+// extend objects
+function extend( a, b ) {
+ for ( var prop in b ) {
+ a[ prop ] = b[ prop ];
+ }
+ return a;
+}
+
+var arraySlice = Array.prototype.slice;
+
+// turn element or nodeList into an array
+function makeArray( obj ) {
+ if ( Array.isArray( obj ) ) {
+ // use object if already an array
+ return obj;
+ }
+
+ var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
+ if ( isArrayLike ) {
+ // convert nodeList to array
+ return arraySlice.call( obj );
+ }
+
+ // array of single index
+ return [ obj ];
+}
+
+// -------------------------- imagesLoaded -------------------------- //
+
+/**
+ * @param {Array, Element, NodeList, String} elem
+ * @param {Object or Function} options - if function, use as callback
+ * @param {Function} onAlways - callback function
+ */
+function ImagesLoaded( elem, options, onAlways ) {
+ // coerce ImagesLoaded() without new, to be new ImagesLoaded()
+ if ( !( this instanceof ImagesLoaded ) ) {
+ return new ImagesLoaded( elem, options, onAlways );
+ }
+ // use elem as selector string
+ var queryElem = elem;
+ if ( typeof elem == 'string' ) {
+ queryElem = document.querySelectorAll( elem );
+ }
+ // bail if bad element
+ if ( !queryElem ) {
+ console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );
+ return;
+ }
+
+ this.elements = makeArray( queryElem );
+ this.options = extend( {}, this.options );
+ // shift arguments if no options set
+ if ( typeof options == 'function' ) {
+ onAlways = options;
+ } else {
+ extend( this.options, options );
+ }
+
+ if ( onAlways ) {
+ this.on( 'always', onAlways );
+ }
+
+ this.getImages();
+
+ if ( $ ) {
+ // add jQuery Deferred object
+ this.jqDeferred = new $.Deferred();
+ }
+
+ // HACK check async to allow time to bind listeners
+ setTimeout( this.check.bind( this ) );
+}
+
+ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
+
+ImagesLoaded.prototype.options = {};
+
+ImagesLoaded.prototype.getImages = function() {
+ this.images = [];
+
+ // filter & find items if we have an item selector
+ this.elements.forEach( this.addElementImages, this );
+};
+
+/**
+ * @param {Node} element
+ */
+ImagesLoaded.prototype.addElementImages = function( elem ) {
+ // filter siblings
+ if ( elem.nodeName == 'IMG' ) {
+ this.addImage( elem );
+ }
+ // get background image on element
+ if ( this.options.background === true ) {
+ this.addElementBackgroundImages( elem );
+ }
+
+ // find children
+ // no non-element nodes, #143
+ var nodeType = elem.nodeType;
+ if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
+ return;
+ }
+ var childImgs = elem.querySelectorAll('img');
+ // concat childElems to filterFound array
+ for ( var i=0; i < childImgs.length; i++ ) {
+ var img = childImgs[i];
+ this.addImage( img );
+ }
+
+ // get child background images
+ if ( typeof this.options.background == 'string' ) {
+ var children = elem.querySelectorAll( this.options.background );
+ for ( i=0; i < children.length; i++ ) {
+ var child = children[i];
+ this.addElementBackgroundImages( child );
+ }
+ }
+};
+
+var elementNodeTypes = {
+ 1: true,
+ 9: true,
+ 11: true
+};
+
+ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
+ var style = getComputedStyle( elem );
+ if ( !style ) {
+ // Firefox returns null if in a hidden iframe https://bugzil.la/548397
+ return;
+ }
+ // get url inside url("...")
+ var reURL = /url\((['"])?(.*?)\1\)/gi;
+ var matches = reURL.exec( style.backgroundImage );
+ while ( matches !== null ) {
+ var url = matches && matches[2];
+ if ( url ) {
+ this.addBackground( url, elem );
+ }
+ matches = reURL.exec( style.backgroundImage );
+ }
+};
+
+/**
+ * @param {Image} img
+ */
+ImagesLoaded.prototype.addImage = function( img ) {
+ var loadingImage = new LoadingImage( img );
+ this.images.push( loadingImage );
+};
+
+ImagesLoaded.prototype.addBackground = function( url, elem ) {
+ var background = new Background( url, elem );
+ this.images.push( background );
+};
+
+ImagesLoaded.prototype.check = function() {
+ var _this = this;
+ this.progressedCount = 0;
+ this.hasAnyBroken = false;
+ // complete if no images
+ if ( !this.images.length ) {
+ this.complete();
+ return;
+ }
+
+ function onProgress( image, elem, message ) {
+ // HACK - Chrome triggers event before object properties have changed. #83
+ setTimeout( function() {
+ _this.progress( image, elem, message );
+ });
+ }
+
+ this.images.forEach( function( loadingImage ) {
+ loadingImage.once( 'progress', onProgress );
+ loadingImage.check();
+ });
+};
+
+ImagesLoaded.prototype.progress = function( image, elem, message ) {
+ this.progressedCount++;
+ this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
+ // progress event
+ this.emitEvent( 'progress', [ this, image, elem ] );
+ if ( this.jqDeferred && this.jqDeferred.notify ) {
+ this.jqDeferred.notify( this, image );
+ }
+ // check if completed
+ if ( this.progressedCount == this.images.length ) {
+ this.complete();
+ }
+
+ if ( this.options.debug && console ) {
+ console.log( 'progress: ' + message, image, elem );
+ }
+};
+
+ImagesLoaded.prototype.complete = function() {
+ var eventName = this.hasAnyBroken ? 'fail' : 'done';
+ this.isComplete = true;
+ this.emitEvent( eventName, [ this ] );
+ this.emitEvent( 'always', [ this ] );
+ if ( this.jqDeferred ) {
+ var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
+ this.jqDeferred[ jqMethod ]( this );
+ }
+};
+
+// -------------------------- -------------------------- //
+
+function LoadingImage( img ) {
+ this.img = img;
+}
+
+LoadingImage.prototype = Object.create( EvEmitter.prototype );
+
+LoadingImage.prototype.check = function() {
+ // If complete is true and browser supports natural sizes,
+ // try to check for image status manually.
+ var isComplete = this.getIsImageComplete();
+ if ( isComplete ) {
+ // report based on naturalWidth
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
+ return;
+ }
+
+ // If none of the checks above matched, simulate loading on detached element.
+ this.proxyImage = new Image();
+ this.proxyImage.addEventListener( 'load', this );
+ this.proxyImage.addEventListener( 'error', this );
+ // bind to image as well for Firefox. #191
+ this.img.addEventListener( 'load', this );
+ this.img.addEventListener( 'error', this );
+ this.proxyImage.src = this.img.src;
+};
+
+LoadingImage.prototype.getIsImageComplete = function() {
+ // check for non-zero, non-undefined naturalWidth
+ // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
+ return this.img.complete && this.img.naturalWidth;
+};
+
+LoadingImage.prototype.confirm = function( isLoaded, message ) {
+ this.isLoaded = isLoaded;
+ this.emitEvent( 'progress', [ this, this.img, message ] );
+};
+
+// ----- events ----- //
+
+// trigger specified handler for event type
+LoadingImage.prototype.handleEvent = function( event ) {
+ var method = 'on' + event.type;
+ if ( this[ method ] ) {
+ this[ method ]( event );
+ }
+};
+
+LoadingImage.prototype.onload = function() {
+ this.confirm( true, 'onload' );
+ this.unbindEvents();
+};
+
+LoadingImage.prototype.onerror = function() {
+ this.confirm( false, 'onerror' );
+ this.unbindEvents();
+};
+
+LoadingImage.prototype.unbindEvents = function() {
+ this.proxyImage.removeEventListener( 'load', this );
+ this.proxyImage.removeEventListener( 'error', this );
+ this.img.removeEventListener( 'load', this );
+ this.img.removeEventListener( 'error', this );
+};
+
+// -------------------------- Background -------------------------- //
+
+function Background( url, element ) {
+ this.url = url;
+ this.element = element;
+ this.img = new Image();
+}
+
+// inherit LoadingImage prototype
+Background.prototype = Object.create( LoadingImage.prototype );
+
+Background.prototype.check = function() {
+ this.img.addEventListener( 'load', this );
+ this.img.addEventListener( 'error', this );
+ this.img.src = this.url;
+ // check if image is already complete
+ var isComplete = this.getIsImageComplete();
+ if ( isComplete ) {
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
+ this.unbindEvents();
+ }
+};
+
+Background.prototype.unbindEvents = function() {
+ this.img.removeEventListener( 'load', this );
+ this.img.removeEventListener( 'error', this );
+};
+
+Background.prototype.confirm = function( isLoaded, message ) {
+ this.isLoaded = isLoaded;
+ this.emitEvent( 'progress', [ this, this.element, message ] );
+};
+
+// -------------------------- jQuery -------------------------- //
+
+ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
+ jQuery = jQuery || window.jQuery;
+ if ( !jQuery ) {
+ return;
+ }
+ // set local variable
+ $ = jQuery;
+ // $().imagesLoaded()
+ $.fn.imagesLoaded = function( options, callback ) {
+ var instance = new ImagesLoaded( this, options, callback );
+ return instance.jqDeferred.promise( $(this) );
+ };
+};
+// try making plugin
+ImagesLoaded.makeJQueryPlugin();
+
+// -------------------------- -------------------------- //
+
+return ImagesLoaded;
+
+});
diff --git a/library/imagesloaded/imagesloaded.pkgd.js b/vendor/desandro/imagesloaded/imagesloaded.pkgd.js
index ef23971be..a230750b3 100644
--- a/library/imagesloaded/imagesloaded.pkgd.js
+++ b/vendor/desandro/imagesloaded/imagesloaded.pkgd.js
@@ -1,11 +1,11 @@
/*!
- * imagesLoaded PACKAGED v4.1.0
+ * imagesLoaded PACKAGED v4.1.4
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
/**
- * EvEmitter v1.0.1
+ * EvEmitter v1.1.0
* Lil' event emitter
* MIT License
*/
@@ -14,7 +14,7 @@
( function( global, factory ) {
// universal module definition
- /* jshint strict: false */ /* globals define, module */
+ /* jshint strict: false */ /* globals define, module, window */
if ( typeof define == 'function' && define.amd ) {
// AMD - RequireJS
define( 'ev-emitter/ev-emitter',factory );
@@ -26,7 +26,7 @@
global.EvEmitter = factory();
}
-}( this, function() {
+}( typeof window != 'undefined' ? window : this, function() {
@@ -59,8 +59,8 @@ proto.once = function( eventName, listener ) {
// set once flag
// set onceEvents hash
var onceEvents = this._onceEvents = this._onceEvents || {};
- // set onceListeners array
- var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || [];
+ // set onceListeners object
+ var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
// set flag
onceListeners[ listener ] = true;
@@ -85,13 +85,14 @@ proto.emitEvent = function( eventName, args ) {
if ( !listeners || !listeners.length ) {
return;
}
- var i = 0;
- var listener = listeners[i];
+ // copy over to avoid interference if .off() in listener
+ listeners = listeners.slice(0);
args = args || [];
// once stuff
var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
- while ( listener ) {
+ for ( var i=0; i < listeners.length; i++ ) {
+ var listener = listeners[i]
var isOnce = onceListeners && onceListeners[ listener ];
if ( isOnce ) {
// remove listener
@@ -102,20 +103,22 @@ proto.emitEvent = function( eventName, args ) {
}
// trigger listener
listener.apply( this, args );
- // get next listener
- i += isOnce ? 0 : 1;
- listener = listeners[i];
}
return this;
};
+proto.allOff = function() {
+ delete this._events;
+ delete this._onceEvents;
+};
+
return EvEmitter;
}));
/*!
- * imagesLoaded v4.1.0
+ * imagesLoaded v4.1.4
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
@@ -146,7 +149,7 @@ return EvEmitter;
);
}
-})( window,
+})( typeof window !== 'undefined' ? window : this,
// -------------------------- factory -------------------------- //
@@ -167,22 +170,23 @@ function extend( a, b ) {
return a;
}
+var arraySlice = Array.prototype.slice;
+
// turn element or nodeList into an array
function makeArray( obj ) {
- var ary = [];
if ( Array.isArray( obj ) ) {
// use object if already an array
- ary = obj;
- } else if ( typeof obj.length == 'number' ) {
+ return obj;
+ }
+
+ var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
+ if ( isArrayLike ) {
// convert nodeList to array
- for ( var i=0; i < obj.length; i++ ) {
- ary.push( obj[i] );
- }
- } else {
- // array of single index
- ary.push( obj );
+ return arraySlice.call( obj );
}
- return ary;
+
+ // array of single index
+ return [ obj ];
}
// -------------------------- imagesLoaded -------------------------- //
@@ -198,13 +202,19 @@ function ImagesLoaded( elem, options, onAlways ) {
return new ImagesLoaded( elem, options, onAlways );
}
// use elem as selector string
+ var queryElem = elem;
if ( typeof elem == 'string' ) {
- elem = document.querySelectorAll( elem );
+ queryElem = document.querySelectorAll( elem );
+ }
+ // bail if bad element
+ if ( !queryElem ) {
+ console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );
+ return;
}
- this.elements = makeArray( elem );
+ this.elements = makeArray( queryElem );
this.options = extend( {}, this.options );
-
+ // shift arguments if no options set
if ( typeof options == 'function' ) {
onAlways = options;
} else {
@@ -223,9 +233,7 @@ function ImagesLoaded( elem, options, onAlways ) {
}
// HACK check async to allow time to bind listeners
- setTimeout( function() {
- this.check();
- }.bind( this ));
+ setTimeout( this.check.bind( this ) );
}
ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
@@ -393,7 +401,9 @@ LoadingImage.prototype.check = function() {
};
LoadingImage.prototype.getIsImageComplete = function() {
- return this.img.complete && this.img.naturalWidth !== undefined;
+ // check for non-zero, non-undefined naturalWidth
+ // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
+ return this.img.complete && this.img.naturalWidth;
};
LoadingImage.prototype.confirm = function( isLoaded, message ) {
diff --git a/vendor/desandro/imagesloaded/imagesloaded.pkgd.min.js b/vendor/desandro/imagesloaded/imagesloaded.pkgd.min.js
new file mode 100644
index 000000000..e443a77d6
--- /dev/null
+++ b/vendor/desandro/imagesloaded/imagesloaded.pkgd.min.js
@@ -0,0 +1,7 @@
+/*!
+ * imagesLoaded PACKAGED v4.1.4
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+
+!function(e,t){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var i=this._events=this._events||{},n=i[e]=i[e]||[];return n.indexOf(t)==-1&&n.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var i=this._onceEvents=this._onceEvents||{},n=i[e]=i[e]||{};return n[t]=!0,this}},t.off=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){var n=i.indexOf(t);return n!=-1&&i.splice(n,1),this}},t.emitEvent=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){i=i.slice(0),t=t||[];for(var n=this._onceEvents&&this._onceEvents[e],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(e,r),delete n[r]),r.apply(this,t)}return this}},t.allOff=function(){delete this._events,delete this._onceEvents},e}),function(e,t){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return t(e,i)}):"object"==typeof module&&module.exports?module.exports=t(e,require("ev-emitter")):e.imagesLoaded=t(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(e,t){function i(e,t){for(var i in t)e[i]=t[i];return e}function n(e){if(Array.isArray(e))return e;var t="object"==typeof e&&"number"==typeof e.length;return t?d.call(e):[e]}function o(e,t,r){if(!(this instanceof o))return new o(e,t,r);var s=e;return"string"==typeof e&&(s=document.querySelectorAll(e)),s?(this.elements=n(s),this.options=i({},this.options),"function"==typeof t?r=t:i(this.options,t),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(this.check.bind(this))):void a.error("Bad element for imagesLoaded "+(s||e))}function r(e){this.img=e}function s(e,t){this.url=e,this.element=t,this.img=new Image}var h=e.jQuery,a=e.console,d=Array.prototype.slice;o.prototype=Object.create(t.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),this.options.background===!0&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&u[t]){for(var i=e.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=e.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var u={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(e){var t=getComputedStyle(e);if(t)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(t.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,e),n=i.exec(t.backgroundImage)}},o.prototype.addImage=function(e){var t=new r(e);this.images.push(t)},o.prototype.addBackground=function(e,t){var i=new s(e,t);this.images.push(i)},o.prototype.check=function(){function e(e,i,n){setTimeout(function(){t.progress(e,i,n)})}var t=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(t){t.once("progress",e),t.check()}):void this.complete()},o.prototype.progress=function(e,t,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,e,t)},o.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},r.prototype=Object.create(t.prototype),r.prototype.check=function(){var e=this.getIsImageComplete();return e?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},r.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.img,t])},r.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var e=this.getIsImageComplete();e&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},o.makeJQueryPlugin=function(t){t=t||e.jQuery,t&&(h=t,h.fn.imagesLoaded=function(e,t){var i=new o(this,e,t);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o}); \ No newline at end of file
diff --git a/vendor/desandro/imagesloaded/package.json b/vendor/desandro/imagesloaded/package.json
new file mode 100644
index 000000000..ced516d8e
--- /dev/null
+++ b/vendor/desandro/imagesloaded/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "imagesloaded",
+ "version": "4.1.4",
+ "description": "JavaScript is all like _You images done yet or what?_",
+ "main": "imagesloaded.js",
+ "dependencies": {
+ "ev-emitter": "^1.0.0"
+ },
+ "devDependencies": {
+ "chalk": "^1.1.1",
+ "cheerio": "^0.19.0",
+ "gulp": "^3.9.0",
+ "gulp-jshint": "^1.11.2",
+ "gulp-json-lint": "^0.1.0",
+ "gulp-rename": "^1.2.2",
+ "gulp-replace": "^0.5.4",
+ "gulp-requirejs-optimize": "github:metafizzy/gulp-requirejs-optimize",
+ "gulp-uglify": "^1.4.2",
+ "gulp-util": "^3.0.7",
+ "highlight.js": "^8.9.1",
+ "marked": "^0.3.5",
+ "minimist": "^1.2.0",
+ "transfob": "^1.0.0"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/desandro/imagesloaded.git"
+ },
+ "keywords": [
+ "images",
+ "loaded",
+ "ui",
+ "dom",
+ "jquery-plugin"
+ ],
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/desandro/imagesloaded/issues"
+ },
+ "homepage": "https://github.com/desandro/imagesloaded",
+ "directories": {
+ "test": "test"
+ },
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "David DeSandro"
+}
diff --git a/vendor/desandro/imagesloaded/sandbox/background/css/background.css b/vendor/desandro/imagesloaded/sandbox/background/css/background.css
new file mode 100644
index 000000000..509966a7d
--- /dev/null
+++ b/vendor/desandro/imagesloaded/sandbox/background/css/background.css
@@ -0,0 +1,29 @@
+.box {
+ width: 300px;
+ height: 300px;
+ margin: 0 20px 20px 0;
+ border: 1px solid;
+ display: inline-block;
+}
+
+.orange-tree {
+ background: url('http://i.imgur.com/bwy74ok.jpg');
+ background-size: cover;
+}
+
+.thunder-cloud {
+ background: url('../../../test/img/thunder-cloud.jpg');
+ background-size: contain;
+}
+
+.multi1 {
+ background:
+ url("http://i.imgur.com/ZAVN3.png"),
+ url('http://i.imgur.com/6UdOxeB.png') bottom right,
+ url(http://i.imgur.com/LkmcILl.jpg);
+ background-size: cover;
+}
+
+.blue {
+ background: #09F;
+} \ No newline at end of file
diff --git a/vendor/desandro/imagesloaded/sandbox/background/index.html b/vendor/desandro/imagesloaded/sandbox/background/index.html
new file mode 100644
index 000000000..853f8ff35
--- /dev/null
+++ b/vendor/desandro/imagesloaded/sandbox/background/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width" />
+
+ <title>background</title>
+
+ <!-- put in separate folder so JS path is different from CSS path -->
+ <link rel="stylesheet" href="css/background.css" >
+
+</head>
+<body>
+
+ <h1>background</h1>
+
+<div class="box orange-tree"></div>
+
+<div class="box thunder-cloud"></div>
+
+<div class="box multi1"></div>
+
+<div class="box blue"></div>
+
+<script src="../../bower_components/ev-emitter/ev-emitter.js"></script>
+<script src="../../imagesloaded.js"></script>
+<script>
+
+var imgLoad0 = imagesLoaded( '.orange-tree', { background: true }, function() {
+ console.log('orange tree bg images loaded', imgLoad0.images.length );
+});
+
+var imgLoad1 = imagesLoaded( '.thunder-cloud', { background: true }, function() {
+ console.log('thunder cloud bg images loaded', imgLoad1.images.length);
+});
+
+var imgLoad2 = imagesLoaded( '.multi1', { background: true }, function() {
+ console.log('multi1 bg images loaded', imgLoad2.images.length);
+});
+
+var imgLoad3 = imagesLoaded( '.box', { background: true }, function() {
+ console.log('.box bg images loaded', imgLoad3.images.length);
+});
+imgLoad3.on('progress', function( instance, image, element ) {
+ console.log( 'progress on .box', image.img.src, element.className );
+});
+
+</script>
+
+</body>
+</html>
diff --git a/vendor/desandro/imagesloaded/sandbox/progress/index.html b/vendor/desandro/imagesloaded/sandbox/progress/index.html
new file mode 100644
index 000000000..b01ce28c5
--- /dev/null
+++ b/vendor/desandro/imagesloaded/sandbox/progress/index.html
@@ -0,0 +1,89 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width" />
+
+ <title>progress</title>
+
+ <style>
+ #image-container img {
+ max-height: 140px;
+ }
+
+ li {
+ height: 140px;
+ min-width: 100px;
+ display: block;
+ float: left;
+ list-style: none;
+ margin: 0 5px 5px 0;
+ background-color: black;
+ background-position: center center;
+ background-repeat: no-repeat;
+ }
+
+ li img,
+ #status {
+ -webkit-transition: opacity 0.4s;
+ -moz-transition: opacity 0.4s;
+ -ms-transition: opacity 0.4s;
+ transition: opacity 0.4s;
+ }
+
+ li.is-loading {
+ background-color: black;
+ background-image: url('http://desandro.github.io/imagesloaded/assets/loading.gif');
+ }
+
+ li.is-broken {
+ background-image: url('http://desandro.github.io/imagesloaded/assets/broken.png');
+ background-color: #be3730;
+ width: 120px;
+ }
+
+ li.is-loading img,
+ li.is-broken img {
+ opacity: 0;
+ }
+
+ .buttons { margin-bottom: 1.0em; }
+
+ button {
+ font-size: 18px;
+ padding: 0.4em 0.8em;
+ font-family: sans-serif;
+ }
+
+ #status {
+ opacity: 0;
+ position: fixed;
+ right: 20px;
+ top: 20px;
+ background: hsla( 0, 0%, 0%, 0.8);
+ padding: 20px;
+ border-radius: 10px;
+ z-index: 2; /* over other stuff */
+ }
+ </style>
+
+</head>
+<body>
+
+ <h1>progress</h1>
+
+ <div class="buttons">
+ <button id="add">Add images</button>
+ <button id="reset">Reset</button>
+ </div>
+ <div id="status">
+ <progress max="7" value="0"></progress>
+ </div>
+ <div id="image-container"></div>
+
+<script src="../../bower_components/ev-emitter/ev-emitter.js"></script>
+<script src="../../imagesloaded.js"></script>
+<script src="progress.js"></script>
+
+</body>
+</html>
diff --git a/vendor/desandro/imagesloaded/sandbox/progress/progress.js b/vendor/desandro/imagesloaded/sandbox/progress/progress.js
new file mode 100644
index 000000000..7c00003f5
--- /dev/null
+++ b/vendor/desandro/imagesloaded/sandbox/progress/progress.js
@@ -0,0 +1,111 @@
+/* jshint strict: false */
+
+var progressElem, statusElem;
+var supportsProgress;
+var loadedImageCount, imageCount;
+
+var container = document.querySelector('#image-container');
+statusElem = document.querySelector('#status');
+progressElem = document.querySelector('progress');
+
+supportsProgress = progressElem &&
+ // IE does not support progress
+ progressElem.toString().indexOf('Unknown') === -1;
+
+document.querySelector('#add').onclick = function() {
+ // add new images
+ var fragment = getItemsFragment();
+ container.insertBefore( fragment, container.firstChild );
+ // use ImagesLoaded
+ var imgLoad = imagesLoaded( container );
+ imgLoad.on( 'progress', onProgress );
+ imgLoad.on( 'always', onAlways );
+ // reset progress counter
+ imageCount = imgLoad.images.length;
+ resetProgress();
+ updateProgress( 0 );
+};
+
+// reset container
+document.querySelector('#reset').onclick = function() {
+ empty( container );
+};
+
+// ----- set text helper ----- //
+
+var docElem = document.documentElement;
+var textSetter = docElem.textContent !== undefined ? 'textContent' : 'innerText';
+
+function setText( elem, value ) {
+ elem[ textSetter ] = value;
+}
+
+function empty( elem ) {
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+}
+
+// ----- ----- //
+
+// return doc fragment with
+function getItemsFragment() {
+ var fragment = document.createDocumentFragment();
+ for ( var i = 0; i < 7; i++ ) {
+ var item = getImageItem();
+ fragment.appendChild( item );
+ }
+ return fragment;
+}
+
+// return an <li> with a <img> in it
+function getImageItem() {
+ var item = document.createElement('li');
+ item.className = 'is-loading';
+ var img = document.createElement('img');
+ var size = Math.random() * 3 + 1;
+ var width = Math.random() * 110 + 100;
+ width = Math.round( width * size );
+ var height = Math.round( 140 * size );
+ var rando = Math.ceil( Math.random() * 1000 );
+ // 10% chance of broken image src
+ // random parameter to prevent cached images
+ img.src = rando < 100 ? '//foo/broken-' + rando + '.jpg' :
+ // use picsum for great random images
+ 'https://picsum.photos/' + width + '/' + height + '/' + '?random';
+ item.appendChild( img );
+ return item;
+}
+
+// ----- ----- //
+
+function resetProgress() {
+ statusElem.style.opacity = 1;
+ loadedImageCount = 0;
+ if ( supportsProgress ) {
+ progressElem.setAttribute( 'max', imageCount );
+ }
+}
+
+function updateProgress( value ) {
+ if ( supportsProgress ) {
+ progressElem.setAttribute( 'value', value );
+ } else {
+ // if you don't support progress elem
+ setText( statusElem, value + ' / ' + imageCount );
+ }
+}
+
+// triggered after each item is loaded
+function onProgress( imgLoad, image ) {
+ // change class if the image is loaded or broken
+ image.img.parentNode.className = image.isLoaded ? '' : 'is-broken';
+ // update progress element
+ loadedImageCount++;
+ updateProgress( loadedImageCount );
+}
+
+// hide status when done
+function onAlways() {
+ statusElem.style.opacity = 0;
+}
diff --git a/vendor/desandro/imagesloaded/test/css/tests.css b/vendor/desandro/imagesloaded/test/css/tests.css
new file mode 100644
index 000000000..af8a7e885
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/css/tests.css
@@ -0,0 +1,41 @@
+img {
+ display: inline-block;
+ max-width: 240px;
+}
+
+/* ---- backgrounds ---- */
+
+.bg-box {
+ width: 240px;
+ height: 240px;
+ margin: 0 20px 20px 0;
+ border: 1px solid;
+ display: inline-block;
+}
+
+.bg-box.tulip {
+ background: url('http://i.imgur.com/9xYjgCk.jpg');
+ background-size: cover;
+}
+
+.bg-box.thunder-cloud {
+ background: url('../img/thunder-cloud.jpg');
+ background-size: contain;
+}
+
+.bg-box.multi {
+ background:
+ url("http://i.imgur.com/ZAVN3.png"),
+ url('http://i.imgur.com/6UdOxeB.png') bottom right,
+ url(https://picsum.photos/601/401/?random);
+ background-size: cover;
+}
+
+.bg-box.blue {
+ background: #09F;
+}
+
+.bg-box.gulls {
+ background-image: url('http://i.imgur.com/qKhkOKC.jpg');
+ background-size: cover;
+}
diff --git a/vendor/desandro/imagesloaded/test/img/blue-shell.jpg b/vendor/desandro/imagesloaded/test/img/blue-shell.jpg
new file mode 100644
index 000000000..b47f1e927
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/img/blue-shell.jpg
Binary files differ
diff --git a/vendor/desandro/imagesloaded/test/img/bowser-jr.jpg b/vendor/desandro/imagesloaded/test/img/bowser-jr.jpg
new file mode 100644
index 000000000..b1de2a76f
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/img/bowser-jr.jpg
Binary files differ
diff --git a/vendor/desandro/imagesloaded/test/img/thunder-cloud.jpg b/vendor/desandro/imagesloaded/test/img/thunder-cloud.jpg
new file mode 100644
index 000000000..54fc9a1b7
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/img/thunder-cloud.jpg
Binary files differ
diff --git a/vendor/desandro/imagesloaded/test/index.html b/vendor/desandro/imagesloaded/test/index.html
new file mode 100644
index 000000000..02b04f4a6
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/index.html
@@ -0,0 +1,104 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+
+ <title>imagesLoaded tests</title>
+
+ <link rel="stylesheet" href="../bower_components/qunit/qunit/qunit.css" />
+ <link rel="stylesheet" href="css/tests.css" />
+
+ <script src="../bower_components/ev-emitter/ev-emitter.js"></script>
+ <script src="../bower_components/qunit/qunit/qunit.js"></script>
+ <script src="../bower_components/jquery/dist/jquery.js"></script>
+
+ <script src="../imagesloaded.js"></script>
+
+ <script src="unit/basics.js"></script>
+ <script src="unit/selector-string.js"></script>
+ <script src="unit/single-element.js"></script>
+ <script src="unit/local-files.js"></script>
+ <script src="unit/data-uri.js"></script>
+ <script src="unit/append.js"></script>
+ <script src="unit/no-images.js"></script>
+ <script src="unit/jquery-success.js"></script>
+ <script src="unit/jquery-fail.js"></script>
+ <script src="unit/non-element.js"></script>
+ <script src="unit/background.js"></script>
+
+</head>
+<body>
+
+ <h1>imagesLoaded tests</h1>
+
+ <div id="qunit"></div>
+
+ <h2>Basics</h2>
+
+ <div id="basics">
+ <img src="http://i.imgur.com/xrQHn.jpg" />
+ <img src="http://i.imgur.com/b3fBJ.jpg" />
+ <img src="http://i.imgur.com/xmSh2.jpg" />
+ <img src="http://i.imgur.com/iIpJm.jpg" />
+ <img src="http://i.imgur.com/cvZZl10.gif" />
+ </div>
+
+ <img id="mario-with-shell" src="http://i.imgur.com/ZAVN3.png" >
+
+ <h2>Locals</h2>
+
+ <div id="locals">
+ <img src="img/blue-shell.jpg" />
+ <img src="img/bowser-jr.jpg" />
+ <!-- thunder cloud has bad permissions, should 403 -->
+ <img src="img/not-there.jpg" />
+ </div>
+
+ <h2>Data URI</h2>
+
+ <div id="data-uri">
+ <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABAMDAwMDBAMDBAYEAwQGBwUEBAUHCAYGBwYGCAoICQkJCQgKCgwMDAwMCgwMDQ0MDBERERERFBQUFBQUFBQUFAEEBQUIBwgPCgoPFA4ODhQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAMAAwAwERAAIRAQMRAf/EAJMAAAEFAQEBAAAAAAAAAAAAAAYAAwQHCAUBAgEAAgIDAQEAAAAAAAAAAAAAAAUEBgECAwcIEAABAwMDAgQFAwUAAAAAAAACAQMEEQUGACESMQdBUSIyYUJiExRSIwihgiQVFhEAAQMCBQEFBgcAAAAAAAAAAQARAgMEITFBEgVRYYGRIgZxocHRchPw4TJCIxQH/9oADAMBAAIRAxEAPwDf2hCWhC42R5JBxuF+RJq7JcqMWIC/uOmngnkKfMXh/TSTmOZt+MoGrVP0x1kez4nTwCl21rOvPbHvPRRMHuFzutmcuF2NClPyn1ERSjYNiXEQD4DTx389RvTl/VvrKNxUzqGRA6B2AHgt72lGlVMI/tbxRJqyKCloQloQm31eRlxY4iT6CqtCaqIqVNkVURaJXWk9207W3Ng+T9qyGfFUtPutrbyFIuazTtWRyy+1FbuIKyw9v6QiO7tODVdhEuXmldfM/qbi+arXMql2A2hDmAHQM7D29+Kt9tc04w20Rh7+9FkKZIx1VFhf8bkv3I5biqqu6p5Kvw0u9N+sL3iav9eX8tJ22dPoOnsy7FwrW8bnzZS6/NHkZ4pEdt42yZIxQlaP3DXwXX1LQqmrTjMxMNwfbLMdh7VWJBiQ7p3Xdapt99mMy5JkOC1HZEnHXTVBEQBKkSqvRERN9CFSFx7q5PkqOz8TfZs2ON8lizJDIvyZLadHlFxeLYF1BOKlTdadNWy34emIg1XMjoNElr35EmgEORO4uaXWUNnya2QMpxZ50FemSWBhuxXBJFB9tKGDn219ftAtvStdJvUnEQHHXEqQJIpTaP6jI7SwGrk5KVZ3z1IieDkfgqDkOf8AcEsmQ7FGbs+LspRm7SowzJkh2u7iNGvFhpE9iqJGXVeOvPfQX+Yw4+Iu+Q89zIOIPhSfqdanXSOQxxU6+5oSBhROA9/5Isgd08vxltq5ZQ+zfccNUKZIYZFiUwz4ugjXocEfcQ8UKnRa7a9cuOHpyiftOJDQ6pPR5AmTTCvONJYmR2ZcVwXosgBdYeBeQG2aIQkKp1RUWqaqZDJ0qL7p5U9nz1w7cY887FtMSQLGR3JteKyVb9TkJrxQK0F4/HcE8V1ZONsAwrVMtB8Uru7v7flGaGZlqdt8AGnXUOMwQqTYogjTolUTy1Z4yEkid1DwPIrzLzLKbNdba7GsFo+wlruDraCxL/IqQ/jkgopIAJ+9Ui9dKcemlUjWlUkCPKGbwXWpCAhEjMu697gZHfYmW4pabRbnZVjuzjwXa4NAJsRRZ4kX5JKKqCE2pfaUVH1pvXprANaE4iIwLv4IpxgYSJzGSnwLQ7cbe4DLyNx3iJRbVEIadFoi+emkpiJXEll2O1uXu9u5cLt1fnXZVinS1ZsFwMuSwjfWoRHK7q0p1RkvkqgL6aKlc5Pj3BrQ7x8fmn1pd7/Kc1W9zukjtr3AvuMX0VjPSpsm5WqQ5sEyFMeJ4XGyXYlFSVtxE3Eh36ppnYV4VKMRqAyj3luTJwuxIvzV6bKG2+ipJFRJQXdBXqqeVNMwAEs2mKYKZc7MItPG3NbH2PI4jLnH6gL01+IrocrIAllgkk26XgSaYJuG2XueJxHnOPjxAdq+XJaaHKCBHPFSYeQt2JoYDj9Ejigipruop4rrBiDmsGBlih+DOkdzc8s2K2BFkPtTI1wukltOTcOFDeB43XFTZFLigNoq1Ii26Lpdf3EKdEjUhgmdpbyEnK1plWF4pm8BLZltoi3eEKqTYSm0MmyXqTZ7EBbdQVF1R4VJQLxLJ2Q6zdlX8asvxO5O3TtPLbulofLktiukhWpbH0syTRRcBPAXaEn6i0+teV24T8VFq24mEMOdve/F3f8Awf8AjljPJRClS5sQIqeFeYOGS0+kFXTGXLUgMCosbJl9tdu+/FoeWEuHpKc3QZUSdFKMXxQnHGyT+4E0R5aiRiidk6IsX/jVmOW3Jq5d15bdqsrBcksdrfV2Y/T5XZIIgttr8yNciX9Q6X3XK7g0PFSqVuILSmLYbiuE2/8A1eJ2iLaIKrycbitoCuElfU4XuMt+pqq6QTqSmXkXUoBl/9k=" />
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAwCAMAAAC/knOqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMBQTFRFkF0QF27/Bgsp/fQF+fr6jqvpDEG2zp4CCx9Ys4IFo5JU8MqQXJH2Ulxj89QDC0bIsrKxIHn//fxztcv2iYqG5ebmCjCHzNjxAzTYRmih2drcCzijMof+OB8U/Pg59PHXE2D9xMK9eUMDAVf8kXNP/fvr2eP0p6WgOUtnAkX7Eljwa3WB5er2UXjVC0jZAh9/EFHa8PHyl5mZJVKt6NM34dzNz87NASGpsbzZDlDytq4tLWfs4bQFyLNp////+/v7DjziEwAAAEB0Uk5T////////////////////////////////////////////////////////////////////////////////////AMJ7sUQAAAPaSURBVHjadNWLdqo6EAZgQKGRA0YUYzRQY1ELqFykiojV93+rM0FQbLt/VlcvfpmVhGQq3V6TjgyjLOWyNIzR9sdn0stvE0MuQrmOZxmjf9pRybln+sJZspWZiSU7o7+twTmXtcU3BmhZ4f6/zLJk2ej+ttsyDIXVN4klsGzqmQP1ZXn9044TQbmcuS5Yx3Ic380cy2rj2qZJktzrui7MFqiDKlutcv1ip0mNseuGFbaedeVd235qGOMkAo4VJYB4AVcUbHG5erjxtN1ME8kwpgHybV0/63vbRF5QrUFk+7ADwpgGD82nva9+p4m+CQKYWFjwUH3YKYNkjPrnCr6/D4fz93f46WsKuIDqu8amPmGE5bnZr2u+fw2Hwwr3N4FYRZKsazshBLCggPv9S79K56saV+NRbU8McO6+ifSavL1dLtVQk2LYT7VtY/hcgnw8HgkGAL9Q2E78tDGJfWBV3CbiFwnqmzlsfmPXUDd2pTtUFAVVj6IIDtVNqmGtmW+aEYJQDZ9puM/gPTX7cNtBYeS7r+z+hVyfAp0+3gUsDsXKP5IXGLPne7uVUJf8TRFPEi1Ln1YVq/sbazzBbN8+v2LGjCguzNBtllVRwovoPtvnvcgYihlpLaueQeFRjY1f79vWhxfCGKpz54gVRYTZ7Nedn8JeiPNG7lhBGS2KIKdZ99edT6cKQjEiBGMf+UhhZRFQSnG02/60J9i0qmCMcsbimPGABkXIRYdQX+2EaaEcinOc57GWlWXpeR7cYqsUPWj0YksKN73QNEpLdZJer9d0rToeVC2LEG5+2rIqLjjXKKPJ6PrMxPJkK6DcsdSn3dIo5DnK8113de22tOHJWhyUDp88rBFFPEJxvruu0jYVOEE0tCyjsSMchQVBOZ3Px+MfeOehmHJLbs76LioKpuT5QND0hV4nnqZoGPrb3Z6iKNIUJc6Os5nA3ZfKTgCvGtq3Kuw2BIpMP5/O/8JGQEzC4N/BGuyuwAyZKYvtw/GOYc7A4RHf1ICNbUIi2blJqocJWt5Skm8OiyPo8aGufX/UQJvd9sSPZFUqKfGPcHRYPF0MBovT8VhXh3TT1cqgFM7kzESslEbqUezdyszJ4HvwKfhi8eCra0incwFm+1N9Hub9ztnffOqf+0/IY8BhpWbnTmfePjurs2iJZ922dXsPqQcMFouqWfbnLfst+ii05t7Stjd2lb0Y1Lt0hkA73y3bexNddzjs93S7yd5e9i4XaPFQ5tLqD5LohxfouG+S5G/u8T8+7l34Al25+7SHpVRlKS312fo4OA0Ws7Fe/1FaLg+V+l+AAQAurhhy+upm/wAAAABJRU5ErkJggg==" />
+ </div>
+
+ <h2>append</h2>
+
+ <div id="append"></div>
+
+ <h2>no images</h2>
+
+ <div id="no-images"></div>
+
+ <h2>jQuery success</h2>
+
+ <div id="jquery-success">
+ <img src="http://i.imgur.com/YbYCPFF.png" />
+ <img src="http://i.imgur.com/6UdOxeB.png" />
+ <img src="http://i.imgur.com/qd8G15D.png" />
+ </div>
+
+ <h2>jQuery fail</h2>
+
+ <div id="jquery-fail">
+ <img src="http://i.imgur.com/xmSh2.jpg" />
+ <img src="img/bowser-jr.jpg" />
+ <img src="http://i.imgur.com/ZAVN3.png">
+ <img src="img/not-there.jpg" />
+ <img src="foobar.jpg" />
+ </div>
+
+ <h2>background</h2>
+
+ <div id="background">
+ <div class="bg-box tulip"></div>
+ <div class="bg-box thunder-cloud"></div>
+ <div class="bg-box multi"></div>
+ <div class="bg-box blue"></div>
+ <div class="bg-box gulls">
+ <img src="https://picsum.photos/400/300/?random" />
+ <img src="https://picsum.photos/800/600/?random" />
+ </div>
+ </div>
+
+</body>
+</html>
diff --git a/vendor/desandro/imagesloaded/test/unit/append.js b/vendor/desandro/imagesloaded/test/unit/append.js
new file mode 100644
index 000000000..7a6b3c827
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/append.js
@@ -0,0 +1,30 @@
+QUnit.test( 'append', function( assert ) {
+ 'use strict';
+
+ var imgUrls = [
+ 'http://i.imgur.com/bwy74ok.jpg',
+ 'http://i.imgur.com/bAZWoqx.jpg',
+ 'http://i.imgur.com/PgmEBSB.jpg',
+ 'http://i.imgur.com/aboaFoB.jpg',
+ 'http://i.imgur.com/LkmcILl.jpg',
+ 'http://i.imgur.com/q9zO6tw.jpg'
+ ];
+
+ // create images
+ var fragment = document.createDocumentFragment();
+ for ( var i=0, len = imgUrls.length; i < len; i++ ) {
+ var img = document.createElement('img');
+ img.src = imgUrls[i];
+ fragment.appendChild( img );
+ }
+
+ var elem = document.querySelector('#append');
+ elem.appendChild( fragment );
+ var done = assert.async();
+
+ imagesLoaded( elem, { debug: false } ).on( 'always', function() {
+ assert.ok( 'appended images loaded' );
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/background.js b/vendor/desandro/imagesloaded/test/unit/background.js
new file mode 100644
index 000000000..ca76fad6f
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/background.js
@@ -0,0 +1,70 @@
+QUnit.test( 'background', function( assert ) {
+ 'use strict';
+
+ // from Modernizr
+ var supportsMultiBGs = ( function() {
+ var style = document.createElement('a').style;
+ style.cssText = 'background:url(https://),url(https://),red url(https://)';
+ return (/(url\s*\(.*?){3}/).test(style.background);
+ })();
+
+ var multiBGCount = supportsMultiBGs ? 3 : 0;
+ var done = assert.async( 14 + multiBGCount );
+
+ var imgLoad0 = imagesLoaded( '#background .tulip', { background: true }, function() {
+ assert.ok( true, 'callback triggered on .orange-tree');
+ done();
+ });
+ assert.equal( imgLoad0.images.length, 1, '1 image on .images' );
+
+ imgLoad0.on( 'progress', function( instance, image, element ) {
+ assert.ok( element.nodeName == 'DIV', 'progress; element is div');
+ assert.ok( image.isLoaded, 'progress; image.isLoaded');
+ done();
+ });
+
+ var imgLoad1 = imagesLoaded( '#background .thunder-cloud', { background: true }, function() {
+ assert.ok( true, 'callback triggered on .thunder-cloud');
+ done();
+ });
+ assert.equal( imgLoad1.images.length, 1, '1 image on .images' );
+
+ // multiple backgrounds
+ var imgLoad2 = imagesLoaded( '#background .multi', { background: true }, function() {
+ assert.ok( true, 'callback triggered on .multi');
+ done();
+ });
+ assert.equal( imgLoad2.images.length, multiBGCount, 'correct multiple BG count on .images' );
+
+ // multiple elements
+ var imgLoad3 = imagesLoaded( '#background .bg-box', { background: true }, function() {
+ assert.ok( true, 'callback triggered on .bg-box');
+ var count = 5 + multiBGCount;
+ assert.equal( imgLoad3.images.length, count, count + ' images on .bg-box' );
+ done();
+ });
+
+ imgLoad3.on('progress', function( instance, image/*, element */) {
+ assert.ok( true, 'progress on .bg-box; ' + image.img.src );
+ assert.equal( image.isLoaded, true, 'image.isLoaded == true' );
+ done();
+ });
+
+ // background and <img> children
+ var imgLoad4 = imagesLoaded( '#background .gulls', { background: true } );
+ assert.equal( imgLoad4.images.length, 3, '3 images: 1 background and 2 <img>' );
+
+ imgLoad4.on( 'progress', function( instance, image ) {
+ assert.equal( image.isLoaded, true, 'image is loaded' );
+ done();
+ });
+
+ // child background selector
+ var imgLoad5 = imagesLoaded( '#background', { background: '.bg-box' }, function() {
+ var count = 5 + multiBGCount;
+ assert.equal( imgLoad5.images.length, count,
+ count + ' images on .bg-box, with {background: .bg-box}' );
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/basics.js b/vendor/desandro/imagesloaded/test/unit/basics.js
new file mode 100644
index 000000000..6c502a793
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/basics.js
@@ -0,0 +1,28 @@
+QUnit.test( 'basics', function( assert ) {
+
+ 'use strict';
+
+ var elem = document.querySelector('#basics');
+ var images = elem.querySelectorAll('img');
+ var done = assert.async( 3 + images.length );
+
+ var imgLoader = new imagesLoaded( elem, function( obj ) {
+ assert.ok( true, 'callback function triggered' );
+ assert.equal( imgLoader, obj, 'callback argument and instance match' );
+ done();
+ });
+ imgLoader.on( 'done', function() {
+ assert.ok( true, 'done event triggered' );
+ done();
+ });
+ imgLoader.on( 'always', function() {
+ assert.ok( true, 'always event triggered' );
+ done();
+ });
+
+ imgLoader.on( 'progress', function( loader, image ) {
+ assert.ok( image.isLoaded, 'image is loaded');
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/data-uri.js b/vendor/desandro/imagesloaded/test/unit/data-uri.js
new file mode 100644
index 000000000..635f69859
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/data-uri.js
@@ -0,0 +1,10 @@
+QUnit.test( 'data-uri', function( assert ) {
+ 'use strict';
+
+ var done = assert.async();
+ imagesLoaded('#data-uri', { debug: false }).on( 'done', function( obj ) {
+ assert.ok( true, 'data-uri images loaded' );
+ assert.equal( obj.images.length, 2, 'instance has 2 images' );
+ done();
+ });
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/jquery-fail.js b/vendor/desandro/imagesloaded/test/unit/jquery-fail.js
new file mode 100644
index 000000000..b2180f6f2
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/jquery-fail.js
@@ -0,0 +1,29 @@
+QUnit.test( 'jquery fail', function( assert ) {
+
+ 'use strict';
+
+ var $ = window.jQuery;
+ var $images = $('#jquery-fail img');
+ var done = assert.async( 3 + $images.length );
+
+ $('#jquery-fail').imagesLoaded( function( instance ) {
+ assert.ok( true, 'callback triggered' );
+ assert.ok( instance instanceof imagesLoaded, 'instance instanceof imagesLoaded' );
+ done();
+ })
+ .fail( function( instance ) {
+ assert.ok( true, 'fail triggered' );
+ assert.ok( instance instanceof imagesLoaded, 'instance instanceof imagesLoaded' );
+ done();
+ })
+ .always( function( instance ) {
+ assert.ok( true, 'always triggered' );
+ assert.ok( instance instanceof imagesLoaded, 'instance instanceof imagesLoaded' );
+ done();
+ })
+ .progress( function(/* instance, image */) {
+ assert.ok( true, 'progress trigged');
+ done();
+ });
+
+ });
diff --git a/vendor/desandro/imagesloaded/test/unit/jquery-success.js b/vendor/desandro/imagesloaded/test/unit/jquery-success.js
new file mode 100644
index 000000000..f16621088
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/jquery-success.js
@@ -0,0 +1,28 @@
+QUnit.test( 'jquery success', function( assert ) {
+
+ 'use strict';
+
+ var $ = window.jQuery;
+ var done = assert.async( 6 );
+
+ $('#jquery-success').imagesLoaded( function( instance ) {
+ assert.ok( true, 'callback triggered' );
+ assert.ok( instance instanceof imagesLoaded, 'instance instanceof imagesLoaded' );
+ done();
+ })
+ .done( function( instance ) {
+ assert.ok( true, 'done triggered' );
+ assert.ok( instance instanceof imagesLoaded, 'instance instanceof imagesLoaded' );
+ done();
+ })
+ .always( function( instance ) {
+ assert.ok( true, 'always triggered' );
+ assert.ok( instance instanceof imagesLoaded, 'instance instanceof imagesLoaded' );
+ done();
+ })
+ .progress( function( instance, image ) {
+ assert.ok( image.isLoaded, 'progress trigged, image is loaded');
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/local-files.js b/vendor/desandro/imagesloaded/test/unit/local-files.js
new file mode 100644
index 000000000..61da6ae92
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/local-files.js
@@ -0,0 +1,31 @@
+QUnit.test( 'local files', function( assert ) {
+ 'use strict';
+
+ var elem = document.querySelector('#locals');
+ var done = assert.async( 6 );
+
+ var imgLoader = new imagesLoaded( elem, function( obj ) {
+ assert.ok( true, 'callback function triggered' );
+ assert.equal( imgLoader, obj, 'callback argument and instance match' );
+ done();
+ });
+ imgLoader.on( 'fail', function() {
+ assert.ok( true, 'fail event triggered' );
+ done();
+ });
+ imgLoader.on( 'always', function() {
+ assert.ok( true, 'always event triggered' );
+ done();
+ });
+
+ imgLoader.on( 'progress', function( loader, image ) {
+ assert.ok( true, 'image progressed');
+ if ( image.img.src.indexOf('img/not-there.jpg') !== -1 ) {
+ assert.ok( !image.isLoaded, 'thunder cloud is not loaded' );
+ } else {
+ assert.ok( image.isLoaded, 'image is loaded' );
+ }
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/no-images.js b/vendor/desandro/imagesloaded/test/unit/no-images.js
new file mode 100644
index 000000000..841216381
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/no-images.js
@@ -0,0 +1,11 @@
+QUnit.test( 'no images', function( assert ) {
+ 'use strict';
+
+ var elem = document.querySelector('#no-images');
+ var done = assert.async();
+ imagesLoaded( elem, function() {
+ assert.ok( true, 'triggered with no images' );
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/non-element.js b/vendor/desandro/imagesloaded/test/unit/non-element.js
new file mode 100644
index 000000000..4c9986fa6
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/non-element.js
@@ -0,0 +1,24 @@
+QUnit.test( 'dismiss non-element nodes', function( assert ) {
+ 'use strict';
+
+ var $ = window.jQuery;
+ var done = assert.async( 2 );
+
+ $(' <img src="https://picsum.photos/401/301/?random" /> <img src="https://picsum.photos/402/302/?random" /> ')
+ .imagesLoaded(function() {
+ assert.ok( true, 'elements from jQuery string ok' );
+ done();
+ });
+
+ // test fragment
+ var frag = document.createDocumentFragment();
+ var img = new Image();
+ img.src = 'https://picsum.photos/403/303/?random';
+ frag.appendChild( img );
+ var imgLoad = imagesLoaded( frag, function() {
+ assert.ok( true, 'document fragment ok' );
+ assert.equal( imgLoad.images.length, 1, '1 image found' );
+ done();
+ });
+
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/selector-string.js b/vendor/desandro/imagesloaded/test/unit/selector-string.js
new file mode 100644
index 000000000..8c43c4bef
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/selector-string.js
@@ -0,0 +1,12 @@
+QUnit.test( 'selector string', function( assert ) {
+ 'use strict';
+ var images = document.querySelectorAll('#basics img');
+ var done = assert.async();
+ var imgLoad = imagesLoaded('#basics', { debug: true }).on( 'done', function( obj ) {
+ assert.ok( true, 'selector string worked' );
+ assert.ok( obj.images, 'argument has images' );
+ assert.equal( obj.images.length, images.length, 'images.length matches' );
+ done();
+ });
+ assert.ok( imgLoad.options.debug, 'debug option set' );
+});
diff --git a/vendor/desandro/imagesloaded/test/unit/single-element.js b/vendor/desandro/imagesloaded/test/unit/single-element.js
new file mode 100644
index 000000000..42d7e48ee
--- /dev/null
+++ b/vendor/desandro/imagesloaded/test/unit/single-element.js
@@ -0,0 +1,11 @@
+QUnit.test( 'single element', function( assert ) {
+ 'use strict';
+ var elem = document.querySelector('#mario-with-shell');
+ var done = assert.async();
+ imagesLoaded( elem ).on( 'done', function( obj ) {
+ assert.ok( true, 'single element worked' );
+ assert.ok( obj.images, 'argument has images' );
+ assert.equal( obj.images.length, 1, 'images.length = 1' );
+ done();
+ });
+});
diff --git a/vendor/league/html-to-markdown/CHANGELOG.md b/vendor/league/html-to-markdown/CHANGELOG.md
index ab07c94f5..e1893be9a 100644
--- a/vendor/league/html-to-markdown/CHANGELOG.md
+++ b/vendor/league/html-to-markdown/CHANGELOG.md
@@ -4,6 +4,14 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
## [Unreleased][unreleased]
+## [4.8.1] - 2018-12-24
+### Added
+ - Added support for PHP 7.3
+
+### Fixed
+ - Fixed paragraphs following tables (#165, #166)
+ - Fixed incorrect list item escaping (#168, #169)
+
## [4.8.0] - 2018-09-18
### Added
- Added support for email auto-linking
@@ -235,7 +243,8 @@ not ideally set, so this releases fixes that. Moving forwards this should reduce
### Added
- Initial release
-[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.8.0...master
+[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.8.1...master
+[4.8.1]: https://github.com/thephpleague/html-to-markdown/compare/4.8.0...4.8.1
[4.8.0]: https://github.com/thephpleague/html-to-markdown/compare/4.7.0...4.8.0
[4.7.0]: https://github.com/thephpleague/html-to-markdown/compare/4.6.2...4.7.0
[4.6.2]: https://github.com/thephpleague/html-to-markdown/compare/4.6.1...4.6.2
diff --git a/vendor/league/html-to-markdown/src/Converter/DefaultConverter.php b/vendor/league/html-to-markdown/src/Converter/DefaultConverter.php
index 964a71093..8de0af210 100644
--- a/vendor/league/html-to-markdown/src/Converter/DefaultConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/DefaultConverter.php
@@ -37,7 +37,13 @@ class DefaultConverter implements ConverterInterface, ConfigurationAwareInterfac
return $element->getValue();
}
- return html_entity_decode($element->getChildrenAsString());
+ $markdown = html_entity_decode($element->getChildrenAsString());
+
+ if ($element->getTagName() === 'table') {
+ $markdown .= "\n\n";
+ }
+
+ return $markdown;
}
/**
diff --git a/vendor/league/html-to-markdown/src/Converter/HardBreakConverter.php b/vendor/league/html-to-markdown/src/Converter/HardBreakConverter.php
index d079d9127..1be10bd63 100644
--- a/vendor/league/html-to-markdown/src/Converter/HardBreakConverter.php
+++ b/vendor/league/html-to-markdown/src/Converter/HardBreakConverter.php
@@ -35,7 +35,10 @@ class HardBreakConverter implements ConverterInterface, ConfigurationAwareInterf
$next_value = $next->getValue();
if ($next_value) {
if (in_array(substr($next_value, 0, 2), array('- ', '* ', '+ '))) {
- $return .= '\\';
+ $parent = $element->getParent();
+ if ($parent && $parent->getTagName() == 'li') {
+ $return .= '\\';
+ }
}
}
}
diff --git a/vendor/psr/log/README.md b/vendor/psr/log/README.md
index 574bc1cb2..5571a25e8 100644
--- a/vendor/psr/log/README.md
+++ b/vendor/psr/log/README.md
@@ -7,6 +7,13 @@ This repository holds all interfaces/classes/traits related to
Note that this is not a logger of its own. It is merely an interface that
describes a logger. See the specification for more details.
+Installation
+------------
+
+```bash
+composer require psr/log
+```
+
Usage
-----
diff --git a/view/css/default.css b/view/css/default.css
index 765a197d9..bd0f14ba2 100644
--- a/view/css/default.css
+++ b/view/css/default.css
@@ -1,22 +1,37 @@
main {
- display: table;
- table-layout: fixed;
position: relative;
- width: 100%;
- height: 100vh;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
}
-aside {
+.content {
+ display: flex;
+ flex: 1;
+}
+
+.columns {
+ display: flex;
+ flex:1;
+ min-width: 0;
+}
+
+#region_1 {
position: relative;
- display: table-cell;
- vertical-align: top;
+ order: 1;
padding: 4.5rem 7px 0px 7px;
}
-section {
+#region_2 {
position: relative;
- width: 100%;
- display: table-cell;
- vertical-align: top;
+ flex: 1;
+ order: 2;
padding: 4.5rem 7px 200px 7px;
+ min-width: 0;
+}
+
+#region_3 {
+ position: relative;
+ order: 3;
+ padding: 4.5rem 7px 0px 7px;
}
diff --git a/view/css/mod_connedit.css b/view/css/mod_connedit.css
index 67a182c5c..b02f928f0 100644
--- a/view/css/mod_connedit.css
+++ b/view/css/mod_connedit.css
@@ -71,7 +71,6 @@
width: 32px;
height: 32px;
border-radius: 4px;
- border: 1px solid #ccc;
text-align: center;
}
diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php
index 19c324386..bb4c3728f 100644
--- a/view/es-es/hstrings.php
+++ b/view/es-es/hstrings.php
@@ -2,10 +2,10 @@
if(! function_exists("string_plural_select_es_es")) {
function string_plural_select_es_es($n){
- return ($n != 1 ? 1 : 0);;
+ return ($n != 1 ? 1 : 0);
}}
App::$rtl = 0;
-App::$strings["plural_function_code"] = "(n != 1 ? 1 : 0);";
+App::$strings["plural_function_code"] = "(n != 1 ? 1 : 0)";
App::$strings["Can view my channel stream and posts"] = "Pueden verse la actividad y publicaciones de mi canal";
App::$strings["Can send me their channel stream and posts"] = "Se me pueden enviar entradas y contenido de un canal";
App::$strings["Can view my default channel profile"] = "Puede verse mi perfil de canal predeterminado.";
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index 6b77f0631..278a0a176 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -216,8 +216,6 @@ function string2bb(element) {
});
textcomplete.register([contacts,forums,smilies,tags]);
});
-
-
};
})( jQuery );
diff --git a/view/js/main.js b/view/js/main.js
index 085bc8d0d..4e4431f33 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -44,6 +44,17 @@ $(document).ready(function() {
$(document).on('click', '.conversation-settings-link', getConversationSettings);
$(document).on('click', '#settings_module_ajax_submit', postConversationSettings);
+ $(document).on('click focus', '.comment-edit-form textarea', function(e) {
+ if(! this.autocomplete_handled) {
+ /* autocomplete @nicknames */
+ $(this).editor_autocomplete(baseurl+"/acl?f=&n=1");
+ /* autocomplete bbcode */
+ $(this).bbco_autocomplete('bbcode');
+
+ this.autocomplete_handled = true;
+ }
+ });
+
var tf = new Function('n', 's', 'var k = s.split("/")['+aStr['plural_func']+']; return (k ? k : s);');
jQuery.timeago.settings.strings = {
@@ -239,7 +250,11 @@ function handle_comment_form(e) {
},10000);
});
- function commentSaveChanges(convId,isFinal = false) {
+ function commentSaveChanges(convId, isFinal) {
+
+ if(typeof isFinal === 'undefined')
+ isFinal = false;
+
if(auto_save_draft) {
tmp = $('#' + emptyCommentElm).val();
if(tmp) {
@@ -385,12 +400,12 @@ function viewsrc(id) {
function showHideComments(id) {
if( $('#collapsed-comments-' + id).is(':visible')) {
$('#collapsed-comments-' + id + ' .autotime').timeago('dispose');
- $('#collapsed-comments-' + id).slideUp();
+ $('#collapsed-comments-' + id).hide();
$('#hide-comments-' + id).html(aStr.showmore);
$('#hide-comments-total-' + id).show();
} else {
$('#collapsed-comments-' + id + ' .autotime').timeago();
- $('#collapsed-comments-' + id).slideDown();
+ $('#collapsed-comments-' + id).show();
$('#hide-comments-' + id).html(aStr.showfewer);
$('#hide-comments-total-' + id).hide();
}
@@ -453,6 +468,9 @@ function notificationsUpdate(cached_data) {
$.get(pingCmd,function(data) {
// Put the object into storage
+ if(! data)
+ return;
+
sessionStorage.setItem('notifications_cache', JSON.stringify(data));
var fnotifs = [];
@@ -544,7 +562,7 @@ function handleNotificationsItems(notifyType, data) {
notify_menu.html('');
$(data).each(function() {
- html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top,this.unseen,this.private_forum);
+ html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.addr,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top,this.unseen,this.private_forum);
notify_menu.append(html);
});
@@ -558,7 +576,8 @@ function handleNotificationsItems(notifyType, data) {
if(filter) {
$('#nav-' + notifyType + '-menu .notification').each(function(i, el){
var cn = $(el).data('contact_name').toString().toLowerCase();
- if(cn.indexOf(filter) === -1)
+ var ca = $(el).data('contact_addr').toString().toLowerCase();
+ if(cn.indexOf(filter) === -1 && ca.indexOf(filter) === -1)
$(el).addClass('d-none');
else
$(el).removeClass('d-none');
@@ -715,6 +734,7 @@ function updateConvItems(mode,data) {
title.replace(/\s+$/, '');
if (title) {
savedTitle = title + " " + savedTitle;
+ document.title = title;
}
}
}
@@ -750,12 +770,7 @@ function updateConvItems(mode,data) {
mediaPlaying = false;
});
- /* autocomplete @nicknames */
- $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl?f=&n=1");
- /* autocomplete bbcode */
- $(".comment-edit-form textarea").bbco_autocomplete('bbcode');
-
- var bimgs = ((preloadImages) ? false : $(".wall-item-body img").not(function() { return this.complete; }));
+ var bimgs = ((preloadImages) ? false : $(".wall-item-body img, .wall-photo-item img").not(function() { return this.complete; }));
var bimgcount = bimgs.length;
if (bimgcount) {
@@ -831,10 +846,10 @@ function collapseHeight() {
});
var collapsedContentHeight = Math.ceil($("#region_2").height());
- contentHeightDiff = origContentHeight - collapsedContentHeight;
+ contentHeightDiff = liking ? 0 : origContentHeight - collapsedContentHeight;
console.log('collapseHeight() - contentHeightDiff: ' + contentHeightDiff + 'px');
- if(i){
+ if(i && !liking){
var sval = position - cDiff + ($(".divgrow-showmore").outerHeight() * i);
console.log('collapsed above viewport count: ' + i);
$(window).scrollTop(sval);
@@ -887,7 +902,12 @@ function liveUpdate(notify_id) {
if((src === null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; }
- if(($('.comment-edit-text.expanded').length) || (in_progress) || (mediaPlaying)) {
+ // if auto updates are enabled and a comment box is open,
+ // prevent live updates until the comment is submitted
+
+ var lockUpdates = (($('.comment-edit-text.expanded').length && (! bParam_static)) ? true : false);
+
+ if(lockUpdates || in_progress || mediaPlaying) {
if(livetime) {
clearTimeout(livetime);
}
@@ -980,7 +1000,7 @@ function liveUpdate(notify_id) {
$("#profile-jot-text-loading").hide();
// adjust scroll position if new content was added above viewport
- if(update_mode === 'update') {
+ if(update_mode === 'update' && !justifiedGalleryActive) {
$(window).scrollTop($(window).scrollTop() + $("#region_2").height() - orgHeight + contentHeightDiff);
}
diff --git a/view/php/default.php b/view/php/default.php
index 60f3f6a6f..388c94382 100644
--- a/view/php/default.php
+++ b/view/php/default.php
@@ -10,12 +10,16 @@
<header><?php if(x($page,'header')) echo $page['header']; ?></header>
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark"><?php if(x($page,'nav')) echo $page['nav']; ?></nav>
<main>
- <aside id="region_1"><div class="aside_spacer"><div id="left_aside_wrapper"><?php if(x($page,'aside')) echo $page['aside']; ?></div></div></aside>
- <section id="region_2"><?php if(x($page,'content')) echo $page['content']; ?>
+ <div class="content">
+ <div class="columns">
+ <aside id="region_1"><div class="aside_spacer"><div id="left_aside_wrapper"><?php if(x($page,'aside')) echo $page['aside']; ?></div></div></aside>
+ <section id="region_2"><?php if(x($page,'content')) echo $page['content']; ?>
<div id="page-footer"></div>
- <div id="pause"></div>
- </section>
- <aside id="region_3" class="d-none d-xl-table-cell"><div class="aside_spacer"><div id="right_aside_wrapper"><?php if(x($page,'right_aside')) echo $page['right_aside']; ?></div></div></aside>
+ <div id="pause"></div>
+ </section>
+ <aside id="region_3" class="d-none d-xl-table-cell"><div class="aside_spacer"><div id="right_aside_wrapper"><?php if(x($page,'right_aside')) echo $page['right_aside']; ?></div></div></aside>
+ </div>
+ </div>
</main>
<footer><?php if(x($page,'footer')) echo $page['footer']; ?></footer>
</body>
diff --git a/view/php/theme_init.php b/view/php/theme_init.php
index dd8dcb5ee..73e559c45 100644
--- a/view/php/theme_init.php
+++ b/view/php/theme_init.php
@@ -36,7 +36,7 @@ head_add_js('/library/colorbox/jquery.colorbox-min.js');
head_add_js('/library/jquery.AreYouSure/jquery.are-you-sure.js');
head_add_js('/library/tableofcontents/jquery.toc.js');
-head_add_js('/library/imagesloaded/imagesloaded.pkgd.min.js');
+head_add_js('/vendor/desandro/imagesloaded/imagesloaded.pkgd.min.js');
/**
* Those who require this feature will know what to do with it.
* Those who don't, won't.
diff --git a/view/ru/hmessages.po b/view/ru/hmessages.po
index 6a8c8805c..2c394e84c 100644
--- a/view/ru/hmessages.po
+++ b/view/ru/hmessages.po
@@ -1,18 +1,18 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# hubzilla
+# Copyright (C) 2012-2016 hubzilla
+# This file is distributed under the same license as the hubzilla package.
+# Mike Macgirvin, 2012
#
# Translators:
# Alex <info@pixelbits.de>, 2016-2017
-# Max Kostikov <max@kostikov.co>, 2018
+# Max Kostikov <max@kostikov.co>, 2018-2019
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: hubzilla\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-10-18 11:03+0200\n"
-"PO-Revision-Date: 2018-11-19 14:12+0200\n"
+"POT-Creation-Date: 2019-02-19 15:46+0200\n"
+"PO-Revision-Date: 2019-02-19 15:58+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"
@@ -21,4774 +21,618 @@ msgstr ""
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2))\n"
-#: ../../util/nconfig.php:34
-msgid "Source channel not found."
-msgstr "Канал-источник не найден."
-
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3086
-#: ../../Zotlabs/Module/Admin/Site.php:187
-msgid "Default"
-msgstr "По умолчанию"
-
-#: ../../view/theme/redbasic/php/config.php:16
-#: ../../view/theme/redbasic/php/config.php:19
-msgid "Focus (Hubzilla default)"
-msgstr "Фокус (по умолчанию Hubzilla)"
-
-#: ../../view/theme/redbasic/php/config.php:94 ../../include/js_strings.php:22
-#: ../../Zotlabs/Module/Mail.php:431 ../../Zotlabs/Module/Pconfig.php:111
-#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Permcats.php:128
-#: ../../Zotlabs/Module/Xchan.php:15
-#: ../../Zotlabs/Module/Email_validation.php:40
-#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Appman.php:155
-#: ../../Zotlabs/Module/Profiles.php:723 ../../Zotlabs/Module/Photos.php:1097
-#: ../../Zotlabs/Module/Photos.php:1137 ../../Zotlabs/Module/Photos.php:1255
-#: ../../Zotlabs/Module/Oauth.php:111 ../../Zotlabs/Module/Events.php:495
-#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Locs.php:121
-#: ../../Zotlabs/Module/Sources.php:125 ../../Zotlabs/Module/Sources.php:162
-#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250
-#: ../../Zotlabs/Module/Oauth2.php:116
-#: ../../Zotlabs/Module/Settings/Manage.php:41
-#: ../../Zotlabs/Module/Settings/Calendar.php:41
-#: ../../Zotlabs/Module/Settings/Account.php:103
-#: ../../Zotlabs/Module/Settings/Conversation.php:48
-#: ../../Zotlabs/Module/Settings/Editor.php:41
-#: ../../Zotlabs/Module/Settings/Display.php:189
-#: ../../Zotlabs/Module/Settings/Features.php:46
-#: ../../Zotlabs/Module/Settings/Network.php:61
-#: ../../Zotlabs/Module/Settings/Events.php:41
-#: ../../Zotlabs/Module/Settings/Channel_home.php:89
-#: ../../Zotlabs/Module/Settings/Directory.php:41
-#: ../../Zotlabs/Module/Settings/Photos.php:41
-#: ../../Zotlabs/Module/Settings/Profiles.php:50
-#: ../../Zotlabs/Module/Settings/Featured.php:54
-#: ../../Zotlabs/Module/Settings/Connections.php:41
-#: ../../Zotlabs/Module/Settings/Channel.php:493
-#: ../../Zotlabs/Module/Filestorage.php:183 ../../Zotlabs/Module/Cal.php:344
-#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:349
-#: ../../Zotlabs/Module/Mitem.php:259
-#: ../../Zotlabs/Module/Admin/Features.php:66
-#: ../../Zotlabs/Module/Admin/Logs.php:84
-#: ../../Zotlabs/Module/Admin/Channels.php:147
-#: ../../Zotlabs/Module/Admin/Security.php:112
-#: ../../Zotlabs/Module/Admin/Addons.php:438
-#: ../../Zotlabs/Module/Admin/Site.php:289
-#: ../../Zotlabs/Module/Admin/Profs.php:178
-#: ../../Zotlabs/Module/Admin/Themes.php:158
-#: ../../Zotlabs/Module/Admin/Accounts.php:168
-#: ../../Zotlabs/Module/Admin/Account_edit.php:73
-#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326
-#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Group.php:140
-#: ../../Zotlabs/Module/Group.php:156 ../../Zotlabs/Module/Mood.php:158
-#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Connect.php:124
-#: ../../Zotlabs/Module/Pdledit.php:107 ../../Zotlabs/Module/Wiki.php:215
-#: ../../Zotlabs/Module/Import.php:565
-#: ../../Zotlabs/Module/Import_items.php:129
-#: ../../Zotlabs/Widget/Wiki_pages.php:42
-#: ../../Zotlabs/Widget/Wiki_pages.php:99
-#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Lib/ThreadItem.php:770
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:89
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:191
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:136
-#: ../../extend/addon/hzaddons/rtof/rtof.php:101
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:89
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:124
-#: ../../extend/addon/hzaddons/twitter/twitter.php:221
-#: ../../extend/addon/hzaddons/twitter/twitter.php:268
-#: ../../extend/addon/hzaddons/logrot/logrot.php:35
-#: ../../extend/addon/hzaddons/likebanner/likebanner.php:57
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:168
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:371
-#: ../../extend/addon/hzaddons/piwik/piwik.php:95
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:237
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:161
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:100
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:53
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:84
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:89
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:322
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:380
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:432
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:900
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:139
-#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:73
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:114
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:410
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:640
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:248
-#: ../../extend/addon/hzaddons/cart/cart.php:1263
-#: ../../extend/addon/hzaddons/nofed/nofed.php:80
-#: ../../extend/addon/hzaddons/planets/planets.php:153
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:48
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:95
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:219
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:97
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:124
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:69
-#: ../../extend/addon/hzaddons/visage/visage.php:170
-#: ../../extend/addon/hzaddons/irc/irc.php:53
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:60
-#: ../../extend/addon/hzaddons/libertree/libertree.php:85
-#: ../../extend/addon/hzaddons/redred/redred.php:119
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:63
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:99
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:97
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:61
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:65
-msgid "Submit"
-msgstr "Отправить"
-
-#: ../../view/theme/redbasic/php/config.php:98
-msgid "Theme settings"
-msgstr "Настройки темы"
-
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Narrow navbar"
-msgstr "Узкая панель навигации"
-
-#: ../../view/theme/redbasic/php/config.php:99
-#: ../../view/theme/redbasic/php/config.php:116 ../../include/dir_fns.php:143
-#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
-#: ../../boot.php:1629 ../../Zotlabs/Storage/Browser.php:405
-#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Api.php:99
-#: ../../Zotlabs/Module/Events.php:472 ../../Zotlabs/Module/Events.php:473
-#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
-#: ../../Zotlabs/Module/Settings/Display.php:89
-#: ../../Zotlabs/Module/Settings/Channel.php:309
-#: ../../Zotlabs/Module/Filestorage.php:178
-#: ../../Zotlabs/Module/Filestorage.php:186
-#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Menu.php:162
-#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Mitem.php:176
-#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256
-#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:255
-#: ../../Zotlabs/Module/Connedit.php:398 ../../Zotlabs/Module/Connedit.php:785
-#: ../../Zotlabs/Module/Wiki.php:227 ../../Zotlabs/Module/Wiki.php:228
-#: ../../Zotlabs/Module/Import.php:554 ../../Zotlabs/Module/Import.php:558
-#: ../../Zotlabs/Module/Import.php:559 ../../Zotlabs/Lib/Libzotdir.php:162
-#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:73
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:85
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:178
-#: ../../extend/addon/hzaddons/rtof/rtof.php:81
-#: ../../extend/addon/hzaddons/rtof/rtof.php:85
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:73
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:85
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
-#: ../../extend/addon/hzaddons/twitter/twitter.php:264
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:309
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:313
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:343
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:351
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:355
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:359
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:219
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:223
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:227
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:231
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:157
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:73
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:85
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:389
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:411
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:415
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:424
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:111
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:59
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:71
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:153
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:425
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:64
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:646
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:650
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:87
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:95
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:63
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258
-#: ../../extend/addon/hzaddons/cart/cart.php:1257
-#: ../../extend/addon/hzaddons/nofed/nofed.php:72
-#: ../../extend/addon/hzaddons/nofed/nofed.php:76
-#: ../../extend/addon/hzaddons/planets/planets.php:149
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:211
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:215
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:120
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:53
-#: ../../extend/addon/hzaddons/visage/visage.php:166
-#: ../../extend/addon/hzaddons/libertree/libertree.php:69
-#: ../../extend/addon/hzaddons/libertree/libertree.php:81
-#: ../../extend/addon/hzaddons/redred/redred.php:95
-#: ../../extend/addon/hzaddons/redred/redred.php:99
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:82
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:86
-msgid "No"
-msgstr "Нет"
-
-#: ../../view/theme/redbasic/php/config.php:99
-#: ../../view/theme/redbasic/php/config.php:116 ../../include/dir_fns.php:143
-#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
-#: ../../boot.php:1629 ../../Zotlabs/Storage/Browser.php:405
-#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
-#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Api.php:98
-#: ../../Zotlabs/Module/Events.php:472 ../../Zotlabs/Module/Events.php:473
-#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
-#: ../../Zotlabs/Module/Settings/Display.php:89
-#: ../../Zotlabs/Module/Settings/Channel.php:309
-#: ../../Zotlabs/Module/Filestorage.php:178
-#: ../../Zotlabs/Module/Filestorage.php:186
-#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Menu.php:162
-#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Mitem.php:176
-#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256
-#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:257
-#: ../../Zotlabs/Module/Connedit.php:398 ../../Zotlabs/Module/Wiki.php:227
-#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Import.php:554
-#: ../../Zotlabs/Module/Import.php:558 ../../Zotlabs/Module/Import.php:559
-#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163
-#: ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:73
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:85
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:178
-#: ../../extend/addon/hzaddons/rtof/rtof.php:81
-#: ../../extend/addon/hzaddons/rtof/rtof.php:85
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:73
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:85
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
-#: ../../extend/addon/hzaddons/twitter/twitter.php:264
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:309
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:313
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:343
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:351
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:355
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:359
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:219
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:223
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:227
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:231
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:157
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:73
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:85
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:389
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:411
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:415
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:424
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:111
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:59
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:71
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:153
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:425
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:64
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:646
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:650
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:87
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:95
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:63
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258
-#: ../../extend/addon/hzaddons/cart/cart.php:1257
-#: ../../extend/addon/hzaddons/nofed/nofed.php:72
-#: ../../extend/addon/hzaddons/nofed/nofed.php:76
-#: ../../extend/addon/hzaddons/planets/planets.php:149
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:211
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:215
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:120
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:53
-#: ../../extend/addon/hzaddons/visage/visage.php:166
-#: ../../extend/addon/hzaddons/libertree/libertree.php:69
-#: ../../extend/addon/hzaddons/libertree/libertree.php:81
-#: ../../extend/addon/hzaddons/redred/redred.php:95
-#: ../../extend/addon/hzaddons/redred/redred.php:99
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:82
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:86
-msgid "Yes"
-msgstr "Да"
-
-#: ../../view/theme/redbasic/php/config.php:100
-msgid "Navigation bar background color"
-msgstr "Панель навигации, цвет фона"
-
-#: ../../view/theme/redbasic/php/config.php:101
-msgid "Navigation bar icon color "
-msgstr "Панель навигации, цвет значков"
-
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Navigation bar active icon color "
-msgstr "Панель навигации, цвет активного значка"
-
-#: ../../view/theme/redbasic/php/config.php:103
-msgid "Link color"
-msgstr "Цвет ссылок"
-
-#: ../../view/theme/redbasic/php/config.php:104
-msgid "Set font-color for banner"
-msgstr "Цвет текста в шапке"
-
-#: ../../view/theme/redbasic/php/config.php:105
-msgid "Set the background color"
-msgstr "Цвет фона"
-
-#: ../../view/theme/redbasic/php/config.php:106
-msgid "Set the background image"
-msgstr "Фоновое изображение"
+#: ../../Zotlabs/Access/Permissions.php:56
+msgid "Can view my channel stream and posts"
+msgstr "Может просматривать мой поток и сообщения"
-#: ../../view/theme/redbasic/php/config.php:107
-msgid "Set the background color of items"
-msgstr "Цвет фона элементов"
+#: ../../Zotlabs/Access/Permissions.php:57
+msgid "Can send me their channel stream and posts"
+msgstr "Может присылать мне свои потоки и сообщения"
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Set the background color of comments"
-msgstr "Цвет фона комментариев"
+#: ../../Zotlabs/Access/Permissions.php:58
+msgid "Can view my default channel profile"
+msgstr "Может просматривать мой стандартный профиль канала"
-#: ../../view/theme/redbasic/php/config.php:109
-msgid "Set font-size for the entire application"
-msgstr "Установить системный размер шрифта"
+#: ../../Zotlabs/Access/Permissions.php:59
+msgid "Can view my connections"
+msgstr "Может просматривать мои контакты"
-#: ../../view/theme/redbasic/php/config.php:109
-msgid "Examples: 1rem, 100%, 16px"
-msgstr "Например: 1rem, 100%, 16px"
+#: ../../Zotlabs/Access/Permissions.php:60
+msgid "Can view my file storage and photos"
+msgstr "Может просматривать мое хранилище файлов"
-#: ../../view/theme/redbasic/php/config.php:110
-msgid "Set font-color for posts and comments"
-msgstr "Цвет шрифта для постов и комментариев"
+#: ../../Zotlabs/Access/Permissions.php:61
+msgid "Can upload/modify my file storage and photos"
+msgstr "Может загружать/изменять мои файлы и фотографии в хранилище"
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Set radius of corners"
-msgstr "Радиус скруглений"
+#: ../../Zotlabs/Access/Permissions.php:62
+msgid "Can view my channel webpages"
+msgstr "Может просматривать мои веб-страницы"
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Example: 4px"
-msgstr "Например: 4px"
+#: ../../Zotlabs/Access/Permissions.php:63
+msgid "Can view my wiki pages"
+msgstr "Может просматривать мои вики-страницы"
-#: ../../view/theme/redbasic/php/config.php:112
-msgid "Set shadow depth of photos"
-msgstr "Глубина теней фотографий"
+#: ../../Zotlabs/Access/Permissions.php:64
+msgid "Can create/edit my channel webpages"
+msgstr "Может редактировать мои веб-страницы"
-#: ../../view/theme/redbasic/php/config.php:113
-msgid "Set maximum width of content region in pixel"
-msgstr "Максимальная ширина содержания региона (в пикселях)"
+#: ../../Zotlabs/Access/Permissions.php:65
+msgid "Can write to my wiki pages"
+msgstr "Может редактировать мои вики-страницы"
-#: ../../view/theme/redbasic/php/config.php:113
-msgid "Leave empty for default width"
-msgstr "Оставьте пустым для ширины по умолчанию"
+#: ../../Zotlabs/Access/Permissions.php:66
+msgid "Can post on my channel (wall) page"
+msgstr "Может публиковать на моей странице канала"
-#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set size of conversation author photo"
-msgstr "Размер фотографии автора беседы"
+#: ../../Zotlabs/Access/Permissions.php:67
+msgid "Can comment on or like my posts"
+msgstr "Может прокомментировать или отмечать как понравившиеся мои публикации"
-#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set size of followup author photos"
-msgstr "Размер фотографий подписчиков"
+#: ../../Zotlabs/Access/Permissions.php:68
+msgid "Can send me private mail messages"
+msgstr "Может отправлять мне личные сообщения по эл. почте"
-#: ../../view/theme/redbasic/php/config.php:116
-msgid "Show advanced settings"
-msgstr "Показать расширенные настройки"
+#: ../../Zotlabs/Access/Permissions.php:69
+msgid "Can like/dislike profiles and profile things"
+msgstr "Может комментировать или отмечать как нравится/ненравится мой профиль"
-#: ../../include/selectors.php:18
-msgid "Profile to assign new connections"
-msgstr "Назначить профиль для новых контактов"
+#: ../../Zotlabs/Access/Permissions.php:70
+msgid "Can forward to all my channel connections via ! mentions in posts"
+msgstr "Может пересылать всем подписчикам моего канала используя ! в публикациях"
-#: ../../include/selectors.php:41
-msgid "Frequently"
-msgstr "Часто"
+#: ../../Zotlabs/Access/Permissions.php:71
+msgid "Can chat with me"
+msgstr "Может общаться со мной в чате"
-#: ../../include/selectors.php:42
-msgid "Hourly"
-msgstr "Ежечасно"
+#: ../../Zotlabs/Access/Permissions.php:72
+msgid "Can source my public posts in derived channels"
+msgstr "Может использовать мои публичные сообщения в клонированных лентах сообщений"
-#: ../../include/selectors.php:43
-msgid "Twice daily"
-msgstr "Дважды в день"
+#: ../../Zotlabs/Access/Permissions.php:73
+msgid "Can administer my channel"
+msgstr "Может администрировать мой канал"
-#: ../../include/selectors.php:44
-msgid "Daily"
-msgstr "Ежедневно"
+#: ../../Zotlabs/Access/PermissionRoles.php:283
+msgid "Social Networking"
+msgstr "Социальная Сеть"
-#: ../../include/selectors.php:45
-msgid "Weekly"
-msgstr "Еженедельно"
+#: ../../Zotlabs/Access/PermissionRoles.php:284
+msgid "Social - Federation"
+msgstr "Социальная - Федерация"
-#: ../../include/selectors.php:46
-msgid "Monthly"
-msgstr "Ежемесячно"
+#: ../../Zotlabs/Access/PermissionRoles.php:285
+msgid "Social - Mostly Public"
+msgstr "Социальная - В основном общественный"
-#: ../../include/selectors.php:60 ../../include/selectors.php:77
-#: ../../include/channel.php:1536
-#: ../../extend/addon/hzaddons/openid/Mod_Id.php:85
-msgid "Male"
-msgstr "Мужчина"
+#: ../../Zotlabs/Access/PermissionRoles.php:286
+msgid "Social - Restricted"
+msgstr "Социальная - Ограниченный"
-#: ../../include/selectors.php:60 ../../include/selectors.php:77
-#: ../../include/channel.php:1534
-#: ../../extend/addon/hzaddons/openid/Mod_Id.php:87
-msgid "Female"
-msgstr "Женщина"
+#: ../../Zotlabs/Access/PermissionRoles.php:287
+msgid "Social - Private"
+msgstr "Социальная - Частный"
-#: ../../include/selectors.php:60
-msgid "Currently Male"
-msgstr "В настоящее время мужской"
+#: ../../Zotlabs/Access/PermissionRoles.php:290
+msgid "Community Forum"
+msgstr "Форум сообщества"
-#: ../../include/selectors.php:60
-msgid "Currently Female"
-msgstr "В настоящее время женский"
+#: ../../Zotlabs/Access/PermissionRoles.php:291
+msgid "Forum - Mostly Public"
+msgstr "Форум - В основном общественный"
-#: ../../include/selectors.php:60
-msgid "Mostly Male"
-msgstr "В основном мужской"
+#: ../../Zotlabs/Access/PermissionRoles.php:292
+msgid "Forum - Restricted"
+msgstr "Форум - Ограниченный"
-#: ../../include/selectors.php:60
-msgid "Mostly Female"
-msgstr "В основном женский"
+#: ../../Zotlabs/Access/PermissionRoles.php:293
+msgid "Forum - Private"
+msgstr "Форум - Частный"
-#: ../../include/selectors.php:60
-msgid "Transgender"
-msgstr "Трансгендер"
+#: ../../Zotlabs/Access/PermissionRoles.php:296
+msgid "Feed Republish"
+msgstr "Публиковать ленты новостей"
-#: ../../include/selectors.php:60
-msgid "Intersex"
-msgstr "Интерсексуал"
+#: ../../Zotlabs/Access/PermissionRoles.php:297
+msgid "Feed - Mostly Public"
+msgstr "Ленты новостей - В основном общественный"
-#: ../../include/selectors.php:60
-msgid "Transsexual"
-msgstr "Транссексуал"
+#: ../../Zotlabs/Access/PermissionRoles.php:298
+msgid "Feed - Restricted"
+msgstr "Ленты новостей - Ограниченный"
-#: ../../include/selectors.php:60
-msgid "Hermaphrodite"
-msgstr "Гермафродит"
+#: ../../Zotlabs/Access/PermissionRoles.php:301
+msgid "Special Purpose"
+msgstr "Спец. назначение"
-#: ../../include/selectors.php:60 ../../include/channel.php:1540
-msgid "Neuter"
-msgstr "Среднего рода"
+#: ../../Zotlabs/Access/PermissionRoles.php:302
+msgid "Special - Celebrity/Soapbox"
+msgstr "Спец. назначение - Знаменитость/Soapbox"
-#: ../../include/selectors.php:60 ../../include/channel.php:1542
-msgid "Non-specific"
-msgstr "Неспецифический"
+#: ../../Zotlabs/Access/PermissionRoles.php:303
+msgid "Special - Group Repository"
+msgstr "Спец. назначение - Групповой репозиторий"
-#: ../../include/selectors.php:60 ../../include/selectors.php:77
-#: ../../include/selectors.php:115 ../../include/selectors.php:151
-#: ../../include/connections.php:703 ../../include/connections.php:710
-#: ../../include/event.php:1318 ../../include/event.php:1325
-#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Profiles.php:795
-#: ../../Zotlabs/Module/Connedit.php:924
#: ../../Zotlabs/Access/PermissionRoles.php:306
+#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Connedit.php:935
+#: ../../Zotlabs/Module/Profiles.php:795 ../../include/selectors.php:60
+#: ../../include/selectors.php:77 ../../include/selectors.php:115
+#: ../../include/selectors.php:151 ../../include/event.php:1327
+#: ../../include/event.php:1334 ../../include/connections.php:703
+#: ../../include/connections.php:710
msgid "Other"
msgstr "Другой"
-#: ../../include/selectors.php:60
-msgid "Undecided"
-msgstr "Не решил"
-
-#: ../../include/selectors.php:96 ../../include/selectors.php:115
-msgid "Males"
-msgstr "Мужчины"
-
-#: ../../include/selectors.php:96 ../../include/selectors.php:115
-msgid "Females"
-msgstr "Женщины"
-
-#: ../../include/selectors.php:96
-msgid "Gay"
-msgstr "Гей"
-
-#: ../../include/selectors.php:96
-msgid "Lesbian"
-msgstr "Лесбиянка"
-
-#: ../../include/selectors.php:96
-msgid "No Preference"
-msgstr "Без предпочтений"
-
-#: ../../include/selectors.php:96
-msgid "Bisexual"
-msgstr "Бисексуал"
-
-#: ../../include/selectors.php:96
-msgid "Autosexual"
-msgstr "Автосексуал"
-
-#: ../../include/selectors.php:96
-msgid "Abstinent"
-msgstr "Воздержание"
-
-#: ../../include/selectors.php:96
-msgid "Virgin"
-msgstr "Девственник"
-
-#: ../../include/selectors.php:96
-msgid "Deviant"
-msgstr "Отклоняющийся от нормы"
-
-#: ../../include/selectors.php:96
-msgid "Fetish"
-msgstr "Фетишист"
-
-#: ../../include/selectors.php:96
-msgid "Oodles"
-msgstr "Множественный"
-
-#: ../../include/selectors.php:96
-msgid "Nonsexual"
-msgstr "Асексуал"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Single"
-msgstr "Одиночка"
-
-#: ../../include/selectors.php:134
-msgid "Lonely"
-msgstr "Одинокий"
-
-#: ../../include/selectors.php:134
-msgid "Available"
-msgstr "Свободен"
-
-#: ../../include/selectors.php:134
-msgid "Unavailable"
-msgstr "Занят"
-
-#: ../../include/selectors.php:134
-msgid "Has crush"
-msgstr "Влюблён"
-
-#: ../../include/selectors.php:134
-msgid "Infatuated"
-msgstr "без ума"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Dating"
-msgstr "Встречаюсь"
-
-#: ../../include/selectors.php:134
-msgid "Unfaithful"
-msgstr "Неверный"
-
-#: ../../include/selectors.php:134
-msgid "Sex Addict"
-msgstr "Эротоман"
-
-#: ../../include/selectors.php:134 ../../include/channel.php:493
-#: ../../include/channel.php:494 ../../include/channel.php:501
-#: ../../Zotlabs/Module/Settings/Channel.php:70
-#: ../../Zotlabs/Module/Settings/Channel.php:74
-#: ../../Zotlabs/Module/Settings/Channel.php:75
-#: ../../Zotlabs/Module/Settings/Channel.php:78
-#: ../../Zotlabs/Module/Settings/Channel.php:89
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Widget/Affinity.php:24
-msgid "Friends"
-msgstr "Друзья"
-
-#: ../../include/selectors.php:134
-msgid "Friends/Benefits"
-msgstr "Друзья / Выгоды"
-
-#: ../../include/selectors.php:134
-msgid "Casual"
-msgstr "Легкомысленный"
-
-#: ../../include/selectors.php:134
-msgid "Engaged"
-msgstr "Помолвлен"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Married"
-msgstr "В браке"
-
-#: ../../include/selectors.php:134
-msgid "Imaginarily married"
-msgstr "В воображаемом браке"
-
-#: ../../include/selectors.php:134
-msgid "Partners"
-msgstr "Партнёрство"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Cohabiting"
-msgstr "Сожительствующие"
-
-#: ../../include/selectors.php:134
-msgid "Common law"
-msgstr "Гражданский брак"
-
-#: ../../include/selectors.php:134
-msgid "Happy"
-msgstr "Счастлив"
-
-#: ../../include/selectors.php:134
-msgid "Not looking"
-msgstr "Не нуждаюсь"
-
-#: ../../include/selectors.php:134
-msgid "Swinger"
-msgstr "Свингер"
-
-#: ../../include/selectors.php:134
-msgid "Betrayed"
-msgstr "Предан"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Separated"
-msgstr "Разделён"
-
-#: ../../include/selectors.php:134
-msgid "Unstable"
-msgstr "Нестабильно"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Divorced"
-msgstr "В разводе"
-
-#: ../../include/selectors.php:134
-msgid "Imaginarily divorced"
-msgstr "В воображаемом разводе"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "Widowed"
-msgstr "Вдовец / вдова"
-
-#: ../../include/selectors.php:134
-msgid "Uncertain"
-msgstr "Неопределенный"
-
-#: ../../include/selectors.php:134 ../../include/selectors.php:151
-msgid "It's complicated"
-msgstr "Это сложно"
-
-#: ../../include/selectors.php:134
-msgid "Don't care"
-msgstr "Всё равно"
+#: ../../Zotlabs/Access/PermissionRoles.php:307
+msgid "Custom/Expert Mode"
+msgstr "Экспертный режим"
-#: ../../include/selectors.php:134
-msgid "Ask me"
-msgstr "Спроси меня"
+#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:42
+#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
+#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Menu.php:91 ../../Zotlabs/Module/Layouts.php:31
+#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:42
+#: ../../Zotlabs/Module/Webpages.php:39 ../../Zotlabs/Module/Filestorage.php:51
+#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1253
+msgid "Requested profile is not available."
+msgstr "Запрашиваемый профиль не доступен."
-#: ../../include/photos.php:27 ../../include/items.php:3701
-#: ../../include/attach.php:150 ../../include/attach.php:197
-#: ../../include/attach.php:270 ../../include/attach.php:379
-#: ../../include/attach.php:393 ../../include/attach.php:400
-#: ../../include/attach.php:482 ../../include/attach.php:1042
-#: ../../include/attach.php:1116 ../../include/attach.php:1281
-#: ../../Zotlabs/Module/Mail.php:146 ../../Zotlabs/Module/Defperms.php:181
-#: ../../Zotlabs/Module/Network.php:17 ../../Zotlabs/Module/Common.php:38
-#: ../../Zotlabs/Module/Item.php:231 ../../Zotlabs/Module/Item.php:250
-#: ../../Zotlabs/Module/Item.php:260 ../../Zotlabs/Module/Item.php:1136
-#: ../../Zotlabs/Module/Achievements.php:34
-#: ../../Zotlabs/Module/Display.php:448 ../../Zotlabs/Module/Poke.php:157
-#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
-#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Profiles.php:198
-#: ../../Zotlabs/Module/Profiles.php:635 ../../Zotlabs/Module/Photos.php:69
-#: ../../Zotlabs/Module/Page.php:34 ../../Zotlabs/Module/Page.php:133
-#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Events.php:271
+#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
+#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102
+#: ../../Zotlabs/Module/Articles.php:88 ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:168
+#: ../../Zotlabs/Module/Channel.php:335 ../../Zotlabs/Module/Channel.php:374
+#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Events.php:271
+#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Regmod.php:20
+#: ../../Zotlabs/Module/Article_edit.php:51
#: ../../Zotlabs/Module/New_channel.php:105
-#: ../../Zotlabs/Module/New_channel.php:130 ../../Zotlabs/Module/Block.php:24
-#: ../../Zotlabs/Module/Block.php:74 ../../Zotlabs/Module/Cover_photo.php:313
-#: ../../Zotlabs/Module/Cover_photo.php:326
-#: ../../Zotlabs/Module/Sharedwithme.php:16
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:209
+#: ../../Zotlabs/Module/Moderate.php:13
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:280
+#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341
+#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67
+#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
+#: ../../Zotlabs/Module/Mood.php:126 ../../Zotlabs/Module/Connections.php:32
+#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:70
+#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:59
+#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Poke.php:157
+#: ../../Zotlabs/Module/Profile_photo.php:302
+#: ../../Zotlabs/Module/Profile_photo.php:315
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:376
+#: ../../Zotlabs/Module/Item.php:395 ../../Zotlabs/Module/Item.php:405
+#: ../../Zotlabs/Module/Item.php:1281 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:399
+#: ../../Zotlabs/Module/Chat.php:115 ../../Zotlabs/Module/Chat.php:120
+#: ../../Zotlabs/Module/Menu.php:129 ../../Zotlabs/Module/Menu.php:140
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Cloud.php:40
+#: ../../Zotlabs/Module/Defperms.php:181 ../../Zotlabs/Module/Group.php:14
+#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Profiles.php:198
+#: ../../Zotlabs/Module/Profiles.php:635
+#: ../../Zotlabs/Module/Editwebpage.php:68
+#: ../../Zotlabs/Module/Editwebpage.php:89
+#: ../../Zotlabs/Module/Editwebpage.php:107
+#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Webpages.php:133
+#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:80
+#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Suggest.php:32
+#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Viewconnections.php:28
-#: ../../Zotlabs/Module/Viewconnections.php:33
-#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Regmod.php:20
-#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
-#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Chat.php:115
-#: ../../Zotlabs/Module/Chat.php:120 ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Cover_photo.php:313
+#: ../../Zotlabs/Module/Cover_photo.php:326
+#: ../../Zotlabs/Module/Display.php:446 ../../Zotlabs/Module/Network.php:19
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:96
-#: ../../Zotlabs/Module/Filestorage.php:140
-#: ../../Zotlabs/Module/Editblock.php:67
-#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Channel.php:163
-#: ../../Zotlabs/Module/Channel.php:330 ../../Zotlabs/Module/Channel.php:369
-#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Bookmarks.php:70
-#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Menu.php:129
-#: ../../Zotlabs/Module/Menu.php:140 ../../Zotlabs/Module/Setup.php:209
-#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Notifications.php:11
-#: ../../Zotlabs/Module/Editwebpage.php:68
-#: ../../Zotlabs/Module/Editwebpage.php:89
-#: ../../Zotlabs/Module/Editwebpage.php:107
-#: ../../Zotlabs/Module/Editwebpage.php:121
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Thing.php:280
-#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341
-#: ../../Zotlabs/Module/Moderate.php:13 ../../Zotlabs/Module/Webpages.php:133
-#: ../../Zotlabs/Module/Profile_photo.php:302
-#: ../../Zotlabs/Module/Profile_photo.php:315
-#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Connedit.php:391
-#: ../../Zotlabs/Module/Group.php:14 ../../Zotlabs/Module/Group.php:30
-#: ../../Zotlabs/Module/Connections.php:32 ../../Zotlabs/Module/Mood.php:126
+#: ../../Zotlabs/Module/Filestorage.php:140 ../../Zotlabs/Module/Common.php:38
+#: ../../Zotlabs/Module/Viewconnections.php:28
+#: ../../Zotlabs/Module/Viewconnections.php:33
+#: ../../Zotlabs/Module/Service_limits.php:11 ../../Zotlabs/Module/Rate.php:113
#: ../../Zotlabs/Module/Card_edit.php:51
-#: ../../Zotlabs/Module/Article_edit.php:51 ../../Zotlabs/Module/Blocks.php:73
-#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Invite.php:21
-#: ../../Zotlabs/Module/Invite.php:102 ../../Zotlabs/Module/Articles.php:80
-#: ../../Zotlabs/Module/Cloud.php:40 ../../Zotlabs/Module/Pdledit.php:34
-#: ../../Zotlabs/Module/Wiki.php:59 ../../Zotlabs/Module/Wiki.php:285
-#: ../../Zotlabs/Module/Wiki.php:428 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Cards.php:81
-#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
-#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Web/WebServer.php:123
-#: ../../Zotlabs/Lib/Chatroom.php:133
-#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:167
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:40
-#: ../../extend/addon/hzaddons/openid/Mod_Id.php:53
-#: ../../extend/addon/hzaddons/keepout/keepout.php:36
+#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Lib/Chatroom.php:133
+#: ../../Zotlabs/Web/WebServer.php:123 ../../addon/keepout/keepout.php:36
+#: ../../addon/flashcards/Mod_Flashcards.php:167
+#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44
+#: ../../include/attach.php:150 ../../include/attach.php:199
+#: ../../include/attach.php:272 ../../include/attach.php:381
+#: ../../include/attach.php:395 ../../include/attach.php:402
+#: ../../include/attach.php:484 ../../include/attach.php:1044
+#: ../../include/attach.php:1118 ../../include/attach.php:1283
+#: ../../include/items.php:3781 ../../include/photos.php:27
msgid "Permission denied."
msgstr "Доступ запрещен."
-#: ../../include/photos.php:151
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Файл превышает предельный размер для сайта в %lu байт"
-
-#: ../../include/photos.php:162
-msgid "Image file is empty."
-msgstr "Файл изображения пуст."
-
-#: ../../include/photos.php:196 ../../Zotlabs/Module/Cover_photo.php:205
-#: ../../Zotlabs/Module/Profile_photo.php:225
-msgid "Unable to process image"
-msgstr "Не удается обработать изображение"
-
-#: ../../include/photos.php:327
-msgid "Photo storage failed."
-msgstr "Ошибка хранилища фотографий."
-
-#: ../../include/photos.php:376
-msgid "a new photo"
-msgstr "новая фотография"
-
-#: ../../include/photos.php:380
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s опубликовал %2$s в %3$s"
-
-#: ../../include/photos.php:669 ../../include/nav.php:417
-msgid "Photo Albums"
-msgstr "Фотоальбомы"
-
-#: ../../include/photos.php:670 ../../Zotlabs/Module/Photos.php:1380
-#: ../../Zotlabs/Module/Photos.php:1393 ../../Zotlabs/Module/Photos.php:1394
-msgid "Recent Photos"
-msgstr "Последние фотографии"
-
-#: ../../include/photos.php:674
-msgid "Upload New Photos"
-msgstr "Загрузить новые фотографии"
-
-#: ../../include/oembed.php:224
-msgid "View PDF"
-msgstr "Просмотреть PDF"
-
-#: ../../include/oembed.php:352
-msgid " by "
-msgstr " по "
-
-#: ../../include/oembed.php:353
-msgid " on "
-msgstr " на "
-
-#: ../../include/oembed.php:382
-msgid "Embedded content"
-msgstr "Встроенное содержимое"
-
-#: ../../include/oembed.php:391
-msgid "Embedding disabled"
-msgstr "Встраивание отключено"
-
-#: ../../include/security.php:541
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Не верный токен безопасности для формы. Вероятно, это произошло потому, что форма была открыта слишком долго (> 3-х часов) перед его отправкой."
-
-#: ../../include/contact_widgets.php:11
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "доступно %d приглашение"
-msgstr[1] "доступны %d приглашения"
-msgstr[2] "доступны %d приглашений"
-
-#: ../../include/contact_widgets.php:16 ../../Zotlabs/Module/Admin/Site.php:293
-msgid "Advanced"
-msgstr "Дополнительно"
-
-#: ../../include/contact_widgets.php:19
-msgid "Find Channels"
-msgstr "Поиск каналов"
-
-#: ../../include/contact_widgets.php:20
-msgid "Enter name or interest"
-msgstr "Впишите имя или интерес"
-
-#: ../../include/contact_widgets.php:21
-msgid "Connect/Follow"
-msgstr "Подключить / отслеживать"
-
-#: ../../include/contact_widgets.php:22
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Примеры: Владимир Ильич, Революционер"
-
-#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:405
-#: ../../Zotlabs/Module/Directory.php:410
-#: ../../Zotlabs/Module/Connections.php:341
-msgid "Find"
-msgstr "Поиск"
-
-#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:409
-#: ../../Zotlabs/Module/Suggest.php:79
-msgid "Channel Suggestions"
-msgstr "Рекомендации каналов"
-
-#: ../../include/contact_widgets.php:26
-msgid "Random Profile"
-msgstr "Случайный профиль"
-
-#: ../../include/contact_widgets.php:27
-msgid "Invite Friends"
-msgstr "Пригласить друзей"
-
-#: ../../include/contact_widgets.php:29
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Расширенный пример: name=ivan and country=russia"
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155
+#: ../../Zotlabs/Module/Editblock.php:113
+msgid "Block Name"
+msgstr "Название блока"
-#: ../../include/contact_widgets.php:53 ../../include/features.php:325
-#: ../../Zotlabs/Widget/Filer.php:28
-#: ../../Zotlabs/Widget/Activity_filter.php:137
-msgid "Saved Folders"
-msgstr "Сохранённые каталоги"
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2534
+msgid "Blocks"
+msgstr "Блокировки"
-#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:100
-#: ../../include/contact_widgets.php:144 ../../include/contact_widgets.php:189
-#: ../../Zotlabs/Widget/Filer.php:31 ../../Zotlabs/Widget/Appcategories.php:46
-msgid "Everything"
-msgstr "Всё"
+#: ../../Zotlabs/Module/Blocks.php:156
+msgid "Block Title"
+msgstr "Заблокировать заголовок"
-#: ../../include/contact_widgets.php:97 ../../include/contact_widgets.php:141
-#: ../../include/contact_widgets.php:186 ../../include/taxonomy.php:409
-#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511
-#: ../../include/taxonomy.php:532 ../../Zotlabs/Widget/Appcategories.php:43
-msgid "Categories"
-msgstr "Категории"
+#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:177
+#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:266
+msgid "Created"
+msgstr "Создано"
-#: ../../include/contact_widgets.php:223
-msgid "Common Connections"
-msgstr "Общие контакты"
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:178
+#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:267
+msgid "Edited"
+msgstr "Отредактировано"
-#: ../../include/contact_widgets.php:228
-#, php-format
-msgid "View all %d common connections"
-msgstr "Просмотреть все %d общих контактов"
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:116
+#: ../../Zotlabs/Module/Cdav.php:1230 ../../Zotlabs/Module/New_channel.php:189
+#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Menu.php:181
+#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:798
+#: ../../Zotlabs/Module/Cards.php:113 ../../Zotlabs/Module/Webpages.php:254
+#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:390
+#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
+msgid "Create"
+msgstr "Создать"
-#: ../../include/menu.php:118 ../../include/channel.php:1352
-#: ../../include/channel.php:1356 ../../Zotlabs/Storage/Browser.php:290
-#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Module/Oauth2.php:194
-#: ../../Zotlabs/Module/Editlayout.php:114
-#: ../../Zotlabs/Module/Editblock.php:114 ../../Zotlabs/Module/Menu.php:175
-#: ../../Zotlabs/Module/Admin/Profs.php:175
-#: ../../Zotlabs/Module/Editwebpage.php:142 ../../Zotlabs/Module/Thing.php:266
-#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Group.php:235
+#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114
+#: ../../Zotlabs/Module/Article_edit.php:99
+#: ../../Zotlabs/Module/Admin/Profs.php:175 ../../Zotlabs/Module/Thing.php:266
+#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Editblock.php:114
#: ../../Zotlabs/Module/Connections.php:284
#: ../../Zotlabs/Module/Connections.php:322
-#: ../../Zotlabs/Module/Connections.php:342
-#: ../../Zotlabs/Module/Card_edit.php:99
-#: ../../Zotlabs/Module/Article_edit.php:99 ../../Zotlabs/Module/Blocks.php:160
-#: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384
-#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Widget/Cdav.php:126
-#: ../../Zotlabs/Widget/Cdav.php:162 ../../Zotlabs/Lib/Apps.php:534
-#: ../../Zotlabs/Lib/ThreadItem.php:130
+#: ../../Zotlabs/Module/Connections.php:342 ../../Zotlabs/Module/Wiki.php:211
+#: ../../Zotlabs/Module/Wiki.php:384 ../../Zotlabs/Module/Menu.php:175
+#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:252
+#: ../../Zotlabs/Module/Editwebpage.php:142
+#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Card_edit.php:99
+#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:556
+#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../Zotlabs/Storage/Browser.php:290
+#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
+#: ../../include/channel.php:1352 ../../include/channel.php:1356
+#: ../../include/menu.php:118
msgid "Edit"
msgstr "Изменить"
-#: ../../include/channel.php:43
-msgid "Unable to obtain identity information from database"
-msgstr "Невозможно получить идентификационную информацию из базы данных"
-
-#: ../../include/channel.php:76
-msgid "Empty name"
-msgstr "Пустое имя"
-
-#: ../../include/channel.php:79
-msgid "Name too long"
-msgstr "Слишком длинное имя"
-
-#: ../../include/channel.php:196
-msgid "No account identifier"
-msgstr "Идентификатор аккаунта отсутствует"
-
-#: ../../include/channel.php:208
-msgid "Nickname is required."
-msgstr "Требуется псевдоним."
-
-#: ../../include/channel.php:222 ../../include/channel.php:655
-#: ../../Zotlabs/Module/Changeaddr.php:46
-msgid "Reserved nickname. Please choose another."
-msgstr "Зарезервированый псевдоним. Пожалуйста, выберите другой."
-
-#: ../../include/channel.php:227 ../../include/channel.php:660
-#: ../../Zotlabs/Module/Changeaddr.php:51
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Псевдоним имеет недопустимые символы или уже используется на этом сайте."
-
-#: ../../include/channel.php:287
-msgid "Unable to retrieve created identity"
-msgstr "Не удается получить созданный идентификатор"
-
-#: ../../include/channel.php:429
-msgid "Default Profile"
-msgstr "Профиль по умолчанию"
-
-#: ../../include/channel.php:588 ../../include/channel.php:677
-msgid "Unable to retrieve modified identity"
-msgstr "Не удается найти изменённый идентификатор"
-
-#: ../../include/channel.php:1207
-#: ../../extend/addon/hzaddons/chess/chess.php:486
-msgid "Requested channel is not available."
-msgstr "Запрошенный канал не доступен."
-
-#: ../../include/channel.php:1253 ../../Zotlabs/Module/Achievements.php:15
-#: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Filestorage.php:51
-#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Menu.php:91
-#: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Webpages.php:39 ../../Zotlabs/Module/Blocks.php:33
-#: ../../Zotlabs/Module/Articles.php:34 ../../Zotlabs/Module/Connect.php:17
-#: ../../Zotlabs/Module/Cards.php:37 ../../Zotlabs/Module/Layouts.php:31
-#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:47
-msgid "Requested profile is not available."
-msgstr "Запрашиваемый профиль не доступен."
-
-#: ../../include/channel.php:1345 ../../Zotlabs/Module/Profiles.php:728
-msgid "Change profile photo"
-msgstr "Изменить фотографию профиля"
-
-#: ../../include/channel.php:1352 ../../include/nav.php:109
-#: ../../Zotlabs/Module/Profiles.php:830
-msgid "Edit Profiles"
-msgstr "Редактирование профилей"
-
-#: ../../include/channel.php:1353
-msgid "Create New Profile"
-msgstr "Создать новый профиль"
-
-#: ../../include/channel.php:1356 ../../include/nav.php:111
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:58
-msgid "Edit Profile"
-msgstr "Редактировать профиль"
-
-#: ../../include/channel.php:1371 ../../Zotlabs/Module/Profiles.php:820
-msgid "Profile Image"
-msgstr "Изображение профиля"
-
-#: ../../include/channel.php:1374
-msgid "Visible to everybody"
-msgstr "Видно всем"
-
-#: ../../include/channel.php:1375 ../../Zotlabs/Module/Profiles.php:725
-#: ../../Zotlabs/Module/Profiles.php:824
-msgid "Edit visibility"
-msgstr "Редактировать видимость"
-
-#: ../../include/channel.php:1432 ../../include/conversation.php:1058
-#: ../../include/connections.php:110 ../../Zotlabs/Module/Directory.php:342
-#: ../../Zotlabs/Module/Suggest.php:71 ../../Zotlabs/Widget/Suggestions.php:44
-#: ../../Zotlabs/Widget/Follow.php:32
-msgid "Connect"
-msgstr "Подключить"
-
-#: ../../include/channel.php:1447 ../../include/event.php:54
-#: ../../include/event.php:86 ../../Zotlabs/Module/Directory.php:328
-msgid "Location:"
-msgstr "Местоположение:"
-
-#: ../../include/channel.php:1451 ../../include/channel.php:1579
-msgid "Gender:"
-msgstr "Пол:"
-
-#: ../../include/channel.php:1452 ../../include/channel.php:1623
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:305
-msgid "Status:"
-msgstr "Статус:"
-
-#: ../../include/channel.php:1453 ../../include/channel.php:1647
-msgid "Homepage:"
-msgstr "Домашняя страница:"
-
-#: ../../include/channel.php:1454
-msgid "Online Now"
-msgstr "Сейчас в сети"
-
-#: ../../include/channel.php:1507
-msgid "Change your profile photo"
-msgstr "Изменить фотографию вашего профиля"
-
-#: ../../include/channel.php:1538
-msgid "Trans"
-msgstr "Трансексуал"
-
-#: ../../include/channel.php:1577 ../../Zotlabs/Module/Settings/Channel.php:499
-msgid "Full Name:"
-msgstr "Полное имя:"
-
-#: ../../include/channel.php:1584
-msgid "Like this channel"
-msgstr "нравится этот канал"
-
-#: ../../include/channel.php:1595 ../../include/conversation.php:1693
-#: ../../include/taxonomy.php:661 ../../Zotlabs/Module/Photos.php:1175
-#: ../../Zotlabs/Lib/ThreadItem.php:218
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Нравится"
-msgstr[1] "Нравится"
-msgstr[2] "Нравится"
-
-#: ../../include/channel.php:1608
-msgid "j F, Y"
-msgstr ""
-
-#: ../../include/channel.php:1609
-msgid "j F"
-msgstr ""
-
-#: ../../include/channel.php:1616
-msgid "Birthday:"
-msgstr "День рождения:"
-
-#: ../../include/channel.php:1620 ../../Zotlabs/Module/Directory.php:323
-msgid "Age:"
-msgstr "Возраст:"
-
-#: ../../include/channel.php:1629
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "для %1$d %2$s"
-
-#: ../../include/channel.php:1641
-msgid "Tags:"
-msgstr "Теги:"
-
-#: ../../include/channel.php:1645
-msgid "Sexual Preference:"
-msgstr "Сексуальные предпочтения:"
-
-#: ../../include/channel.php:1649 ../../Zotlabs/Module/Directory.php:339
-msgid "Hometown:"
-msgstr "Родной город:"
-
-#: ../../include/channel.php:1651
-msgid "Political Views:"
-msgstr "Политические взгляды:"
-
-#: ../../include/channel.php:1653
-msgid "Religion:"
-msgstr "Религия:"
-
-#: ../../include/channel.php:1655 ../../Zotlabs/Module/Directory.php:341
-msgid "About:"
-msgstr "О себе:"
-
-#: ../../include/channel.php:1657
-msgid "Hobbies/Interests:"
-msgstr "Хобби / интересы:"
-
-#: ../../include/channel.php:1659
-msgid "Likes:"
-msgstr "Что вам нравится:"
-
-#: ../../include/channel.php:1661
-msgid "Dislikes:"
-msgstr "Что вам не нравится:"
-
-#: ../../include/channel.php:1663
-msgid "Contact information and Social Networks:"
-msgstr "Контактная информация и социальные сети:"
-
-#: ../../include/channel.php:1665
-msgid "My other channels:"
-msgstr "Мои другие каналы:"
-
-#: ../../include/channel.php:1667
-msgid "Musical interests:"
-msgstr "Музыкальные интересы:"
-
-#: ../../include/channel.php:1669
-msgid "Books, literature:"
-msgstr "Книги, литература:"
-
-#: ../../include/channel.php:1671
-msgid "Television:"
-msgstr "Телевидение:"
-
-#: ../../include/channel.php:1673
-msgid "Film/dance/culture/entertainment:"
-msgstr "Кино / танцы / культура / развлечения:"
-
-#: ../../include/channel.php:1675
-msgid "Love/Romance:"
-msgstr "Любовь / романтика:"
-
-#: ../../include/channel.php:1677
-msgid "Work/employment:"
-msgstr "Работа / занятость:"
-
-#: ../../include/channel.php:1679
-msgid "School/education:"
-msgstr "Школа / образование:"
-
-#: ../../include/channel.php:1700 ../../Zotlabs/Module/Profperm.php:113
-#: ../../Zotlabs/Lib/Apps.php:337
-msgid "Profile"
-msgstr "Профиль"
-
-#: ../../include/channel.php:1702
-msgid "Like this thing"
-msgstr "нравится этo"
-
-#: ../../include/channel.php:1703 ../../Zotlabs/Module/Events.php:692
-#: ../../Zotlabs/Module/Cal.php:340
-msgid "Export"
-msgstr "Экспорт"
-
-#: ../../include/channel.php:2137 ../../Zotlabs/Module/Cover_photo.php:276
-msgid "cover photo"
-msgstr "фотография обложки"
-
-#: ../../include/channel.php:2390 ../../boot.php:1625
-#: ../../Zotlabs/Module/Rmagic.php:75
-msgid "Remote Authentication"
-msgstr "Удаленная аутентификация"
-
-#: ../../include/channel.php:2391 ../../Zotlabs/Module/Rmagic.php:76
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Введите адрес вашего канала (например: channel@example.com)"
-
-#: ../../include/channel.php:2392 ../../Zotlabs/Module/Rmagic.php:77
-msgid "Authenticate"
-msgstr "Проверка подлинности"
-
-#: ../../include/channel.php:2547 ../../Zotlabs/Module/Admin/Accounts.php:91
-#, php-format
-msgid "Account '%s' deleted"
-msgstr "Аккаунт '%s' удален"
-
-#: ../../include/message.php:13 ../../include/text.php:1708
-msgid "Download binary/encrypted content"
-msgstr "Загрузить двоичное / зашифрованное содержимое"
-
-#: ../../include/message.php:41
-msgid "Unable to determine sender."
-msgstr "Невозможно определить отправителя."
-
-#: ../../include/message.php:80
-msgid "No recipient provided."
-msgstr "Получатель не предоставлен."
-
-#: ../../include/message.php:85
-msgid "[no subject]"
-msgstr "[без темы]"
-
-#: ../../include/message.php:215
-msgid "Stored post could not be verified."
-msgstr "Сохранённая публикация не может быть проверена."
-
-#: ../../include/markdown.php:200 ../../include/bbcode.php:358
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s была создана %2$s %3$s"
-
-#: ../../include/markdown.php:202 ../../include/bbcode.php:354
-#: ../../Zotlabs/Module/Tagger.php:77
-msgid "post"
-msgstr "публикация"
-
-#: ../../include/items.php:384 ../../Zotlabs/Module/Dreport.php:10
-#: ../../Zotlabs/Module/Dreport.php:79 ../../Zotlabs/Module/Profperm.php:28
-#: ../../Zotlabs/Module/Like.php:296 ../../Zotlabs/Module/Subthread.php:86
-#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Cloud.php:126
-#: ../../Zotlabs/Module/Import_items.php:120
-#: ../../Zotlabs/Web/WebServer.php:122
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:119
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:109
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:73
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:82
-msgid "Permission denied"
-msgstr "Доступ запрещен"
-
-#: ../../include/items.php:921 ../../include/items.php:981
-msgid "(Unknown)"
-msgstr "(Неизвестный)"
-
-#: ../../include/items.php:1169
-msgid "Visible to anybody on the internet."
-msgstr "Виден всем в интернете."
-
-#: ../../include/items.php:1171
-msgid "Visible to you only."
-msgstr "Видно только вам."
-
-#: ../../include/items.php:1173
-msgid "Visible to anybody in this network."
-msgstr "Видно всем в этой сети."
-
-#: ../../include/items.php:1175
-msgid "Visible to anybody authenticated."
-msgstr "Видно всем аутентифицированным."
-
-#: ../../include/items.php:1177
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Видно всем в %s."
-
-#: ../../include/items.php:1179
-msgid "Visible to all connections."
-msgstr "Видно всем контактам."
-
-#: ../../include/items.php:1181
-msgid "Visible to approved connections."
-msgstr "Видно только одобренным контактам."
-
-#: ../../include/items.php:1183
-msgid "Visible to specific connections."
-msgstr "Видно указанным контактам."
-
-#: ../../include/items.php:3613 ../../Zotlabs/Module/Display.php:45
-#: ../../Zotlabs/Module/Display.php:452 ../../Zotlabs/Module/Admin.php:62
-#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Viewsrc.php:25
-#: ../../Zotlabs/Module/Admin/Addons.php:259
-#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:94
-msgid "Item not found."
-msgstr "Элемент не найден."
-
-#: ../../include/items.php:4193 ../../Zotlabs/Module/Group.php:61
-#: ../../Zotlabs/Module/Group.php:200
-msgid "Privacy group not found."
-msgstr "Группа безопасности не найдена."
-
-#: ../../include/items.php:4209
-msgid "Privacy group is empty."
-msgstr "Группа безопасности пуста"
-
-#: ../../include/items.php:4216
-#, php-format
-msgid "Privacy group: %s"
-msgstr "Группа безопасности: %s"
-
-#: ../../include/items.php:4226 ../../Zotlabs/Module/Connedit.php:856
-#, php-format
-msgid "Connection: %s"
-msgstr "Контакт: %s"
-
-#: ../../include/items.php:4228
-msgid "Connection not found."
-msgstr "Контакт не найден."
-
-#: ../../include/items.php:4570 ../../Zotlabs/Module/Cover_photo.php:269
-msgid "female"
-msgstr "женщина"
-
-#: ../../include/items.php:4571 ../../Zotlabs/Module/Cover_photo.php:270
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s обновила её %2$s"
-
-#: ../../include/items.php:4572 ../../Zotlabs/Module/Cover_photo.php:271
-msgid "male"
-msgstr "мужчина"
-
-#: ../../include/items.php:4573 ../../Zotlabs/Module/Cover_photo.php:272
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s обновил его %2$s"
-
-#: ../../include/items.php:4575 ../../Zotlabs/Module/Cover_photo.php:274
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "%1$s обновили их %2$s"
-
-#: ../../include/items.php:4577
-msgid "profile photo"
-msgstr "Фотография профиля"
-
-#: ../../include/items.php:4769
-#, php-format
-msgid "[Edited %s]"
-msgstr "[Отредактировано %s]"
-
-#: ../../include/items.php:4769
-msgctxt "edit_activity"
-msgid "Post"
-msgstr "Публикация"
-
-#: ../../include/items.php:4769
-msgctxt "edit_activity"
-msgid "Comment"
-msgstr "Комментарий"
-
-#: ../../include/activities.php:42
-msgid " and "
-msgstr " и "
-
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "общедоступный профиль"
-
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s изменил %2$s на &ldquo;%3$s&rdquo;"
-
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Посетить %1$s %2$s"
-
-#: ../../include/activities.php:63
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s обновлено %2$s, изменено %3$s."
-
-#: ../../include/features.php:55 ../../Zotlabs/Module/Settings/Features.php:36
-#: ../../Zotlabs/Module/Admin/Features.php:55
-#: ../../Zotlabs/Module/Admin/Features.php:56
-msgid "Off"
-msgstr "Выкл."
-
-#: ../../include/features.php:55 ../../Zotlabs/Module/Settings/Features.php:36
-#: ../../Zotlabs/Module/Admin/Features.php:55
-#: ../../Zotlabs/Module/Admin/Features.php:56
-msgid "On"
-msgstr "Вкл."
-
-#: ../../include/features.php:82 ../../Zotlabs/Lib/Apps.php:342
-msgid "CalDAV"
-msgstr ""
-
-#: ../../include/features.php:86 ../../include/features.php:273
-msgid "Start calendar week on Monday"
-msgstr "Начинать календарную неделю с понедельника"
-
-#: ../../include/features.php:87 ../../include/features.php:274
-msgid "Default is Sunday"
-msgstr "По умолчанию - воскресенье"
-
-#: ../../include/features.php:96 ../../Zotlabs/Lib/Apps.php:318
-msgid "Channel Home"
-msgstr "Главная канала"
-
-#: ../../include/features.php:100
-msgid "Search by Date"
-msgstr "Поиск по дате"
-
-#: ../../include/features.php:101
-msgid "Ability to select posts by date ranges"
-msgstr "Возможность выбора сообщений по диапазонам дат"
-
-#: ../../include/features.php:108
-msgid "Tag Cloud"
-msgstr "Облако тегов"
-
-#: ../../include/features.php:109
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Показывает личное облако тегов на странице канала"
-
-#: ../../include/features.php:116 ../../include/features.php:381
-msgid "Use blog/list mode"
-msgstr "Использовать режим блога / списка"
-
-#: ../../include/features.php:117 ../../include/features.php:382
-msgid "Comments will be displayed separately"
-msgstr "Комментарии будут отображаться отдельно"
-
-#: ../../include/features.php:125 ../../include/text.php:980
-#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:308
-msgid "Connections"
-msgstr "Контакты"
-
-#: ../../include/features.php:129
-msgid "Connection Filtering"
-msgstr "Фильтрация контактов"
-
-#: ../../include/features.php:130
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Фильтр входящих сообщений от контактов на основе ключевых слов / контента"
-
-#: ../../include/features.php:138
-msgid "Conversation"
-msgstr "Диалоги"
-
-#: ../../include/features.php:142
-msgid "Community Tagging"
-msgstr "Отметки сообщества"
-
-#: ../../include/features.php:143
-msgid "Ability to tag existing posts"
-msgstr "Возможность помечать тегами существующие публикации"
-
-#: ../../include/features.php:150
-msgid "Emoji Reactions"
-msgstr "Реакции Emoji"
-
-#: ../../include/features.php:151
-msgid "Add emoji reaction ability to posts"
-msgstr "Возможность добавлять реакции Emoji к публикациям"
-
-#: ../../include/features.php:158
-msgid "Dislike Posts"
-msgstr "Не нравящиеся публикации"
-
-#: ../../include/features.php:159
-msgid "Ability to dislike posts/comments"
-msgstr "Возможность отмечать не нравящиеся публикации / комментарии"
-
-#: ../../include/features.php:166
-msgid "Star Posts"
-msgstr "Помечать сообщения"
-
-#: ../../include/features.php:167
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Возможность отметить специальные сообщения индикатором-звёздочкой"
-
-#: ../../include/features.php:176 ../../Zotlabs/Lib/Apps.php:322
-msgid "Directory"
-msgstr "Каталог"
-
-#: ../../include/features.php:180
-msgid "Advanced Directory Search"
-msgstr "Расширенный поиск в каталоге"
-
-#: ../../include/features.php:181
-msgid "Allows creation of complex directory search queries"
-msgstr "Позволяет создание сложных поисковых запросов в каталоге"
-
-#: ../../include/features.php:190
-msgid "Editor"
-msgstr "Редактор"
-
-#: ../../include/features.php:194
-msgid "Post Categories"
-msgstr "Категории публикаций"
-
-#: ../../include/features.php:195
-msgid "Add categories to your posts"
-msgstr "Добавить категории для ваших публикаций"
-
-#: ../../include/features.php:203
-msgid "Large Photos"
-msgstr "Большие фотографии"
-
-#: ../../include/features.php:204
-msgid ""
-"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
-"(640px) photo thumbnails"
-msgstr "Включить большие (1024px) миниатюры изображений в публикациях. Если не включено, использовать маленькие (640px) миниатюры."
-
-#: ../../include/features.php:211
-msgid "Even More Encryption"
-msgstr "Еще больше шифрования"
-
-#: ../../include/features.php:212
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Разрешить дополнительное end-to-end шифрование содержимого с общим секретным ключом"
-
-#: ../../include/features.php:219
-msgid "Enable Voting Tools"
-msgstr "Включить инструменты голосования"
-
-#: ../../include/features.php:220
-msgid "Provide a class of post which others can vote on"
-msgstr "Предоставь класс публикаций с возможностью голосования"
-
-#: ../../include/features.php:227
-msgid "Disable Comments"
-msgstr "Отключить комментарии"
-
-#: ../../include/features.php:228
-msgid "Provide the option to disable comments for a post"
-msgstr "Предоставить возможность отключать комментарии для публикаций"
-
-#: ../../include/features.php:235
-msgid "Delayed Posting"
-msgstr "Задержанная публикация"
-
-#: ../../include/features.php:236
-msgid "Allow posts to be published at a later date"
-msgstr "Разрешить размешать публикации следующими датами"
-
-#: ../../include/features.php:243
-msgid "Content Expiration"
-msgstr "Истечение срока действия содержимого"
-
-#: ../../include/features.php:244
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Удалять публикации / комментарии и / или личные сообщения"
-
-#: ../../include/features.php:251
-msgid "Suppress Duplicate Posts/Comments"
-msgstr "Подавлять дублирующие публикации / комментарии"
-
-#: ../../include/features.php:252
-msgid ""
-"Prevent posts with identical content to be published with less than two "
-"minutes in between submissions."
-msgstr "Предотвращает появление публикаций с одинаковым содержимым если интервал между ними менее 2 минут"
-
-#: ../../include/features.php:259
-msgid "Auto-save drafts of posts and comments"
-msgstr "Автоматически сохранять черновики публикаций и комментариев"
-
-#: ../../include/features.php:260
-msgid ""
-"Automatically saves post and comment drafts in local browser storage to help "
-"prevent accidental loss of compositions"
-msgstr "Автоматически сохраняет черновики публикаций и комментариев в локальном хранилище браузера для предотвращения их случайной утраты"
-
-#: ../../include/features.php:269 ../../Zotlabs/Lib/Apps.php:321
-msgid "Events"
-msgstr "События"
-
-#: ../../include/features.php:281
-msgid "Smart Birthdays"
-msgstr "\"Умные\" Дни рождений"
-
-#: ../../include/features.php:282
-msgid ""
-"Make birthday events timezone aware in case your friends are scattered "
-"across the planet."
-msgstr "Сделать уведомления о днях рождения зависимыми от часового пояса в том случае, если ваши друзья разбросаны по планете."
-
-#: ../../include/features.php:289
-msgid "Event Timezone Selection"
-msgstr "Выбор часового пояса события"
-
-#: ../../include/features.php:290
-msgid "Allow event creation in timezones other than your own."
-msgstr "Разрешить создание события в часовой зоне отличной от вашей"
-
-#: ../../include/features.php:299
-msgid "Manage"
-msgstr "Управление"
-
-#: ../../include/features.php:303
-msgid "Navigation Channel Select"
-msgstr "Выбор канала навигации"
-
-#: ../../include/features.php:304
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Изменить канал напрямую из выпадающего меню"
-
-#: ../../include/features.php:313 ../../Zotlabs/Module/Connections.php:296
-msgid "Network"
-msgstr "Сеть"
-
-#: ../../include/features.php:317 ../../Zotlabs/Widget/Savedsearch.php:83
-msgid "Saved Searches"
-msgstr "Сохранённые поиски"
-
-#: ../../include/features.php:318
-msgid "Save search terms for re-use"
-msgstr "Сохранять результаты поиска для повторного использования"
-
-#: ../../include/features.php:326
-msgid "Ability to file posts under folders"
-msgstr "Возможность размещать публикации в каталогах"
-
-#: ../../include/features.php:333
-msgid "Alternate Stream Order"
-msgstr "Отображение потока"
-
-#: ../../include/features.php:334
-msgid ""
-"Ability to order the stream by last post date, last comment date or "
-"unthreaded activities"
-msgstr "Возможность показывать поток по дате последнего сообщения, последнего комментария или в порядке поступления"
-
-#: ../../include/features.php:341
-msgid "Contact Filter"
-msgstr "Фильтр контактов"
-
-#: ../../include/features.php:342
-msgid "Ability to display only posts of a selected contact"
-msgstr "Возможность показа публикаций только от выбранных контактов"
-
-#: ../../include/features.php:349
-msgid "Forum Filter"
-msgstr "Фильтр по форумам"
-
-#: ../../include/features.php:350
-msgid "Ability to display only posts of a specific forum"
-msgstr "Возможность показа публикаций только определённого форума"
-
-#: ../../include/features.php:357
-msgid "Personal Posts Filter"
-msgstr "Персональный фильтр публикаций"
-
-#: ../../include/features.php:358
-msgid "Ability to display only posts that you've interacted on"
-msgstr "Возможность показа только тех публикаций с которыми вы взаимодействовали"
-
-#: ../../include/features.php:365
-msgid "Affinity Tool"
-msgstr "Инструмент сходства / соответствия"
-
-#: ../../include/features.php:366
-msgid "Filter stream activity by depth of relationships"
-msgstr "Фильтровать потоки активности по глубине отношений"
-
-#: ../../include/features.php:373 ../../Zotlabs/Lib/Apps.php:310
-msgid "Suggest Channels"
-msgstr "Предлагаемые каналы"
-
-#: ../../include/features.php:374
-msgid "Show friend and connection suggestions"
-msgstr "Показать предложения в друзья"
-
-#: ../../include/features.php:391 ../../include/nav.php:414
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:320
-msgid "Photos"
-msgstr "Фотографии"
-
-#: ../../include/features.php:395
-msgid "Photo Location"
-msgstr "Местоположение фотографии"
-
-#: ../../include/features.php:396
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Если данные о местоположении доступны на загруженных фотографий, связать их с картой."
-
-#: ../../include/features.php:405 ../../Zotlabs/Lib/Apps.php:338
-msgid "Profiles"
-msgstr "Редактировать профиль"
-
-#: ../../include/features.php:409
-msgid "Advanced Profiles"
-msgstr "Расширенные профили"
-
-#: ../../include/features.php:410
-msgid "Additional profile sections and selections"
-msgstr "Дополнительные секции и выборы профиля"
-
-#: ../../include/features.php:417
-msgid "Profile Import/Export"
-msgstr "Импорт / экспорт профиля"
-
-#: ../../include/features.php:418
-msgid "Save and load profile details across sites/channels"
-msgstr "Сохранение и загрузка настроек профиля на всех сайтах / каналах"
-
-#: ../../include/features.php:425
-msgid "Multiple Profiles"
-msgstr "Несколько профилей"
-
-#: ../../include/features.php:426
-msgid "Ability to create multiple profiles"
-msgstr "Возможность создания нескольких профилей"
-
-#: ../../include/text.php:501
-msgid "prev"
-msgstr "предыдущий"
-
-#: ../../include/text.php:503
-msgid "first"
-msgstr "первый"
-
-#: ../../include/text.php:532
-msgid "last"
-msgstr "последний"
-
-#: ../../include/text.php:535
-msgid "next"
-msgstr "следующий"
-
-#: ../../include/text.php:546
-msgid "older"
-msgstr "старше"
-
-#: ../../include/text.php:548
-msgid "newer"
-msgstr "новее"
-
-#: ../../include/text.php:968
-msgid "No connections"
-msgstr "Нет контактов"
-
-#: ../../include/text.php:1000
-#, php-format
-msgid "View all %s connections"
-msgstr "Просмотреть все %s контактов"
-
-#: ../../include/text.php:1056
-#, php-format
-msgid "Network: %s"
-msgstr "Сеть: %s"
-
-#: ../../include/text.php:1067 ../../include/text.php:1079
-#: ../../include/acl_selectors.php:118 ../../include/nav.php:183
-#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:338
-#: ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../Zotlabs/Lib/Apps.php:328
-msgid "Search"
-msgstr "Поиск"
-
-#: ../../include/text.php:1068 ../../include/text.php:1080
-#: ../../Zotlabs/Module/Admin/Profs.php:94
-#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
-#: ../../Zotlabs/Widget/Notes.php:23
-msgid "Save"
-msgstr "Запомнить"
-
-#: ../../include/text.php:1145 ../../include/text.php:1149
-msgid "poke"
-msgstr "Ткнуть"
-
-#: ../../include/text.php:1145 ../../include/text.php:1149
-#: ../../include/conversation.php:251
-msgid "poked"
-msgstr "ткнут"
-
-#: ../../include/text.php:1150
-msgid "ping"
-msgstr "Пингануть"
-
-#: ../../include/text.php:1150
-msgid "pinged"
-msgstr "Отпингован"
-
-#: ../../include/text.php:1151
-msgid "prod"
-msgstr "Подтолкнуть"
-
-#: ../../include/text.php:1151
-msgid "prodded"
-msgstr "Подтолкнут"
-
-#: ../../include/text.php:1152
-msgid "slap"
-msgstr "Шлёпнуть"
-
-#: ../../include/text.php:1152
-msgid "slapped"
-msgstr "Шлёпнут"
-
-#: ../../include/text.php:1153
-msgid "finger"
-msgstr "Указать"
-
-#: ../../include/text.php:1153
-msgid "fingered"
-msgstr "Указан"
-
-#: ../../include/text.php:1154
-msgid "rebuff"
-msgstr "Дать отпор"
-
-#: ../../include/text.php:1154
-msgid "rebuffed"
-msgstr "Дан отпор"
-
-#: ../../include/text.php:1177
-msgid "happy"
-msgstr "счастливый"
-
-#: ../../include/text.php:1178
-msgid "sad"
-msgstr "грустный"
-
-#: ../../include/text.php:1179
-msgid "mellow"
-msgstr "спокойный"
-
-#: ../../include/text.php:1180
-msgid "tired"
-msgstr "усталый"
-
-#: ../../include/text.php:1181
-msgid "perky"
-msgstr "весёлый"
-
-#: ../../include/text.php:1182
-msgid "angry"
-msgstr "сердитый"
-
-#: ../../include/text.php:1183
-msgid "stupefied"
-msgstr "отупевший"
-
-#: ../../include/text.php:1184
-msgid "puzzled"
-msgstr "недоумевающий"
-
-#: ../../include/text.php:1185
-msgid "interested"
-msgstr "заинтересованный"
-
-#: ../../include/text.php:1186
-msgid "bitter"
-msgstr "едкий"
-
-#: ../../include/text.php:1187
-msgid "cheerful"
-msgstr "бодрый"
-
-#: ../../include/text.php:1188
-msgid "alive"
-msgstr "энергичный"
-
-#: ../../include/text.php:1189
-msgid "annoyed"
-msgstr "раздражённый"
-
-#: ../../include/text.php:1190
-msgid "anxious"
-msgstr "обеспокоенный"
-
-#: ../../include/text.php:1191
-msgid "cranky"
-msgstr "капризный"
-
-#: ../../include/text.php:1192
-msgid "disturbed"
-msgstr "встревоженный"
-
-#: ../../include/text.php:1193
-msgid "frustrated"
-msgstr "разочарованный"
-
-#: ../../include/text.php:1194
-msgid "depressed"
-msgstr "подавленный"
-
-#: ../../include/text.php:1195
-msgid "motivated"
-msgstr "мотивированный"
-
-#: ../../include/text.php:1196
-msgid "relaxed"
-msgstr "расслабленный"
-
-#: ../../include/text.php:1197
-msgid "surprised"
-msgstr "удивленный"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:95
-msgid "Monday"
-msgstr "Понедельник"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:96
-msgid "Tuesday"
-msgstr "Вторник"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:97
-msgid "Wednesday"
-msgstr "Среда"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:98
-msgid "Thursday"
-msgstr "Четверг"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:99
-msgid "Friday"
-msgstr "Пятница"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:100
-msgid "Saturday"
-msgstr "Суббота"
-
-#: ../../include/text.php:1376 ../../include/js_strings.php:94
-msgid "Sunday"
-msgstr "Воскресенье"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:70
-msgid "January"
-msgstr "Январь"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:71
-msgid "February"
-msgstr "Февраль"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:72
-msgid "March"
-msgstr "Март"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:73
-msgid "April"
-msgstr "Апрель"
-
-#: ../../include/text.php:1380
-msgid "May"
-msgstr "Май"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:75
-msgid "June"
-msgstr "Июнь"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:76
-msgid "July"
-msgstr "Июль"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:77
-msgid "August"
-msgstr "Август"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:78
-msgid "September"
-msgstr "Сентябрь"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:79
-msgid "October"
-msgstr "Октябрь"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:80
-msgid "November"
-msgstr "Ноябрь"
-
-#: ../../include/text.php:1380 ../../include/js_strings.php:81
-msgid "December"
-msgstr "Декабрь"
-
-#: ../../include/text.php:1454
-msgid "Unknown Attachment"
-msgstr "Неизвестное вложение"
-
-#: ../../include/text.php:1456 ../../Zotlabs/Storage/Browser.php:287
-#: ../../Zotlabs/Module/Sharedwithme.php:106
-msgid "Size"
-msgstr "Размер"
-
-#: ../../include/text.php:1456 ../../include/feedutils.php:860
-msgid "unknown"
-msgstr "неизвестный"
-
-#: ../../include/text.php:1492
-msgid "remove category"
-msgstr "удалить категорию"
-
-#: ../../include/text.php:1566
-msgid "remove from file"
-msgstr "удалить из файла"
-
-#: ../../include/text.php:1849 ../../Zotlabs/Module/Events.php:663
-#: ../../Zotlabs/Module/Cal.php:314
-msgid "Link to Source"
-msgstr "Ссылка на источник"
-
-#: ../../include/text.php:1871 ../../include/language.php:423
-msgid "default"
-msgstr "по умолчанию"
-
-#: ../../include/text.php:1879
-msgid "Page layout"
-msgstr "Шаблон страницы"
-
-#: ../../include/text.php:1879
-msgid "You can create your own with the layouts tool"
-msgstr "Вы можете создать свой собственный с помощью инструмента шаблонов"
-
-#: ../../include/text.php:1889 ../../Zotlabs/Module/Wiki.php:217
-#: ../../Zotlabs/Module/Wiki.php:371 ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95
-msgid "BBcode"
-msgstr ""
-
-#: ../../include/text.php:1890
-msgid "HTML"
-msgstr ""
-
-#: ../../include/text.php:1891 ../../Zotlabs/Module/Wiki.php:217
-#: ../../Zotlabs/Module/Wiki.php:371 ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95
-#: ../../extend/addon/hzaddons/mdpost/mdpost.php:41
-msgid "Markdown"
-msgstr "Разметка Markdown"
-
-#: ../../include/text.php:1892 ../../Zotlabs/Module/Wiki.php:217
-#: ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95
-msgid "Text"
-msgstr "Текст"
-
-#: ../../include/text.php:1893
-msgid "Comanche Layout"
-msgstr "Шаблон Comanche"
-
-#: ../../include/text.php:1898
-msgid "PHP"
-msgstr ""
-
-#: ../../include/text.php:1907
-msgid "Page content type"
-msgstr "Тип содержимого страницы"
-
-#: ../../include/text.php:2027 ../../include/conversation.php:116
-#: ../../Zotlabs/Module/Tagger.php:69 ../../Zotlabs/Module/Like.php:387
-#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:1570
-#: ../../extend/addon/hzaddons/redphotos/redphotohelper.php:71
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1494
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1541
-msgid "photo"
-msgstr "фото"
-
-#: ../../include/text.php:2030 ../../include/conversation.php:119
-#: ../../include/event.php:1156 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Like.php:389
-msgid "event"
-msgstr "событие"
-
-#: ../../include/text.php:2033 ../../include/conversation.php:144
-#: ../../Zotlabs/Module/Like.php:387 ../../Zotlabs/Module/Subthread.php:112
-#: ../../Zotlabs/Lib/Activity.php:1570
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1494
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1541
-msgid "status"
-msgstr "статус"
-
-#: ../../include/text.php:2035 ../../include/conversation.php:146
-#: ../../Zotlabs/Module/Tagger.php:79
-msgid "comment"
-msgstr "комментарий"
-
-#: ../../include/text.php:2040
-msgid "activity"
-msgstr "активность"
-
-#: ../../include/text.php:2141
-msgid "a-z, 0-9, -, and _ only"
-msgstr "Только a-z, 0-9, -, и _"
-
-#: ../../include/text.php:2461
-msgid "Design Tools"
-msgstr "Инструменты дизайна"
-
-#: ../../include/text.php:2464 ../../Zotlabs/Module/Blocks.php:154
-msgid "Blocks"
-msgstr "Блокировки"
-
-#: ../../include/text.php:2465 ../../Zotlabs/Module/Menu.php:170
-msgid "Menus"
-msgstr "Меню"
-
-#: ../../include/text.php:2466 ../../Zotlabs/Module/Layouts.php:184
-msgid "Layouts"
-msgstr "Шаблоны"
-
-#: ../../include/text.php:2467
-msgid "Pages"
-msgstr "Страницы"
-
-#: ../../include/text.php:2488 ../../Zotlabs/Module/Cal.php:343
-msgid "Import"
-msgstr "Импортировать"
-
-#: ../../include/text.php:2489
-msgid "Import website..."
-msgstr "Импорт веб-сайта..."
-
-#: ../../include/text.php:2490
-msgid "Select folder to import"
-msgstr "Выбрать каталог для импорта"
-
-#: ../../include/text.php:2491
-msgid "Import from a zipped folder:"
-msgstr "Импортировать из каталога в zip-архиве:"
-
-#: ../../include/text.php:2492
-msgid "Import from cloud files:"
-msgstr "Импортировать из сетевых файлов:"
-
-#: ../../include/text.php:2493
-msgid "/cloud/channel/path/to/folder"
-msgstr ""
-
-#: ../../include/text.php:2494
-msgid "Enter path to website files"
-msgstr "Введите путь к файлам веб-сайта"
-
-#: ../../include/text.php:2495
-msgid "Select folder"
-msgstr "Выбрать каталог"
-
-#: ../../include/text.php:2496
-msgid "Export website..."
-msgstr "Экспорт веб-сайта..."
-
-#: ../../include/text.php:2497
-msgid "Export to a zip file"
-msgstr "Экспортировать в ZIP файл."
-
-#: ../../include/text.php:2498
-msgid "website.zip"
-msgstr ""
-
-#: ../../include/text.php:2499
-msgid "Enter a name for the zip file."
-msgstr "Введите имя для ZIP файла."
-
-#: ../../include/text.php:2500
-msgid "Export to cloud files"
-msgstr "Эскпортировать в сетевые файлы:"
-
-#: ../../include/text.php:2501
-msgid "/path/to/export/folder"
-msgstr ""
-
-#: ../../include/text.php:2502
-msgid "Enter a path to a cloud files destination."
-msgstr "Введите путь к расположению сетевых файлов."
-
-#: ../../include/text.php:2503
-msgid "Specify folder"
-msgstr "Указать каталог"
-
-#: ../../include/text.php:2823 ../../Zotlabs/Storage/Browser.php:131
-msgid "Collection"
-msgstr "Коллекция"
-
-#: ../../include/import.php:25
-msgid "Unable to import a removed channel."
-msgstr "Невозможно импортировать удалённый канал."
-
-#: ../../include/import.php:51
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Не удалось создать дублирующийся идентификатор канала. Импорт невозможен."
-
-#: ../../include/import.php:72
-#: ../../extend/addon/hzaddons/diaspora/import_diaspora.php:43
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Не удалось создать уникальный адрес канала. Импорт не завершен."
-
-#: ../../include/import.php:116
-msgid "Cloned channel not found. Import failed."
-msgstr "Клон канала не найден. Импорт невозможен."
-
-#: ../../include/group.php:22 ../../Zotlabs/Lib/Group.php:28
-msgid ""
-"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."
-msgstr "Удаленная группа с этим названием была восстановлена. Существующие разрешения пункт <strong>могут</strong> применяться к этой группе и к её будущих участников. Если это не то, чего вы хотели, пожалуйста, создайте другую группу с другим именем."
-
-#: ../../include/group.php:264 ../../Zotlabs/Lib/Group.php:270
-msgid "Add new connections to this privacy group"
-msgstr "Добавить новые контакты в группу безопасности"
-
-#: ../../include/group.php:298 ../../Zotlabs/Lib/Group.php:302
-msgid "edit"
-msgstr "редактировать"
-
-#: ../../include/group.php:320 ../../include/nav.php:95
-#: ../../Zotlabs/Module/Group.php:132 ../../Zotlabs/Module/Group.php:143
-#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../Zotlabs/Lib/Group.php:324
-#: ../../Zotlabs/Lib/Apps.php:339
-msgid "Privacy Groups"
-msgstr "Группы безопасности"
-
-#: ../../include/group.php:321 ../../Zotlabs/Lib/Group.php:325
-msgid "Edit group"
-msgstr "Редактировать группу"
-
-#: ../../include/group.php:322 ../../Zotlabs/Lib/Group.php:326
-msgid "Add privacy group"
-msgstr "Добавить группу безопасности"
-
-#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:327
-msgid "Channels not in any privacy group"
-msgstr "Каналы не включены ни в одну группу безопасности"
-
-#: ../../include/group.php:325 ../../Zotlabs/Widget/Savedsearch.php:84
-#: ../../Zotlabs/Lib/Group.php:329
-msgid "add"
-msgstr "добавить"
-
-#: ../../include/account.php:36
-msgid "Not a valid email address"
-msgstr "Недействительный адрес электронной почты"
-
-#: ../../include/account.php:38
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Домен электронной почты не входит в число тех, которые разрешены на этом сайте"
-
-#: ../../include/account.php:44
-msgid "Your email address is already registered at this site."
-msgstr "Ваш адрес электронной почты уже зарегистрирован на этом сайте."
-
-#: ../../include/account.php:76
-msgid "An invitation is required."
-msgstr "Требуется приглашение."
-
-#: ../../include/account.php:80
-msgid "Invitation could not be verified."
-msgstr "Не удалось проверить приглашение."
-
-#: ../../include/account.php:158
-msgid "Please enter the required information."
-msgstr "Пожалуйста, введите необходимую информацию."
-
-#: ../../include/account.php:225
-msgid "Failed to store account information."
-msgstr "Не удалось сохранить информацию аккаунта."
-
-#: ../../include/account.php:314
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Подтверждение регистрации для %s"
-
-#: ../../include/account.php:385
-#, php-format
-msgid "Registration request at %s"
-msgstr "Запрос регистрации на %s"
-
-#: ../../include/account.php:407
-msgid "your registration password"
-msgstr "ваш пароль регистрации"
-
-#: ../../include/account.php:413 ../../include/account.php:475
-#, php-format
-msgid "Registration details for %s"
-msgstr "Регистрационные данные для %s"
-
-#: ../../include/account.php:486
-msgid "Account approved."
-msgstr "Аккаунт утвержден."
-
-#: ../../include/account.php:526
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Регистрация отозвана для %s"
-
-#: ../../include/account.php:805 ../../include/account.php:807
-msgid "Click here to upgrade."
-msgstr "Нажмите здесь для обновления."
-
-#: ../../include/account.php:813
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Это действие превышает ограничения, установленные в вашем плане."
-
-#: ../../include/account.php:818
-msgid "This action is not available under your subscription plan."
-msgstr "Это действие невозможно из-за ограничений в вашем плане."
-
-#: ../../include/zot.php:775
-msgid "Invalid data packet"
-msgstr "Неверный пакет данных"
-
-#: ../../include/zot.php:802 ../../Zotlabs/Lib/Libzot.php:667
-msgid "Unable to verify channel signature"
-msgstr "Невозможно проверить подпись канала"
-
-#: ../../include/zot.php:2575 ../../Zotlabs/Lib/Libsync.php:733
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Невозможно проверить подпись сайта %s"
-
-#: ../../include/zot.php:4272
-msgid "invalid target signature"
-msgstr "недопустимая целевая подпись"
-
-#: ../../include/follow.php:37
-msgid "Channel is blocked on this site."
-msgstr "Канал блокируется на этом сайте."
-
-#: ../../include/follow.php:42
-msgid "Channel location missing."
-msgstr "Местоположение канала отсутствует."
-
-#: ../../include/follow.php:84
-msgid "Response from remote channel was incomplete."
-msgstr "Ответ удаленного канала неполный."
-
-#: ../../include/follow.php:96
-msgid "Premium channel - please visit:"
-msgstr "Премимум-канал - пожалуйста посетите:"
-
-#: ../../include/follow.php:110
-msgid "Channel was deleted and no longer exists."
-msgstr "Канал удален и больше не существует."
-
-#: ../../include/follow.php:165
-msgid "Remote channel or protocol unavailable."
-msgstr "Удалённый канал или протокол недоступен."
-
-#: ../../include/follow.php:188
-msgid "Channel discovery failed."
-msgstr "Не удалось обнаружить канал."
-
-#: ../../include/follow.php:200
-msgid "Protocol disabled."
-msgstr "Протокол отключен."
-
-#: ../../include/follow.php:211
-msgid "Cannot connect to yourself."
-msgstr "Нельзя подключиться к самому себе."
-
-#: ../../include/help.php:80
-msgid "Help:"
-msgstr "Помощь:"
-
-#: ../../include/help.php:117 ../../include/help.php:125
-#: ../../include/nav.php:168 ../../include/nav.php:289
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:323
-msgid "Help"
-msgstr "Помощь"
-
-#: ../../include/help.php:129
-msgid "Not Found"
-msgstr "Не найдено"
-
-#: ../../include/help.php:132 ../../Zotlabs/Module/Display.php:140
-#: ../../Zotlabs/Module/Display.php:157 ../../Zotlabs/Module/Display.php:174
-#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
-#: ../../Zotlabs/Web/Router.php:185 ../../Zotlabs/Lib/NativeWikiPage.php:521
-msgid "Page not found."
-msgstr "Страница не найдена."
-
-#: ../../include/bbcode.php:200 ../../include/bbcode.php:1201
-#: ../../include/bbcode.php:1204 ../../include/bbcode.php:1209
-#: ../../include/bbcode.php:1212 ../../include/bbcode.php:1215
-#: ../../include/bbcode.php:1218 ../../include/bbcode.php:1223
-#: ../../include/bbcode.php:1226 ../../include/bbcode.php:1231
-#: ../../include/bbcode.php:1234 ../../include/bbcode.php:1237
-#: ../../include/bbcode.php:1240
-msgid "Image/photo"
-msgstr "Изображение / фотография"
-
-#: ../../include/bbcode.php:239 ../../include/bbcode.php:1251
-msgid "Encrypted content"
-msgstr "Зашифрованное содержание"
-
-#: ../../include/bbcode.php:255
-#, php-format
-msgid "Install %1$s element %2$s"
-msgstr "Установить %1$s элемент %2$s"
-
-#: ../../include/bbcode.php:259
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Эта публикация содержит устанавливаемый %s элемент, однако у вас нет разрешений для его установки на этом сайте."
-
-#: ../../include/bbcode.php:269 ../../Zotlabs/Module/Impel.php:43
-msgid "webpage"
-msgstr "веб-страница"
-
-#: ../../include/bbcode.php:272 ../../Zotlabs/Module/Impel.php:53
-msgid "layout"
-msgstr "шаблон"
-
-#: ../../include/bbcode.php:275 ../../Zotlabs/Module/Impel.php:48
-msgid "block"
-msgstr "заблокировать"
-
-#: ../../include/bbcode.php:278 ../../Zotlabs/Module/Impel.php:60
-msgid "menu"
-msgstr "меню"
-
-#: ../../include/bbcode.php:350
-msgid "card"
-msgstr "карточка"
-
-#: ../../include/bbcode.php:352
-msgid "article"
-msgstr "статья"
-
-#: ../../include/bbcode.php:435 ../../include/bbcode.php:443
-msgid "Click to open/close"
-msgstr "Нажмите, чтобы открыть/закрыть"
-
-#: ../../include/bbcode.php:443
-msgid "spoiler"
-msgstr "спойлер"
-
-#: ../../include/bbcode.php:456
-msgid "View article"
-msgstr "Просмотр статьи"
-
-#: ../../include/bbcode.php:456
-msgid "View summary"
-msgstr "Просмотр резюме"
-
-#: ../../include/bbcode.php:746 ../../include/bbcode.php:916
-#: ../../Zotlabs/Lib/NativeWikiPage.php:603
-msgid "Different viewers will see this text differently"
-msgstr "Различные зрители увидят этот текст по-разному"
-
-#: ../../include/bbcode.php:1189
-msgid "$1 wrote:"
-msgstr "$1 писал:"
-
-#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:121
-msgid "channel"
-msgstr "канал"
-
-#: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:441
-#: ../../Zotlabs/Lib/Activity.php:1605
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1529
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1570
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s нравится %3$s %2$s"
-
-#: ../../include/conversation.php:163 ../../Zotlabs/Module/Like.php:443
-#: ../../Zotlabs/Lib/Activity.php:1607
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1531
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s не нравится %2$s %3$s"
-
-#: ../../include/conversation.php:169
-#, php-format
-msgid "likes %1$s's %2$s"
-msgstr "Нравится %1$s %2$s"
-
-#: ../../include/conversation.php:172
-#, php-format
-msgid "doesn't like %1$s's %2$s"
-msgstr "Не нравится %1$s %2$s"
-
-#: ../../include/conversation.php:212
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s теперь в контакте с %2$s"
-
-#: ../../include/conversation.php:247
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s ткнул %2$s"
-
-#: ../../include/conversation.php:268 ../../Zotlabs/Module/Mood.php:76
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s в %2$s"
-
-#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:443
-msgid "This is an unsaved preview"
-msgstr "Это несохранённый просмотр"
-
-#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1152
-msgctxt "title"
-msgid "Likes"
-msgstr "Нравится"
-
-#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1152
-msgctxt "title"
-msgid "Dislikes"
-msgstr "Не нравится"
-
-#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1153
-msgctxt "title"
-msgid "Agree"
-msgstr "Согласен"
-
-#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1153
-msgctxt "title"
-msgid "Disagree"
-msgstr "Не согласен"
-
-#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1153
-msgctxt "title"
-msgid "Abstain"
-msgstr "Воздержался"
-
-#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1154
-msgctxt "title"
-msgid "Attending"
-msgstr "Посещаю"
-
-#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1154
-msgctxt "title"
-msgid "Not attending"
-msgstr "Не посещаю"
-
-#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1154
-msgctxt "title"
-msgid "Might attend"
-msgstr "Возможно посещу"
-
-#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:160
-msgid "Select"
-msgstr "Выбрать"
+#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1117
+#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194
+#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Widget/Cdav.php:124
+#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392
+msgid "Share"
+msgstr "Поделиться"
-#: ../../include/conversation.php:691 ../../include/conversation.php:736
-#: ../../Zotlabs/Storage/Browser.php:291 ../../Zotlabs/Module/Cdav.php:942
-#: ../../Zotlabs/Module/Cdav.php:1232 ../../Zotlabs/Module/Profiles.php:800
-#: ../../Zotlabs/Module/Photos.php:1218 ../../Zotlabs/Module/Oauth.php:174
-#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editlayout.php:138
-#: ../../Zotlabs/Module/Editblock.php:139
-#: ../../Zotlabs/Module/Admin/Channels.php:149
-#: ../../Zotlabs/Module/Admin/Profs.php:176
+#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138
+#: ../../Zotlabs/Module/Cdav.php:942 ../../Zotlabs/Module/Cdav.php:1232
+#: ../../Zotlabs/Module/Article_edit.php:129
#: ../../Zotlabs/Module/Admin/Accounts.php:175
-#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Thing.php:267
-#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Connedit.php:660
-#: ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Admin/Channels.php:149
+#: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Thing.php:267
+#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editblock.php:139
#: ../../Zotlabs/Module/Connections.php:292
-#: ../../Zotlabs/Module/Card_edit.php:129
-#: ../../Zotlabs/Module/Article_edit.php:129
-#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Lib/Apps.php:535
-#: ../../Zotlabs/Lib/ThreadItem.php:150
+#: ../../Zotlabs/Module/Photos.php:1220 ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:800
+#: ../../Zotlabs/Module/Editwebpage.php:167
+#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Card_edit.php:129
+#: ../../Zotlabs/Module/Oauth.php:174 ../../Zotlabs/Lib/Apps.php:557
+#: ../../Zotlabs/Lib/ThreadItem.php:167 ../../Zotlabs/Storage/Browser.php:291
+#: ../../include/conversation.php:691 ../../include/conversation.php:736
msgid "Delete"
msgstr "Удалить"
-#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:249
-msgid "Toggle Star Status"
-msgstr "Переключить статус пометки"
-
-#: ../../include/conversation.php:700 ../../Zotlabs/Lib/ThreadItem.php:99
-msgid "Private Message"
-msgstr "Личное сообщение"
-
-#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:260
-msgid "Message signature validated"
-msgstr "Подпись сообщения проверена"
-
-#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:261
-msgid "Message signature incorrect"
-msgstr "Подпись сообщения неверная"
-
-#: ../../include/conversation.php:735
-#: ../../Zotlabs/Module/Admin/Accounts.php:173
-#: ../../Zotlabs/Module/Connections.php:306
-msgid "Approve"
-msgstr "Утвердить"
-
-#: ../../include/conversation.php:739
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Просмотреть профиль %s @ %s"
-
-#: ../../include/conversation.php:759
-msgid "Categories:"
-msgstr "Категории:"
-
-#: ../../include/conversation.php:760
-msgid "Filed under:"
-msgstr "Хранить под:"
-
-#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:378
-#, php-format
-msgid "from %s"
-msgstr "от %s"
-
-#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:381
-#, php-format
-msgid "last edited: %s"
-msgstr "последнее редактирование: %s"
-
-#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:382
-#, php-format
-msgid "Expires: %s"
-msgstr "Срок действия: %s"
-
-#: ../../include/conversation.php:785
-msgid "View in context"
-msgstr "Показать в контексте"
-
-#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1118
-#: ../../Zotlabs/Lib/ThreadItem.php:444
-msgid "Please wait"
-msgstr "Подождите пожалуйста"
-
-#: ../../include/conversation.php:886
-msgid "remove"
-msgstr "удалить"
-
-#: ../../include/conversation.php:890
-msgid "Loading..."
-msgstr "Загрузка..."
-
-#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:273
-msgid "Conversation Tools"
-msgstr "Инструменты общения"
-
-#: ../../include/conversation.php:892
-msgid "Delete Selected Items"
-msgstr "Удалить выбранные элементы"
-
-#: ../../include/conversation.php:935
-msgid "View Source"
-msgstr "Просмотреть источник"
-
-#: ../../include/conversation.php:945
-msgid "Follow Thread"
-msgstr "Следить за темой"
-
-#: ../../include/conversation.php:954
-msgid "Unfollow Thread"
-msgstr "Прекратить отслеживать тему"
-
-#: ../../include/conversation.php:1038 ../../include/nav.php:106
-#: ../../Zotlabs/Module/Connedit.php:600 ../../Zotlabs/Lib/Apps.php:319
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:57
-msgid "View Profile"
-msgstr "Просмотреть профиль"
-
-#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:621
-msgid "Recent Activity"
-msgstr "Последние действия"
-
-#: ../../include/conversation.php:1068
-msgid "Edit Connection"
-msgstr "Редактировать контакт"
-
-#: ../../include/conversation.php:1078
-msgid "Message"
-msgstr "Сообщение"
-
-#: ../../include/conversation.php:1088 ../../Zotlabs/Module/Ratings.php:97
-#: ../../Zotlabs/Module/Pubsites.php:35
-msgid "Ratings"
-msgstr "Оценки"
-
-#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199
-#: ../../Zotlabs/Lib/Apps.php:326
-msgid "Poke"
-msgstr "Ткнуть"
-
-#: ../../include/conversation.php:1166 ../../Zotlabs/Storage/Browser.php:164
-#: ../../Zotlabs/Module/Cdav.php:811 ../../Zotlabs/Module/Cdav.php:812
-#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Photos.php:832
-#: ../../Zotlabs/Module/Photos.php:1288
-#: ../../Zotlabs/Module/Embedphotos.php:146
-#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84
-#: ../../Zotlabs/Lib/Apps.php:994 ../../Zotlabs/Lib/Apps.php:1078
-#: ../../Zotlabs/Lib/Activity.php:858
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:949
-msgid "Unknown"
-msgstr "Неизвестный"
-
-#: ../../include/conversation.php:1212
-#, php-format
-msgid "%s likes this."
-msgstr "%s нравится это."
-
-#: ../../include/conversation.php:1212
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s не нравится это."
+#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Events.php:695
+#: ../../Zotlabs/Module/Wiki.php:213 ../../Zotlabs/Module/Wiki.php:409
+#: ../../Zotlabs/Module/Layouts.php:198 ../../Zotlabs/Module/Webpages.php:261
+#: ../../Zotlabs/Module/Pubsites.php:60
+msgid "View"
+msgstr "Просмотр"
-#: ../../include/conversation.php:1216
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d человеку</span> это нравится."
-msgstr[1] "<span %1$s>%2$d человекам</span> это нравится."
-msgstr[2] "<span %1$s>%2$d человекам</span> это нравится."
+#: ../../Zotlabs/Module/Invite.php:37
+msgid "Total invitation limit exceeded."
+msgstr "Превышено общее количество приглашений."
-#: ../../include/conversation.php:1218
+#: ../../Zotlabs/Module/Invite.php:61
#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d человеку</span> это не нравится."
-msgstr[1] "<span %1$s>%2$d человекам</span> это не нравится."
-msgstr[2] "<span %1$s>%2$d человекам</span> это не нравится."
+msgid "%s : Not a valid email address."
+msgstr "%s : Недействительный адрес электронной почты."
-#: ../../include/conversation.php:1224
-msgid "and"
-msgstr "и"
+#: ../../Zotlabs/Module/Invite.php:75
+msgid "Please join us on $Projectname"
+msgstr "Присоединятесь к $Projectname !"
-#: ../../include/conversation.php:1227
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ", и ещё %d человеку"
-msgstr[1] ", и ещё %d человекам"
-msgstr[2] ", и ещё %d человекам"
+#: ../../Zotlabs/Module/Invite.php:85
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Превышен лимит приглашений. Пожалуйста, свяжитесь с администрацией сайта."
-#: ../../include/conversation.php:1228
+#: ../../Zotlabs/Module/Invite.php:90
+#: ../../addon/notifyadmin/notifyadmin.php:40
#, php-format
-msgid "%s like this."
-msgstr "%s нравится это."
+msgid "%s : Message delivery failed."
+msgstr "%s : Доставка сообщения не удалась."
-#: ../../include/conversation.php:1228
+#: ../../Zotlabs/Module/Invite.php:94
#, php-format
-msgid "%s don't like this."
-msgstr "%s не нравится это."
-
-#: ../../include/conversation.php:1285
-#: ../../extend/addon/hzaddons/hsse/hsse.php:82
-msgid "Set your location"
-msgstr "Задать своё местоположение"
-
-#: ../../include/conversation.php:1286
-#: ../../extend/addon/hzaddons/hsse/hsse.php:83
-msgid "Clear browser location"
-msgstr "Очистить местоположение из браузера"
-
-#: ../../include/conversation.php:1298 ../../Zotlabs/Module/Mail.php:288
-#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Chat.php:222
-#: ../../Zotlabs/Module/Editblock.php:116
-#: ../../Zotlabs/Module/Editwebpage.php:143
-#: ../../Zotlabs/Module/Card_edit.php:101
-#: ../../Zotlabs/Module/Article_edit.php:101
-#: ../../extend/addon/hzaddons/hsse/hsse.php:95
-msgid "Insert web link"
-msgstr "Вставить веб-ссылку"
-
-#: ../../include/conversation.php:1302
-#: ../../extend/addon/hzaddons/hsse/hsse.php:99
-msgid "Embed (existing) photo from your photo albums"
-msgstr "Встроить (существующее) фото из вашего фотоальбома"
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d сообщение отправлено."
+msgstr[1] "%d сообщения отправлено."
+msgstr[2] "%d сообщений отправлено."
-#: ../../include/conversation.php:1337 ../../Zotlabs/Module/Mail.php:241
-#: ../../Zotlabs/Module/Mail.php:362 ../../Zotlabs/Module/Chat.php:220
-#: ../../extend/addon/hzaddons/hsse/hsse.php:134
-msgid "Please enter a link URL:"
-msgstr "Пожалуйста введите URL ссылки:"
+#: ../../Zotlabs/Module/Invite.php:110
+msgid "Invite App"
+msgstr "Приложение \"Пригласить\""
-#: ../../include/conversation.php:1338
-#: ../../extend/addon/hzaddons/hsse/hsse.php:135
-msgid "Tag term:"
-msgstr "Теги:"
+#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:51
+#: ../../Zotlabs/Module/Cdav.php:839 ../../Zotlabs/Module/Cdav.php:848
+#: ../../Zotlabs/Module/Permcats.php:62 ../../Zotlabs/Module/Lang.php:17
+#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Pubstream.php:20
+#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Tokens.php:99
+#: ../../Zotlabs/Module/Oauth2.php:106 ../../Zotlabs/Module/Randprof.php:29
+#: ../../Zotlabs/Module/Mood.php:134 ../../Zotlabs/Module/Bookmarks.php:78
+#: ../../Zotlabs/Module/Wiki.php:52 ../../Zotlabs/Module/Pdledit.php:42
+#: ../../Zotlabs/Module/Poke.php:165 ../../Zotlabs/Module/Chat.php:102
+#: ../../Zotlabs/Module/Notes.php:56 ../../Zotlabs/Module/Affinity.php:52
+#: ../../Zotlabs/Module/Defperms.php:189 ../../Zotlabs/Module/Group.php:106
+#: ../../Zotlabs/Module/Cards.php:51 ../../Zotlabs/Module/Webpages.php:48
+#: ../../Zotlabs/Module/Sources.php:88 ../../Zotlabs/Module/Suggest.php:40
+#: ../../Zotlabs/Module/Probe.php:18 ../../Zotlabs/Module/Oauth.php:100
+#: ../../addon/skeleton/Mod_Skeleton.php:32
+#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/planets/Mod_Planets.php:20
+#: ../../addon/wppost/Mod_Wppost.php:41 ../../addon/nsfw/Mod_Nsfw.php:33
+#: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/dwpost/Mod_Dwpost.php:36
+#: ../../addon/gallery/Mod_Gallery.php:58 ../../addon/ljpost/Mod_Ljpost.php:36
+#: ../../addon/startpage/Mod_Startpage.php:50
+#: ../../addon/diaspora/Mod_Diaspora.php:55
+#: ../../addon/photocache/Mod_Photocache.php:42
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../addon/nsabait/Mod_Nsabait.php:20
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 ../../addon/rtof/Mod_Rtof.php:36
+#: ../../addon/jappixmini/Mod_Jappixmini.php:96
+#: ../../addon/superblock/Mod_Superblock.php:20
+#: ../../addon/nofed/Mod_Nofed.php:33 ../../addon/redred/Mod_Redred.php:50
+#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/pubcrawl/Mod_Pubcrawl.php:40
+#: ../../addon/libertree/Mod_Libertree.php:35
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53
+#: ../../addon/statusnet/Mod_Statusnet.php:146
+#: ../../addon/twitter/Mod_Twitter.php:78
+#: ../../addon/smileybutton/Mod_Smileybutton.php:35
+#: ../../addon/sendzid/Mod_Sendzid.php:20
+#: ../../addon/pageheader/Mod_Pageheader.php:34
+#: ../../addon/authchoose/Mod_Authchoose.php:28
+#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../addon/pumpio/Mod_Pumpio.php:53
+msgid "Not Installed"
+msgstr "не установлено"
-#: ../../include/conversation.php:1339
-#: ../../extend/addon/hzaddons/hsse/hsse.php:136
-msgid "Where are you right now?"
-msgstr "Где вы сейчас?"
+#: ../../Zotlabs/Module/Invite.php:111
+msgid "Send email invitations to join this network"
+msgstr "Отправить приглашение присоединиться к этой сети по электронной почте"
-#: ../../include/conversation.php:1342 ../../Zotlabs/Module/Cover_photo.php:401
-#: ../../Zotlabs/Module/Profile_photo.php:467 ../../Zotlabs/Module/Wiki.php:403
-#: ../../extend/addon/hzaddons/hsse/hsse.php:139
-msgid "Choose images to embed"
-msgstr "Выбрать изображения для встраивания"
+#: ../../Zotlabs/Module/Invite.php:124
+msgid "You have no more invitations available"
+msgstr "У вас больше нет приглашений"
-#: ../../include/conversation.php:1343 ../../Zotlabs/Module/Cover_photo.php:402
-#: ../../Zotlabs/Module/Profile_photo.php:468 ../../Zotlabs/Module/Wiki.php:404
-#: ../../extend/addon/hzaddons/hsse/hsse.php:140
-msgid "Choose an album"
-msgstr "Выбрать альбом"
+#: ../../Zotlabs/Module/Invite.php:155
+msgid "Send invitations"
+msgstr "Отправить приглашение"
-#: ../../include/conversation.php:1344
-#: ../../extend/addon/hzaddons/hsse/hsse.php:141
-msgid "Choose a different album..."
-msgstr "Выбрать другой альбом..."
+#: ../../Zotlabs/Module/Invite.php:156
+msgid "Enter email addresses, one per line:"
+msgstr "Введите адреса электронной почты, по одному в строке:"
-#: ../../include/conversation.php:1345 ../../Zotlabs/Module/Cover_photo.php:404
-#: ../../Zotlabs/Module/Profile_photo.php:470 ../../Zotlabs/Module/Wiki.php:406
-#: ../../extend/addon/hzaddons/hsse/hsse.php:142
-msgid "Error getting album list"
-msgstr "Ошибка получения списка альбомов"
+#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:285
+msgid "Your message:"
+msgstr "Сообщение:"
-#: ../../include/conversation.php:1346 ../../Zotlabs/Module/Cover_photo.php:405
-#: ../../Zotlabs/Module/Profile_photo.php:471 ../../Zotlabs/Module/Wiki.php:407
-#: ../../extend/addon/hzaddons/hsse/hsse.php:143
-msgid "Error getting photo link"
-msgstr "Ошибка получения ссылки на фотографию"
+#: ../../Zotlabs/Module/Invite.php:158
+msgid "Please join my community on $Projectname."
+msgstr "Присоединятесь к нашему сообществу $Projectname !"
-#: ../../include/conversation.php:1347 ../../Zotlabs/Module/Cover_photo.php:406
-#: ../../Zotlabs/Module/Profile_photo.php:472 ../../Zotlabs/Module/Wiki.php:408
-#: ../../extend/addon/hzaddons/hsse/hsse.php:144
-msgid "Error getting album"
-msgstr "Ошибка получения альбома"
+#: ../../Zotlabs/Module/Invite.php:160
+msgid "You will need to supply this invitation code:"
+msgstr "Вам нужно предоставит этот код приглашения:"
-#: ../../include/conversation.php:1348
-#: ../../extend/addon/hzaddons/hsse/hsse.php:145
-msgid "Comments enabled"
-msgstr "Комментарии включены"
+#: ../../Zotlabs/Module/Invite.php:161
+msgid "1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Зарегистрируйтесь на любом из серверов $Projectname"
-#: ../../include/conversation.php:1349
-#: ../../extend/addon/hzaddons/hsse/hsse.php:146
-msgid "Comments disabled"
-msgstr "Комментарии отключены"
+#: ../../Zotlabs/Module/Invite.php:163
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Введите сетевой адрес $Projectname в поисковой строке сайта"
-#: ../../include/conversation.php:1356 ../../Zotlabs/Module/Photos.php:1138
-#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Webpages.php:262
-#: ../../Zotlabs/Lib/ThreadItem.php:780
-#: ../../extend/addon/hzaddons/hsse/hsse.php:153
-msgid "Preview"
-msgstr "Предварительный просмотр"
+#: ../../Zotlabs/Module/Invite.php:164
+msgid "or visit"
+msgstr "или посетите"
-#: ../../include/conversation.php:1389 ../../Zotlabs/Module/Photos.php:1117
-#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Module/Blocks.php:161
-#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194
-#: ../../Zotlabs/Widget/Cdav.php:124
-#: ../../extend/addon/hzaddons/hsse/hsse.php:186
-msgid "Share"
-msgstr "Поделиться"
+#: ../../Zotlabs/Module/Invite.php:166
+msgid "3. Click [Connect]"
+msgstr "Нажать [Подключиться]"
-#: ../../include/conversation.php:1398
-#: ../../extend/addon/hzaddons/hsse/hsse.php:195
-msgid "Page link name"
-msgstr "Название ссылки на страницу "
+#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Permcats.php:128
+#: ../../Zotlabs/Module/Locs.php:121 ../../Zotlabs/Module/Mitem.php:259
+#: ../../Zotlabs/Module/Events.php:495 ../../Zotlabs/Module/Appman.php:155
+#: ../../Zotlabs/Module/Import_items.php:129 ../../Zotlabs/Module/Setup.php:308
+#: ../../Zotlabs/Module/Setup.php:349 ../../Zotlabs/Module/Connect.php:124
+#: ../../Zotlabs/Module/Admin/Features.php:66
+#: ../../Zotlabs/Module/Admin/Accounts.php:168
+#: ../../Zotlabs/Module/Admin/Logs.php:84
+#: ../../Zotlabs/Module/Admin/Channels.php:147
+#: ../../Zotlabs/Module/Admin/Themes.php:158
+#: ../../Zotlabs/Module/Admin/Site.php:289
+#: ../../Zotlabs/Module/Admin/Addons.php:441
+#: ../../Zotlabs/Module/Admin/Profs.php:178
+#: ../../Zotlabs/Module/Admin/Account_edit.php:73
+#: ../../Zotlabs/Module/Admin/Security.php:112
+#: ../../Zotlabs/Module/Settings/Channel.php:493
+#: ../../Zotlabs/Module/Settings/Features.php:46
+#: ../../Zotlabs/Module/Settings/Events.php:41
+#: ../../Zotlabs/Module/Settings/Calendar.php:41
+#: ../../Zotlabs/Module/Settings/Conversation.php:48
+#: ../../Zotlabs/Module/Settings/Connections.php:41
+#: ../../Zotlabs/Module/Settings/Photos.php:41
+#: ../../Zotlabs/Module/Settings/Account.php:103
+#: ../../Zotlabs/Module/Settings/Profiles.php:50
+#: ../../Zotlabs/Module/Settings/Manage.php:41
+#: ../../Zotlabs/Module/Settings/Channel_home.php:89
+#: ../../Zotlabs/Module/Settings/Directory.php:41
+#: ../../Zotlabs/Module/Settings/Editor.php:41
+#: ../../Zotlabs/Module/Settings/Display.php:189
+#: ../../Zotlabs/Module/Settings/Network.php:61
+#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326
+#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:574
+#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Cal.php:344
+#: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Photos.php:1097
+#: ../../Zotlabs/Module/Photos.php:1138 ../../Zotlabs/Module/Photos.php:1257
+#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Pdledit.php:107
+#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Connedit.php:904
+#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250
+#: ../../Zotlabs/Module/Email_validation.php:40
+#: ../../Zotlabs/Module/Pconfig.php:116 ../../Zotlabs/Module/Affinity.php:87
+#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Group.php:150
+#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Editpost.php:85 ../../Zotlabs/Module/Sources.php:125
+#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Module/Mail.php:431 ../../Zotlabs/Module/Filestorage.php:183
+#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Oauth.php:111
+#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../Zotlabs/Widget/Eventstools.php:16
+#: ../../Zotlabs/Widget/Wiki_pages.php:42
+#: ../../Zotlabs/Widget/Wiki_pages.php:99
+#: ../../view/theme/redbasic_c/php/config.php:95
+#: ../../view/theme/redbasic/php/config.php:94
+#: ../../addon/skeleton/Mod_Skeleton.php:51
+#: ../../addon/openclipatar/openclipatar.php:53
+#: ../../addon/wppost/Mod_Wppost.php:97 ../../addon/nsfw/Mod_Nsfw.php:61
+#: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/dwpost/Mod_Dwpost.php:71
+#: ../../addon/likebanner/likebanner.php:57
+#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:45
+#: ../../addon/ljpost/Mod_Ljpost.php:73
+#: ../../addon/startpage/Mod_Startpage.php:73
+#: ../../addon/diaspora/Mod_Diaspora.php:99
+#: ../../addon/photocache/Mod_Photocache.php:67
+#: ../../addon/hzfiles/hzfiles.php:84 ../../addon/mailtest/mailtest.php:100
+#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:56 ../../addon/rtof/Mod_Rtof.php:72
+#: ../../addon/jappixmini/Mod_Jappixmini.php:261
+#: ../../addon/channelreputation/channelreputation.php:140
+#: ../../addon/nofed/Mod_Nofed.php:53 ../../addon/redred/Mod_Redred.php:90
+#: ../../addon/logrot/logrot.php:35 ../../addon/frphotos/frphotos.php:97
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:63
+#: ../../addon/chords/Mod_Chords.php:60
+#: ../../addon/libertree/Mod_Libertree.php:70
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92
+#: ../../addon/statusnet/Mod_Statusnet.php:193
+#: ../../addon/statusnet/Mod_Statusnet.php:251
+#: ../../addon/statusnet/Mod_Statusnet.php:306
+#: ../../addon/statusnet/statusnet.php:602
+#: ../../addon/twitter/Mod_Twitter.php:184
+#: ../../addon/smileybutton/Mod_Smileybutton.php:55
+#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1264
+#: ../../addon/cart/submodules/manualcat.php:248
+#: ../../addon/cart/submodules/hzservices.php:640
+#: ../../addon/cart/submodules/subscriptions.php:410
+#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/Mod_Pageheader.php:54
+#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../addon/pumpio/Mod_Pumpio.php:115
+#: ../../addon/redfiles/redfiles.php:124 ../../addon/hubwall/hubwall.php:95
+#: ../../include/js_strings.php:22
+msgid "Submit"
+msgstr "Отправить"
-#: ../../include/conversation.php:1401
-#: ../../extend/addon/hzaddons/hsse/hsse.php:198
-msgid "Post as"
-msgstr "Опубликовать как"
+#: ../../Zotlabs/Module/Articles.php:51
+msgid "Articles App"
+msgstr "Приложение \"Статьи\""
-#: ../../include/conversation.php:1403 ../../Zotlabs/Lib/ThreadItem.php:771
-#: ../../extend/addon/hzaddons/hsse/hsse.php:200
-msgid "Bold"
-msgstr "Жирный"
+#: ../../Zotlabs/Module/Articles.php:52
+msgid "Create interactive articles"
+msgstr "Создать интерактивные статьи"
-#: ../../include/conversation.php:1404 ../../Zotlabs/Lib/ThreadItem.php:772
-#: ../../extend/addon/hzaddons/hsse/hsse.php:201
-msgid "Italic"
-msgstr "Курсив"
+#: ../../Zotlabs/Module/Articles.php:115
+msgid "Add Article"
+msgstr "Добавить статью"
-#: ../../include/conversation.php:1405 ../../Zotlabs/Lib/ThreadItem.php:773
-#: ../../extend/addon/hzaddons/hsse/hsse.php:202
-msgid "Underline"
-msgstr "Подчеркнутый"
+#: ../../Zotlabs/Module/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324
+#: ../../include/nav.php:512
+msgid "Articles"
+msgstr "Статьи"
-#: ../../include/conversation.php:1406 ../../Zotlabs/Lib/ThreadItem.php:774
-#: ../../extend/addon/hzaddons/hsse/hsse.php:203
-msgid "Quote"
-msgstr "Цитата"
+#: ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Article_edit.php:17
+#: ../../Zotlabs/Module/Article_edit.php:33
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editwebpage.php:80 ../../Zotlabs/Module/Editpost.php:24
+#: ../../Zotlabs/Module/Card_edit.php:17 ../../Zotlabs/Module/Card_edit.php:33
+msgid "Item not found"
+msgstr "Элемент не найден"
-#: ../../include/conversation.php:1407 ../../Zotlabs/Lib/ThreadItem.php:775
-#: ../../extend/addon/hzaddons/hsse/hsse.php:204
-msgid "Code"
-msgstr "Код"
+#: ../../Zotlabs/Module/Editlayout.php:128 ../../Zotlabs/Module/Layouts.php:129
+#: ../../Zotlabs/Module/Layouts.php:189
+msgid "Layout Name"
+msgstr "Название шаблона"
-#: ../../include/conversation.php:1408 ../../Zotlabs/Lib/ThreadItem.php:777
-#: ../../extend/addon/hzaddons/hsse/hsse.php:205
-msgid "Attach/Upload file"
-msgstr "Прикрепить/загрузить файл"
+#: ../../Zotlabs/Module/Editlayout.php:129 ../../Zotlabs/Module/Layouts.php:132
+msgid "Layout Description (Optional)"
+msgstr "Описание шаблона (необязательно)"
-#: ../../include/conversation.php:1411 ../../Zotlabs/Module/Wiki.php:400
-#: ../../extend/addon/hzaddons/hsse/hsse.php:208
-msgid "Embed an image from your albums"
-msgstr "Встроить изображение из ваших альбомов"
+#: ../../Zotlabs/Module/Editlayout.php:137
+msgid "Edit Layout"
+msgstr "Редактировать шаблон"
-#: ../../include/conversation.php:1412 ../../include/conversation.php:1461
-#: ../../Zotlabs/Module/Cdav.php:944 ../../Zotlabs/Module/Cdav.php:1233
-#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Oauth.php:112
-#: ../../Zotlabs/Module/Oauth.php:138 ../../Zotlabs/Module/Cover_photo.php:399
+#: ../../Zotlabs/Module/Editlayout.php:140 ../../Zotlabs/Module/Cdav.php:944
+#: ../../Zotlabs/Module/Cdav.php:1233 ../../Zotlabs/Module/Article_edit.php:131
+#: ../../Zotlabs/Module/Admin/Addons.php:426
#: ../../Zotlabs/Module/Oauth2.php:117 ../../Zotlabs/Module/Oauth2.php:145
-#: ../../Zotlabs/Module/Editlayout.php:140
-#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Fbrowser.php:66
-#: ../../Zotlabs/Module/Fbrowser.php:88
-#: ../../Zotlabs/Module/Admin/Addons.php:423
+#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Wiki.php:368
+#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Profile_photo.php:465
+#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Fbrowser.php:66
+#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:801
#: ../../Zotlabs/Module/Editwebpage.php:169
-#: ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Connedit.php:930
-#: ../../Zotlabs/Module/Card_edit.php:131
-#: ../../Zotlabs/Module/Article_edit.php:131 ../../Zotlabs/Module/Wiki.php:368
-#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Filer.php:55
-#: ../../extend/addon/hzaddons/hsse/hsse.php:209
-#: ../../extend/addon/hzaddons/hsse/hsse.php:258
+#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Filer.php:55
+#: ../../Zotlabs/Module/Cover_photo.php:399 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Card_edit.php:131
+#: ../../Zotlabs/Module/Oauth.php:112 ../../Zotlabs/Module/Oauth.php:138
+#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258
+#: ../../include/conversation.php:1415 ../../include/conversation.php:1464
msgid "Cancel"
msgstr "Отменить"
-#: ../../include/conversation.php:1413 ../../include/conversation.php:1460
-#: ../../Zotlabs/Module/Cover_photo.php:400
-#: ../../Zotlabs/Module/Profile_photo.php:466 ../../Zotlabs/Module/Wiki.php:402
-#: ../../extend/addon/hzaddons/hsse/hsse.php:210
-#: ../../extend/addon/hzaddons/hsse/hsse.php:257
-msgid "OK"
-msgstr ""
-
-#: ../../include/conversation.php:1415
-#: ../../extend/addon/hzaddons/hsse/hsse.php:212
-msgid "Toggle voting"
-msgstr "Подключить голосование"
-
-#: ../../include/conversation.php:1418
-#: ../../extend/addon/hzaddons/hsse/hsse.php:215
-msgid "Disable comments"
-msgstr "Отключить комментарии"
-
-#: ../../include/conversation.php:1419
-#: ../../extend/addon/hzaddons/hsse/hsse.php:216
-msgid "Toggle comments"
-msgstr "Переключить комментарии"
-
-#: ../../include/conversation.php:1424 ../../Zotlabs/Module/Photos.php:713
-#: ../../Zotlabs/Module/Photos.php:1083 ../../Zotlabs/Module/Editblock.php:129
-#: ../../Zotlabs/Module/Card_edit.php:117
-#: ../../Zotlabs/Module/Article_edit.php:117
-#: ../../extend/addon/hzaddons/hsse/hsse.php:221
-msgid "Title (optional)"
-msgstr "Заголовок (необязательно)"
-
-#: ../../include/conversation.php:1427
-#: ../../extend/addon/hzaddons/hsse/hsse.php:224
-msgid "Categories (optional, comma-separated list)"
-msgstr "Категории (необязательно, список через запятую)"
-
-#: ../../include/conversation.php:1428 ../../Zotlabs/Module/Events.php:481
-#: ../../extend/addon/hzaddons/hsse/hsse.php:225
-msgid "Permission settings"
-msgstr "Настройки разрешений"
-
-#: ../../include/conversation.php:1450
-#: ../../extend/addon/hzaddons/hsse/hsse.php:247
-msgid "Other networks and post services"
-msgstr "Другие сети и службы публикаций"
-
-#: ../../include/conversation.php:1453 ../../Zotlabs/Module/Mail.php:292
-#: ../../Zotlabs/Module/Mail.php:434
-#: ../../extend/addon/hzaddons/hsse/hsse.php:250
-msgid "Set expiration date"
-msgstr "Установить срок действия"
-
-#: ../../include/conversation.php:1456
-#: ../../extend/addon/hzaddons/hsse/hsse.php:253
-msgid "Set publish date"
-msgstr "Установить дату публикации"
-
-#: ../../include/conversation.php:1458 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Chat.php:221
-#: ../../Zotlabs/Lib/ThreadItem.php:784
-#: ../../extend/addon/hzaddons/hsse/hsse.php:255
-msgid "Encrypt text"
-msgstr "Зашифровать текст"
-
-#: ../../include/conversation.php:1696 ../../Zotlabs/Module/Photos.php:1180
-#: ../../Zotlabs/Lib/ThreadItem.php:223
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Не нравится"
-msgstr[1] "Не нравится"
-msgstr[2] "Не нравится"
-
-#: ../../include/conversation.php:1699
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "Посетит"
-msgstr[1] "Посетят"
-msgstr[2] "Посетят"
-
-#: ../../include/conversation.php:1702
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "Не посетит"
-msgstr[1] "Не посетят"
-msgstr[2] "Не посетят"
-
-#: ../../include/conversation.php:1705
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr "Не решил"
-
-#: ../../include/conversation.php:1708
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] "Согласен"
-msgstr[1] "Согласны"
-msgstr[2] "Согласны"
-
-#: ../../include/conversation.php:1711
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] "Не согласен"
-msgstr[1] "Не согласны"
-msgstr[2] "Не согласны"
-
-#: ../../include/conversation.php:1714
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] "Воздержался"
-msgstr[1] "Воздержались"
-msgstr[2] "Воздержались"
-
-#: ../../include/taxonomy.php:320
-msgid "Trending"
-msgstr "В тренде"
-
-#: ../../include/taxonomy.php:320 ../../include/taxonomy.php:449
-#: ../../include/taxonomy.php:470 ../../Zotlabs/Widget/Tagcloud.php:22
-msgid "Tags"
-msgstr "Теги"
-
-#: ../../include/taxonomy.php:552
-msgid "Keywords"
-msgstr "Ключевые слова"
-
-#: ../../include/taxonomy.php:573
-msgid "have"
-msgstr "иметь"
-
-#: ../../include/taxonomy.php:573
-msgid "has"
-msgstr "есть"
-
-#: ../../include/taxonomy.php:574
-msgid "want"
-msgstr "хотеть"
-
-#: ../../include/taxonomy.php:574
-msgid "wants"
-msgstr "хотеть"
-
-#: ../../include/taxonomy.php:575 ../../Zotlabs/Lib/ThreadItem.php:289
-msgid "like"
-msgstr "нравится"
-
-#: ../../include/taxonomy.php:575
-msgid "likes"
-msgstr "нравится"
-
-#: ../../include/taxonomy.php:576 ../../Zotlabs/Lib/ThreadItem.php:290
-msgid "dislike"
-msgstr "не нравится"
-
-#: ../../include/taxonomy.php:576
-msgid "dislikes"
-msgstr "не нравится"
-
-#: ../../include/language.php:436
-msgid "Select an alternate language"
-msgstr "Выбор дополнительного языка"
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Удалить этот элемент?"
-
-#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1136
-#: ../../Zotlabs/Module/Photos.php:1254 ../../Zotlabs/Lib/ThreadItem.php:769
-msgid "Comment"
-msgstr "Комментарий"
-
-#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:476
-#, php-format
-msgid "%s show all"
-msgstr "%s показать всё"
-
-#: ../../include/js_strings.php:8
-#, php-format
-msgid "%s show less"
-msgstr "%s показать меньше"
-
-#: ../../include/js_strings.php:9
-#, php-format
-msgid "%s expand"
-msgstr "%s развернуть"
-
-#: ../../include/js_strings.php:10
-#, php-format
-msgid "%s collapse"
-msgstr "%s свернуть"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Пароль слишком короткий"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Пароли не совпадают"
-
-#: ../../include/js_strings.php:13
-msgid "everybody"
-msgstr "все"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Тайный пароль"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Подсказка для пароля"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Уведомление: Права доступа изменились, но до сих пор не сохранены."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "закрыть все"
-
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Здесь нет ничего нового"
-
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Оценкa этoго канала (общедоступно)"
-
-#: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155
-#: ../../Zotlabs/Module/Connedit.php:876
-msgid "Rating"
-msgstr "Оценка"
-
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Охарактеризовать (необязательно)"
-
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Пожалуйста, введите URL ссылки"
-
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Есть несохраненные изменения. Вы уверены, что хотите покинуть эту страницу?"
-
-#: ../../include/js_strings.php:25 ../../Zotlabs/Module/Cdav.php:917
-#: ../../Zotlabs/Module/Profiles.php:509 ../../Zotlabs/Module/Profiles.php:734
-#: ../../Zotlabs/Module/Events.php:477 ../../Zotlabs/Module/Locs.php:117
-#: ../../Zotlabs/Module/Pubsites.php:52
-msgid "Location"
-msgstr "Место"
-
-#: ../../include/js_strings.php:26
-msgid "lovely"
-msgstr "прекрасно"
-
-#: ../../include/js_strings.php:27
-msgid "wonderful"
-msgstr "замечательно"
-
-#: ../../include/js_strings.php:28
-msgid "fantastic"
-msgstr "фантастично"
-
-#: ../../include/js_strings.php:29
-msgid "great"
-msgstr "отлично"
-
-#: ../../include/js_strings.php:30
-msgid ""
-"Your chosen nickname was either already taken or not valid. Please use our "
-"suggestion ("
-msgstr "Выбранный вами псевдоним уже используется или недействителен. Попробуйте использовать наше предложение ("
-
-#: ../../include/js_strings.php:31
-msgid ") or enter a new one."
-msgstr ") или введите новый."
-
-#: ../../include/js_strings.php:32
-msgid "Thank you, this nickname is valid."
-msgstr "Спасибо, этот псевдоним может быть использован."
-
-#: ../../include/js_strings.php:33
-msgid "A channel name is required."
-msgstr "Требуется название канала."
-
-#: ../../include/js_strings.php:34
-msgid "This is a "
-msgstr "Это "
-
-#: ../../include/js_strings.php:35
-msgid " channel name"
-msgstr " название канала"
-
-#: ../../include/js_strings.php:41
-#, php-format
-msgid "%d minutes"
-msgid_plural "%d minutes"
-msgstr[0] "%d минуту"
-msgstr[1] "%d минуты"
-msgstr[2] "%d минут"
-
-#: ../../include/js_strings.php:42
-#, php-format
-msgid "about %d hours"
-msgid_plural "about %d hours"
-msgstr[0] "около %d часa"
-msgstr[1] "около %d часов"
-msgstr[2] "около %d часов"
-
-#: ../../include/js_strings.php:43
-#, php-format
-msgid "%d days"
-msgid_plural "%d days"
-msgstr[0] "%d день"
-msgstr[1] "%d дня"
-msgstr[2] "%d дней"
-
-#: ../../include/js_strings.php:44
-#, php-format
-msgid "%d months"
-msgid_plural "%d months"
-msgstr[0] "%d месяц"
-msgstr[1] "%d месяца"
-msgstr[2] "%d месяцев"
-
-#: ../../include/js_strings.php:45
-#, php-format
-msgid "%d years"
-msgid_plural "%d years"
-msgstr[0] "%d год"
-msgstr[1] "%d года"
-msgstr[2] "%d лет"
-
-#: ../../include/js_strings.php:50
-msgid "timeago.prefixAgo"
-msgstr ""
-
-#: ../../include/js_strings.php:51
-msgid "timeago.prefixFromNow"
-msgstr "через"
-
-#: ../../include/js_strings.php:52
-msgid "timeago.suffixAgo"
-msgstr "назад"
-
-#: ../../include/js_strings.php:53
-msgid "timeago.suffixFromNow"
-msgstr ""
-
-#: ../../include/js_strings.php:56
-msgid "less than a minute"
-msgstr "менее чем одну минуту"
-
-#: ../../include/js_strings.php:57
-msgid "about a minute"
-msgstr "около минуты"
-
-#: ../../include/js_strings.php:59
-msgid "about an hour"
-msgstr "около часа"
-
-#: ../../include/js_strings.php:61
-msgid "a day"
-msgstr "день"
-
-#: ../../include/js_strings.php:63
-msgid "about a month"
-msgstr "около месяца"
-
-#: ../../include/js_strings.php:65
-msgid "about a year"
-msgstr "около года"
-
-#: ../../include/js_strings.php:67
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:68
-msgid "timeago.numbers"
-msgstr ""
-
-#: ../../include/js_strings.php:74
-msgctxt "long"
-msgid "May"
-msgstr "Май"
-
-#: ../../include/js_strings.php:82
-msgid "Jan"
-msgstr "Янв"
-
-#: ../../include/js_strings.php:83
-msgid "Feb"
-msgstr "Фев"
-
-#: ../../include/js_strings.php:84
-msgid "Mar"
-msgstr "Мар"
-
-#: ../../include/js_strings.php:85
-msgid "Apr"
-msgstr "Апр"
-
-#: ../../include/js_strings.php:86
-msgctxt "short"
-msgid "May"
-msgstr "Май"
-
-#: ../../include/js_strings.php:87
-msgid "Jun"
-msgstr "Июн"
-
-#: ../../include/js_strings.php:88
-msgid "Jul"
-msgstr "Июл"
-
-#: ../../include/js_strings.php:89
-msgid "Aug"
-msgstr "Авг"
-
-#: ../../include/js_strings.php:90
-msgid "Sep"
-msgstr "Сен"
-
-#: ../../include/js_strings.php:91
-msgid "Oct"
-msgstr "Окт"
-
-#: ../../include/js_strings.php:92
-msgid "Nov"
-msgstr "Ноя"
-
-#: ../../include/js_strings.php:93
-msgid "Dec"
-msgstr "Дек"
-
-#: ../../include/js_strings.php:101
-msgid "Sun"
-msgstr "Вск"
-
-#: ../../include/js_strings.php:102
-msgid "Mon"
-msgstr "Пон"
-
-#: ../../include/js_strings.php:103
-msgid "Tue"
-msgstr "Вт"
-
-#: ../../include/js_strings.php:104
-msgid "Wed"
-msgstr "Ср"
-
-#: ../../include/js_strings.php:105
-msgid "Thu"
-msgstr "Чет"
-
-#: ../../include/js_strings.php:106
-msgid "Fri"
-msgstr "Пят"
-
-#: ../../include/js_strings.php:107
-msgid "Sat"
-msgstr "Суб"
-
-#: ../../include/js_strings.php:108
-msgctxt "calendar"
-msgid "today"
-msgstr "сегодня"
-
-#: ../../include/js_strings.php:109
-msgctxt "calendar"
-msgid "month"
-msgstr "месяц"
-
-#: ../../include/js_strings.php:110
-msgctxt "calendar"
-msgid "week"
-msgstr "неделя"
-
-#: ../../include/js_strings.php:111
-msgctxt "calendar"
-msgid "day"
-msgstr "день"
-
-#: ../../include/js_strings.php:112
-msgctxt "calendar"
-msgid "All day"
-msgstr "Весь день"
-
-#: ../../include/dir_fns.php:141 ../../Zotlabs/Lib/Libzotdir.php:160
-msgid "Directory Options"
-msgstr "Параметры каталога"
-
-#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:162
-msgid "Safe Mode"
-msgstr "Безопасный режим"
-
-#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:163
-msgid "Public Forums Only"
-msgstr "Только публичные форумы"
-
-#: ../../include/dir_fns.php:145 ../../Zotlabs/Lib/Libzotdir.php:165
-msgid "This Website Only"
-msgstr "Только этот веб-сайт"
-
-#: ../../include/network.php:770
-msgid "view full size"
-msgstr "посмотреть в полный размер"
-
-#: ../../include/network.php:1773 ../../include/network.php:1774
-msgid "Friendica"
-msgstr ""
-
-#: ../../include/network.php:1775
-msgid "OStatus"
-msgstr ""
-
-#: ../../include/network.php:1776
-msgid "GNU-Social"
-msgstr ""
-
-#: ../../include/network.php:1777
-msgid "RSS/Atom"
-msgstr ""
-
-#: ../../include/network.php:1778 ../../Zotlabs/Lib/Activity.php:1417
-#: ../../Zotlabs/Lib/Activity.php:1614
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1204
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1359
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1538
-msgid "ActivityPub"
-msgstr ""
-
-#: ../../include/network.php:1779 ../../Zotlabs/Module/Cdav.php:1219
-#: ../../Zotlabs/Module/Profiles.php:787
-#: ../../Zotlabs/Module/Admin/Accounts.php:171
-#: ../../Zotlabs/Module/Admin/Accounts.php:183
-#: ../../Zotlabs/Module/Connedit.php:916
-#: ../../extend/addon/hzaddons/rtof/rtof.php:93
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:56
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:57
-#: ../../extend/addon/hzaddons/redred/redred.php:107
-msgid "Email"
-msgstr "Электронная почта"
-
-#: ../../include/network.php:1780
-msgid "Diaspora"
-msgstr ""
-
-#: ../../include/network.php:1781
-msgid "Facebook"
-msgstr ""
-
-#: ../../include/network.php:1782
-msgid "Zot"
-msgstr ""
-
-#: ../../include/network.php:1783
-msgid "LinkedIn"
-msgstr ""
-
-#: ../../include/network.php:1784
-msgid "XMPP/IM"
-msgstr ""
-
-#: ../../include/network.php:1785
-msgid "MySpace"
-msgstr ""
-
-#: ../../include/datetime.php:58 ../../Zotlabs/Module/Profiles.php:736
-#: ../../Zotlabs/Widget/Newmember.php:51
-msgid "Miscellaneous"
-msgstr "Прочее"
-
-#: ../../include/datetime.php:140
-msgid "Birthday"
-msgstr "День рождения"
-
-#: ../../include/datetime.php:140
-msgid "Age: "
-msgstr "Возраст:"
-
-#: ../../include/datetime.php:140
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "YYYY-MM-DD или MM-DD"
-
-#: ../../include/datetime.php:211 ../../Zotlabs/Module/Appman.php:143
-#: ../../Zotlabs/Module/Appman.php:144 ../../Zotlabs/Module/Profiles.php:745
-#: ../../Zotlabs/Module/Profiles.php:749 ../../Zotlabs/Module/Events.php:462
-#: ../../Zotlabs/Module/Events.php:467
-msgid "Required"
-msgstr "Требуется"
-
-#: ../../include/datetime.php:238 ../../boot.php:2557
-msgid "never"
-msgstr "никогда"
-
-#: ../../include/datetime.php:244
-msgid "less than a second ago"
-msgstr "менее чем одну секунду"
-
-#: ../../include/datetime.php:262
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s назад"
-
-#: ../../include/datetime.php:273
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "год"
-msgstr[1] "года"
-msgstr[2] "лет"
-
-#: ../../include/datetime.php:276
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "месяц"
-msgstr[1] "месяца"
-msgstr[2] "месяцев"
-
-#: ../../include/datetime.php:279
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "неделю"
-msgstr[1] "недели"
-msgstr[2] "недель"
-
-#: ../../include/datetime.php:282
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "день"
-msgstr[1] "дня"
-msgstr[2] "дней"
-
-#: ../../include/datetime.php:285
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "час"
-msgstr[1] "часа"
-msgstr[2] "часов"
-
-#: ../../include/datetime.php:288
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "минуту"
-msgstr[1] "минуты"
-msgstr[2] "минут"
-
-#: ../../include/datetime.php:291
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "секунду"
-msgstr[1] "секунды"
-msgstr[2] "секунд"
-
-#: ../../include/datetime.php:520
-#, php-format
-msgid "%1$s's birthday"
-msgstr "У %1$s День рождения"
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
+#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Share.php:71
+#: ../../Zotlabs/Module/Cloud.php:126 ../../Zotlabs/Module/Group.php:98
+#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:79
+#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Web/WebServer.php:122
+#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
+#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109
+#: ../../include/items.php:416
+msgid "Permission denied"
+msgstr "Доступ запрещен"
-#: ../../include/datetime.php:521
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "С Днем рождения %1$s !"
+#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
+msgid "Invalid profile identifier."
+msgstr "Неверный идентификатор профиля"
-#: ../../include/acl_selectors.php:33
-#: ../../Zotlabs/Lib/PermissionDescription.php:34
-msgid "Visible to your default audience"
-msgstr "Видно вашей аудитории по умолчанию."
+#: ../../Zotlabs/Module/Profperm.php:111
+msgid "Profile Visibility Editor"
+msgstr "Редактор видимости профиля"
-#: ../../include/acl_selectors.php:88 ../../Zotlabs/Module/Acl.php:121
-#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
-msgctxt "acl"
+#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:359
+#: ../../include/channel.php:1700
msgid "Profile"
msgstr "Профиль"
-#: ../../include/acl_selectors.php:106
-#: ../../Zotlabs/Lib/PermissionDescription.php:107
-msgid "Only me"
-msgstr "Только мне"
-
-#: ../../include/acl_selectors.php:113
-msgid "Who can see this?"
-msgstr "Кто может это видеть?"
-
-#: ../../include/acl_selectors.php:114
-msgid "Custom selection"
-msgstr "Настраиваемый выбор"
-
-#: ../../include/acl_selectors.php:115
-msgid ""
-"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit "
-"the scope of \"Show\"."
-msgstr "Нажмите \"Показать\" чтобы разрешить просмотр. \"Не показывать\" позволит вам переопределить и ограничить область показа."
-
-#: ../../include/acl_selectors.php:116
-msgid "Show"
-msgstr "Показать"
-
-#: ../../include/acl_selectors.php:117
-msgid "Don't show"
-msgstr "Не показывать"
-
-#: ../../include/acl_selectors.php:123 ../../Zotlabs/Module/Photos.php:717
-#: ../../Zotlabs/Module/Photos.php:1086 ../../Zotlabs/Module/Chat.php:243
-#: ../../Zotlabs/Module/Filestorage.php:170 ../../Zotlabs/Module/Thing.php:319
-#: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Connedit.php:682
-msgid "Permissions"
-msgstr "Разрешения"
-
-#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1308
-#: ../../Zotlabs/Lib/ThreadItem.php:438
-msgid "Close"
-msgstr "Закрыть"
-
-#: ../../include/acl_selectors.php:150
-#, php-format
-msgid ""
-"Post permissions %s cannot be changed %s after a post is shared.</br />These "
-"permissions set who is allowed to view the post."
-msgstr "Разрешения публикации %s не могут быть изменены %s после того, как ею поделились. Эти разрешения устанавливают кому разрешено просматривать эту публикацию."
-
-#: ../../include/zid.php:351
-#, php-format
-msgid "OpenWebAuth: %1$s welcomes %2$s"
-msgstr "OpenWebAuth: %1$s приветствует %2$s"
-
-#: ../../include/connections.php:133
-msgid "New window"
-msgstr "Новое окно"
-
-#: ../../include/connections.php:134
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Открыть выбранное местоположение в другом окне или вкладке браузера"
-
-#: ../../include/connections.php:696 ../../include/event.php:1311
-#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Profiles.php:792
-#: ../../Zotlabs/Module/Connedit.php:921
-msgid "Mobile"
-msgstr "Мобильный"
-
-#: ../../include/connections.php:697 ../../include/event.php:1312
-#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Profiles.php:793
-#: ../../Zotlabs/Module/Connedit.php:922
-msgid "Home"
-msgstr "Домашний"
-
-#: ../../include/connections.php:698 ../../include/event.php:1313
-msgid "Home, Voice"
-msgstr "Дом, голос"
-
-#: ../../include/connections.php:699 ../../include/event.php:1314
-msgid "Home, Fax"
-msgstr "Дом, факс"
-
-#: ../../include/connections.php:700 ../../include/event.php:1315
-#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Profiles.php:794
-#: ../../Zotlabs/Module/Connedit.php:923
-msgid "Work"
-msgstr "Рабочий"
-
-#: ../../include/connections.php:701 ../../include/event.php:1316
-msgid "Work, Voice"
-msgstr "Работа, голос"
-
-#: ../../include/connections.php:702 ../../include/event.php:1317
-msgid "Work, Fax"
-msgstr "Работа, факс"
-
-#: ../../include/event.php:24 ../../include/event.php:71
-msgid "l F d, Y \\@ g:i A"
-msgstr ""
-
-#: ../../include/event.php:32 ../../include/event.php:75
-msgid "Starts:"
-msgstr "Начало:"
-
-#: ../../include/event.php:42 ../../include/event.php:79
-msgid "Finishes:"
-msgstr "Окончание:"
-
-#: ../../include/event.php:1011
-msgid "This event has been added to your calendar."
-msgstr "Это событие было добавлено в ваш календарь."
-
-#: ../../include/event.php:1230
-msgid "Not specified"
-msgstr "Не указано"
-
-#: ../../include/event.php:1231
-msgid "Needs Action"
-msgstr "Требует действия"
-
-#: ../../include/event.php:1232
-msgid "Completed"
-msgstr "Завершено"
-
-#: ../../include/event.php:1233
-msgid "In Process"
-msgstr "В процессе"
-
-#: ../../include/event.php:1234
-msgid "Cancelled"
-msgstr "Отменено"
-
-#: ../../include/auth.php:192
-msgid "Delegation session ended."
-msgstr "Делегированная сессия завершена."
-
-#: ../../include/auth.php:196
-msgid "Logged out."
-msgstr "Вышел из системы."
-
-#: ../../include/auth.php:291
-msgid "Email validation is incomplete. Please check your email."
-msgstr "Проверка email не завершена. Пожалуйста, проверьте вашу почту."
-
-#: ../../include/auth.php:307
-msgid "Failed authentication"
-msgstr "Ошибка аутентификации"
-
-#: ../../include/auth.php:317
-#: ../../extend/addon/hzaddons/openid/Mod_Openid.php:188
-msgid "Login failed."
-msgstr "Не удалось войти."
-
-#: ../../include/nav.php:86
-msgid "Remote authentication"
-msgstr "Удаленная аутентификация"
-
-#: ../../include/nav.php:86
-msgid "Click to authenticate to your home hub"
-msgstr "Нажмите, чтобы аутентифицировать себя на домашнем узле"
-
-#: ../../include/nav.php:92 ../../Zotlabs/Module/Manage.php:170
-#: ../../Zotlabs/Lib/Apps.php:312
-msgid "Channel Manager"
-msgstr "Менеджер каналов"
-
-#: ../../include/nav.php:92
-msgid "Manage your channels"
-msgstr "Управление вашими каналами"
-
-#: ../../include/nav.php:95
-msgid "Manage your privacy groups"
-msgstr "Управление вашим группами безопасности"
-
-#: ../../include/nav.php:97 ../../Zotlabs/Module/Admin/Addons.php:344
-#: ../../Zotlabs/Module/Admin/Themes.php:125
-#: ../../Zotlabs/Widget/Newmember.php:53
-#: ../../Zotlabs/Widget/Settings_menu.php:68 ../../Zotlabs/Lib/Apps.php:314
-msgid "Settings"
-msgstr "Настройки"
-
-#: ../../include/nav.php:97
-msgid "Account/Channel Settings"
-msgstr "Настройки аккаунта / канала"
-
-#: ../../include/nav.php:103 ../../include/nav.php:132
-#: ../../include/nav.php:151 ../../boot.php:1623
-msgid "Logout"
-msgstr "Выход"
-
-#: ../../include/nav.php:103 ../../include/nav.php:132
-msgid "End this session"
-msgstr "Закончить эту сессию"
-
-#: ../../include/nav.php:106
-msgid "Your profile page"
-msgstr "Страницa вашего профиля"
-
-#: ../../include/nav.php:109
-msgid "Manage/Edit profiles"
-msgstr "Управление / редактирование профилей"
-
-#: ../../include/nav.php:111 ../../Zotlabs/Widget/Newmember.php:35
-msgid "Edit your profile"
-msgstr "Редактировать профиль"
-
-#: ../../include/nav.php:118 ../../include/nav.php:122 ../../boot.php:1624
-#: ../../Zotlabs/Lib/Apps.php:311
-msgid "Login"
-msgstr "Войти"
-
-#: ../../include/nav.php:118 ../../include/nav.php:122
-msgid "Sign in"
-msgstr "Войти"
-
-#: ../../include/nav.php:149
-msgid "Take me home"
-msgstr "Домой"
-
-#: ../../include/nav.php:151
-msgid "Log me out of this site"
-msgstr "Выйти с этого сайта"
-
-#: ../../include/nav.php:156 ../../boot.php:1604
-#: ../../Zotlabs/Module/Register.php:289
-msgid "Register"
-msgstr "Регистрация"
-
-#: ../../include/nav.php:156
-msgid "Create an account"
-msgstr "Создать аккаунт"
-
-#: ../../include/nav.php:168
-msgid "Help and documentation"
-msgstr "Справочная информация и документация"
-
-#: ../../include/nav.php:183
-msgid "Search site @name, !forum, #tag, ?docs, content"
-msgstr "Искать на сайте @имя, !форум, #тег, ?документ, содержимое"
-
-#: ../../include/nav.php:189 ../../Zotlabs/Widget/Admin.php:55
-msgid "Admin"
-msgstr "Администрирование"
-
-#: ../../include/nav.php:189
-msgid "Site Setup and Configuration"
-msgstr "Установка и конфигурация сайта"
-
-#: ../../include/nav.php:293 ../../Zotlabs/Module/Defperms.php:256
-#: ../../Zotlabs/Module/New_channel.php:157
-#: ../../Zotlabs/Module/New_channel.php:164
-#: ../../Zotlabs/Module/Connedit.php:858
-#: ../../Zotlabs/Widget/Notifications.php:162
-msgid "Loading"
-msgstr "Загрузка"
-
-#: ../../include/nav.php:299
-msgid "@name, !forum, #tag, ?doc, content"
-msgstr "@имя, !форум, #тег, ?документ, содержимое"
-
-#: ../../include/nav.php:300
-msgid "Please wait..."
-msgstr "Подождите пожалуйста ..."
-
-#: ../../include/nav.php:306
-msgid "Add Apps"
-msgstr "Добавить приложения"
-
-#: ../../include/nav.php:307
-msgid "Arrange Apps"
-msgstr "Упорядочить приложения"
-
-#: ../../include/nav.php:308
-msgid "Toggle System Apps"
-msgstr "Показать системные приложения"
-
-#: ../../include/nav.php:391 ../../Zotlabs/Module/Admin/Channels.php:154
-msgid "Channel"
-msgstr "Канал"
-
-#: ../../include/nav.php:394
-msgid "Status Messages and Posts"
-msgstr "Статусы и публикации"
-
-#: ../../include/nav.php:404 ../../Zotlabs/Module/Help.php:80
-msgid "About"
-msgstr "О себе"
-
-#: ../../include/nav.php:407
-msgid "Profile Details"
-msgstr "Информация о профиле"
-
-#: ../../include/nav.php:422 ../../Zotlabs/Storage/Browser.php:272
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:315
-msgid "Files"
-msgstr "Файлы"
-
-#: ../../include/nav.php:425
-msgid "Files and Storage"
-msgstr "Файлы и хранилище"
-
-#: ../../include/nav.php:433 ../../include/nav.php:436
-#: ../../Zotlabs/Storage/Browser.php:140
-msgid "Calendar"
-msgstr "Календарь"
-
-#: ../../include/nav.php:447 ../../include/nav.php:450
-#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:307
-msgid "Chatrooms"
-msgstr "Чаты"
-
-#: ../../include/nav.php:460 ../../Zotlabs/Lib/Apps.php:306
-msgid "Bookmarks"
-msgstr "Закладки"
-
-#: ../../include/nav.php:463
-msgid "Saved Bookmarks"
-msgstr "Сохранённые закладки"
-
-#: ../../include/nav.php:471 ../../Zotlabs/Module/Cards.php:203
-#: ../../Zotlabs/Lib/Apps.php:303
-msgid "Cards"
-msgstr "Карточки"
-
-#: ../../include/nav.php:474
-msgid "View Cards"
-msgstr "Просмотреть карточки"
-
-#: ../../include/nav.php:482 ../../Zotlabs/Module/Articles.php:214
-#: ../../Zotlabs/Lib/Apps.php:302
-msgid "Articles"
-msgstr "Статьи"
-
-#: ../../include/nav.php:485
-msgid "View Articles"
-msgstr "Просмотр статей"
-
-#: ../../include/nav.php:494 ../../Zotlabs/Module/Webpages.php:252
-#: ../../Zotlabs/Lib/Apps.php:316
-msgid "Webpages"
-msgstr "Веб-страницы"
-
-#: ../../include/nav.php:497
-msgid "View Webpages"
-msgstr "Просмотр веб-страниц"
-
-#: ../../include/nav.php:506 ../../Zotlabs/Module/Wiki.php:206
-#: ../../Zotlabs/Widget/Wiki_list.php:15
-msgid "Wikis"
-msgstr ""
-
-#: ../../include/nav.php:509 ../../Zotlabs/Lib/Apps.php:317
-msgid "Wiki"
-msgstr ""
-
-#: ../../include/bookmarks.php:34
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Закладки пользователя %1$s"
-
-#: ../../include/attach.php:265 ../../include/attach.php:374
-msgid "Item was not found."
-msgstr "Элемент не найден."
-
-#: ../../include/attach.php:282
-msgid "Unknown error."
-msgstr "Неизвестная ошибка."
-
-#: ../../include/attach.php:567
-msgid "No source file."
-msgstr "Нет исходного файла."
-
-#: ../../include/attach.php:589
-msgid "Cannot locate file to replace"
-msgstr "Не удается найти файл для замены"
-
-#: ../../include/attach.php:608
-msgid "Cannot locate file to revise/update"
-msgstr "Не удается найти файл для пересмотра / обновления"
-
-#: ../../include/attach.php:750
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Файл превышает предельный размер %d"
-
-#: ../../include/attach.php:771
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Вы достигли предела %1$.0f Мбайт для хранения вложений."
-
-#: ../../include/attach.php:953
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Загрузка файла не удалась. Возможно система перегружена или попытка прекращена."
-
-#: ../../include/attach.php:982
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Файл для сохранения не может быть проверен. Загрузка не удалась."
-
-#: ../../include/attach.php:1056 ../../include/attach.php:1072
-msgid "Path not available."
-msgstr "Путь недоступен."
-
-#: ../../include/attach.php:1121 ../../include/attach.php:1286
-msgid "Empty pathname"
-msgstr "Пустое имя пути"
-
-#: ../../include/attach.php:1147
-msgid "duplicate filename or path"
-msgstr "дублирующееся имя файла или пути"
-
-#: ../../include/attach.php:1172
-msgid "Path not found."
-msgstr "Путь не найден."
-
-#: ../../include/attach.php:1240
-msgid "mkdir failed."
-msgstr "mkdir не удался"
-
-#: ../../include/attach.php:1244
-msgid "database storage failed."
-msgstr "ошибка при записи базы данных."
-
-#: ../../include/attach.php:1292
-msgid "Empty path"
-msgstr "Пустое имя пути"
-
-#: ../../include/photo/photo_driver.php:774
-#: ../../Zotlabs/Module/Profile_photo.php:120
-#: ../../Zotlabs/Module/Profile_photo.php:248
-msgid "Profile Photos"
-msgstr "Фотографии профиля"
-
-#: ../../boot.php:1603
-msgid "Create an account to access services and applications"
-msgstr "Создайте аккаунт для доступа к службам и приложениям"
-
-#: ../../boot.php:1627
-msgid "Login/Email"
-msgstr "Пользователь / email"
-
-#: ../../boot.php:1628
-msgid "Password"
-msgstr "Пароль"
-
-#: ../../boot.php:1629
-msgid "Remember me"
-msgstr "Запомнить меня"
-
-#: ../../boot.php:1632
-msgid "Forgot your password?"
-msgstr "Забыли пароль или логин?"
-
-#: ../../boot.php:1633 ../../Zotlabs/Module/Lostpass.php:91
-msgid "Password Reset"
-msgstr "Сбросить пароль"
-
-#: ../../boot.php:2430
-#, php-format
-msgid "[$Projectname] Website SSL error for %s"
-msgstr "[$Projectname] Ошибка SSL/TLS веб-сайта для %s"
-
-#: ../../boot.php:2435
-msgid "Website SSL certificate is not valid. Please correct."
-msgstr "SSL/TLS сертификат веб-сайт недействителен. Исправьте это."
-
-#: ../../boot.php:2551
-#, php-format
-msgid "[$Projectname] Cron tasks not running on %s"
-msgstr "[$Projectname] Задания Cron не запущены на %s"
-
-#: ../../boot.php:2556
-msgid "Cron/Scheduled tasks not running."
-msgstr "Задания Cron / планировщика не запущены."
-
-#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:289
-msgid "parent"
-msgstr "источник"
-
-#: ../../Zotlabs/Storage/Browser.php:134
-msgid "Principal"
-msgstr "Субъект"
-
-#: ../../Zotlabs/Storage/Browser.php:137
-msgid "Addressbook"
-msgstr "Адресная книга"
-
-#: ../../Zotlabs/Storage/Browser.php:143
-msgid "Schedule Inbox"
-msgstr "План занятий входящий"
-
-#: ../../Zotlabs/Storage/Browser.php:146
-msgid "Schedule Outbox"
-msgstr "План занятий исходящий"
-
-#: ../../Zotlabs/Storage/Browser.php:273
-msgid "Total"
-msgstr "Всего"
-
-#: ../../Zotlabs/Storage/Browser.php:275
-msgid "Shared"
-msgstr "Общие"
-
-#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:390
-#: ../../Zotlabs/Module/Cdav.php:1230 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Menu.php:181
-#: ../../Zotlabs/Module/Webpages.php:254 ../../Zotlabs/Module/Connedit.php:927
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:108
-#: ../../Zotlabs/Module/Cards.php:109 ../../Zotlabs/Module/Layouts.php:185
-#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
-msgid "Create"
-msgstr "Создать"
-
-#: ../../Zotlabs/Storage/Browser.php:277
-msgid "Add Files"
-msgstr "Добавить файлы"
-
-#: ../../Zotlabs/Storage/Browser.php:280 ../../Zotlabs/Lib/ThreadItem.php:154
-msgid "Admin Delete"
-msgstr "Удалено администратором"
-
-#: ../../Zotlabs/Storage/Browser.php:285 ../../Zotlabs/Module/Cdav.php:1215
-#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139
-#: ../../Zotlabs/Module/Sharedwithme.php:104 ../../Zotlabs/Module/Chat.php:259
-#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146
-#: ../../Zotlabs/Module/Admin/Channels.php:159
-#: ../../Zotlabs/Module/Connedit.php:912 ../../Zotlabs/Module/Group.php:144
-#: ../../Zotlabs/Module/Wiki.php:218
-#: ../../Zotlabs/Widget/Wiki_page_history.php:22
-#: ../../Zotlabs/Lib/NativeWikiPage.php:561
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:172
-msgid "Name"
-msgstr "Имя"
-
-#: ../../Zotlabs/Storage/Browser.php:286 ../../Zotlabs/Module/Wiki.php:219
-msgid "Type"
-msgstr "Тип"
-
-#: ../../Zotlabs/Storage/Browser.php:288
-#: ../../Zotlabs/Module/Sharedwithme.php:107
-msgid "Last Modified"
-msgstr "Последнее изменение"
-
-#: ../../Zotlabs/Storage/Browser.php:361
-#, php-format
-msgid "You are using %1$s of your available file storage."
-msgstr "Вы используете %1$s из доступного вам хранилища файлов."
-
-#: ../../Zotlabs/Storage/Browser.php:366
-#, php-format
-msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
-msgstr "Вы используете %1$s из %2$s доступного хранилища файлов (%3$s&#37;)."
-
-#: ../../Zotlabs/Storage/Browser.php:377
-msgid "WARNING:"
-msgstr "Предупреждение:"
-
-#: ../../Zotlabs/Storage/Browser.php:389
-msgid "Create new folder"
-msgstr "Создать новую папку"
-
-#: ../../Zotlabs/Storage/Browser.php:391
-msgid "Upload file"
-msgstr "Загрузить файл"
-
-#: ../../Zotlabs/Storage/Browser.php:392 ../../Zotlabs/Module/Photos.php:727
-#: ../../Zotlabs/Module/Cover_photo.php:395
-#: ../../Zotlabs/Module/Embedphotos.php:158
-#: ../../Zotlabs/Module/Profile_photo.php:459
-#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Cdav.php:133
-#: ../../Zotlabs/Widget/Cdav.php:169 ../../Zotlabs/Widget/Album.php:97
-msgid "Upload"
-msgstr "Загрузка"
-
-#: ../../Zotlabs/Storage/Browser.php:404
-msgid "Drop files here to immediately upload"
-msgstr "Поместите файлы сюда для немедленной загрузки"
-
-#: ../../Zotlabs/Storage/Browser.php:405
-#: ../../Zotlabs/Module/Filestorage.php:186
-msgid "Show in your contacts shared folder"
-msgstr "Показать общий каталог в ваших контактах"
-
-#: ../../Zotlabs/Zot/Auth.php:152
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please "
-"logout and retry."
-msgstr "Удалённая аутентификация заблокирована. Вы вошли на этот сайт локально. Пожалуйста, выйдите и попробуйте ещё раз."
-
-#: ../../Zotlabs/Zot/Auth.php:264
-#: ../../extend/addon/hzaddons/openid/Mod_Openid.php:76
-#: ../../extend/addon/hzaddons/openid/Mod_Openid.php:178
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Добро пожаловать %s. Удаленная аутентификация успешно завершена."
-
-#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25
-msgid "This site is not a directory server"
-msgstr "Этот сайт не является сервером каталога"
-
-#: ../../Zotlabs/Module/Mail.php:73
-msgid "Unable to lookup recipient."
-msgstr "Не удалось найти получателя."
-
-#: ../../Zotlabs/Module/Mail.php:80
-msgid "Unable to communicate with requested channel."
-msgstr "Не удалось установить связь с запрашиваемым каналом."
-
-#: ../../Zotlabs/Module/Mail.php:87
-msgid "Cannot verify requested channel."
-msgstr "Не удалось установить подлинность требуемого канала."
-
-#: ../../Zotlabs/Module/Mail.php:105
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Выбранный канал ограничивает частные сообщения. Отправка не удалась."
-
-#: ../../Zotlabs/Module/Mail.php:160
-msgid "Messages"
-msgstr "Сообщения"
-
-#: ../../Zotlabs/Module/Mail.php:173
-msgid "message"
-msgstr "сообщение"
-
-#: ../../Zotlabs/Module/Mail.php:214
-msgid "Message recalled."
-msgstr "Сообщение отозванно."
-
-#: ../../Zotlabs/Module/Mail.php:227
-msgid "Conversation removed."
-msgstr "Беседа удалена."
-
-#: ../../Zotlabs/Module/Mail.php:242 ../../Zotlabs/Module/Mail.php:363
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Истекает YYYY-MM-DD HH:MM"
-
-#: ../../Zotlabs/Module/Mail.php:270
-msgid "Requested channel is not in this network"
-msgstr "Запрашиваемый канал не доступен."
-
-#: ../../Zotlabs/Module/Mail.php:278
-msgid "Send Private Message"
-msgstr "Отправить личное сообщение"
-
-#: ../../Zotlabs/Module/Mail.php:279 ../../Zotlabs/Module/Mail.php:421
-msgid "To:"
-msgstr "Кому:"
-
-#: ../../Zotlabs/Module/Mail.php:282 ../../Zotlabs/Module/Mail.php:423
-msgid "Subject:"
-msgstr "Тема:"
-
-#: ../../Zotlabs/Module/Mail.php:285 ../../Zotlabs/Module/Invite.php:157
-msgid "Your message:"
-msgstr "Сообщение:"
-
-#: ../../Zotlabs/Module/Mail.php:287 ../../Zotlabs/Module/Mail.php:429
-msgid "Attach file"
-msgstr "Прикрепить файл"
-
-#: ../../Zotlabs/Module/Mail.php:289
-msgid "Send"
-msgstr "Отправить"
-
-#: ../../Zotlabs/Module/Mail.php:393
-msgid "Delete message"
-msgstr "Удалить сообщение"
-
-#: ../../Zotlabs/Module/Mail.php:394
-msgid "Delivery report"
-msgstr "Отчёт о доставке"
-
-#: ../../Zotlabs/Module/Mail.php:395
-msgid "Recall message"
-msgstr "Отозвать сообщение"
-
-#: ../../Zotlabs/Module/Mail.php:397
-msgid "Message has been recalled."
-msgstr "Сообщение отозванно"
-
-#: ../../Zotlabs/Module/Mail.php:414
-msgid "Delete Conversation"
-msgstr "Удалить беседу"
-
-#: ../../Zotlabs/Module/Mail.php:416
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Безопасная связь недоступна. Вы <strong>можете</strong> попытаться ответить со страницы профиля отправителя."
-
-#: ../../Zotlabs/Module/Mail.php:420
-msgid "Send Reply"
-msgstr "Отправить ответ"
-
-#: ../../Zotlabs/Module/Mail.php:425
-#, php-format
-msgid "Your message for %s (%s):"
-msgstr "Ваше сообщение для %s (%s):"
-
-#: ../../Zotlabs/Module/Pconfig.php:27 ../../Zotlabs/Module/Pconfig.php:63
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Этот параметр требует специальной обработки и редактирования и был заблокирован."
-
-#: ../../Zotlabs/Module/Pconfig.php:52
-msgid "Configuration Editor"
-msgstr "Редактор конфигурации"
-
-#: ../../Zotlabs/Module/Pconfig.php:53
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please "
-"leave this page unless you are comfortable with and knowledgeable about how "
-"to correctly use this feature."
-msgstr "Предупреждение. Изменение некоторых настроек может привести к неработоспособности вашего канала. Пожалуйста, покиньте эту страницу, если вы точно не значете, как правильно использовать эту функцию."
-
-#: ../../Zotlabs/Module/Defperms.php:67 ../../Zotlabs/Module/Connedit.php:81
-msgid "Could not access contact record."
-msgstr "Не удалось получить доступ к записи контакта."
-
-#: ../../Zotlabs/Module/Defperms.php:111
-#: ../../Zotlabs/Module/Settings/Channel.php:266
-#: ../../extend/addon/hzaddons/twitter/twitter.php:775
-#: ../../extend/addon/hzaddons/logrot/logrot.php:54
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:184
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:82
-#: ../../extend/addon/hzaddons/piwik/piwik.php:116
-#: ../../extend/addon/hzaddons/msgfooter/msgfooter.php:54
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:102
-msgid "Settings updated."
-msgstr "Настройки обновлены."
-
-#: ../../Zotlabs/Module/Defperms.php:189
-msgid "Default Permissions App"
-msgstr "Приложение \"Разрешения по умолчанию\""
-
-#: ../../Zotlabs/Module/Defperms.php:189 ../../Zotlabs/Module/Permcats.php:62
-#: ../../Zotlabs/Module/Poke.php:165 ../../Zotlabs/Module/Cdav.php:839
-#: ../../Zotlabs/Module/Cdav.php:848 ../../Zotlabs/Module/Oauth.php:100
-#: ../../Zotlabs/Module/Pubstream.php:20 ../../Zotlabs/Module/Sources.php:88
-#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Oauth2.php:106
-#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Bookmarks.php:78
-#: ../../Zotlabs/Module/Probe.php:18 ../../Zotlabs/Module/Tokens.php:99
-#: ../../Zotlabs/Module/Notes.php:55 ../../Zotlabs/Module/Webpages.php:48
-#: ../../Zotlabs/Module/Group.php:101 ../../Zotlabs/Module/Mood.php:134
-#: ../../Zotlabs/Module/Lang.php:17 ../../Zotlabs/Module/Randprof.php:29
-#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:43
-#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Pdledit.php:42
-#: ../../Zotlabs/Module/Wiki.php:52 ../../Zotlabs/Module/Suggest.php:40
-#: ../../Zotlabs/Module/Cards.php:46
-msgid "Not Installed"
-msgstr "не установлено"
-
-#: ../../Zotlabs/Module/Defperms.php:190
-msgid "Set custom default permissions for new connections"
-msgstr "Настройка пользовательских разрешений по умолчанию для новых подключений "
-
-#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:856
-msgid "Connection Default Permissions"
-msgstr "Разрешения по умолчанию для контакта"
-
-#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:857
-msgid "Apply these permissions automatically"
-msgstr "Применить эти разрешения автоматически"
-
-#: ../../Zotlabs/Module/Defperms.php:255
-#: ../../Zotlabs/Module/Settings/Channel.php:470
-msgid ""
-"If enabled, connection requests will be approved without your interaction"
-msgstr "Если включено, запросы контактов будут одобрены без вашего участия"
-
-#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:858
-msgid "Permission role"
-msgstr "Роль разрешения"
-
-#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:859
-msgid "Add permission role"
-msgstr "Добавить роль разрешения"
-
-#: ../../Zotlabs/Module/Defperms.php:261 ../../Zotlabs/Module/Connedit.php:872
-msgid ""
-"The permissions indicated on this page will be applied to all new "
-"connections."
-msgstr "Разрешения, указанные на этой странице, будут применяться ко всем новым соединениям."
-
-#: ../../Zotlabs/Module/Defperms.php:262
-msgid "Automatic approval settings"
-msgstr "Настройки автоматического одобрения"
-
-#: ../../Zotlabs/Module/Defperms.php:264 ../../Zotlabs/Module/Permcats.php:123
-#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Connedit.php:892
-msgid "inherited"
-msgstr "наследуется"
-
-#: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Permcats.php:121
-#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Connedit.php:897
-msgid "My Settings"
-msgstr "Мои настройки"
-
-#: ../../Zotlabs/Module/Defperms.php:269 ../../Zotlabs/Module/Permcats.php:126
-#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Connedit.php:899
-msgid "Individual Permissions"
-msgstr "Индивидуальные разрешения"
-
-#: ../../Zotlabs/Module/Defperms.php:270
-msgid ""
-"Some individual permissions may have been preset or locked based on your "
-"channel type and privacy settings."
-msgstr "Некоторые индивидуальные разрешения могут быть предустановлены или заблокированы на основании типа вашего канала и настроек приватности."
-
-#: ../../Zotlabs/Module/Permcats.php:28
-msgid "Permission category name is required."
-msgstr "Требуется категория разрешений."
-
-#: ../../Zotlabs/Module/Permcats.php:47
-msgid "Permission category saved."
-msgstr "Категория разрешения сохранена."
-
-#: ../../Zotlabs/Module/Permcats.php:62
-msgid "Permission Categories App"
-msgstr "Приложение \"Категории разрешений\""
-
-#: ../../Zotlabs/Module/Permcats.php:63
-msgid "Create custom connection permission limits"
-msgstr "Создать пользовательские ограничения на доступ к подключению"
-
-#: ../../Zotlabs/Module/Permcats.php:79
-msgid ""
-"Use this form to create permission rules for various classes of people or "
-"connections."
-msgstr "Используйте эту форму для создания правил разрешений для различных групп людей и контактов."
-
-#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:350
-msgid "Permission Categories"
-msgstr "Категории разрешений"
-
-#: ../../Zotlabs/Module/Permcats.php:120
-msgid "Permission category name"
-msgstr "Наименование категории разрешений"
-
-#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187
-#: ../../Zotlabs/Module/Connedit.php:900
-msgid ""
-"Some permissions may be inherited from your channel's <a href=\"settings"
-"\"><strong>privacy settings</strong></a>, which have higher priority than "
-"individual settings. You can <strong>not</strong> change those settings here."
-msgstr "Некоторые разрешения могут наследовать из <a href=\"settings\"><strong>настроек приватности</strong></a> ваших каналов которые могут иметь более высокий приоритет чем индивидуальные. Вы <strong>не можете</strong> менять эти настройки здесь."
-
-#: ../../Zotlabs/Module/Xchan.php:10
-msgid "Xchan Lookup"
-msgstr "Поиск Xchan"
-
-#: ../../Zotlabs/Module/Xchan.php:13
-msgid "Lookup xchan beginning with (or webbie): "
-msgstr "Запрос Xchan начинается с (или webbie):"
-
-#: ../../Zotlabs/Module/Xchan.php:41 ../../Zotlabs/Module/Menu.php:231
-#: ../../Zotlabs/Module/Mitem.php:134
-msgid "Not found."
-msgstr "Не найдено."
-
-#: ../../Zotlabs/Module/Dreport.php:56
-msgid "Invalid message"
-msgstr "Неверное сообщение"
-
-#: ../../Zotlabs/Module/Dreport.php:89
-msgid "no results"
-msgstr "Ничего не найдено."
-
-#: ../../Zotlabs/Module/Dreport.php:103
-msgid "channel sync processed"
-msgstr "синхронизация канала завершена"
-
-#: ../../Zotlabs/Module/Dreport.php:107
-msgid "queued"
-msgstr "в очереди"
-
-#: ../../Zotlabs/Module/Dreport.php:111
-msgid "posted"
-msgstr "опубликовано"
-
-#: ../../Zotlabs/Module/Dreport.php:115
-msgid "accepted for delivery"
-msgstr "принято к доставке"
-
-#: ../../Zotlabs/Module/Dreport.php:119
-msgid "updated"
-msgstr "обновлено"
-
-#: ../../Zotlabs/Module/Dreport.php:122
-msgid "update ignored"
-msgstr "обновление игнорируется"
-
-#: ../../Zotlabs/Module/Dreport.php:125
-msgid "permission denied"
-msgstr "доступ запрещен"
-
-#: ../../Zotlabs/Module/Dreport.php:129
-msgid "recipient not found"
-msgstr "получатель не найден"
-
-#: ../../Zotlabs/Module/Dreport.php:132
-msgid "mail recalled"
-msgstr "почта отозвана"
-
-#: ../../Zotlabs/Module/Dreport.php:135
-msgid "duplicate mail received"
-msgstr "получено дублирующее сообщение"
-
-#: ../../Zotlabs/Module/Dreport.php:138
-msgid "mail delivered"
-msgstr "почта доставлен"
-
-#: ../../Zotlabs/Module/Dreport.php:158
-#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Отчёт о доставке для %1$s"
-
-#: ../../Zotlabs/Module/Dreport.php:161 ../../Zotlabs/Widget/Wiki_pages.php:41
-#: ../../Zotlabs/Widget/Wiki_pages.php:98
-msgid "Options"
-msgstr "Параметры"
-
-#: ../../Zotlabs/Module/Dreport.php:162
-msgid "Redeliver"
-msgstr "Доставить повторно"
-
-#: ../../Zotlabs/Module/Network.php:107
-msgid "No such group"
-msgstr "Нет такой группы"
-
-#: ../../Zotlabs/Module/Network.php:149
-msgid "No such channel"
-msgstr "Нет такого канала"
-
-#: ../../Zotlabs/Module/Network.php:164 ../../Zotlabs/Module/Channel.php:177
-msgid "Search Results For:"
-msgstr "Результаты поиска для:"
-
-#: ../../Zotlabs/Module/Network.php:194 ../../Zotlabs/Module/Display.php:80
-#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Channel.php:212
-#: ../../Zotlabs/Module/Hq.php:134
-msgid "Reset form"
-msgstr "Очистить форму"
-
-#: ../../Zotlabs/Module/Network.php:233
-msgid "Privacy group is empty"
-msgstr "Группа безопасности пуста"
-
-#: ../../Zotlabs/Module/Network.php:243
-msgid "Privacy group: "
-msgstr "Группа безопасности: "
-
-#: ../../Zotlabs/Module/Network.php:316
-#: ../../extend/addon/hzaddons/redred/redred.php:65
-msgid "Invalid channel."
-msgstr "Недействительный канал."
-
-#: ../../Zotlabs/Module/Email_validation.php:24
-#: ../../Zotlabs/Module/Email_resend.php:12
-msgid "Token verification failed."
-msgstr "Не удалось выполнить проверку токена."
-
-#: ../../Zotlabs/Module/Email_validation.php:36
-msgid "Email Verification Required"
-msgstr "Требуется проверка адреса email"
-
-#: ../../Zotlabs/Module/Email_validation.php:37
-#, php-format
-msgid ""
-"A verification token was sent to your email address [%s]. Enter that token "
-"here to complete the account verification step. Please allow a few minutes "
-"for delivery, and check your spam folder if you do not see the message."
-msgstr "Проверочный токен был выслн на ваш адрес электронной почты [%s]. Введите этот токен здесь для завершения этапа проверки учётной записи. Пожалуйста, подождите несколько минут для завершения доставки и проверьте вашу папку \"Спам\" если вы не видите письма."
-
-#: ../../Zotlabs/Module/Email_validation.php:38
-msgid "Resend Email"
-msgstr "Выслать повторно"
-
-#: ../../Zotlabs/Module/Email_validation.php:41
-msgid "Validation token"
-msgstr "Проверочный токен"
-
-#: ../../Zotlabs/Module/Common.php:14
-msgid "No channel."
-msgstr "Канала нет."
-
-#: ../../Zotlabs/Module/Common.php:45
-msgid "No connections in common."
-msgstr "Общих контактов нет."
-
-#: ../../Zotlabs/Module/Common.php:65
-msgid "View Common Connections"
-msgstr "Просмотр общий контактов"
-
-#: ../../Zotlabs/Module/Acl.php:360
-msgid "network"
-msgstr "сеть"
-
-#: ../../Zotlabs/Module/Item.php:196
-msgid "Unable to locate original post."
-msgstr "Не удалось найти оригинальную публикацию."
-
-#: ../../Zotlabs/Module/Item.php:483
-msgid "Empty post discarded."
-msgstr "Пустая публикация отклонена."
-
-#: ../../Zotlabs/Module/Item.php:892
-msgid "Duplicate post suppressed."
-msgstr "Подавлена дублирующаяся публикация."
-
-#: ../../Zotlabs/Module/Item.php:1037
-msgid "System error. Post not saved."
-msgstr "Системная ошибка. Публикация не сохранена."
-
-#: ../../Zotlabs/Module/Item.php:1073
-msgid "Your comment is awaiting approval."
-msgstr "Ваш комментарий ожидает одобрения."
-
-#: ../../Zotlabs/Module/Item.php:1190
-msgid "Unable to obtain post information from database."
-msgstr "Невозможно получить информацию о публикации из базы данных"
-
-#: ../../Zotlabs/Module/Item.php:1197
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Вы достигли вашего ограничения в %1$.0f публикаций высокого уровня."
-
-#: ../../Zotlabs/Module/Item.php:1204
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Вы достигли вашего ограничения в %1$.0f страниц."
-
-#: ../../Zotlabs/Module/Achievements.php:38
-msgid "Some blurb about what to do when you're new here"
-msgstr "Некоторые предложения о том, что делать, если вы здесь новичок "
-
-#: ../../Zotlabs/Module/Display.php:29 ../../Zotlabs/Module/Directory.php:67
-#: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Photos.php:558
-#: ../../Zotlabs/Module/Viewconnections.php:23
-#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Search.php:17
-msgid "Public access denied."
-msgstr "Публичный доступ запрещен."
-
-#: ../../Zotlabs/Module/Display.php:374 ../../Zotlabs/Module/Channel.php:468
-msgid ""
-"You must enable javascript for your browser to be able to view this content."
-msgstr "Для просмотра этого содержимого в вашем браузере должен быть включён JavaScript"
-
-#: ../../Zotlabs/Module/Display.php:393
-msgid "Article"
-msgstr "Статья"
-
-#: ../../Zotlabs/Module/Display.php:445
-msgid "Item has been removed."
-msgstr "Элемент был удалён."
-
-#: ../../Zotlabs/Module/Ping.php:337
-msgid "sent you a private message"
-msgstr "отправил вам личное сообщение"
-
-#: ../../Zotlabs/Module/Ping.php:390
-msgid "added your channel"
-msgstr "добавил ваш канал"
-
-#: ../../Zotlabs/Module/Ping.php:414
-msgid "requires approval"
-msgstr "Требуется подтверждение"
-
-#: ../../Zotlabs/Module/Ping.php:424
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: ../../Zotlabs/Module/Ping.php:442
-msgid "[today]"
-msgstr "[сегодня]"
-
-#: ../../Zotlabs/Module/Ping.php:451
-msgid "posted an event"
-msgstr "событие опубликовано"
-
-#: ../../Zotlabs/Module/Ping.php:484
-msgid "shared a file with you"
-msgstr "с вами поделились файлом"
-
-#: ../../Zotlabs/Module/Ping.php:665
-msgid "Private forum"
-msgstr "Частный форум"
-
-#: ../../Zotlabs/Module/Ping.php:665
-msgid "Public forum"
-msgstr "Публичный форум"
-
-#: ../../Zotlabs/Module/Poke.php:165
-msgid "Poke App"
-msgstr "Приложение \"Ткнуть\""
-
-#: ../../Zotlabs/Module/Poke.php:166
-msgid "Poke somebody in your addressbook"
-msgstr "Ткнуть кого-нибудь в вашей адресной книге"
-
-#: ../../Zotlabs/Module/Poke.php:200
-msgid "Poke somebody"
-msgstr "Ткнуть кого-нибудь"
-
-#: ../../Zotlabs/Module/Poke.php:203
-msgid "Poke/Prod"
-msgstr "Толкнуть / подтолкнуть"
-
-#: ../../Zotlabs/Module/Poke.php:204
-msgid "Poke, prod or do other things to somebody"
-msgstr "Толкнуть, подтолкнуть или сделать что-то ещё с кем-то"
-
-#: ../../Zotlabs/Module/Poke.php:211
-msgid "Recipient"
-msgstr "Получатель"
-
-#: ../../Zotlabs/Module/Poke.php:212
-msgid "Choose what you wish to do to recipient"
-msgstr "Выбрать что вы хотите сделать с получателем"
-
-#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216
-msgid "Make this post private"
-msgstr "Сделать эту публикацию приватной"
-
-#: ../../Zotlabs/Module/Lockview.php:75
-msgid "Remote privacy information not available."
-msgstr "Удаленная информация о конфиденциальности недоступна."
-
-#: ../../Zotlabs/Module/Lockview.php:96
-msgid "Visible to:"
-msgstr "Видимо для:"
-
-#: ../../Zotlabs/Module/Tagger.php:48
-msgid "Post not found."
-msgstr "Публикация не найдена"
-
-#: ../../Zotlabs/Module/Tagger.php:119
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s отметил тегом %2$s %3$s с %4$s"
-
-#: ../../Zotlabs/Module/Directory.php:110
-msgid "No default suggestions were found."
-msgstr "Предложений по умолчанию не найдено."
-
-#: ../../Zotlabs/Module/Directory.php:259
-#, php-format
-msgid "%d rating"
-msgid_plural "%d ratings"
-msgstr[0] "%d оценка"
-msgstr[1] "%d оценки"
-msgstr[2] "%d оценок"
-
-#: ../../Zotlabs/Module/Directory.php:270
-msgid "Gender: "
-msgstr "Пол:"
-
-#: ../../Zotlabs/Module/Directory.php:272
-msgid "Status: "
-msgstr "Статус:"
-
-#: ../../Zotlabs/Module/Directory.php:274
-msgid "Homepage: "
-msgstr "Домашняя страница:"
-
-#: ../../Zotlabs/Module/Directory.php:334
-msgid "Description:"
-msgstr "Описание:"
-
-#: ../../Zotlabs/Module/Directory.php:343
-msgid "Public Forum:"
-msgstr "Публичный форум:"
-
-#: ../../Zotlabs/Module/Directory.php:346
-msgid "Keywords: "
-msgstr "Ключевые слова:"
-
-#: ../../Zotlabs/Module/Directory.php:349
-msgid "Don't suggest"
-msgstr "Не предлагать"
-
-#: ../../Zotlabs/Module/Directory.php:351
-msgid "Common connections (estimated):"
-msgstr "Общие контакты (оценочно):"
-
-#: ../../Zotlabs/Module/Directory.php:400
-msgid "Global Directory"
-msgstr "Глобальный каталог"
-
-#: ../../Zotlabs/Module/Directory.php:400
-msgid "Local Directory"
-msgstr "Локальный каталог"
-
-#: ../../Zotlabs/Module/Directory.php:406
-msgid "Finding:"
-msgstr "Поиск:"
-
-#: ../../Zotlabs/Module/Directory.php:411
-msgid "next page"
-msgstr "следующая страница"
-
-#: ../../Zotlabs/Module/Directory.php:411
-msgid "previous page"
-msgstr "предыдущая страница"
-
-#: ../../Zotlabs/Module/Directory.php:412
-msgid "Sort options"
-msgstr "Параметры сортировки"
-
-#: ../../Zotlabs/Module/Directory.php:413
-msgid "Alphabetic"
-msgstr "По алфавиту"
-
-#: ../../Zotlabs/Module/Directory.php:414
-msgid "Reverse Alphabetic"
-msgstr "Против алфавита"
-
-#: ../../Zotlabs/Module/Directory.php:415
-msgid "Newest to Oldest"
-msgstr "От новых к старым"
+#: ../../Zotlabs/Module/Profperm.php:115
+msgid "Click on a contact to add or remove."
+msgstr "Нажмите на контакт, чтобы добавить или удалить."
-#: ../../Zotlabs/Module/Directory.php:416
-msgid "Oldest to Newest"
-msgstr "От старых к новым"
+#: ../../Zotlabs/Module/Profperm.php:124
+msgid "Visible To"
+msgstr "Видно"
-#: ../../Zotlabs/Module/Directory.php:433
-msgid "No entries (some entries may be hidden)."
-msgstr "Нет записей (некоторые записи могут быть скрыты)."
+#: ../../Zotlabs/Module/Profperm.php:140
+#: ../../Zotlabs/Module/Connections.php:203
+msgid "All Connections"
+msgstr "Все контакты"
#: ../../Zotlabs/Module/Cdav.php:810
msgid "INVALID EVENT DISMISSED!"
@@ -4798,6 +642,16 @@ msgstr "НЕДЕЙСТВИТЕЛЬНОЕ СОБЫТИЕ ОТКЛОНЕНО!"
msgid "Summary: "
msgstr "Резюме: "
+#: ../../Zotlabs/Module/Cdav.php:811 ../../Zotlabs/Module/Cdav.php:812
+#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Embedphotos.php:154
+#: ../../Zotlabs/Module/Photos.php:832 ../../Zotlabs/Module/Photos.php:1296
+#: ../../Zotlabs/Lib/Activity.php:1011 ../../Zotlabs/Lib/Apps.php:1113
+#: ../../Zotlabs/Lib/Apps.php:1197 ../../Zotlabs/Storage/Browser.php:164
+#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84
+#: ../../addon/pubcrawl/as.php:959 ../../include/conversation.php:1166
+msgid "Unknown"
+msgstr "Неизвестный"
+
#: ../../Zotlabs/Module/Cdav.php:812
msgid "Date: "
msgstr "Дата: "
@@ -4846,24 +700,31 @@ msgstr "Пример: YYYY-MM-DD HH:mm"
msgid "End date and time"
msgstr "Дата и время окончания"
-#: ../../Zotlabs/Module/Cdav.php:916 ../../Zotlabs/Module/Appman.php:145
-#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Rbmark.php:101
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:173
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:652
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:260
+#: ../../Zotlabs/Module/Cdav.php:916 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101
+#: ../../addon/rendezvous/rendezvous.php:173
+#: ../../addon/cart/submodules/manualcat.php:260
+#: ../../addon/cart/submodules/hzservices.php:652
msgid "Description"
msgstr "Описание"
-#: ../../Zotlabs/Module/Cdav.php:924 ../../Zotlabs/Module/Photos.php:986
-#: ../../Zotlabs/Module/Events.php:690 ../../Zotlabs/Module/Events.php:699
-#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Cal.php:345
+#: ../../Zotlabs/Module/Cdav.php:917 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Events.php:477 ../../Zotlabs/Module/Profiles.php:509
+#: ../../Zotlabs/Module/Profiles.php:734 ../../Zotlabs/Module/Pubsites.php:52
+#: ../../include/js_strings.php:25
+msgid "Location"
+msgstr "Место"
+
+#: ../../Zotlabs/Module/Cdav.php:924 ../../Zotlabs/Module/Events.php:690
+#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Cal.php:338
+#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Photos.php:986
msgid "Previous"
msgstr "Предыдущая"
-#: ../../Zotlabs/Module/Cdav.php:925 ../../Zotlabs/Module/Photos.php:995
-#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Events.php:700
+#: ../../Zotlabs/Module/Cdav.php:925 ../../Zotlabs/Module/Events.php:691
+#: ../../Zotlabs/Module/Events.php:700 ../../Zotlabs/Module/Setup.php:263
#: ../../Zotlabs/Module/Cal.php:339 ../../Zotlabs/Module/Cal.php:346
-#: ../../Zotlabs/Module/Setup.php:263
+#: ../../Zotlabs/Module/Photos.php:995
msgid "Next"
msgstr "Следующая"
@@ -4916,86 +777,127 @@ msgstr "Удалить всё"
msgid "Sorry! Editing of recurrent events is not yet implemented."
msgstr "Простите, но редактирование повторяющихся событий пока не реализовано."
-#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:913
+#: ../../Zotlabs/Module/Cdav.php:1215 ../../Zotlabs/Module/Sharedwithme.php:104
+#: ../../Zotlabs/Module/Admin/Channels.php:159
+#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146
+#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923
+#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:154
+#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139
+#: ../../Zotlabs/Lib/NativeWikiPage.php:561
+#: ../../Zotlabs/Storage/Browser.php:285
+#: ../../Zotlabs/Widget/Wiki_page_history.php:22
+#: ../../addon/rendezvous/rendezvous.php:172
+msgid "Name"
+msgstr "Имя"
+
+#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:924
msgid "Organisation"
msgstr "Организация"
-#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:914
+#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:925
msgid "Title"
msgstr "Наименование"
-#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Profiles.php:786
-#: ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Profiles.php:786
msgid "Phone"
msgstr "Телефон"
-#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Profiles.php:788
-#: ../../Zotlabs/Module/Connedit.php:917
+#: ../../Zotlabs/Module/Cdav.php:1219
+#: ../../Zotlabs/Module/Admin/Accounts.php:171
+#: ../../Zotlabs/Module/Admin/Accounts.php:183
+#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Profiles.php:787
+#: ../../addon/openid/MysqlProvider.php:56
+#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/Mod_Rtof.php:57
+#: ../../addon/redred/Mod_Redred.php:71 ../../include/network.php:1721
+msgid "Email"
+msgstr "Электронная почта"
+
+#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Connedit.php:928
+#: ../../Zotlabs/Module/Profiles.php:788
msgid "Instant messenger"
msgstr "Мессенджер"
-#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Profiles.php:789
-#: ../../Zotlabs/Module/Connedit.php:918
+#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Profiles.php:789
msgid "Website"
msgstr "Веб-сайт"
-#: ../../Zotlabs/Module/Cdav.php:1222 ../../Zotlabs/Module/Profiles.php:502
-#: ../../Zotlabs/Module/Profiles.php:790 ../../Zotlabs/Module/Locs.php:118
+#: ../../Zotlabs/Module/Cdav.php:1222 ../../Zotlabs/Module/Locs.php:118
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:919
+#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Profiles.php:502
+#: ../../Zotlabs/Module/Profiles.php:790
msgid "Address"
msgstr "Адрес"
-#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Profiles.php:791
-#: ../../Zotlabs/Module/Connedit.php:920
+#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Connedit.php:931
+#: ../../Zotlabs/Module/Profiles.php:791
msgid "Note"
msgstr "Заметка"
-#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Profiles.php:796
-#: ../../Zotlabs/Module/Connedit.php:925
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:368
+#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1320
+#: ../../include/connections.php:696
+msgid "Mobile"
+msgstr "Мобильный"
+
+#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Connedit.php:933
+#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1321
+#: ../../include/connections.php:697
+msgid "Home"
+msgstr "Домашний"
+
+#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Connedit.php:934
+#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1324
+#: ../../include/connections.php:700
+msgid "Work"
+msgstr "Рабочий"
+
+#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Connedit.php:936
+#: ../../Zotlabs/Module/Profiles.php:796
+#: ../../addon/jappixmini/Mod_Jappixmini.php:216
msgid "Add Contact"
msgstr "Добавить контакт"
-#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Profiles.php:797
-#: ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Connedit.php:937
+#: ../../Zotlabs/Module/Profiles.php:797
msgid "Add Field"
msgstr "Добавить поле"
-#: ../../Zotlabs/Module/Cdav.php:1231 ../../Zotlabs/Module/Profiles.php:799
-#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137
+#: ../../Zotlabs/Module/Cdav.php:1231 ../../Zotlabs/Module/Admin/Addons.php:456
#: ../../Zotlabs/Module/Oauth2.php:58 ../../Zotlabs/Module/Oauth2.php:144
-#: ../../Zotlabs/Module/Admin/Addons.php:453
-#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Profiles.php:799
+#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137
+#: ../../Zotlabs/Lib/Apps.php:535
msgid "Update"
msgstr "Обновить"
-#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:931
+#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:942
msgid "P.O. Box"
msgstr "абонентский ящик"
-#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:943
msgid "Additional"
msgstr "Дополнительно"
-#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:933
+#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:944
msgid "Street"
msgstr "Улица"
-#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:934
+#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:945
msgid "Locality"
msgstr "Населённый пункт"
-#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:935
+#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:946
msgid "Region"
msgstr "Регион"
-#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:936
+#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:947
msgid "ZIP Code"
msgstr "Индекс"
-#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Profiles.php:757
-#: ../../Zotlabs/Module/Connedit.php:937
+#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Connedit.php:948
+#: ../../Zotlabs/Module/Profiles.php:757
msgid "Country"
msgstr "Страна"
@@ -5007,877 +909,525 @@ msgstr "Календарь по умолчанию"
msgid "Default Addressbook"
msgstr "Адресная книга по умолчанию"
-#: ../../Zotlabs/Module/Profile.php:45 ../../Zotlabs/Module/Channel.php:98
-#: ../../Zotlabs/Module/Hcard.php:37
-msgid "Posts and comments"
-msgstr "Публикации и комментарии"
-
-#: ../../Zotlabs/Module/Profile.php:52 ../../Zotlabs/Module/Channel.php:105
-#: ../../Zotlabs/Module/Hcard.php:44
-msgid "Only posts"
-msgstr "Только публикации"
-
-#: ../../Zotlabs/Module/Profile.php:93
-msgid "vcard"
-msgstr "vCard"
-
-#: ../../Zotlabs/Module/Ochannel.php:32 ../../Zotlabs/Module/Chat.php:31
-#: ../../Zotlabs/Module/Channel.php:41
-#: ../../extend/addon/hzaddons/chess/chess.php:508
-msgid "You must be logged in to see this page."
-msgstr "Вы должны авторизоваться, чтобы увидеть эту страницу."
-
-#: ../../Zotlabs/Module/Notify.php:61 ../../Zotlabs/Module/Notifications.php:55
-msgid "No more system notifications."
-msgstr "Нет новых оповещений системы."
-
-#: ../../Zotlabs/Module/Notify.php:65 ../../Zotlabs/Module/Notifications.php:59
-msgid "System Notifications"
-msgstr "Системные оповещения "
-
-#: ../../Zotlabs/Module/Impel.php:185
-#, php-format
-msgid "%s element installed"
-msgstr "%s элемент установлен"
-
-#: ../../Zotlabs/Module/Impel.php:188
-#, php-format
-msgid "%s element installation failed"
-msgstr "%sустановка элемента неудачна."
-
-#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56
-msgid "App installed."
-msgstr "Приложение установлено."
-
-#: ../../Zotlabs/Module/Appman.php:49
-msgid "Malformed app."
-msgstr "Неработающее приложение."
-
-#: ../../Zotlabs/Module/Appman.php:132
-msgid "Embed code"
-msgstr "Встроить код"
-
-#: ../../Zotlabs/Module/Appman.php:138
-msgid "Edit App"
-msgstr "Редактировать приложение"
-
-#: ../../Zotlabs/Module/Appman.php:138
-msgid "Create App"
-msgstr "Создать приложение"
-
-#: ../../Zotlabs/Module/Appman.php:143
-msgid "Name of app"
-msgstr "Наименование приложения"
-
-#: ../../Zotlabs/Module/Appman.php:144
-msgid "Location (URL) of app"
-msgstr "Местоположение (URL) приложения"
-
-#: ../../Zotlabs/Module/Appman.php:146
-msgid "Photo icon URL"
-msgstr "URL пиктограммы"
-
-#: ../../Zotlabs/Module/Appman.php:146
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 пикселей - необязательно"
-
-#: ../../Zotlabs/Module/Appman.php:147
-msgid "Categories (optional, comma separated list)"
-msgstr "Категории (необязательно, список через запятую)"
-
-#: ../../Zotlabs/Module/Appman.php:148
-msgid "Version ID"
-msgstr "ID версии"
-
-#: ../../Zotlabs/Module/Appman.php:149
-msgid "Price of app"
-msgstr "Цена приложения"
-
-#: ../../Zotlabs/Module/Appman.php:150
-msgid "Location (URL) to purchase app"
-msgstr "Ссылка (URL) для покупки приложения"
-
-#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
-msgid "Invalid profile identifier."
-msgstr "Неверный идентификатор профиля"
+#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25
+msgid "This site is not a directory server"
+msgstr "Этот сайт не является сервером каталога"
-#: ../../Zotlabs/Module/Profperm.php:111
-msgid "Profile Visibility Editor"
-msgstr "Редактор видимости профиля"
+#: ../../Zotlabs/Module/Permcats.php:28
+msgid "Permission category name is required."
+msgstr "Требуется категория разрешений."
-#: ../../Zotlabs/Module/Profperm.php:115
-msgid "Click on a contact to add or remove."
-msgstr "Нажмите на контакт, чтобы добавить или удалить."
+#: ../../Zotlabs/Module/Permcats.php:47
+msgid "Permission category saved."
+msgstr "Категория разрешения сохранена."
-#: ../../Zotlabs/Module/Profperm.php:124
-msgid "Visible To"
-msgstr "Видно"
+#: ../../Zotlabs/Module/Permcats.php:62
+msgid "Permission Categories App"
+msgstr "Приложение \"Категории разрешений\""
-#: ../../Zotlabs/Module/Profperm.php:140
-#: ../../Zotlabs/Module/Connections.php:203
-msgid "All Connections"
-msgstr "Все контакты"
+#: ../../Zotlabs/Module/Permcats.php:63
+msgid "Create custom connection permission limits"
+msgstr "Создать пользовательские ограничения на доступ к подключению"
-#: ../../Zotlabs/Module/Changeaddr.php:35
+#: ../../Zotlabs/Module/Permcats.php:79
msgid ""
-"Channel name changes are not allowed within 48 hours of changing the account "
-"password."
-msgstr "Изменение названия канала не разрешается в течении 48 часов после смены пароля у аккаунта."
-
-#: ../../Zotlabs/Module/Changeaddr.php:77
-msgid "Change channel nickname/address"
-msgstr "Изменить псевдоним / адрес канала"
-
-#: ../../Zotlabs/Module/Changeaddr.php:78 ../../Zotlabs/Module/Removeme.php:61
-#: ../../Zotlabs/Module/Removeaccount.php:58
-msgid "WARNING: "
-msgstr "ПРЕДУПРЕЖДЕНИЕ: "
-
-#: ../../Zotlabs/Module/Changeaddr.php:78
-msgid "Any/all connections on other networks will be lost!"
-msgstr "Любые / все контакты в других сетях будут утеряны!"
-
-#: ../../Zotlabs/Module/Changeaddr.php:79 ../../Zotlabs/Module/Removeme.php:62
-#: ../../Zotlabs/Module/Removeaccount.php:59
-msgid "Please enter your password for verification:"
-msgstr "Пожалуйста, введите ваш пароль для проверки:"
-
-#: ../../Zotlabs/Module/Changeaddr.php:80
-msgid "New channel address"
-msgstr "Новый адрес канала"
-
-#: ../../Zotlabs/Module/Changeaddr.php:81
-msgid "Rename Channel"
-msgstr "Переименовать канал"
-
-#: ../../Zotlabs/Module/Admin.php:96
-#: ../../Zotlabs/Module/Admin/Accounts.php:167
-#: ../../Zotlabs/Module/Admin/Accounts.php:180
-#: ../../Zotlabs/Widget/Admin.php:23
-msgid "Accounts"
-msgstr "Учётные записи"
-
-#: ../../Zotlabs/Module/Admin.php:97
-msgid "Blocked accounts"
-msgstr "Заблокированные аккаунты"
-
-#: ../../Zotlabs/Module/Admin.php:98
-msgid "Expired accounts"
-msgstr "Просроченные аккаунты"
-
-#: ../../Zotlabs/Module/Admin.php:99
-msgid "Expiring accounts"
-msgstr "Близкие к просрочке аккаунты"
-
-#: ../../Zotlabs/Module/Admin.php:114
-#: ../../Zotlabs/Module/Admin/Channels.php:146
-#: ../../Zotlabs/Widget/Admin.php:24
-msgid "Channels"
-msgstr "Каналы"
-
-#: ../../Zotlabs/Module/Admin.php:120
-msgid "Message queues"
-msgstr "Очередь сообщений"
-
-#: ../../Zotlabs/Module/Admin.php:134
-msgid "Your software should be updated"
-msgstr "Ваше программное обеспечение должно быть обновлено"
-
-#: ../../Zotlabs/Module/Admin.php:138 ../../Zotlabs/Module/Admin/Logs.php:82
-#: ../../Zotlabs/Module/Admin/Channels.php:145
-#: ../../Zotlabs/Module/Admin/Security.php:92
-#: ../../Zotlabs/Module/Admin/Addons.php:341
-#: ../../Zotlabs/Module/Admin/Addons.php:436
-#: ../../Zotlabs/Module/Admin/Site.php:287
-#: ../../Zotlabs/Module/Admin/Themes.php:122
-#: ../../Zotlabs/Module/Admin/Themes.php:156
-#: ../../Zotlabs/Module/Admin/Accounts.php:166
-msgid "Administration"
-msgstr "Администрирование"
-
-#: ../../Zotlabs/Module/Admin.php:139
-msgid "Summary"
-msgstr "Резюме"
-
-#: ../../Zotlabs/Module/Admin.php:142
-msgid "Registered accounts"
-msgstr "Зарегистрированные аккаунты"
-
-#: ../../Zotlabs/Module/Admin.php:143
-msgid "Pending registrations"
-msgstr "Ждут утверждения"
-
-#: ../../Zotlabs/Module/Admin.php:144
-msgid "Registered channels"
-msgstr "Зарегистрированные каналы"
-
-#: ../../Zotlabs/Module/Admin.php:145
-msgid "Active addons"
-msgstr "Активные расширения"
-
-#: ../../Zotlabs/Module/Admin.php:146
-msgid "Version"
-msgstr "Версия системы"
-
-#: ../../Zotlabs/Module/Admin.php:147
-msgid "Repository version (master)"
-msgstr "Версия репозитория (master)"
-
-#: ../../Zotlabs/Module/Admin.php:148
-msgid "Repository version (dev)"
-msgstr "Версия репозитория (dev)"
-
-#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184
-#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659
-msgid "Profile not found."
-msgstr "Профиль не найден."
-
-#: ../../Zotlabs/Module/Profiles.php:44
-msgid "Profile deleted."
-msgstr "Профиль удален."
-
-#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105
-msgid "Profile-"
-msgstr "Профиль -"
-
-#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127
-msgid "New profile created."
-msgstr "Новый профиль создан."
-
-#: ../../Zotlabs/Module/Profiles.php:111
-msgid "Profile unavailable to clone."
-msgstr "Профиль недоступен для клонирования."
-
-#: ../../Zotlabs/Module/Profiles.php:146
-msgid "Profile unavailable to export."
-msgstr "Профиль недоступен для экспорта."
-
-#: ../../Zotlabs/Module/Profiles.php:252
-msgid "Profile Name is required."
-msgstr "Требуется имя профиля."
-
-#: ../../Zotlabs/Module/Profiles.php:459
-msgid "Marital Status"
-msgstr "Семейное положение"
-
-#: ../../Zotlabs/Module/Profiles.php:463
-msgid "Romantic Partner"
-msgstr "Романтический партнер"
-
-#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772
-msgid "Likes"
-msgstr "Нравится"
-
-#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773
-msgid "Dislikes"
-msgstr "Не нравится"
-
-#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780
-msgid "Work/Employment"
-msgstr "Работа / Занятость"
-
-#: ../../Zotlabs/Module/Profiles.php:478
-msgid "Religion"
-msgstr "Религия"
-
-#: ../../Zotlabs/Module/Profiles.php:482
-msgid "Political Views"
-msgstr "Политические взгляды"
-
-#: ../../Zotlabs/Module/Profiles.php:486
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:74
-msgid "Gender"
-msgstr "Гендер"
-
-#: ../../Zotlabs/Module/Profiles.php:490
-msgid "Sexual Preference"
-msgstr "Сексуальная ориентация"
-
-#: ../../Zotlabs/Module/Profiles.php:494
-msgid "Homepage"
-msgstr "Домашняя страница"
-
-#: ../../Zotlabs/Module/Profiles.php:498
-msgid "Interests"
-msgstr "Интересы"
-
-#: ../../Zotlabs/Module/Profiles.php:594
-msgid "Profile updated."
-msgstr "Профиль обновлен."
-
-#: ../../Zotlabs/Module/Profiles.php:678
-msgid "Hide your connections list from viewers of this profile"
-msgstr "Скрывать от просмотра ваш список контактов в этом профиле"
-
-#: ../../Zotlabs/Module/Profiles.php:722
-msgid "Edit Profile Details"
-msgstr "Редактирование профиля"
-
-#: ../../Zotlabs/Module/Profiles.php:724
-msgid "View this profile"
-msgstr "Посмотреть этот профиль"
-
-#: ../../Zotlabs/Module/Profiles.php:726
-msgid "Profile Tools"
-msgstr "Инструменты профиля"
-
-#: ../../Zotlabs/Module/Profiles.php:727
-msgid "Change cover photo"
-msgstr "Изменить фотографию обложки"
-
-#: ../../Zotlabs/Module/Profiles.php:729
-msgid "Create a new profile using these settings"
-msgstr "Создать новый профиль с теми же настройками"
-
-#: ../../Zotlabs/Module/Profiles.php:730
-msgid "Clone this profile"
-msgstr "Клонировать этот профиль"
-
-#: ../../Zotlabs/Module/Profiles.php:731
-msgid "Delete this profile"
-msgstr "Удалить этот профиль"
-
-#: ../../Zotlabs/Module/Profiles.php:732
-msgid "Add profile things"
-msgstr "Добавить в профиль"
-
-#: ../../Zotlabs/Module/Profiles.php:733
-msgid "Personal"
-msgstr "Личное"
-
-#: ../../Zotlabs/Module/Profiles.php:735
-msgid "Relationship"
-msgstr "Отношения"
-
-#: ../../Zotlabs/Module/Profiles.php:738
-msgid "Import profile from file"
-msgstr "Импортировать профиль из файла"
-
-#: ../../Zotlabs/Module/Profiles.php:739
-msgid "Export profile to file"
-msgstr "Экспортировать профиль в файл"
-
-#: ../../Zotlabs/Module/Profiles.php:740
-msgid "Your gender"
-msgstr "Ваш пол"
-
-#: ../../Zotlabs/Module/Profiles.php:741
-msgid "Marital status"
-msgstr "Семейное положение"
-
-#: ../../Zotlabs/Module/Profiles.php:742
-msgid "Sexual preference"
-msgstr "Сексуальная ориентация"
-
-#: ../../Zotlabs/Module/Profiles.php:745
-msgid "Profile name"
-msgstr "Имя профиля"
-
-#: ../../Zotlabs/Module/Profiles.php:747
-msgid "This is your default profile."
-msgstr "Это ваш профиль по умолчанию."
-
-#: ../../Zotlabs/Module/Profiles.php:749
-msgid "Your full name"
-msgstr "Ваше полное имя"
-
-#: ../../Zotlabs/Module/Profiles.php:750
-msgid "Title/Description"
-msgstr "Заголовок / описание"
-
-#: ../../Zotlabs/Module/Profiles.php:753
-msgid "Street address"
-msgstr "Улица, дом, квартира"
-
-#: ../../Zotlabs/Module/Profiles.php:754
-msgid "Locality/City"
-msgstr "Населенный пункт / город"
-
-#: ../../Zotlabs/Module/Profiles.php:755
-msgid "Region/State"
-msgstr "Регион / Область"
-
-#: ../../Zotlabs/Module/Profiles.php:756
-msgid "Postal/Zip code"
-msgstr "Почтовый индекс"
-
-#: ../../Zotlabs/Module/Profiles.php:762
-msgid "Who (if applicable)"
-msgstr "Кто (если применимо)"
-
-#: ../../Zotlabs/Module/Profiles.php:762
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Примеры: ivan1990, Ivan Petrov, ivan@example.com"
-
-#: ../../Zotlabs/Module/Profiles.php:763
-msgid "Since (date)"
-msgstr "С (дата)"
+"Use this form to create permission rules for various classes of people or "
+"connections."
+msgstr "Используйте эту форму для создания правил разрешений для различных групп людей и контактов."
-#: ../../Zotlabs/Module/Profiles.php:766
-msgid "Tell us about yourself"
-msgstr "Расскажите нам о себе"
+#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:372
+msgid "Permission Categories"
+msgstr "Категории разрешений"
-#: ../../Zotlabs/Module/Profiles.php:767
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:68
-msgid "Homepage URL"
-msgstr "URL домашней страницы"
+#: ../../Zotlabs/Module/Permcats.php:120
+msgid "Permission category name"
+msgstr "Наименование категории разрешений"
-#: ../../Zotlabs/Module/Profiles.php:768
-msgid "Hometown"
-msgstr "Родной город"
+#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181
+#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266
+msgid "My Settings"
+msgstr "Мои настройки"
-#: ../../Zotlabs/Module/Profiles.php:769
-msgid "Political views"
-msgstr "Политические взгляды"
+#: ../../Zotlabs/Module/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183
+#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264
+msgid "inherited"
+msgstr "наследуется"
-#: ../../Zotlabs/Module/Profiles.php:770
-msgid "Religious views"
-msgstr "Религиозные взгляды"
+#: ../../Zotlabs/Module/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269
+msgid "Individual Permissions"
+msgstr "Индивидуальные разрешения"
-#: ../../Zotlabs/Module/Profiles.php:771
-msgid "Keywords used in directory listings"
-msgstr "Ключевые слова для участия в каталоге"
+#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187
+#: ../../Zotlabs/Module/Connedit.php:911
+msgid ""
+"Some permissions may be inherited from your channel's <a href=\"settings"
+"\"><strong>privacy settings</strong></a>, which have higher priority than "
+"individual settings. You can <strong>not</strong> change those settings here."
+msgstr "Некоторые разрешения могут наследовать из <a href=\"settings\"><strong>настроек приватности</strong></a> ваших каналов которые могут иметь более высокий приоритет чем индивидуальные. Вы <strong>не можете</strong> менять эти настройки здесь."
-#: ../../Zotlabs/Module/Profiles.php:771
-msgid "Example: fishing photography software"
-msgstr "Например: fishing photography software"
+#: ../../Zotlabs/Module/Channel.php:41 ../../Zotlabs/Module/Ochannel.php:32
+#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/Mod_Chess.php:343
+msgid "You must be logged in to see this page."
+msgstr "Вы должны авторизоваться, чтобы увидеть эту страницу."
-#: ../../Zotlabs/Module/Profiles.php:774
-msgid "Musical interests"
-msgstr "Музыкальные интересы"
+#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37
+#: ../../Zotlabs/Module/Profile.php:45
+msgid "Posts and comments"
+msgstr "Публикации и комментарии"
-#: ../../Zotlabs/Module/Profiles.php:775
-msgid "Books, literature"
-msgstr "Книги, литература"
+#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44
+#: ../../Zotlabs/Module/Profile.php:52
+msgid "Only posts"
+msgstr "Только публикации"
-#: ../../Zotlabs/Module/Profiles.php:776
-msgid "Television"
-msgstr "Телевидение"
+#: ../../Zotlabs/Module/Channel.php:165
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Недостаточно прав. Запрос перенаправлен на страницу профиля."
-#: ../../Zotlabs/Module/Profiles.php:777
-msgid "Film/Dance/Culture/Entertainment"
-msgstr "Кино / танцы / культура / развлечения"
+#: ../../Zotlabs/Module/Channel.php:182 ../../Zotlabs/Module/Network.php:173
+msgid "Search Results For:"
+msgstr "Результаты поиска для:"
-#: ../../Zotlabs/Module/Profiles.php:778
-msgid "Hobbies/Interests"
-msgstr "Хобби / интересы"
+#: ../../Zotlabs/Module/Channel.php:217 ../../Zotlabs/Module/Hq.php:134
+#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Display.php:80
+#: ../../Zotlabs/Module/Network.php:203
+msgid "Reset form"
+msgstr "Очистить форму"
-#: ../../Zotlabs/Module/Profiles.php:779
-msgid "Love/Romance"
-msgstr "Любовь / романтические отношения"
+#: ../../Zotlabs/Module/Channel.php:476 ../../Zotlabs/Module/Display.php:373
+msgid ""
+"You must enable javascript for your browser to be able to view this content."
+msgstr "Для просмотра этого содержимого в вашем браузере должен быть включён JavaScript"
-#: ../../Zotlabs/Module/Profiles.php:781
-msgid "School/Education"
-msgstr "Школа / образование"
+#: ../../Zotlabs/Module/Lang.php:17
+msgid "Language App"
+msgstr "Приложение \"Язык\""
-#: ../../Zotlabs/Module/Profiles.php:782
-msgid "Contact information and social networks"
-msgstr "Информация и социальные сети для связи"
+#: ../../Zotlabs/Module/Lang.php:18
+msgid "Change UI language"
+msgstr "Изменить язык интерфейса"
-#: ../../Zotlabs/Module/Profiles.php:783
-msgid "My other channels"
-msgstr "Мои другие контакты"
+#: ../../Zotlabs/Module/Uexport.php:61
+msgid "Channel Export App"
+msgstr "Приложение \"Экспорт канала\""
-#: ../../Zotlabs/Module/Profiles.php:785
-msgid "Communications"
-msgstr "Связи"
+#: ../../Zotlabs/Module/Uexport.php:62
+msgid "Export your channel"
+msgstr "Экспортировать ваш канал"
-#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Chat.php:264
-#: ../../Zotlabs/Module/Wiki.php:214 ../../Zotlabs/Module/Manage.php:145
-msgid "Create New"
-msgstr "Создать новый"
+#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73
+msgid "Export Channel"
+msgstr "Экспорт канала"
-#: ../../Zotlabs/Module/Photos.php:78
-msgid "Page owner information could not be retrieved."
-msgstr "Информация о владельце страницы не может быть получена."
+#: ../../Zotlabs/Module/Uexport.php:74
+msgid ""
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
+msgstr "Экспортировать основную информацию из канала в файл. Служит в качестве резервной копии ваших контактов, основных данных и профиля, однако не включает содержимое. Может быть использовано для импорта ваши данных на новый сервер."
-#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113
-msgid "Album not found."
-msgstr "Альбом не найден."
+#: ../../Zotlabs/Module/Uexport.php:75
+msgid "Export Content"
+msgstr "Экспортировать содержимое"
-#: ../../Zotlabs/Module/Photos.php:103
-msgid "Delete Album"
-msgstr "Удалить альбом"
+#: ../../Zotlabs/Module/Uexport.php:76
+msgid ""
+"Export your channel information and recent content to a JSON backup that can "
+"be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for "
+"this download to begin."
+msgstr "Экспортировать информацию из вашего канала и его содержимое в резервную копию в формате JSON которая может быть использована для восстановления или импорта на другом сервере. Сохраняет все ваши контакты, разрешения, данные профиля и публикации за несколько месяцев. Файл может иметь очень большой размер. Пожалуйста, будьте терпеливы и подождите несколько минут пока не начнётся загрузка."
-#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1098
-msgid "Delete Photo"
-msgstr "Удалить фотографию"
+#: ../../Zotlabs/Module/Uexport.php:78
+msgid "Export your posts from a given year."
+msgstr "Экспортировать ваши публикации за данный год."
-#: ../../Zotlabs/Module/Photos.php:569
-msgid "No photos selected"
-msgstr "Никакие фотографии не выбраны"
+#: ../../Zotlabs/Module/Uexport.php:80
+msgid ""
+"You may also export your posts and conversations for a particular year or "
+"month. Adjust the date in your browser location bar to select other dates. "
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
+msgstr "Вы также можете экспортировать ваши публикации и беседы за определённый месяц или год. Выберите дату в панели местоположения в браузере. Если экспорт будет неудачным (это возможно, например, из-за исчерпания памяти на сервере), повторите попытку, выбрав меньший диапазон дат."
-#: ../../Zotlabs/Module/Photos.php:618
-msgid "Access to this item is restricted."
-msgstr "Доступ к этому элементу ограничен."
+#: ../../Zotlabs/Module/Uexport.php:81
+#, php-format
+msgid ""
+"To select all posts for a given year, such as this year, visit <a href=\"%1$s"
+"\">%2$s</a>"
+msgstr "Для выбора всех публикаций заданного года, например текущего, посетите <a href=\"%1$s\">%2$s</a>"
-#: ../../Zotlabs/Module/Photos.php:661
+#: ../../Zotlabs/Module/Uexport.php:82
#, php-format
-msgid "%1$.2f MB of %2$.2f MB photo storage used."
-msgstr "Вы использовали %1$.2f мегабайт из %2$.2f для хранения фото."
+msgid ""
+"To select all posts for a given month, such as January of this year, visit "
+"<a href=\"%1$s\">%2$s</a>"
+msgstr "Для выбора всех публикаций заданного месяца, например за январь сего года, посетите <a href=\"%1$s\">%2$s</a>"
-#: ../../Zotlabs/Module/Photos.php:664
+#: ../../Zotlabs/Module/Uexport.php:83
#, php-format
-msgid "%1$.2f MB photo storage used."
-msgstr "Вы использовали %1$.2f мегабайт для хранения фото."
+msgid ""
+"These content files may be imported or restored by visiting <a href=\"%1$s\">"
+"%2$s</a> on any site containing your channel. For best results please import "
+"or restore these in date order (oldest first)."
+msgstr "Данные файлы с содержимым могут быть импортированы и восстановлены на любом содержащем ваш канал сайте. Посетите <a href=\"%1$s\">%2$s</a>. Для лучших результатов пожалуйста производите импорт и восстановление в порядке датировки (старые сначала)."
-#: ../../Zotlabs/Module/Photos.php:706
-msgid "Upload Photos"
-msgstr "Загрузить фотографии"
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "Welcome to Hubzilla!"
+msgstr "Добро пожаловать в Hubzilla!"
-#: ../../Zotlabs/Module/Photos.php:710
-msgid "Enter an album name"
-msgstr "Введите название альбома"
+#: ../../Zotlabs/Module/Hq.php:140
+msgid "You have got no unseen posts..."
+msgstr "У вас нет видимых публикаций..."
-#: ../../Zotlabs/Module/Photos.php:711
-msgid "or select an existing album (doubleclick)"
-msgstr "или выберите существующий альбом (двойной щелчок)"
+#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:558
+#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:67
+#: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Display.php:29
+#: ../../Zotlabs/Module/Viewconnections.php:23
+msgid "Public access denied."
+msgstr "Публичный доступ запрещен."
-#: ../../Zotlabs/Module/Photos.php:712
-msgid "Create a status post for this upload"
-msgstr "Сделать публикацию о статусе для этой загрузки"
+#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:338
+#: ../../Zotlabs/Lib/Apps.php:350 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../include/text.php:1084
+#: ../../include/text.php:1096 ../../include/acl_selectors.php:118
+#: ../../include/nav.php:183
+msgid "Search"
+msgstr "Поиск"
-#: ../../Zotlabs/Module/Photos.php:714
-msgid "Description (optional)"
-msgstr "Описание (необязательно)"
+#: ../../Zotlabs/Module/Search.php:230
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "Объекты помечены как: %s"
-#: ../../Zotlabs/Module/Photos.php:800
-msgid "Show Newest First"
-msgstr "Показать новые первыми"
+#: ../../Zotlabs/Module/Search.php:232
+#, php-format
+msgid "Search results for: %s"
+msgstr "Результаты поиска для: %s"
-#: ../../Zotlabs/Module/Photos.php:802
-msgid "Show Oldest First"
-msgstr "Показать старые первыми"
+#: ../../Zotlabs/Module/Pubstream.php:20
+msgid "Public Stream App"
+msgstr "Приложение \"Публичный поток\""
-#: ../../Zotlabs/Module/Photos.php:826 ../../Zotlabs/Module/Photos.php:1365
-#: ../../Zotlabs/Module/Embedphotos.php:140
-#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78
-msgid "View Photo"
-msgstr "Посмотреть фотографию"
+#: ../../Zotlabs/Module/Pubstream.php:21
+msgid "The unmoderated public stream of this hub"
+msgstr "Немодерируемый публичный поток с этого хаба"
-#: ../../Zotlabs/Module/Photos.php:857 ../../Zotlabs/Module/Embedphotos.php:156
-#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95
-msgid "Edit Album"
-msgstr "Редактировать Фотоальбом"
+#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:374
+#: ../../Zotlabs/Widget/Notifications.php:142
+msgid "Public Stream"
+msgstr "Публичный поток"
-#: ../../Zotlabs/Module/Photos.php:859 ../../Zotlabs/Module/Photos.php:1396
-msgid "Add Photos"
-msgstr "Добавить фотографии"
+#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
+msgid "Location not found."
+msgstr "Местоположение не найдено"
-#: ../../Zotlabs/Module/Photos.php:907
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Доступ запрещен. Доступ к этому элементу может быть ограничен."
+#: ../../Zotlabs/Module/Locs.php:62
+msgid "Location lookup failed."
+msgstr "Поиск местоположения не удался"
-#: ../../Zotlabs/Module/Photos.php:909
-msgid "Photo not available"
-msgstr "Фотография не доступна"
+#: ../../Zotlabs/Module/Locs.php:66
+msgid ""
+"Please select another location to become primary before removing the primary "
+"location."
+msgstr "Пожалуйста, выберите другое местоположение в качестве основного прежде чем удалить предыдущее"
-#: ../../Zotlabs/Module/Photos.php:967
-msgid "Use as profile photo"
-msgstr "Использовать в качестве фотографии профиля"
+#: ../../Zotlabs/Module/Locs.php:95
+msgid "Syncing locations"
+msgstr "Синхронизировать местоположение"
-#: ../../Zotlabs/Module/Photos.php:968
-msgid "Use as cover photo"
-msgstr "Использовать в качестве фотографии обложки"
+#: ../../Zotlabs/Module/Locs.php:105
+msgid "No locations found."
+msgstr "Местоположений не найдено"
-#: ../../Zotlabs/Module/Photos.php:975
-msgid "Private Photo"
-msgstr "Личная фотография"
+#: ../../Zotlabs/Module/Locs.php:116
+msgid "Manage Channel Locations"
+msgstr "Управление местоположением канала"
-#: ../../Zotlabs/Module/Photos.php:990
-msgid "View Full Size"
-msgstr "Посмотреть в полный размер"
+#: ../../Zotlabs/Module/Locs.php:119
+msgid "Primary"
+msgstr "Основной"
-#: ../../Zotlabs/Module/Photos.php:1035 ../../Zotlabs/Module/Tagrm.php:137
-#: ../../Zotlabs/Module/Admin/Addons.php:455
-#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:91
-msgid "Remove"
+#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:176
+msgid "Drop"
msgstr "Удалить"
-#: ../../Zotlabs/Module/Photos.php:1072
-msgid "Edit photo"
-msgstr "Редактировать фотографию"
-
-#: ../../Zotlabs/Module/Photos.php:1074
-msgid "Rotate CW (right)"
-msgstr "Повернуть CW (направо)"
-
-#: ../../Zotlabs/Module/Photos.php:1075
-msgid "Rotate CCW (left)"
-msgstr "Повернуть CCW (налево)"
-
-#: ../../Zotlabs/Module/Photos.php:1078
-msgid "Move photo to album"
-msgstr "Переместить фотографию в альбом"
-
-#: ../../Zotlabs/Module/Photos.php:1079
-msgid "Enter a new album name"
-msgstr "Введите новое название альбома"
-
-#: ../../Zotlabs/Module/Photos.php:1080
-msgid "or select an existing one (doubleclick)"
-msgstr "или выбрать существующую (двойной щелчок)"
-
-#: ../../Zotlabs/Module/Photos.php:1085
-msgid "Add a Tag"
-msgstr "Добавить тег"
-
-#: ../../Zotlabs/Module/Photos.php:1093
-msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
-msgstr "Пример: @bob, @Barbara_Jensen, @jim@example.com"
-
-#: ../../Zotlabs/Module/Photos.php:1096
-msgid "Flag as adult in album view"
-msgstr "Пометить как альбом \"для взрослых\""
-
-#: ../../Zotlabs/Module/Photos.php:1115 ../../Zotlabs/Lib/ThreadItem.php:289
-msgid "I like this (toggle)"
-msgstr "мне это нравится (переключение)"
-
-#: ../../Zotlabs/Module/Photos.php:1116 ../../Zotlabs/Lib/ThreadItem.php:290
-msgid "I don't like this (toggle)"
-msgstr "мне это не нравится (переключение)"
-
-#: ../../Zotlabs/Module/Photos.php:1134 ../../Zotlabs/Module/Photos.php:1252
-#: ../../Zotlabs/Lib/ThreadItem.php:767
-msgid "This is you"
-msgstr "Это вы"
-
-#: ../../Zotlabs/Module/Photos.php:1171 ../../Zotlabs/Module/Photos.php:1183
-#: ../../Zotlabs/Lib/ThreadItem.php:214 ../../Zotlabs/Lib/ThreadItem.php:226
-msgid "View all"
-msgstr "Просмотреть все"
-
-#: ../../Zotlabs/Module/Photos.php:1280
-msgid "Photo Tools"
-msgstr "Фото-Инструменты"
-
-#: ../../Zotlabs/Module/Photos.php:1289
-msgid "In This Photo:"
-msgstr "На этой фотографии:"
-
-#: ../../Zotlabs/Module/Photos.php:1294
-msgid "Map"
-msgstr "Карта"
-
-#: ../../Zotlabs/Module/Photos.php:1302 ../../Zotlabs/Lib/ThreadItem.php:432
-msgctxt "noun"
-msgid "Likes"
-msgstr "Нравится"
-
-#: ../../Zotlabs/Module/Photos.php:1303 ../../Zotlabs/Lib/ThreadItem.php:433
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Не нравится"
-
-#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
-msgid "Tag removed"
-msgstr "Тег удалён"
-
-#: ../../Zotlabs/Module/Tagrm.php:123
-msgid "Remove Item Tag"
-msgstr "Удалить тег элемента"
-
-#: ../../Zotlabs/Module/Tagrm.php:125
-msgid "Select a tag to remove: "
-msgstr "Выбрать тег для удаления:"
-
-#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75
-#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41
-#: ../../Zotlabs/Module/Cal.php:63 ../../Zotlabs/Module/Card_edit.php:44
-#: ../../Zotlabs/Module/Article_edit.php:44
-msgid "Channel not found."
-msgstr "Канал не найден."
-
-#: ../../Zotlabs/Module/Chanview.php:139
-msgid "toggle full screen mode"
-msgstr "переключение полноэкранного режима"
+#: ../../Zotlabs/Module/Locs.php:122
+msgid "Sync Now"
+msgstr "Синхронизировать"
-#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29
-msgid "Invalid item."
-msgstr "Недействительный элемент."
+#: ../../Zotlabs/Module/Locs.php:123
+msgid "Please wait several minutes between consecutive operations."
+msgstr "Пожалуйста, подождите несколько минут между последовательными операциями."
-#: ../../Zotlabs/Module/Page.php:173
+#: ../../Zotlabs/Module/Locs.php:124
msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
-"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr ""
+"When possible, drop a location by logging into that website/hub and removing "
+"your channel."
+msgstr "По возможности, очистите местоположение, войдя на этот веб-сайт / хаб и удалив свой канал."
-#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95
-msgid "Authorize application connection"
-msgstr "Авторизовать подключение приложения"
+#: ../../Zotlabs/Module/Locs.php:125
+msgid "Use this form to drop the location if the hub is no longer operating."
+msgstr "Используйте эту форму, чтобы удалить местоположение, если хаб больше не функционирует."
-#: ../../Zotlabs/Module/Api.php:75
-msgid "Return to your app and insert this Security Code:"
-msgstr "Вернитесь к своему приложению и вставьте этот код безопасности:"
+#: ../../Zotlabs/Module/Apporder.php:47
+msgid "Change Order of Pinned Navbar Apps"
+msgstr "Изменить порядок приложений на панели навигации"
-#: ../../Zotlabs/Module/Api.php:85
-msgid "Please login to continue."
-msgstr "Пожалуйста, войдите, чтобы продолжить."
+#: ../../Zotlabs/Module/Apporder.php:47
+msgid "Change Order of App Tray Apps"
+msgstr "Изменить порядок приложений в лотке"
-#: ../../Zotlabs/Module/Api.php:97
+#: ../../Zotlabs/Module/Apporder.php:48
msgid ""
-"Do you want to authorize this application to access your posts and contacts, "
-"and/or create new posts for you?"
-msgstr "Вы хотите авторизовать это приложение для доступа к вашим публикациям и контактам и / или созданию новых публикаций?"
+"Use arrows to move the corresponding app left (top) or right (bottom) in the "
+"navbar"
+msgstr "Используйте стрелки для перемещения приложения влево (вверх) или вправо (вниз) в панели навигации"
-#: ../../Zotlabs/Module/Lostpass.php:19
-msgid "No valid account found."
-msgstr "Действительный аккаунт не найден."
+#: ../../Zotlabs/Module/Apporder.php:48
+msgid "Use arrows to move the corresponding app up or down in the app tray"
+msgstr "Используйте стрелки для перемещения приложения вверх или вниз в лотке"
-#: ../../Zotlabs/Module/Lostpass.php:33
-msgid "Password reset request issued. Check your email."
-msgstr "Запрос на сброс пароля отправлен. Проверьте вашу электронную почту."
+#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:208
+msgid "Menu not found."
+msgstr "Меню не найдено"
-#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Участник сайта (%s)"
+#: ../../Zotlabs/Module/Mitem.php:63
+msgid "Unable to create element."
+msgstr "Невозможно создать элемент."
-#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Запрошен сброс пароля на %s"
+#: ../../Zotlabs/Module/Mitem.php:87
+msgid "Unable to update menu element."
+msgstr "Невозможно обновить элемент меню."
-#: ../../Zotlabs/Module/Lostpass.php:68
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Запрос не может быть проверен. (Вы могли отправить его раньше). Сброс пароля не возможен."
+#: ../../Zotlabs/Module/Mitem.php:103
+msgid "Unable to add menu element."
+msgstr "Невозможно добавить элемент меню."
-#: ../../Zotlabs/Module/Lostpass.php:92
-msgid "Your password has been reset as requested."
-msgstr "Ваш пароль в соответствии с просьбой сброшен."
+#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Menu.php:231
+#: ../../Zotlabs/Module/Xchan.php:41
+msgid "Not found."
+msgstr "Не найдено."
-#: ../../Zotlabs/Module/Lostpass.php:93
-msgid "Your new password is"
-msgstr "Ваш новый пароль"
+#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246
+msgid "Menu Item Permissions"
+msgstr "Разрешения на пункт меню"
-#: ../../Zotlabs/Module/Lostpass.php:94
-msgid "Save or copy your new password - and then"
-msgstr "Сохраните ваш новый пароль и затем"
+#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247
+#: ../../Zotlabs/Module/Settings/Channel.php:526
+msgid "(click to open/close)"
+msgstr "(нажмите чтобы открыть/закрыть)"
-#: ../../Zotlabs/Module/Lostpass.php:95
-msgid "click here to login"
-msgstr "нажмите здесь чтобы войти"
+#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191
+msgid "Link Name"
+msgstr "Имя ссылки"
-#: ../../Zotlabs/Module/Lostpass.php:96
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Ваш пароль может быть изменён на странице <em>Настройки</em> после успешного входа."
+#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255
+msgid "Link or Submenu Target"
+msgstr "Ссылка или цель подменю"
-#: ../../Zotlabs/Module/Lostpass.php:117
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Пароль был изменен на %s"
+#: ../../Zotlabs/Module/Mitem.php:175
+msgid "Enter URL of the link or select a menu name to create a submenu"
+msgstr "Введите URL ссылки или выберите имя меню для создания подменю"
-#: ../../Zotlabs/Module/Lostpass.php:130
-msgid "Forgot your Password?"
-msgstr "Забыли ваш пароль?"
+#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256
+msgid "Use magic-auth if available"
+msgstr "Использовать magic-auth если возможно"
-#: ../../Zotlabs/Module/Lostpass.php:131
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Введите ваш адрес электронной почты и нажмите отправить чтобы сбросить пароль. Затем проверьте ваш почтовый ящик для дальнейших инструкций. "
+#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177
+#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257
+#: ../../Zotlabs/Module/Events.php:472 ../../Zotlabs/Module/Events.php:473
+#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:255
+#: ../../Zotlabs/Module/Settings/Channel.php:309
+#: ../../Zotlabs/Module/Settings/Display.php:89
+#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
+#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Module/Api.php:99
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406
+#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Menu.php:162
+#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Defperms.php:197
+#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Sources.php:124
+#: ../../Zotlabs/Module/Sources.php:159
+#: ../../Zotlabs/Module/Filestorage.php:178
+#: ../../Zotlabs/Module/Filestorage.php:186 ../../Zotlabs/Lib/Libzotdir.php:162
+#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
+#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1634
+#: ../../view/theme/redbasic_c/php/config.php:100
+#: ../../view/theme/redbasic_c/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:99
+#: ../../view/theme/redbasic/php/config.php:116
+#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86
+#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60
+#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
+#: ../../addon/channelreputation/channelreputation.php:108
+#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63
+#: ../../addon/libertree/Mod_Libertree.php:59
+#: ../../addon/statusnet/Mod_Statusnet.php:260
+#: ../../addon/statusnet/Mod_Statusnet.php:282
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:162
+#: ../../addon/twitter/Mod_Twitter.php:171
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
+#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71
+#: ../../addon/cart/cart.php:1258
+#: ../../addon/cart/submodules/paypalbutton.php:87
+#: ../../addon/cart/submodules/paypalbutton.php:95
+#: ../../addon/cart/submodules/manualcat.php:63
+#: ../../addon/cart/submodules/manualcat.php:254
+#: ../../addon/cart/submodules/manualcat.php:258
+#: ../../addon/cart/submodules/hzservices.php:64
+#: ../../addon/cart/submodules/hzservices.php:646
+#: ../../addon/cart/submodules/hzservices.php:650
+#: ../../addon/cart/submodules/subscriptions.php:153
+#: ../../addon/cart/submodules/subscriptions.php:425
+#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98
+#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143
+#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
+msgid "No"
+msgstr "Нет"
-#: ../../Zotlabs/Module/Lostpass.php:132
-msgid "Email Address"
-msgstr "Адрес электронной почты"
+#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177
+#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257
+#: ../../Zotlabs/Module/Events.php:472 ../../Zotlabs/Module/Events.php:473
+#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:257
+#: ../../Zotlabs/Module/Settings/Channel.php:309
+#: ../../Zotlabs/Module/Settings/Display.php:89
+#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
+#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Module/Api.php:98
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406
+#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221
+#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
+#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
+#: ../../Zotlabs/Module/Filestorage.php:178
+#: ../../Zotlabs/Module/Filestorage.php:186 ../../Zotlabs/Lib/Libzotdir.php:162
+#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
+#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1634
+#: ../../view/theme/redbasic_c/php/config.php:100
+#: ../../view/theme/redbasic_c/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:99
+#: ../../view/theme/redbasic/php/config.php:116
+#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86
+#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60
+#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
+#: ../../addon/channelreputation/channelreputation.php:108
+#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63
+#: ../../addon/libertree/Mod_Libertree.php:59
+#: ../../addon/statusnet/Mod_Statusnet.php:260
+#: ../../addon/statusnet/Mod_Statusnet.php:282
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:162
+#: ../../addon/twitter/Mod_Twitter.php:171
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
+#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71
+#: ../../addon/cart/cart.php:1258
+#: ../../addon/cart/submodules/paypalbutton.php:87
+#: ../../addon/cart/submodules/paypalbutton.php:95
+#: ../../addon/cart/submodules/manualcat.php:63
+#: ../../addon/cart/submodules/manualcat.php:254
+#: ../../addon/cart/submodules/manualcat.php:258
+#: ../../addon/cart/submodules/hzservices.php:64
+#: ../../addon/cart/submodules/hzservices.php:646
+#: ../../addon/cart/submodules/hzservices.php:650
+#: ../../addon/cart/submodules/subscriptions.php:153
+#: ../../addon/cart/submodules/subscriptions.php:425
+#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98
+#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143
+#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
+msgid "Yes"
+msgstr "Да"
-#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:77
-msgid "Reset"
-msgstr "Сбросить"
+#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257
+msgid "Open link in new window"
+msgstr "Открыть ссылку в новом окне"
-#: ../../Zotlabs/Module/Oauth.php:45
-msgid "Name is required"
-msgstr "Необходимо имя"
+#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258
+msgid "Order in list"
+msgstr "Порядок в списке"
-#: ../../Zotlabs/Module/Oauth.php:49
-msgid "Key and Secret are required"
-msgstr "Требуются ключ и код"
+#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Большие значения в конце списка"
-#: ../../Zotlabs/Module/Oauth.php:100
-msgid "OAuth Apps Manager App"
-msgstr "Приложение \"Менеджер Oauth\""
+#: ../../Zotlabs/Module/Mitem.php:179
+msgid "Submit and finish"
+msgstr "Отправить и завершить"
-#: ../../Zotlabs/Module/Oauth.php:101
-msgid "OAuth authentication tokens for mobile and remote apps"
-msgstr "Токены аутентификации OAuth для мобильный и удалённых приложений"
+#: ../../Zotlabs/Module/Mitem.php:180
+msgid "Submit and continue"
+msgstr "Отправить и продолжить"
-#: ../../Zotlabs/Module/Oauth.php:110 ../../Zotlabs/Module/Oauth.php:136
-#: ../../Zotlabs/Module/Oauth.php:172 ../../Zotlabs/Module/Oauth2.php:143
-#: ../../Zotlabs/Module/Oauth2.php:193
-msgid "Add application"
-msgstr "Добавить приложение"
+#: ../../Zotlabs/Module/Mitem.php:189
+msgid "Menu:"
+msgstr "Меню:"
-#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth2.php:118
-#: ../../Zotlabs/Module/Oauth2.php:146
-msgid "Name of application"
-msgstr "Название приложения"
+#: ../../Zotlabs/Module/Mitem.php:192
+msgid "Link Target"
+msgstr "Цель ссылки"
-#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140
-#: ../../extend/addon/hzaddons/twitter/twitter.php:784
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:894
-msgid "Consumer Key"
-msgstr "Ключ клиента"
+#: ../../Zotlabs/Module/Mitem.php:195
+msgid "Edit menu"
+msgstr "Редактировать меню"
-#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:115
-#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Сгенерирован автоматические - измените если требуется. Макс. длина 20"
+#: ../../Zotlabs/Module/Mitem.php:198
+msgid "Edit element"
+msgstr "Редактировать элемент"
-#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141
-#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
-#: ../../extend/addon/hzaddons/twitter/twitter.php:785
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:893
-msgid "Consumer Secret"
-msgstr "Код клиента"
+#: ../../Zotlabs/Module/Mitem.php:199
+msgid "Drop element"
+msgstr "Удалить элемент"
-#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142
-#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148
-msgid "Redirect"
-msgstr "Перенаправление"
+#: ../../Zotlabs/Module/Mitem.php:200
+msgid "New element"
+msgstr "Новый элемент"
-#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth2.php:120
-#: ../../Zotlabs/Module/Oauth2.php:148
-msgid ""
-"Redirect URI - leave blank unless your application specifically requires this"
-msgstr "URI перенаправления - оставьте пустыми до тех пока ваше приложение не требует этого"
+#: ../../Zotlabs/Module/Mitem.php:201
+msgid "Edit this menu container"
+msgstr "Редактировать контейнер меню"
-#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143
-msgid "Icon url"
-msgstr "URL значка"
+#: ../../Zotlabs/Module/Mitem.php:202
+msgid "Add menu element"
+msgstr "Добавить элемент меню"
-#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Sources.php:123
-#: ../../Zotlabs/Module/Sources.php:158
-msgid "Optional"
-msgstr "Необязательно"
+#: ../../Zotlabs/Module/Mitem.php:203
+msgid "Delete this menu item"
+msgstr "Удалить этот элемент меню"
-#: ../../Zotlabs/Module/Oauth.php:128
-msgid "Application not found."
-msgstr "Приложение не найдено."
+#: ../../Zotlabs/Module/Mitem.php:204
+msgid "Edit this menu item"
+msgstr "Редактировать этот элемент меню"
-#: ../../Zotlabs/Module/Oauth.php:171
-msgid "Connected OAuth Apps"
-msgstr "Подключенные приложения OAuth"
+#: ../../Zotlabs/Module/Mitem.php:222
+msgid "Menu item not found."
+msgstr "Элемент меню не найден."
-#: ../../Zotlabs/Module/Oauth.php:175 ../../Zotlabs/Module/Oauth2.php:196
-msgid "Client key starts with"
-msgstr "Ключ клиента начинается с"
+#: ../../Zotlabs/Module/Mitem.php:235
+msgid "Menu item deleted."
+msgstr "Элемент меню удалён."
-#: ../../Zotlabs/Module/Oauth.php:176 ../../Zotlabs/Module/Oauth2.php:197
-msgid "No name"
-msgstr "Без названия"
+#: ../../Zotlabs/Module/Mitem.php:237
+msgid "Menu item could not be deleted."
+msgstr "Невозможно удалить элемент меню."
-#: ../../Zotlabs/Module/Oauth.php:177 ../../Zotlabs/Module/Oauth2.php:198
-msgid "Remove authorization"
-msgstr "Удалить разрешение"
+#: ../../Zotlabs/Module/Mitem.php:244
+msgid "Edit Menu Element"
+msgstr "Редактировать элемент меню"
+
+#: ../../Zotlabs/Module/Mitem.php:254
+msgid "Link text"
+msgstr "Текст ссылки"
#: ../../Zotlabs/Module/Events.php:25
msgid "Calendar entries imported."
@@ -5904,10 +1454,23 @@ msgstr "Требуются наименование события и время
msgid "Event not found."
msgstr "Событие не найдено."
+#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
+#: ../../Zotlabs/Module/Like.php:394 ../../include/conversation.php:119
+#: ../../include/text.php:2094 ../../include/event.php:1165
+msgid "event"
+msgstr "событие"
+
#: ../../Zotlabs/Module/Events.php:462
msgid "Edit event title"
msgstr "Редактировать наименование события"
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Events.php:467
+#: ../../Zotlabs/Module/Appman.php:143 ../../Zotlabs/Module/Appman.php:144
+#: ../../Zotlabs/Module/Profiles.php:745 ../../Zotlabs/Module/Profiles.php:749
+#: ../../include/datetime.php:211
+msgid "Required"
+msgstr "Требуется"
+
#: ../../Zotlabs/Module/Events.php:464
msgid "Categories (comma-separated list)"
msgstr "Категории (список через запятую)"
@@ -5954,6 +1517,17 @@ msgstr "Редактировать описание"
msgid "Edit Location"
msgstr "Редактировать местоположение"
+#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Photos.php:1139
+#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:805
+#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359
+msgid "Preview"
+msgstr "Предварительный просмотр"
+
+#: ../../Zotlabs/Module/Events.php:481 ../../addon/hsse/hsse.php:225
+#: ../../include/conversation.php:1431
+msgid "Permission settings"
+msgstr "Настройки разрешений"
+
#: ../../Zotlabs/Module/Events.php:491
msgid "Timezone:"
msgstr "Часовой пояс:"
@@ -5974,6 +1548,11 @@ msgstr "Редактировать событие"
msgid "Delete event"
msgstr "Удалить событие"
+#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Cal.php:314
+#: ../../include/text.php:1913
+msgid "Link to Source"
+msgstr "Ссылка на источник"
+
#: ../../Zotlabs/Module/Events.php:670
msgid "calendar"
msgstr "календарь"
@@ -5986,12 +1565,10 @@ msgstr "Редактировать событие"
msgid "Create Event"
msgstr "Создать событие"
-#: ../../Zotlabs/Module/Events.php:695 ../../Zotlabs/Module/Pubsites.php:60
-#: ../../Zotlabs/Module/Webpages.php:261 ../../Zotlabs/Module/Blocks.php:166
-#: ../../Zotlabs/Module/Wiki.php:213 ../../Zotlabs/Module/Wiki.php:409
-#: ../../Zotlabs/Module/Layouts.php:198
-msgid "View"
-msgstr "Просмотр"
+#: ../../Zotlabs/Module/Events.php:692 ../../Zotlabs/Module/Cal.php:340
+#: ../../include/channel.php:1703
+msgid "Export"
+msgstr "Экспорт"
#: ../../Zotlabs/Module/Events.php:732
msgid "Event removed"
@@ -6001,46 +1578,164 @@ msgstr "Событие удалено"
msgid "Failed to remove event"
msgstr "Не удалось удалить событие"
-#: ../../Zotlabs/Module/Authorize.php:17
-msgid "Unknown App"
-msgstr "Неизвестное приложение"
+#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56
+msgid "App installed."
+msgstr "Приложение установлено."
-#: ../../Zotlabs/Module/Authorize.php:29
-msgid "Authorize"
-msgstr "Авторизовать"
+#: ../../Zotlabs/Module/Appman.php:49
+msgid "Malformed app."
+msgstr "Неработающее приложение."
-#: ../../Zotlabs/Module/Authorize.php:30
+#: ../../Zotlabs/Module/Appman.php:132
+msgid "Embed code"
+msgstr "Встроить код"
+
+#: ../../Zotlabs/Module/Appman.php:138
+msgid "Edit App"
+msgstr "Редактировать приложение"
+
+#: ../../Zotlabs/Module/Appman.php:138
+msgid "Create App"
+msgstr "Создать приложение"
+
+#: ../../Zotlabs/Module/Appman.php:143
+msgid "Name of app"
+msgstr "Наименование приложения"
+
+#: ../../Zotlabs/Module/Appman.php:144
+msgid "Location (URL) of app"
+msgstr "Местоположение (URL) приложения"
+
+#: ../../Zotlabs/Module/Appman.php:146
+msgid "Photo icon URL"
+msgstr "URL пиктограммы"
+
+#: ../../Zotlabs/Module/Appman.php:146
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 пикселей - необязательно"
+
+#: ../../Zotlabs/Module/Appman.php:147
+msgid "Categories (optional, comma separated list)"
+msgstr "Категории (необязательно, список через запятую)"
+
+#: ../../Zotlabs/Module/Appman.php:148
+msgid "Version ID"
+msgstr "ID версии"
+
+#: ../../Zotlabs/Module/Appman.php:149
+msgid "Price of app"
+msgstr "Цена приложения"
+
+#: ../../Zotlabs/Module/Appman.php:150
+msgid "Location (URL) to purchase app"
+msgstr "Ссылка (URL) для покупки приложения"
+
+#: ../../Zotlabs/Module/Regmod.php:15
+msgid "Please login."
+msgstr "Пожалуйста, войдите."
+
+#: ../../Zotlabs/Module/Magic.php:76
+msgid "Hub not found."
+msgstr "Узел не найден."
+
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:69
+#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Lib/Activity.php:1959
+#: ../../addon/redphotos/redphotohelper.php:71
+#: ../../addon/diaspora/Receiver.php:1551 ../../addon/pubcrawl/as.php:1504
+#: ../../include/conversation.php:116 ../../include/text.php:2091
+msgid "photo"
+msgstr "фото"
+
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:392
+#: ../../Zotlabs/Lib/Activity.php:1959 ../../addon/diaspora/Receiver.php:1551
+#: ../../addon/pubcrawl/as.php:1504 ../../include/conversation.php:144
+#: ../../include/text.php:2097
+msgid "status"
+msgstr "статус"
+
+#: ../../Zotlabs/Module/Subthread.php:143
#, php-format
-msgid "Do you authorize the app %s to access your channel data?"
-msgstr "Авторизуете ли вы приложение %s для доступа к данным вашего канала?"
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s отслеживает %2$s's %3$s"
-#: ../../Zotlabs/Module/Authorize.php:32
-msgid "Allow"
-msgstr "Разрешить"
+#: ../../Zotlabs/Module/Subthread.php:145
+#, php-format
+msgid "%1$s stopped following %2$s's %3$s"
+msgstr "%1$s прекратил отслеживать %2$s's %3$s"
-#: ../../Zotlabs/Module/Authorize.php:33
-#: ../../Zotlabs/Module/Admin/Accounts.php:174
-msgid "Deny"
-msgstr "Запретить"
+#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:63
+#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75
+#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41
+#: ../../Zotlabs/Module/Card_edit.php:44
+msgid "Channel not found."
+msgstr "Канал не найден."
-#: ../../Zotlabs/Module/Pubstream.php:20
-msgid "Public Stream App"
-msgstr "Приложение \"Публичный поток\""
+#: ../../Zotlabs/Module/Article_edit.php:101
+#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:222
+#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:288
+#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Module/Card_edit.php:101
+#: ../../addon/hsse/hsse.php:95 ../../include/conversation.php:1298
+msgid "Insert web link"
+msgstr "Вставить веб-ссылку"
-#: ../../Zotlabs/Module/Pubstream.php:21
-msgid "The unmoderated public stream of this hub"
-msgstr "Немодерируемый публичный поток с этого хаба"
+#: ../../Zotlabs/Module/Article_edit.php:117
+#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:713
+#: ../../Zotlabs/Module/Photos.php:1083 ../../Zotlabs/Module/Card_edit.php:117
+#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427
+msgid "Title (optional)"
+msgstr "Заголовок (необязательно)"
-#: ../../Zotlabs/Module/Pubstream.php:109
-#: ../../Zotlabs/Widget/Notifications.php:142 ../../Zotlabs/Lib/Apps.php:352
-msgid "Public Stream"
-msgstr "Публичный поток"
+#: ../../Zotlabs/Module/Article_edit.php:128
+msgid "Edit Article"
+msgstr "Редактировать статью"
+
+#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:66
+msgid "Nothing to import."
+msgstr "Ничего импортировать."
+
+#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:81
+#: ../../Zotlabs/Module/Import.php:97
+msgid "Unable to download data from old server"
+msgstr "Невозможно загрузить данные со старого сервера"
+
+#: ../../Zotlabs/Module/Import_items.php:77 ../../Zotlabs/Module/Import.php:104
+msgid "Imported file is empty."
+msgstr "Импортированный файл пуст."
+
+#: ../../Zotlabs/Module/Import_items.php:93
+#, php-format
+msgid "Warning: Database versions differ by %1$d updates."
+msgstr "Предупреждение: Версия базы данных отличается от %1$d обновления."
+
+#: ../../Zotlabs/Module/Import_items.php:108
+msgid "Import completed"
+msgstr "Импорт завершён."
+
+#: ../../Zotlabs/Module/Import_items.php:125
+msgid "Import Items"
+msgstr "Импортировать объекты"
+
+#: ../../Zotlabs/Module/Import_items.php:126
+msgid "Use this form to import existing posts and content from an export file."
+msgstr "Используйте эту форму для импорта существующих публикаций и содержимого из файла."
+
+#: ../../Zotlabs/Module/Import_items.php:127
+#: ../../Zotlabs/Module/Import.php:557
+msgid "File to Upload"
+msgstr "Файл для загрузки"
#: ../../Zotlabs/Module/New_channel.php:147 ../../Zotlabs/Module/Manage.php:138
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Вы создали %1$.0f из %2$.0f возможных каналов."
+#: ../../Zotlabs/Module/New_channel.php:157
+#: ../../Zotlabs/Module/New_channel.php:164
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256
+#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:323
+msgid "Loading"
+msgstr "Загрузка"
+
#: ../../Zotlabs/Module/New_channel.php:159
msgid "Your real name is recommended."
msgstr "Рекомендуется использовать ваше настоящее имя."
@@ -6070,8 +1765,8 @@ msgid "Choose a short nickname"
msgstr "Выберите короткий псевдоним"
#: ../../Zotlabs/Module/New_channel.php:178
-#: ../../Zotlabs/Module/Register.php:261
#: ../../Zotlabs/Module/Settings/Channel.php:535
+#: ../../Zotlabs/Module/Register.php:261
msgid "Channel role and privacy"
msgstr "Роль и конфиденциальность канала"
@@ -6106,1492 +1801,6 @@ msgstr "или <a href=\"import\">импортировать существую
msgid "Validate"
msgstr "Проверить"
-#: ../../Zotlabs/Module/Cover_photo.php:57
-#: ../../Zotlabs/Module/Profile_photo.php:66
-msgid "Image uploaded but image cropping failed."
-msgstr "Изображение загружено но обрезка не удалась."
-
-#: ../../Zotlabs/Module/Cover_photo.php:168
-#: ../../Zotlabs/Module/Cover_photo.php:218
-msgid "Cover Photos"
-msgstr "Фотографии обложки"
-
-#: ../../Zotlabs/Module/Cover_photo.php:191
-#: ../../Zotlabs/Module/Profile_photo.php:142
-msgid "Image resize failed."
-msgstr "Не удалось изменить размер изображения."
-
-#: ../../Zotlabs/Module/Cover_photo.php:229
-#: ../../Zotlabs/Module/Profile_photo.php:260
-msgid "Image upload failed."
-msgstr "Загрузка изображения не удалась."
-
-#: ../../Zotlabs/Module/Cover_photo.php:246
-#: ../../Zotlabs/Module/Profile_photo.php:279
-msgid "Unable to process image."
-msgstr "Невозможно обработать изображение."
-
-#: ../../Zotlabs/Module/Cover_photo.php:339
-#: ../../Zotlabs/Module/Cover_photo.php:354
-#: ../../Zotlabs/Module/Profile_photo.php:343
-#: ../../Zotlabs/Module/Profile_photo.php:390
-msgid "Photo not available."
-msgstr "Фотография недоступна."
-
-#: ../../Zotlabs/Module/Cover_photo.php:390
-msgid "Your cover photo may be visible to anybody on the internet"
-msgstr "Фотография вашей обложки может быть видна всем в Интернете"
-
-#: ../../Zotlabs/Module/Cover_photo.php:392
-#: ../../Zotlabs/Module/Profile_photo.php:456
-msgid "Upload File:"
-msgstr "Загрузить файл:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:393
-#: ../../Zotlabs/Module/Profile_photo.php:457
-msgid "Select a profile:"
-msgstr "Выбрать профиль:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:394
-msgid "Change Cover Photo"
-msgstr "Изменить фотографию обложки"
-
-#: ../../Zotlabs/Module/Cover_photo.php:397
-#: ../../Zotlabs/Module/Cover_photo.php:398
-#: ../../Zotlabs/Module/Profile_photo.php:463
-#: ../../Zotlabs/Module/Profile_photo.php:464
-msgid "Use a photo from your albums"
-msgstr "Использовать фотографию из ваших альбомов"
-
-#: ../../Zotlabs/Module/Cover_photo.php:403
-#: ../../Zotlabs/Module/Profile_photo.php:469 ../../Zotlabs/Module/Wiki.php:405
-msgid "Choose a different album"
-msgstr "Выбрать другой альбом"
-
-#: ../../Zotlabs/Module/Cover_photo.php:409
-#: ../../Zotlabs/Module/Profile_photo.php:474
-msgid "Select existing photo"
-msgstr "Выбрать существующую фотографию"
-
-#: ../../Zotlabs/Module/Cover_photo.php:426
-#: ../../Zotlabs/Module/Profile_photo.php:493
-msgid "Crop Image"
-msgstr "Обрезать изображение"
-
-#: ../../Zotlabs/Module/Cover_photo.php:427
-#: ../../Zotlabs/Module/Profile_photo.php:494
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Пожалуйста настройте обрезку изображения для оптимального просмотра."
-
-#: ../../Zotlabs/Module/Cover_photo.php:429
-#: ../../Zotlabs/Module/Profile_photo.php:496
-msgid "Done Editing"
-msgstr "Закончить редактирование"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:103
-msgid "Files: shared with me"
-msgstr "Файлы: поделились со мной"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:105
-msgid "NEW"
-msgstr "НОВОЕ"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:108
-msgid "Remove all files"
-msgstr "Удалить все файлы"
-
-#: ../../Zotlabs/Module/Sharedwithme.php:109
-msgid "Remove this file"
-msgstr "Удалить этот файл"
-
-#: ../../Zotlabs/Module/Register.php:49
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Превышено максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра."
-
-#: ../../Zotlabs/Module/Register.php:55
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Пожалуйста, подтвердите согласие с \"Условиями обслуживания\". Регистрация не удалась."
-
-#: ../../Zotlabs/Module/Register.php:89
-msgid "Passwords do not match."
-msgstr "Пароли не совпадают."
-
-#: ../../Zotlabs/Module/Register.php:132
-msgid "Registration successful. Continue to create your first channel..."
-msgstr "Регистрация завершена успешно. Для продолжения создайте свой первый канал..."
-
-#: ../../Zotlabs/Module/Register.php:135
-msgid ""
-"Registration successful. Please check your email for validation instructions."
-msgstr "Регистрация завершена успешно. Пожалуйста проверьте вашу электронную почту для подтверждения."
-
-#: ../../Zotlabs/Module/Register.php:142
-msgid "Your registration is pending approval by the site owner."
-msgstr "Ваша регистрация ожидает одобрения администрации сайта."
-
-#: ../../Zotlabs/Module/Register.php:145
-msgid "Your registration can not be processed."
-msgstr "Ваша регистрация не может быть обработана."
-
-#: ../../Zotlabs/Module/Register.php:192
-msgid "Registration on this hub is disabled."
-msgstr "Регистрация на этом хабе отключена."
-
-#: ../../Zotlabs/Module/Register.php:201
-msgid "Registration on this hub is by approval only."
-msgstr "Регистрация на этом хабе только по утверждению."
-
-#: ../../Zotlabs/Module/Register.php:202 ../../Zotlabs/Module/Register.php:211
-msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
-msgstr "<a href=\"pubsites\">Зарегистрироваться на другом хабе.</a>"
-
-#: ../../Zotlabs/Module/Register.php:210
-msgid "Registration on this hub is by invitation only."
-msgstr "Регистрация на этом хабе доступна только по приглашениям."
-
-#: ../../Zotlabs/Module/Register.php:221
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Этот сайт превысил максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра. "
-
-#: ../../Zotlabs/Module/Register.php:236 ../../Zotlabs/Module/Siteinfo.php:28
-msgid "Terms of Service"
-msgstr "Условия предоставления услуг"
-
-#: ../../Zotlabs/Module/Register.php:242
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Я принимаю %s для этого веб-сайта."
-
-#: ../../Zotlabs/Module/Register.php:249
-#, php-format
-msgid "I am over %s years of age and accept the %s for this website"
-msgstr "Мой возраст превышает %s лет и я принимаю %s для этого веб-сайта."
-
-#: ../../Zotlabs/Module/Register.php:254
-msgid "Your email address"
-msgstr "Ваш адрес электронной почты"
-
-#: ../../Zotlabs/Module/Register.php:255
-msgid "Choose a password"
-msgstr "Выберите пароль"
-
-#: ../../Zotlabs/Module/Register.php:256
-msgid "Please re-enter your password"
-msgstr "Пожалуйста, введите пароль еще раз"
-
-#: ../../Zotlabs/Module/Register.php:257
-msgid "Please enter your invitation code"
-msgstr "Пожалуйста, введите Ваш код приглашения"
-
-#: ../../Zotlabs/Module/Register.php:258
-msgid "Your Name"
-msgstr "Ваше имя"
-
-#: ../../Zotlabs/Module/Register.php:258
-msgid "Real names are preferred."
-msgstr "Предпочтительны реальные имена."
-
-#: ../../Zotlabs/Module/Register.php:260
-#, php-format
-msgid ""
-"Your nickname will be used to create an easy to remember channel address e."
-"g. nickname%s"
-msgstr "Ваш псевдоним будет использован для создания легко запоминаемого адреса канала, напр. nickname %s"
-
-#: ../../Zotlabs/Module/Register.php:261
-msgid ""
-"Select a channel permission role for your usage needs and privacy "
-"requirements."
-msgstr "Выберите разрешения для канала в зависимости от ваших потребностей и требований приватности."
-
-#: ../../Zotlabs/Module/Register.php:262
-msgid "no"
-msgstr "нет"
-
-#: ../../Zotlabs/Module/Register.php:262
-msgid "yes"
-msgstr "да"
-
-#: ../../Zotlabs/Module/Register.php:273
-#: ../../Zotlabs/Module/Admin/Site.php:290
-msgid "Registration"
-msgstr "Регистрация"
-
-#: ../../Zotlabs/Module/Register.php:290
-msgid ""
-"This site requires email verification. After completing this form, please "
-"check your email for further instructions."
-msgstr "Этот сайт требует проверку адреса электронной почты. После заполнения этой формы, пожалуйста, проверьте ваш почтовый ящик для дальнейших инструкций."
-
-#: ../../Zotlabs/Module/Apporder.php:44
-msgid "Change Order of Pinned Navbar Apps"
-msgstr "Изменить порядок приложений на панели навигации"
-
-#: ../../Zotlabs/Module/Apporder.php:44
-msgid "Change Order of App Tray Apps"
-msgstr "Изменить порядок приложений в лотке"
-
-#: ../../Zotlabs/Module/Apporder.php:45
-msgid ""
-"Use arrows to move the corresponding app left (top) or right (bottom) in the "
-"navbar"
-msgstr "Используйте стрелки для перемещения приложения влево (вверх) или вправо (вниз) в панели навигации"
-
-#: ../../Zotlabs/Module/Apporder.php:45
-msgid "Use arrows to move the corresponding app up or down in the app tray"
-msgstr "Используйте стрелки для перемещения приложения вверх или вниз в лотке"
-
-#: ../../Zotlabs/Module/Help.php:23
-msgid "Documentation Search"
-msgstr "Поиск документации"
-
-#: ../../Zotlabs/Module/Help.php:81 ../../Zotlabs/Module/Group.php:145
-msgid "Members"
-msgstr "Участники"
-
-#: ../../Zotlabs/Module/Help.php:82
-msgid "Administrators"
-msgstr "Администраторы"
-
-#: ../../Zotlabs/Module/Help.php:83
-msgid "Developers"
-msgstr "Разработчики"
-
-#: ../../Zotlabs/Module/Help.php:84
-msgid "Tutorials"
-msgstr "Руководства"
-
-#: ../../Zotlabs/Module/Help.php:95
-msgid "$Projectname Documentation"
-msgstr "$Projectname Документация"
-
-#: ../../Zotlabs/Module/Help.php:96
-msgid "Contents"
-msgstr "Содержимое"
-
-#: ../../Zotlabs/Module/Viewconnections.php:65
-msgid "No connections."
-msgstr "Контактов нет."
-
-#: ../../Zotlabs/Module/Viewconnections.php:83
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Посетить %s ​​профиль [%s]"
-
-#: ../../Zotlabs/Module/Viewconnections.php:113
-msgid "View Connections"
-msgstr "Просмотр контактов"
-
-#: ../../Zotlabs/Module/Rate.php:156
-msgid "Website:"
-msgstr "Веб-сайт:"
-
-#: ../../Zotlabs/Module/Rate.php:159
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Удалённый канал [%s] (пока неизвестен на этом сайте)"
-
-#: ../../Zotlabs/Module/Rate.php:160
-msgid "Rating (this information is public)"
-msgstr "Оценка (эта информация общедоступна)"
-
-#: ../../Zotlabs/Module/Rate.php:161
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Объясните свою оценку (необязательно; эта информация общедоступна)"
-
-#: ../../Zotlabs/Module/Regmod.php:15
-msgid "Please login."
-msgstr "Пожалуйста, войдите."
-
-#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
-msgid "Location not found."
-msgstr "Местоположение не найдено"
-
-#: ../../Zotlabs/Module/Locs.php:62
-msgid "Location lookup failed."
-msgstr "Поиск местоположения не удался"
-
-#: ../../Zotlabs/Module/Locs.php:66
-msgid ""
-"Please select another location to become primary before removing the primary "
-"location."
-msgstr "Пожалуйста, выберите другое местоположение в качестве основного прежде чем удалить предыдущее"
-
-#: ../../Zotlabs/Module/Locs.php:95
-msgid "Syncing locations"
-msgstr "Синхронизировать местоположение"
-
-#: ../../Zotlabs/Module/Locs.php:105
-msgid "No locations found."
-msgstr "Местоположений не найдено"
-
-#: ../../Zotlabs/Module/Locs.php:116
-msgid "Manage Channel Locations"
-msgstr "Управление местоположением канала"
-
-#: ../../Zotlabs/Module/Locs.php:119
-msgid "Primary"
-msgstr "Основной"
-
-#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:176
-msgid "Drop"
-msgstr "Удалить"
-
-#: ../../Zotlabs/Module/Locs.php:122
-msgid "Sync Now"
-msgstr "Синхронизировать"
-
-#: ../../Zotlabs/Module/Locs.php:123
-msgid "Please wait several minutes between consecutive operations."
-msgstr "Пожалуйста, подождите несколько минут между последовательными операциями."
-
-#: ../../Zotlabs/Module/Locs.php:124
-msgid ""
-"When possible, drop a location by logging into that website/hub and removing "
-"your channel."
-msgstr "По возможности, очистите местоположение, войдя на этот веб-сайт / хаб и удалив свой канал."
-
-#: ../../Zotlabs/Module/Locs.php:125
-msgid "Use this form to drop the location if the hub is no longer operating."
-msgstr "Используйте эту форму, чтобы удалить местоположение, если хаб больше не функционирует."
-
-#: ../../Zotlabs/Module/Sources.php:41
-msgid "Failed to create source. No channel selected."
-msgstr "Не удалось создать источник. Канал не выбран."
-
-#: ../../Zotlabs/Module/Sources.php:57
-msgid "Source created."
-msgstr "Источник создан."
-
-#: ../../Zotlabs/Module/Sources.php:70
-msgid "Source updated."
-msgstr "Источник обновлен."
-
-#: ../../Zotlabs/Module/Sources.php:88
-msgid "Sources App"
-msgstr "Приложение \"Источники канала\""
-
-#: ../../Zotlabs/Module/Sources.php:89
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Автоматический импорт контента из других каналов или лент"
-
-#: ../../Zotlabs/Module/Sources.php:101
-msgid "*"
-msgstr ""
-
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:344
-msgid "Channel Sources"
-msgstr "Источники канала"
-
-#: ../../Zotlabs/Module/Sources.php:108
-msgid "Manage remote sources of content for your channel."
-msgstr "Управление удалённым источниками содержимого для вашего канала"
-
-#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:119
-msgid "New Source"
-msgstr "Новый источник"
-
-#: ../../Zotlabs/Module/Sources.php:120 ../../Zotlabs/Module/Sources.php:154
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Импортировать всё или выбранное содержимое из следующего канала в этот канал и распределить его в соответствии с вашими настройками."
-
-#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155
-msgid "Only import content with these words (one per line)"
-msgstr "Импортировать содержимое только с этим текстом (построчно)"
-
-#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155
-msgid "Leave blank to import all public content"
-msgstr "Оставьте пустым для импорта всего общедоступного содержимого"
-
-#: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:161
-msgid "Channel Name"
-msgstr "Название канала"
-
-#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158
-msgid ""
-"Add the following categories to posts imported from this source (comma "
-"separated)"
-msgstr "Добавить следующие категории к импортированным публикациям из этого источника (через запятые)"
-
-#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
-msgid "Resend posts with this channel as author"
-msgstr "Отправить публикации в этот канал повторно как автор"
-
-#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
-msgid "Copyrights may apply"
-msgstr "Могут применяться авторские права"
-
-#: ../../Zotlabs/Module/Sources.php:144 ../../Zotlabs/Module/Sources.php:174
-msgid "Source not found."
-msgstr "Источник не найден."
-
-#: ../../Zotlabs/Module/Sources.php:151
-msgid "Edit Source"
-msgstr "Редактировать источник"
-
-#: ../../Zotlabs/Module/Sources.php:152
-msgid "Delete Source"
-msgstr "Удалить источник"
-
-#: ../../Zotlabs/Module/Sources.php:182
-msgid "Source removed"
-msgstr "Источник удален"
-
-#: ../../Zotlabs/Module/Sources.php:184
-msgid "Unable to remove source."
-msgstr "Невозможно удалить источник."
-
-#: ../../Zotlabs/Module/Chat.php:102
-msgid "Chatrooms App"
-msgstr "Приложение \"Мои чаты\""
-
-#: ../../Zotlabs/Module/Chat.php:103
-msgid "Access Controlled Chatrooms"
-msgstr "Получить доступ к контролируемым чатам"
-
-#: ../../Zotlabs/Module/Chat.php:196
-msgid "Room not found"
-msgstr "Комната не найдена"
-
-#: ../../Zotlabs/Module/Chat.php:212
-msgid "Leave Room"
-msgstr "Покинуть комнату"
-
-#: ../../Zotlabs/Module/Chat.php:213
-msgid "Delete Room"
-msgstr "Удалить комнату"
-
-#: ../../Zotlabs/Module/Chat.php:214
-msgid "I am away right now"
-msgstr "Я сейчас отошёл"
-
-#: ../../Zotlabs/Module/Chat.php:215
-msgid "I am online"
-msgstr "Я на связи"
-
-#: ../../Zotlabs/Module/Chat.php:217
-msgid "Bookmark this room"
-msgstr "Запомнить эту комнату"
-
-#: ../../Zotlabs/Module/Chat.php:240
-msgid "New Chatroom"
-msgstr "Новый чат"
-
-#: ../../Zotlabs/Module/Chat.php:241
-msgid "Chatroom name"
-msgstr "Название чата"
-
-#: ../../Zotlabs/Module/Chat.php:242
-msgid "Expiration of chats (minutes)"
-msgstr "Завершение чатов (минут)"
-
-#: ../../Zotlabs/Module/Chat.php:258
-#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "Чаты пользователя %1$s"
-
-#: ../../Zotlabs/Module/Chat.php:263
-msgid "No chatrooms available"
-msgstr "Нет доступных чатов"
-
-#: ../../Zotlabs/Module/Chat.php:267
-msgid "Expiration"
-msgstr "Срок действия"
-
-#: ../../Zotlabs/Module/Chat.php:268
-msgid "min"
-msgstr "мин."
-
-#: ../../Zotlabs/Module/Oauth2.php:54
-msgid "Name and Secret are required"
-msgstr "Требуются имя и код"
-
-#: ../../Zotlabs/Module/Oauth2.php:106
-msgid "OAuth2 Apps Manager App"
-msgstr "Приложение \"Менеджер Oauth2\""
-
-#: ../../Zotlabs/Module/Oauth2.php:107
-msgid "OAuth2 authenticatication tokens for mobile and remote apps"
-msgstr "Аутентификация OAuth2 для мобильных и удаленных приложений"
-
-#: ../../Zotlabs/Module/Oauth2.php:115
-msgid "Add OAuth2 application"
-msgstr "Добавить приложение OAuth2"
-
-#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149
-msgid "Grant Types"
-msgstr "Разрешить типы"
-
-#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122
-msgid "leave blank unless your application sepcifically requires this"
-msgstr "оставьте пустыми до тех пока ваше приложение не требует этого"
-
-#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150
-msgid "Authorization scope"
-msgstr "Область полномочий"
-
-#: ../../Zotlabs/Module/Oauth2.php:134
-msgid "OAuth2 Application not found."
-msgstr "Приложение OAuth2 не найдено."
-
-#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150
-msgid "leave blank unless your application specifically requires this"
-msgstr "оставьте поле пустым, если ваше приложение не требует этого"
-
-#: ../../Zotlabs/Module/Oauth2.php:192
-msgid "Connected OAuth2 Apps"
-msgstr "Подключённые приложения OAuth2"
-
-#: ../../Zotlabs/Module/Settings/Manage.php:39
-msgid "Channel Manager Settings"
-msgstr "Настройки менеджера канала"
-
-#: ../../Zotlabs/Module/Settings/Calendar.php:39
-msgid "CalDAV Settings"
-msgstr "Настройки CalDAV"
-
-#: ../../Zotlabs/Module/Settings/Account.php:19
-msgid "Not valid email."
-msgstr "Не действительный адрес email."
-
-#: ../../Zotlabs/Module/Settings/Account.php:22
-msgid "Protected email address. Cannot change to that email."
-msgstr "Защищенный адрес электронной почты. Нельзя изменить."
-
-#: ../../Zotlabs/Module/Settings/Account.php:31
-msgid "System failure storing new email. Please try again."
-msgstr "Системная ошибка сохранения email. Пожалуйста попробуйте ещё раз."
-
-#: ../../Zotlabs/Module/Settings/Account.php:48
-msgid "Password verification failed."
-msgstr "Не удалось выполнить проверку пароля."
-
-#: ../../Zotlabs/Module/Settings/Account.php:55
-msgid "Passwords do not match. Password unchanged."
-msgstr "Пароли не совпадают. Пароль не изменён."
-
-#: ../../Zotlabs/Module/Settings/Account.php:59
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Пустые пароли не допускаются. Пароль не изменён."
-
-#: ../../Zotlabs/Module/Settings/Account.php:73
-msgid "Password changed."
-msgstr "Пароль изменен."
-
-#: ../../Zotlabs/Module/Settings/Account.php:75
-msgid "Password update failed. Please try again."
-msgstr "Изменение пароля не удалось. Пожалуйста, попробуйте ещё раз."
-
-#: ../../Zotlabs/Module/Settings/Account.php:99
-msgid "Account Settings"
-msgstr "Настройки аккаунта"
-
-#: ../../Zotlabs/Module/Settings/Account.php:100
-msgid "Current Password"
-msgstr "Текущий пароль"
-
-#: ../../Zotlabs/Module/Settings/Account.php:101
-msgid "Enter New Password"
-msgstr "Введите новый пароль:"
-
-#: ../../Zotlabs/Module/Settings/Account.php:102
-msgid "Confirm New Password"
-msgstr "Подтвердите новый пароль:"
-
-#: ../../Zotlabs/Module/Settings/Account.php:102
-msgid "Leave password fields blank unless changing"
-msgstr "Оставьте поля пустыми до измнения"
-
-#: ../../Zotlabs/Module/Settings/Account.php:104
-#: ../../Zotlabs/Module/Settings/Channel.php:500
-msgid "Email Address:"
-msgstr "Адрес email:"
-
-#: ../../Zotlabs/Module/Settings/Account.php:105
-#: ../../Zotlabs/Module/Removeaccount.php:61
-msgid "Remove Account"
-msgstr "Удалить аккаунт"
-
-#: ../../Zotlabs/Module/Settings/Account.php:106
-msgid "Remove this account including all its channels"
-msgstr "Удалить этот аккаунт включая все каналы"
-
-#: ../../Zotlabs/Module/Settings/Conversation.php:22
-msgid "Settings saved."
-msgstr "Настройки сохранены."
-
-#: ../../Zotlabs/Module/Settings/Conversation.php:24
-msgid "Settings saved. Reload page please."
-msgstr "Настройки сохранены. Пожалуйста, перезагрузите страницу."
-
-#: ../../Zotlabs/Module/Settings/Conversation.php:46
-msgid "Conversation Settings"
-msgstr "Настройки бесед"
-
-#: ../../Zotlabs/Module/Settings/Editor.php:39
-msgid "Editor Settings"
-msgstr "Настройки редактора"
-
-#: ../../Zotlabs/Module/Settings/Display.php:119
-#: ../../Zotlabs/Module/Admin/Site.php:198
-#, php-format
-msgid "%s - (Incompatible)"
-msgstr "%s - (несовместимо)"
-
-#: ../../Zotlabs/Module/Settings/Display.php:128
-#, php-format
-msgid "%s - (Experimental)"
-msgstr "%s - (экспериментальный)"
-
-#: ../../Zotlabs/Module/Settings/Display.php:184
-msgid "Display Settings"
-msgstr "Настройки отображения"
-
-#: ../../Zotlabs/Module/Settings/Display.php:185
-msgid "Theme Settings"
-msgstr "Настройки темы"
-
-#: ../../Zotlabs/Module/Settings/Display.php:186
-msgid "Custom Theme Settings"
-msgstr "Дополнительные настройки темы"
-
-#: ../../Zotlabs/Module/Settings/Display.php:187
-msgid "Content Settings"
-msgstr "Настройки содержимого"
-
-#: ../../Zotlabs/Module/Settings/Display.php:193
-msgid "Display Theme:"
-msgstr "Тема отображения:"
-
-#: ../../Zotlabs/Module/Settings/Display.php:194
-msgid "Select scheme"
-msgstr "Выбрать схему"
-
-#: ../../Zotlabs/Module/Settings/Display.php:196
-msgid "Preload images before rendering the page"
-msgstr "Предзагрузка изображений перед обработкой страницы"
-
-#: ../../Zotlabs/Module/Settings/Display.php:196
-msgid ""
-"The subjective page load time will be longer but the page will be ready when "
-"displayed"
-msgstr "Субъективное время загрузки страницы будет длиннее, но страница будет готова при отображении"
-
-#: ../../Zotlabs/Module/Settings/Display.php:197
-msgid "Enable user zoom on mobile devices"
-msgstr "Включить масштабирование на мобильных устройствах"
-
-#: ../../Zotlabs/Module/Settings/Display.php:198
-msgid "Update browser every xx seconds"
-msgstr "Обновление браузера каждые N секунд"
-
-#: ../../Zotlabs/Module/Settings/Display.php:198
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Минимум 10 секунд, без максимума"
-
-#: ../../Zotlabs/Module/Settings/Display.php:199
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Максимальное количество бесед для загрузки одновременно:"
-
-#: ../../Zotlabs/Module/Settings/Display.php:199
-msgid "Maximum of 100 items"
-msgstr "Максимум 100 элементов"
-
-#: ../../Zotlabs/Module/Settings/Display.php:200
-msgid "Show emoticons (smilies) as images"
-msgstr "Показывать эмотиконы (смайлики) как изображения"
-
-#: ../../Zotlabs/Module/Settings/Display.php:201
-msgid "Provide channel menu in navigation bar"
-msgstr "Показывать меню канала в панели навигации"
-
-#: ../../Zotlabs/Module/Settings/Display.php:201
-msgid "Default: channel menu located in app menu"
-msgstr "По умолчанию каналы расположены в меню приложения"
-
-#: ../../Zotlabs/Module/Settings/Display.php:202
-msgid "Manual conversation updates"
-msgstr "Обновление бесед вручную"
-
-#: ../../Zotlabs/Module/Settings/Display.php:202
-msgid "Default is on, turning this off may increase screen jumping"
-msgstr "Включено по умолчанию, выключение может привести к рывкам в отображении"
-
-#: ../../Zotlabs/Module/Settings/Display.php:203
-msgid "Link post titles to source"
-msgstr "Ссылки на источник заголовков публикаций"
-
-#: ../../Zotlabs/Module/Settings/Display.php:205
-#: ../../Zotlabs/Widget/Newmember.php:75
-msgid "New Member Links"
-msgstr "Ссылки для новичков"
-
-#: ../../Zotlabs/Module/Settings/Display.php:205
-msgid "Display new member quick links menu"
-msgstr "Показать меню быстрых ссылок для новых участников"
-
-#: ../../Zotlabs/Module/Settings/Features.php:43
-msgid "Additional Features"
-msgstr "Дополнительные функции"
-
-#: ../../Zotlabs/Module/Settings/Network.php:41
-#: ../../Zotlabs/Module/Settings/Channel_home.php:44
-msgid "Max height of content (in pixels)"
-msgstr "Максимальная высота содержимого (в пикселях)"
-
-#: ../../Zotlabs/Module/Settings/Network.php:43
-#: ../../Zotlabs/Module/Settings/Channel_home.php:46
-msgid "Click to expand content exceeding this height"
-msgstr "Нажмите чтобы развернуть содержимое превышающее эту высоту"
-
-#: ../../Zotlabs/Module/Settings/Network.php:58
-msgid "Stream Settings"
-msgstr "Настройки потока"
-
-#: ../../Zotlabs/Module/Settings/Events.php:39
-msgid "Events Settings"
-msgstr "Настройки событий"
-
-#: ../../Zotlabs/Module/Settings/Channel_home.php:59
-msgid "Personal menu to display in your channel pages"
-msgstr "Персональное меню для отображения на странице вашего канала"
-
-#: ../../Zotlabs/Module/Settings/Channel_home.php:86
-msgid "Channel Home Settings"
-msgstr "Настройки главной страницы канала"
-
-#: ../../Zotlabs/Module/Settings/Directory.php:39
-msgid "Directory Settings"
-msgstr "Настройки каталога"
-
-#: ../../Zotlabs/Module/Settings/Photos.php:39
-msgid "Photos Settings"
-msgstr "Настройки фотографий"
-
-#: ../../Zotlabs/Module/Settings/Profiles.php:47
-msgid "Profiles Settings"
-msgstr "Настройки профилей"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:23
-msgid "Affinity Slider settings updated."
-msgstr "Обновлены настройки слайдера cходства."
-
-#: ../../Zotlabs/Module/Settings/Featured.php:38
-msgid "No feature settings configured"
-msgstr "Параметры функций не настроены"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:45
-msgid "Default maximum affinity level"
-msgstr "Максимальный уровень сходства по умолчанию."
-
-#: ../../Zotlabs/Module/Settings/Featured.php:45
-msgid "0-99 default 99"
-msgstr "0-99 (по умолчанию 99)"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:50
-msgid "Default minimum affinity level"
-msgstr "Минимальный уровень сходства по умолчанию."
-
-#: ../../Zotlabs/Module/Settings/Featured.php:50
-msgid "0-99 - default 0"
-msgstr "0-99 (по умолчанию 0)"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:54
-msgid "Affinity Slider Settings"
-msgstr "Настройки слайдера сходства"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:67
-msgid "Addon Settings"
-msgstr "Настройки расширений"
-
-#: ../../Zotlabs/Module/Settings/Featured.php:68
-msgid "Please save/submit changes to any panel before opening another."
-msgstr "Пожалуйста сохраните / отправьте изменения на панели прежде чем открывать другую."
-
-#: ../../Zotlabs/Module/Settings/Connections.php:39
-msgid "Connections Settings"
-msgstr "Настройки контактов"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:327
-msgid "Nobody except yourself"
-msgstr "Никто кроме вас"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:328
-msgid "Only those you specifically allow"
-msgstr "Только персонально разрешённые"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:329
-msgid "Approved connections"
-msgstr "Одобренные контакты"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:330
-msgid "Any connections"
-msgstr "Любые контакты"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:331
-msgid "Anybody on this website"
-msgstr "Любой на этом сайте"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:332
-msgid "Anybody in this network"
-msgstr "Любой в этой сети"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:333
-msgid "Anybody authenticated"
-msgstr "Любой аутентифицированный"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:334
-msgid "Anybody on the internet"
-msgstr "Любой в интернете"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:409
-msgid "Publish your default profile in the network directory"
-msgstr "Публиковать ваш профиль по умолчанию в сетевом каталоге"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:414
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Разрешить предлагать вас как потенциального друга для новых пользователей?"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:418
-msgid "or"
-msgstr "или"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:427
-msgid "Your channel address is"
-msgstr "Адрес вашего канала"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:430
-msgid "Your files/photos are accessible via WebDAV at"
-msgstr "Ваши файлы / фотографии доступны через WebDAV по"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:470
-msgid "Automatic membership approval"
-msgstr "Членство одобрено автоматически"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:491
-msgid "Channel Settings"
-msgstr "Настройки канала"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:498
-msgid "Basic Settings"
-msgstr "Основные настройки"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:501
-msgid "Your Timezone:"
-msgstr "Часовой пояс:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:502
-msgid "Default Post Location:"
-msgstr "Расположение по умолчанию:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:502
-msgid "Geographical location to display on your posts"
-msgstr "Показывать географическое положение в ваших публикациях"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:503
-msgid "Use Browser Location:"
-msgstr "Определять расположение из браузера"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:505
-msgid "Adult Content"
-msgstr "Содержимое для взрослых"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:505
-msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Этот канал часто или регулярно публикует содержимое для взрослых. Пожалуйста, помечайте любой такой материал тегом #NSFW"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:507
-msgid "Security and Privacy Settings"
-msgstr "Безопасность и настройки приватности"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:509
-msgid "Your permissions are already configured. Click to view/adjust"
-msgstr "Ваши разрешения уже настроены. Нажмите чтобы просмотреть или изменить"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:511
-msgid "Hide my online presence"
-msgstr "Скрывать моё присутствие онлайн"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:511
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Предотвращает отображения статуса \"в сети\" в вашем профиле"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:513
-msgid "Simple Privacy Settings:"
-msgstr "Простые настройки безопасности:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:514
-msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Полностью открытый - <em>сверхлиберальный (должен использоваться с осторожностью)</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:515
-msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Обычный - <em>открытый по умолчанию, приватность по желанию (как в социальных сетях, но с улучшенными настройками)</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:516
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Частный - <em>частный по умочанию, не открытый и не публичный</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:517
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Закрытый - <em>заблокированный по умолчанию от / для всех</em>"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-msgid "Allow others to tag your posts"
-msgstr "Разрешить другим отмечать ваши публикации"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:519
-msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
-msgstr "Часто используется сообществом для маркировки неподобающего содержания"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:521
-msgid "Channel Permission Limits"
-msgstr "Ограничения разрешений канала"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:523
-msgid "Expire other channel content after this many days"
-msgstr "Храненить содержимое других каналов, дней"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:523
-msgid "0 or blank to use the website limit."
-msgstr "0 или пусто - использовать настройки сайта."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:523
-#, php-format
-msgid "This website expires after %d days."
-msgstr "Срок хранения содержимого этого сайта истекает через %d дней"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:523
-msgid "This website does not expire imported content."
-msgstr "Срок хранения импортированного содержимого этого сайта не ограничен."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:523
-msgid "The website limit takes precedence if lower than your limit."
-msgstr "Ограничение сайта имеет приоритет если ниже вашего значения."
-
-#: ../../Zotlabs/Module/Settings/Channel.php:524
-msgid "Maximum Friend Requests/Day:"
-msgstr "Запросов в друзья в день:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:524
-msgid "May reduce spam activity"
-msgstr "Может ограничить спам активность"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:525
-msgid "Default Privacy Group"
-msgstr "Группа конфиденциальности по умолчанию"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:526
-#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247
-msgid "(click to open/close)"
-msgstr "(нажмите чтобы открыть/закрыть)"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:527
-msgid "Use my default audience setting for the type of object published"
-msgstr "Использовать настройки аудитории по умолчанию для типа опубликованного объекта"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:536
-msgid "Default permissions category"
-msgstr "Категория разрешений по умолчанию"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:542
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Максимально количество сообщений от незнакомых людей, в день:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:542
-msgid "Useful to reduce spamming"
-msgstr "Полезно для сокращения количества спама"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:545
-#: ../../Zotlabs/Lib/Enotify.php:68
-msgid "Notification Settings"
-msgstr "Настройки уведомлений"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:546
-msgid "By default post a status message when:"
-msgstr "По умолчанию публиковать новый статус при:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:547
-msgid "accepting a friend request"
-msgstr "одобрении запроса в друзья"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:548
-msgid "joining a forum/community"
-msgstr "вступлении в сообщество / форум"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:549
-msgid "making an <em>interesting</em> profile change"
-msgstr "<em>интересном</em> изменении профиля"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:550
-msgid "Send a notification email when:"
-msgstr "Отправить уведомление по email когда:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:551
-msgid "You receive a connection request"
-msgstr "вы получили новый запрос контакта"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:552
-msgid "Your connections are confirmed"
-msgstr "Ваш запрос контакта был одобрен"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:553
-msgid "Someone writes on your profile wall"
-msgstr "Кто-то написал на стене вашего профиля"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:554
-msgid "Someone writes a followup comment"
-msgstr "Кто-то пишет комментарий"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:555
-msgid "You receive a private message"
-msgstr "Вы получили личное сообщение"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:556
-msgid "You receive a friend suggestion"
-msgstr "Вы получили предложение друзей"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:557
-msgid "You are tagged in a post"
-msgstr "Вы были отмечены в публикации"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:558
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Вас толкнули, подтолкнули и т.п. в публикации"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:560
-msgid "Someone likes your post/comment"
-msgstr "Кому-то нравится ваша публикация / комментарий"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:563
-msgid "Show visual notifications including:"
-msgstr "Показывать визуальные оповещения включая:"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:565
-msgid "Unseen stream activity"
-msgstr "Невидимая активность в потоке"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:566
-msgid "Unseen channel activity"
-msgstr "Невидимая активность в канале"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:567
-msgid "Unseen private messages"
-msgstr "Невидимые личные сообщения"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:567
-#: ../../Zotlabs/Module/Settings/Channel.php:572
-#: ../../Zotlabs/Module/Settings/Channel.php:573
-#: ../../Zotlabs/Module/Settings/Channel.php:574
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:343
-msgid "Recommended"
-msgstr "Рекомендовано"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:568
-msgid "Upcoming events"
-msgstr "Грядущие события"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:569
-msgid "Events today"
-msgstr "События сегодня"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:570
-msgid "Upcoming birthdays"
-msgstr "Грядущие дни рождения"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:570
-msgid "Not available in all themes"
-msgstr "Не доступно во всех темах"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:571
-msgid "System (personal) notifications"
-msgstr "Системные (личные) уведомления"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:572
-msgid "System info messages"
-msgstr "Сообщения с системной информацией"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:573
-msgid "System critical alerts"
-msgstr "Критические уведомления системы"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:574
-msgid "New connections"
-msgstr "Новые контакты"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:575
-msgid "System Registrations"
-msgstr "Системные регистрации"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:576
-msgid "Unseen shared files"
-msgstr "Невидимые общие файлы"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:577
-msgid "Unseen public stream activity"
-msgstr "Невидимая активность в публичном потоке"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:578
-msgid "Unseen likes and dislikes"
-msgstr "Невидимые лайки и дислайки"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:579
-msgid "Unseen forum posts"
-msgstr "Невидимые публикации на форуме"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:580
-msgid "Email notification hub (hostname)"
-msgstr "Центр уведомлений по email (имя хоста)"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:580
-#, php-format
-msgid ""
-"If your channel is mirrored to multiple hubs, set this to your preferred "
-"location. This will prevent duplicate email notifications. Example: %s"
-msgstr "Если ваш канал зеркалируется в нескольких местах, это ваше предпочтительное местоположение. Это должно предотвратить дублировать уведомлений по email. Например: %s"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:581
-msgid "Show new wall posts, private messages and connections under Notices"
-msgstr "Показать новые сообщения на стене, личные сообщения и контакты в \"Уведомлениях\""
-
-#: ../../Zotlabs/Module/Settings/Channel.php:583
-msgid "Notify me of events this many days in advance"
-msgstr "Уведомлять меня о событиях заранее, дней"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:583
-msgid "Must be greater than 0"
-msgstr "Должно быть больше 0"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:588
-msgid "Advanced Account/Page Type Settings"
-msgstr "Дополнительные настройки учётной записи / страницы"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:589
-msgid "Change the behaviour of this account for special situations"
-msgstr "Изменить поведение этого аккаунта в особых ситуациях"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:591
-msgid "Miscellaneous Settings"
-msgstr "Дополнительные настройки"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:592
-msgid "Default photo upload folder"
-msgstr "Каталог загрузки фотографий по умолчанию"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:592
-#: ../../Zotlabs/Module/Settings/Channel.php:593
-msgid "%Y - current year, %m - current month"
-msgstr "%Y - текущий год, %y - текущий месяц"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:593
-msgid "Default file upload folder"
-msgstr "Каталог загрузки файлов по умолчанию"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:594
-#: ../../Zotlabs/Module/Removeme.php:64
-msgid "Remove Channel"
-msgstr "Удаление канала"
-
-#: ../../Zotlabs/Module/Settings/Channel.php:595
-msgid "Remove this channel."
-msgstr "Удалить этот канал."
-
-#: ../../Zotlabs/Module/Dirsearch.php:33
-msgid "This directory server requires an access token"
-msgstr "Для доступа к этому серверу каталогов требуется токен"
-
-#: ../../Zotlabs/Module/Editlayout.php:79 ../../Zotlabs/Module/Editblock.php:79
-#: ../../Zotlabs/Module/Editblock.php:95
-#: ../../Zotlabs/Module/Editwebpage.php:80 ../../Zotlabs/Module/Editpost.php:24
-#: ../../Zotlabs/Module/Card_edit.php:17 ../../Zotlabs/Module/Card_edit.php:33
-#: ../../Zotlabs/Module/Article_edit.php:17
-#: ../../Zotlabs/Module/Article_edit.php:33
-msgid "Item not found"
-msgstr "Элемент не найден"
-
-#: ../../Zotlabs/Module/Editlayout.php:128 ../../Zotlabs/Module/Layouts.php:129
-#: ../../Zotlabs/Module/Layouts.php:189
-msgid "Layout Name"
-msgstr "Название шаблона"
-
-#: ../../Zotlabs/Module/Editlayout.php:129 ../../Zotlabs/Module/Layouts.php:132
-msgid "Layout Description (Optional)"
-msgstr "Описание шаблона (необязательно)"
-
-#: ../../Zotlabs/Module/Editlayout.php:137
-msgid "Edit Layout"
-msgstr "Редактировать шаблон"
-
-#: ../../Zotlabs/Module/Apps.php:50 ../../Zotlabs/Widget/Appstore.php:14
-msgid "Available Apps"
-msgstr "Доступные приложения"
-
-#: ../../Zotlabs/Module/Apps.php:50
-msgid "Installed Apps"
-msgstr "Установленные приложения"
-
-#: ../../Zotlabs/Module/Apps.php:53
-msgid "Manage Apps"
-msgstr "Управление приложениями"
-
-#: ../../Zotlabs/Module/Apps.php:54
-msgid "Create Custom App"
-msgstr "Создать пользовательское приложение"
-
-#: ../../Zotlabs/Module/Filestorage.php:79
-msgid "Permission Denied."
-msgstr "Доступ запрещен."
-
-#: ../../Zotlabs/Module/Filestorage.php:112
-msgid "File not found."
-msgstr "Файл не найден."
-
-#: ../../Zotlabs/Module/Filestorage.php:165
-msgid "Edit file permissions"
-msgstr "Редактировать разрешения файла"
-
-#: ../../Zotlabs/Module/Filestorage.php:177
-msgid "Set/edit permissions"
-msgstr "Редактировать разрешения"
-
-#: ../../Zotlabs/Module/Filestorage.php:178
-msgid "Include all files and sub folders"
-msgstr "Включить все файлы и подкаталоги"
-
-#: ../../Zotlabs/Module/Filestorage.php:179
-msgid "Return to file list"
-msgstr "Вернутся к списку файлов"
-
-#: ../../Zotlabs/Module/Filestorage.php:181
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Копировать / вставить этот код для прикрепления файла к публикации"
-
-#: ../../Zotlabs/Module/Filestorage.php:182
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Копировать / вставить эту URL для ссылки на файл со страницы"
-
-#: ../../Zotlabs/Module/Filestorage.php:184
-msgid "Share this file"
-msgstr "Поделиться этим файлом"
-
-#: ../../Zotlabs/Module/Filestorage.php:185
-msgid "Show URL to this file"
-msgstr "Показать URL этого файла"
-
-#: ../../Zotlabs/Module/Editblock.php:113 ../../Zotlabs/Module/Blocks.php:97
-#: ../../Zotlabs/Module/Blocks.php:155
-msgid "Block Name"
-msgstr "Название блока"
-
-#: ../../Zotlabs/Module/Editblock.php:138
-msgid "Edit Block"
-msgstr "Редактировать блок"
-
-#: ../../Zotlabs/Module/Service_limits.php:23
-msgid "No service class restrictions found."
-msgstr "Ограничений класса обслуживание не найдено."
-
-#: ../../Zotlabs/Module/Channel.php:160
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Недостаточно прав. Запрос перенаправлен на страницу профиля."
-
-#: ../../Zotlabs/Module/Uexport.php:61
-msgid "Channel Export App"
-msgstr "Приложение \"Экспорт канала\""
-
-#: ../../Zotlabs/Module/Uexport.php:62
-msgid "Export your channel"
-msgstr "Экспортировать ваш канал"
-
-#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73
-msgid "Export Channel"
-msgstr "Экспорт канала"
-
-#: ../../Zotlabs/Module/Uexport.php:74
-msgid ""
-"Export your basic channel information to a file. This acts as a backup of "
-"your connections, permissions, profile and basic data, which can be used to "
-"import your data to a new server hub, but does not contain your content."
-msgstr "Экспортировать основную информацию из канала в файл. Служит в качестве резервной копии ваших контактов, основных данных и профиля, однако не включает содержимое. Может быть использовано для импорта ваши данных на новый сервер."
-
-#: ../../Zotlabs/Module/Uexport.php:75
-msgid "Export Content"
-msgstr "Экспортировать содержимое"
-
-#: ../../Zotlabs/Module/Uexport.php:76
-msgid ""
-"Export your channel information and recent content to a JSON backup that can "
-"be restored or imported to another server hub. This backs up all of your "
-"connections, permissions, profile data and several months of posts. This "
-"file may be VERY large. Please be patient - it may take several minutes for "
-"this download to begin."
-msgstr "Экспортировать информацию из вашего канала и его содержимое в резервную копию в формате JSON которая может быть использована для восстановления или импорта на другом сервере. Сохраняет все ваши контакты, разрешения, данные профиля и публикации за несколько месяцев. Файл может иметь очень большой размер. Пожалуйста, будьте терпеливы и подождите несколько минут пока не начнётся загрузка."
-
-#: ../../Zotlabs/Module/Uexport.php:78
-msgid "Export your posts from a given year."
-msgstr "Экспортировать ваши публикации за данный год."
-
-#: ../../Zotlabs/Module/Uexport.php:80
-msgid ""
-"You may also export your posts and conversations for a particular year or "
-"month. Adjust the date in your browser location bar to select other dates. "
-"If the export fails (possibly due to memory exhaustion on your server hub), "
-"please try again selecting a more limited date range."
-msgstr "Вы также можете экспортировать ваши публикации и беседы за определённый месяц или год. Выберите дату в панели местоположения в браузере. Если экспорт будет неудачным (это возможно, например, из-за исчерпания памяти на сервере), повторите попытку, выбрав меньший диапазон дат."
-
-#: ../../Zotlabs/Module/Uexport.php:81
-#, php-format
-msgid ""
-"To select all posts for a given year, such as this year, visit <a href=\"%1$s"
-"\">%2$s</a>"
-msgstr "Для выбора всех публикаций заданного года, например текущего, посетите <a href=\"%1$s\">%2$s</a>"
-
-#: ../../Zotlabs/Module/Uexport.php:82
-#, php-format
-msgid ""
-"To select all posts for a given month, such as January of this year, visit "
-"<a href=\"%1$s\">%2$s</a>"
-msgstr "Для выбора всех публикаций заданного месяца, например за январь сего года, посетите <a href=\"%1$s\">%2$s</a>"
-
-#: ../../Zotlabs/Module/Uexport.php:83
-#, php-format
-msgid ""
-"These content files may be imported or restored by visiting <a href=\"%1$s\">"
-"%2$s</a> on any site containing your channel. For best results please import "
-"or restore these in date order (oldest first)."
-msgstr "Данные файлы с содержимым могут быть импортированы и восстановлены на любом содержащем ваш канал сайте. Посетите <a href=\"%1$s\">%2$s</a>. Для лучших результатов пожалуйста производите импорт и восстановление в порядке датировки (старые сначала)."
-
-#: ../../Zotlabs/Module/Chatsvc.php:131
-msgid "Away"
-msgstr "Нет на месте"
-
-#: ../../Zotlabs/Module/Chatsvc.php:136
-msgid "Online"
-msgstr "В сети"
-
-#: ../../Zotlabs/Module/Like.php:54
-msgid "Like/Dislike"
-msgstr "Нравится / не нравится"
-
-#: ../../Zotlabs/Module/Like.php:59
-msgid "This action is restricted to members."
-msgstr "Это действие доступно только участникам."
-
-#: ../../Zotlabs/Module/Like.php:60
-msgid ""
-"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
-"\"register\">register as a new $Projectname member</a> to continue."
-msgstr "Пожалуйста, для продолжения <a href=\"rmagic\"> войдите с вашим $Projectname ID</a> или <a href=\"register\">зарегистрируйтесь как новый участник $Projectname</a>."
-
-#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
-#: ../../Zotlabs/Module/Like.php:173
-msgid "Invalid request."
-msgstr "Неверный запрос."
-
-#: ../../Zotlabs/Module/Like.php:150
-msgid "thing"
-msgstr "предмет"
-
-#: ../../Zotlabs/Module/Like.php:196
-msgid "Channel unavailable."
-msgstr "Канал недоступен."
-
-#: ../../Zotlabs/Module/Like.php:244
-msgid "Previous action reversed."
-msgstr "Предыдущее действие отменено."
-
-#: ../../Zotlabs/Module/Like.php:445
-#, php-format
-msgid "%1$s agrees with %2$s's %3$s"
-msgstr "%1$s согласен с %2$s %3$s"
-
-#: ../../Zotlabs/Module/Like.php:447
-#, php-format
-msgid "%1$s doesn't agree with %2$s's %3$s"
-msgstr "%1$s не согласен с %2$s %3$s"
-
-#: ../../Zotlabs/Module/Like.php:449
-#, php-format
-msgid "%1$s abstains from a decision on %2$s's %3$s"
-msgstr "%1$s воздерживается от решения по %2$s%3$s"
-
-#: ../../Zotlabs/Module/Like.php:451
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2120
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr "%1$s посещает %2$s%3$s"
-
-#: ../../Zotlabs/Module/Like.php:453
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2122
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr "%1$s не посещает %2$s%3$s"
-
-#: ../../Zotlabs/Module/Like.php:455
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2124
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr "%1$s может посетить %2$s%3$s"
-
-#: ../../Zotlabs/Module/Like.php:566
-msgid "Action completed."
-msgstr "Действие завершено."
-
-#: ../../Zotlabs/Module/Like.php:567
-msgid "Thank you."
-msgstr "Спасибо."
-
-#: ../../Zotlabs/Module/Bookmarks.php:62
-msgid "Bookmark added"
-msgstr "Закладка добавлена"
-
-#: ../../Zotlabs/Module/Bookmarks.php:78
-msgid "Bookmarks App"
-msgstr "Приложение \"Закладки\""
-
-#: ../../Zotlabs/Module/Bookmarks.php:79
-msgid "Bookmark links from posts and manage them"
-msgstr "Поместить ссылки из публикации в закладки и управлять ими"
-
-#: ../../Zotlabs/Module/Bookmarks.php:92
-msgid "My Bookmarks"
-msgstr "Мои закладки"
-
-#: ../../Zotlabs/Module/Bookmarks.php:103
-msgid "My Connections Bookmarks"
-msgstr "Закладки моих контактов"
-
-#: ../../Zotlabs/Module/Attach.php:13
-msgid "Item not available."
-msgstr "Элемент недоступен."
-
-#: ../../Zotlabs/Module/Probe.php:18
-msgid "Remote Diagnostics App"
-msgstr "Приложение \"Удалённая диагностика\""
-
-#: ../../Zotlabs/Module/Probe.php:19
-msgid "Perform diagnostics on remote channels"
-msgstr "Производит диагностику удалённых каналов"
-
-#: ../../Zotlabs/Module/Viewsrc.php:43
-msgid "item"
-msgstr "пункт"
-
-#: ../../Zotlabs/Module/Cal.php:70
-msgid "Permissions denied."
-msgstr "Доступ запрещен."
-
#: ../../Zotlabs/Module/Removeme.php:35
msgid ""
"Channel removals are not allowed within 48 hours of changing the account "
@@ -7603,6 +1812,12 @@ msgid "Remove This Channel"
msgstr "Удалить этот канал"
#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Changeaddr.php:78
+msgid "WARNING: "
+msgstr "ПРЕДУПРЕЖДЕНИЕ: "
+
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "This channel will be completely removed from the network. "
msgstr "Этот канал будет полностью удалён из сети. "
@@ -7611,6 +1826,12 @@ msgstr "Этот канал будет полностью удалён из се
msgid "This action is permanent and can not be undone!"
msgstr "Это действие необратимо и не может быть отменено!"
+#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:59
+#: ../../Zotlabs/Module/Changeaddr.php:79
+msgid "Please enter your password for verification:"
+msgstr "Пожалуйста, введите ваш пароль для проверки:"
+
#: ../../Zotlabs/Module/Removeme.php:63
msgid "Remove this channel and all its clones from the network"
msgstr "Удалить этот канал и все его клоны из сети"
@@ -7621,162 +1842,36 @@ msgid ""
"removed from the network"
msgstr "По умолчанию только представление канала расположенное на данном хабе будет удалено из сети"
-#: ../../Zotlabs/Module/Menu.php:67
-msgid "Unable to update menu."
-msgstr "Невозможно обновить меню."
-
-#: ../../Zotlabs/Module/Menu.php:78
-msgid "Unable to create menu."
-msgstr "Невозможно создать меню."
-
-#: ../../Zotlabs/Module/Menu.php:160 ../../Zotlabs/Module/Menu.php:173
-msgid "Menu Name"
-msgstr "Название меню"
-
-#: ../../Zotlabs/Module/Menu.php:160
-msgid "Unique name (not visible on webpage) - required"
-msgstr "Уникальное название (не видимо на странице) - требуется"
-
-#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174
-msgid "Menu Title"
-msgstr "Заголовок меню"
-
-#: ../../Zotlabs/Module/Menu.php:161
-msgid "Visible on webpage - leave empty for no title"
-msgstr "Видимость на странице - оставьте пустым если не хотите иметь заголовок"
-
-#: ../../Zotlabs/Module/Menu.php:162
-msgid "Allow Bookmarks"
-msgstr "Разрешить закладки"
-
-#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Меню может использоваться, чтобы сохранить закладки"
-
-#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:224
-msgid "Submit and proceed"
-msgstr "Отправить и обработать"
-
-#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Webpages.php:266
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:191
-msgid "Created"
-msgstr "Создано"
-
-#: ../../Zotlabs/Module/Menu.php:178 ../../Zotlabs/Module/Webpages.php:267
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:192
-msgid "Edited"
-msgstr "Отредактировано"
-
-#: ../../Zotlabs/Module/Menu.php:179 ../../Zotlabs/Module/Notifications.php:50
-#: ../../Zotlabs/Module/Connections.php:83
-#: ../../Zotlabs/Module/Connections.php:92
-msgid "New"
-msgstr "Новые"
-
-#: ../../Zotlabs/Module/Menu.php:180
-msgid "Bookmarks allowed"
-msgstr "Закладки разрешены"
-
-#: ../../Zotlabs/Module/Menu.php:182
-msgid "Delete this menu"
-msgstr "Удалить это меню"
-
-#: ../../Zotlabs/Module/Menu.php:183 ../../Zotlabs/Module/Menu.php:218
-msgid "Edit menu contents"
-msgstr "Редактировать содержание меню"
-
-#: ../../Zotlabs/Module/Menu.php:184
-msgid "Edit this menu"
-msgstr "Редактировать это меню"
-
-#: ../../Zotlabs/Module/Menu.php:200
-msgid "Menu could not be deleted."
-msgstr "Меню не может быть удалено."
-
-#: ../../Zotlabs/Module/Menu.php:208 ../../Zotlabs/Module/Mitem.php:31
-msgid "Menu not found."
-msgstr "Меню не найдено"
-
-#: ../../Zotlabs/Module/Menu.php:213
-msgid "Edit Menu"
-msgstr "Редактировать меню"
-
-#: ../../Zotlabs/Module/Menu.php:217
-msgid "Add or remove entries to this menu"
-msgstr "Добавить или удалить пункты этого меню"
-
-#: ../../Zotlabs/Module/Menu.php:219
-msgid "Menu name"
-msgstr "Название меню"
-
-#: ../../Zotlabs/Module/Menu.php:219
-msgid "Must be unique, only seen by you"
-msgstr "Должно быть уникальным (видно только вам)"
-
-#: ../../Zotlabs/Module/Menu.php:220
-msgid "Menu title"
-msgstr "Заголовок меню"
-
-#: ../../Zotlabs/Module/Menu.php:220
-msgid "Menu title as seen by others"
-msgstr "Видимый другими заголовок меню"
-
-#: ../../Zotlabs/Module/Menu.php:221
-msgid "Allow bookmarks"
-msgstr "Разрешить закладки"
-
-#: ../../Zotlabs/Module/Ratings.php:70
-msgid "No ratings"
-msgstr "Оценок нет"
-
-#: ../../Zotlabs/Module/Ratings.php:98
-msgid "Rating: "
-msgstr "Оценкa:"
-
-#: ../../Zotlabs/Module/Ratings.php:99
-msgid "Website: "
-msgstr "Веб-сайт:"
-
-#: ../../Zotlabs/Module/Ratings.php:101
-msgid "Description: "
-msgstr "Описание:"
-
-#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12
-msgid "Public Hubs"
-msgstr "Публичные хабы"
-
-#: ../../Zotlabs/Module/Pubsites.php:27
-msgid ""
-"The listed hubs allow public registration for the $Projectname network. All "
-"hubs in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some hubs may require subscription or "
-"provide tiered service plans. The hub itself <strong>may</strong> provide "
-"additional details."
-msgstr "Указанные хабы разрешают публичную регистрацию для сети $Projectname. Все хабы в сети взаимосвязаны, поэтому членство в любом из них передает членство во всю сеть. Некоторым хабам может потребоваться подписка или предоставление многоуровневых планов обслуживания. Сам хаб <strong>может</strong> предоставить дополнительные сведения."
+#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Settings/Channel.php:594
+msgid "Remove Channel"
+msgstr "Удаление канала"
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Hub URL"
-msgstr "URL сервера"
+#: ../../Zotlabs/Module/Sharedwithme.php:103
+msgid "Files: shared with me"
+msgstr "Файлы: поделились со мной"
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Access Type"
-msgstr "Тип доступа"
+#: ../../Zotlabs/Module/Sharedwithme.php:105
+msgid "NEW"
+msgstr "НОВОЕ"
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Registration Policy"
-msgstr "Политика регистрации"
+#: ../../Zotlabs/Module/Sharedwithme.php:106
+#: ../../Zotlabs/Storage/Browser.php:287 ../../include/text.php:1496
+msgid "Size"
+msgstr "Размер"
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Stats"
-msgstr "Статистика"
+#: ../../Zotlabs/Module/Sharedwithme.php:107
+#: ../../Zotlabs/Storage/Browser.php:288
+msgid "Last Modified"
+msgstr "Последнее изменение"
-#: ../../Zotlabs/Module/Pubsites.php:33
-msgid "Software"
-msgstr "Программное обеспечение"
+#: ../../Zotlabs/Module/Sharedwithme.php:108
+msgid "Remove all files"
+msgstr "Удалить все файлы"
-#: ../../Zotlabs/Module/Pubsites.php:49
-msgid "Rate"
-msgstr "Оценка"
+#: ../../Zotlabs/Module/Sharedwithme.php:109
+msgid "Remove this file"
+msgstr "Удалить этот файл"
#: ../../Zotlabs/Module/Setup.php:170
msgid "$Projectname Server - Setup"
@@ -7807,7 +1902,7 @@ msgid ""
msgstr "Вам может понадобится импортировать файл \"install/schema_xxx.sql\" вручную используя клиент базы данных."
#: ../../Zotlabs/Module/Setup.php:198 ../../Zotlabs/Module/Setup.php:262
-#: ../../Zotlabs/Module/Setup.php:756
+#: ../../Zotlabs/Module/Setup.php:761
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Пожалуйста, обратитесь к файлу \"install/INSTALL.txt\"."
@@ -7951,229 +2046,235 @@ msgstr "Это необходимо для функционирования до
msgid "PHP register_argc_argv"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:446
+#: ../../Zotlabs/Module/Setup.php:448
+msgid ""
+"This is not sufficient to upload larger images or files. You should be able "
+"to upload at least 4 MB at once."
+msgstr "Этого недостаточно для загрузки больших изображений или файлов. Вы должны иметь возможность загрузить как минимум 4 Мб за раз."
+
+#: ../../Zotlabs/Module/Setup.php:450
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to "
"upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "Максимально разрешённый общий размер загрузок установлен в %s. Максимальный размер одной загрузки установлен в %s. Вам разрешено загружать до %d файлов за один приём."
-#: ../../Zotlabs/Module/Setup.php:451
+#: ../../Zotlabs/Module/Setup.php:456
msgid "You can adjust these settings in the server php.ini file."
msgstr "Вы можете изменить эти настройки в файле php.ini на сервере."
-#: ../../Zotlabs/Module/Setup.php:453
+#: ../../Zotlabs/Module/Setup.php:458
msgid "PHP upload limits"
msgstr "Максимальный размер загрузки в PHP"
-#: ../../Zotlabs/Module/Setup.php:476
+#: ../../Zotlabs/Module/Setup.php:481
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Ошибка: функция \"openssl_pkey_new\" не может сгенерировать ключи шифрования"
-#: ../../Zotlabs/Module/Setup.php:477
+#: ../../Zotlabs/Module/Setup.php:482
msgid ""
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
"installation.php\"."
msgstr "Если работаете под Windows, см. \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../Zotlabs/Module/Setup.php:480
+#: ../../Zotlabs/Module/Setup.php:485
msgid "Generate encryption keys"
msgstr "Генерация ключей шифрования"
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:502
msgid "libCurl PHP module"
msgstr "модуль PHP libcURL"
-#: ../../Zotlabs/Module/Setup.php:498
+#: ../../Zotlabs/Module/Setup.php:503
msgid "GD graphics PHP module"
msgstr "модуль графики PHP GD"
-#: ../../Zotlabs/Module/Setup.php:499
+#: ../../Zotlabs/Module/Setup.php:504
msgid "OpenSSL PHP module"
msgstr "модуль PHP OpenSSL"
-#: ../../Zotlabs/Module/Setup.php:500
+#: ../../Zotlabs/Module/Setup.php:505
msgid "PDO database PHP module"
msgstr "модуль баз данных PHP PDO"
-#: ../../Zotlabs/Module/Setup.php:501
+#: ../../Zotlabs/Module/Setup.php:506
msgid "mb_string PHP module"
msgstr "модуль PHP mb_string"
-#: ../../Zotlabs/Module/Setup.php:502
+#: ../../Zotlabs/Module/Setup.php:507
msgid "xml PHP module"
msgstr "модуль PHP xml"
-#: ../../Zotlabs/Module/Setup.php:503
+#: ../../Zotlabs/Module/Setup.php:508
msgid "zip PHP module"
msgstr "модуль PHP zip"
-#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:512 ../../Zotlabs/Module/Setup.php:514
msgid "Apache mod_rewrite module"
msgstr "модуль Apache mod_rewrite"
-#: ../../Zotlabs/Module/Setup.php:507
+#: ../../Zotlabs/Module/Setup.php:512
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Ошибка: требуемый модуль mod_rewrite веб-сервера Apache не установлен."
-#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
+#: ../../Zotlabs/Module/Setup.php:518 ../../Zotlabs/Module/Setup.php:521
msgid "exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:518
msgid ""
"Error: exec is required but is either not installed or has been disabled in "
"php.ini"
msgstr "Ошибка: exec требуется, однако не установлен или был отключён в php.ini"
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
+#: ../../Zotlabs/Module/Setup.php:524 ../../Zotlabs/Module/Setup.php:527
msgid "shell_exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:524
msgid ""
"Error: shell_exec is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Ошибка: shell_exec требуется, однако не установлен или был отключён в php.ini"
-#: ../../Zotlabs/Module/Setup.php:527
+#: ../../Zotlabs/Module/Setup.php:532
msgid "Error: libCURL PHP module required but not installed."
msgstr "Ошибка: модуль PHP libсURL требуется, однако не установлен"
-#: ../../Zotlabs/Module/Setup.php:531
+#: ../../Zotlabs/Module/Setup.php:536
msgid ""
"Error: GD PHP module with JPEG support or ImageMagick graphics library "
"required but not installed."
msgstr "Ошибка: модуль PHP GD с поддержкой JPEG или графическая библиотека ImageMagick требуется, однако не установлена"
-#: ../../Zotlabs/Module/Setup.php:535
+#: ../../Zotlabs/Module/Setup.php:540
msgid "Error: openssl PHP module required but not installed."
msgstr "Ошибка: модуль PHP OpenSSL требуется, однако не установлен"
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:546
msgid ""
"Error: PDO database PHP module missing a driver for either mysql or pgsql."
msgstr "Ошибка: отсутствует драйвер MySQL или PgSQL в модуле баз данных PHP PDO"
-#: ../../Zotlabs/Module/Setup.php:546
+#: ../../Zotlabs/Module/Setup.php:551
msgid "Error: PDO database PHP module required but not installed."
msgstr "Ошибка: модуль баз данных PHP PDO требуется, однако не установлен"
-#: ../../Zotlabs/Module/Setup.php:550
+#: ../../Zotlabs/Module/Setup.php:555
msgid "Error: mb_string PHP module required but not installed."
msgstr "Ошибка: модуль PHP mb_string требуется, однако не установлен"
-#: ../../Zotlabs/Module/Setup.php:554
+#: ../../Zotlabs/Module/Setup.php:559
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Ошибка: модуль PHP xml требуется для DAV, однако не установлен"
-#: ../../Zotlabs/Module/Setup.php:558
+#: ../../Zotlabs/Module/Setup.php:563
msgid "Error: zip PHP module required but not installed."
msgstr "Ошибка: модуль PHP zip требуется, однако не установлен"
-#: ../../Zotlabs/Module/Setup.php:577 ../../Zotlabs/Module/Setup.php:586
+#: ../../Zotlabs/Module/Setup.php:582 ../../Zotlabs/Module/Setup.php:591
msgid ".htconfig.php is writable"
msgstr ".htconfig.php доступен для записи"
-#: ../../Zotlabs/Module/Setup.php:582
+#: ../../Zotlabs/Module/Setup.php:587
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\" "
"in the top folder of your web server and it is unable to do so."
msgstr "Инсталлятор требует возможности создать файл с именем \".htconfig.php\" в корневом каталоге вашего веб-сервера но не может этого сделать."
-#: ../../Zotlabs/Module/Setup.php:583
+#: ../../Zotlabs/Module/Setup.php:588
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "В большинстве случаев это проблема прав доступа. Веб-сервер может не иметь возможности записывать файлы в этот каталог даже если вы можете это делать."
-#: ../../Zotlabs/Module/Setup.php:584
+#: ../../Zotlabs/Module/Setup.php:589
msgid "Please see install/INSTALL.txt for additional information."
msgstr "Пожалуйста, ознакомьтесь с install/INSTALL.txt для дополнительных сведений."
-#: ../../Zotlabs/Module/Setup.php:600
+#: ../../Zotlabs/Module/Setup.php:605
msgid ""
"This software uses the Smarty3 template engine to render its web views. "
"Smarty3 compiles templates to PHP to speed up rendering."
msgstr "Это программное обеспечение использует шаблонизатор Smarty3 для отображения своих веб-страниц. Smarty3 компилирует шаблоны для PHP для ускорения рендеринга."
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:606
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
"write access to the directory %s under the top level web folder."
msgstr "Для хранения этих скомпилированных шаблонов веб-сервер должен иметь доступ на запись к каталогу %s в каталоге верхнего уровня."
-#: ../../Zotlabs/Module/Setup.php:602 ../../Zotlabs/Module/Setup.php:623
+#: ../../Zotlabs/Module/Setup.php:607 ../../Zotlabs/Module/Setup.php:628
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has "
"write access to this folder."
msgstr "Убедитесь, что пользователь от имени которого работает ваш веб-сервер (например, www-data), имеет доступ на запись в этот каталог."
-#: ../../Zotlabs/Module/Setup.php:603
+#: ../../Zotlabs/Module/Setup.php:608
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Примечание. В качестве меры безопасности вы должны предоставить доступ веб-серверу для записи только к %s но не к содержащимися в нём файлами шаблонов (.tpl)."
-#: ../../Zotlabs/Module/Setup.php:606
+#: ../../Zotlabs/Module/Setup.php:611
#, php-format
msgid "%s is writable"
msgstr "%s доступен для записи"
-#: ../../Zotlabs/Module/Setup.php:622
+#: ../../Zotlabs/Module/Setup.php:627
msgid ""
"This software uses the store directory to save uploaded files. The web "
"server needs to have write access to the store directory under the top level "
"web folder"
msgstr "Эта программа использует каталог хранения для загруженных файлов. Для веб-сервера требуется доступ на запись начиная с верхнего уровня каталога хранения."
-#: ../../Zotlabs/Module/Setup.php:626
+#: ../../Zotlabs/Module/Setup.php:631
msgid "store is writable"
msgstr "хранилище доступно для записи"
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:663
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access "
"to this site."
msgstr "SSL certificate cannot be validated. Замените его или отключите https доступ к этому сайту."
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:664
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Если у вас есть https-доступ к вашему сайту или разрешено подключение к TCP-порту 443 (порт https), вы ДОЛЖНЫ использовать сертификат, действительный для браузера. Вы НЕ ДОЛЖНЫ использовать самоподписанные сертификаты!"
-#: ../../Zotlabs/Module/Setup.php:660
+#: ../../Zotlabs/Module/Setup.php:665
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Эти ограничения приняты поскольку ваши общедоступные публикации могут, например, содержать ссылки на изображения на вашем собственном хабе."
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:666
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Если ваш сертификат не признан, пользователи других сайтов (которые могут сами иметь действительные сертификаты) получат предупреждающее сообщение о проблемах с безопасностью."
-#: ../../Zotlabs/Module/Setup.php:662
+#: ../../Zotlabs/Module/Setup.php:667
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Это может привести к проблемам удобства использования из других мест (не только на вашем собственном сайте), поэтому мы настаиваем на этом требовании."
-#: ../../Zotlabs/Module/Setup.php:663
+#: ../../Zotlabs/Module/Setup.php:668
msgid ""
"Providers are available that issue free certificates which are browser-valid."
msgstr "Доступны поставщики, которые выдают действительные для браузера бесплатные сертификаты."
-#: ../../Zotlabs/Module/Setup.php:665
+#: ../../Zotlabs/Module/Setup.php:670
msgid ""
"If you are confident that the certificate is valid and signed by a trusted "
"authority, check to see if you have failed to install an intermediate cert. "
@@ -8181,161 +2282,308 @@ msgid ""
"server communications."
msgstr "Если вы уверены, что сертификат действителен и подписан доверенным органом, проверьте, установлен ли промежуточные сертификаты. Обычно они не требуются браузерами, но бывают необходимы для связи между серверами."
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:672
msgid "SSL certificate validation"
msgstr "Проверка SSL сертификата"
-#: ../../Zotlabs/Module/Setup.php:673
+#: ../../Zotlabs/Module/Setup.php:678
msgid ""
"Url rewrite in .htaccess is not working. Check your server configuration."
"Test: "
msgstr "Перезапись URL в .htaccess не работает. Проверьте настройки вашего сервера."
-#: ../../Zotlabs/Module/Setup.php:676
+#: ../../Zotlabs/Module/Setup.php:681
msgid "Url rewrite is working"
msgstr "Перезапись URL работает"
-#: ../../Zotlabs/Module/Setup.php:690
+#: ../../Zotlabs/Module/Setup.php:695
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Файл конфигурации базы данных \".htconfig.php\" не может быть записан. Используйте прилагаемый текст для создания файла конфигурации в корневом каталоге веб-сервера."
-#: ../../Zotlabs/Module/Setup.php:714
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:401
+#: ../../Zotlabs/Module/Setup.php:719 ../../addon/rendezvous/rendezvous.php:401
msgid "Errors encountered creating database tables."
msgstr "При создании базы данных возникли ошибки."
-#: ../../Zotlabs/Module/Setup.php:754
+#: ../../Zotlabs/Module/Setup.php:759
msgid "<h1>What next?</h1>"
msgstr "<h1>Что дальше? </h1>"
-#: ../../Zotlabs/Module/Setup.php:755
+#: ../../Zotlabs/Module/Setup.php:760
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr "Вам понадобится [вручную] настроить запланированную задачу для опрашивателя."
-#: ../../Zotlabs/Module/Mitem.php:63
-msgid "Unable to create element."
-msgstr "Невозможно создать элемент."
+#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135
+msgid "Continue"
+msgstr "Продолжить"
-#: ../../Zotlabs/Module/Mitem.php:87
-msgid "Unable to update menu element."
-msgstr "Невозможно обновить элемент меню."
+#: ../../Zotlabs/Module/Connect.php:104
+msgid "Premium Channel App"
+msgstr "Приложение \"Премиальный канал\""
-#: ../../Zotlabs/Module/Mitem.php:103
-msgid "Unable to add menu element."
-msgstr "Невозможно добавить элемент меню."
+#: ../../Zotlabs/Module/Connect.php:105
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Позволяет установить ограничения и условия для подключающихся к вашему каналу"
-#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246
-msgid "Menu Item Permissions"
-msgstr "Разрешения на пункт меню"
+#: ../../Zotlabs/Module/Connect.php:116
+msgid "Premium Channel Setup"
+msgstr "Установка премиального канала"
-#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191
-msgid "Link Name"
-msgstr "Имя ссылки"
+#: ../../Zotlabs/Module/Connect.php:118
+msgid "Enable premium channel connection restrictions"
+msgstr "Включить ограничения для премиального канала"
-#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255
-msgid "Link or Submenu Target"
-msgstr "Ссылка или цель подменю"
+#: ../../Zotlabs/Module/Connect.php:119
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Пожалуйста введите ваши ограничения или условия, такие, как оплата PayPal, правила использования и т.п."
-#: ../../Zotlabs/Module/Mitem.php:175
-msgid "Enter URL of the link or select a menu name to create a submenu"
-msgstr "Введите URL ссылки или выберите имя меню для создания подменю"
+#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Этот канал до подключения может требовать дополнительных шагов или подтверждений следующих условий:"
-#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256
-msgid "Use magic-auth if available"
-msgstr "Использовать magic-auth если возможно"
+#: ../../Zotlabs/Module/Connect.php:122
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Потенциальные соединения будут видеть следующий предварительный текст:"
-#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257
-msgid "Open link in new window"
-msgstr "Открыть ссылку в новом окне"
+#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided "
+"on this page."
+msgstr "Продолжая, я подтверждаю что я выполнил все условия представленные на данной странице."
-#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258
-msgid "Order in list"
-msgstr "Порядок в списке"
+#: ../../Zotlabs/Module/Connect.php:132
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Владельцем канала не было представлено никаких специальных инструкций.)"
-#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Большие значения в конце списка"
+#: ../../Zotlabs/Module/Connect.php:140
+msgid "Restricted or Premium Channel"
+msgstr "Ограниченный или премиальный канал"
-#: ../../Zotlabs/Module/Mitem.php:179
-msgid "Submit and finish"
-msgstr "Отправить и завершить"
+#: ../../Zotlabs/Module/Admin/Queue.php:35
+msgid "Queue Statistics"
+msgstr "Статистика очереди"
-#: ../../Zotlabs/Module/Mitem.php:180
-msgid "Submit and continue"
-msgstr "Отправить и продолжить"
+#: ../../Zotlabs/Module/Admin/Queue.php:36
+msgid "Total Entries"
+msgstr "Всего записей"
-#: ../../Zotlabs/Module/Mitem.php:189
-msgid "Menu:"
-msgstr "Меню:"
+#: ../../Zotlabs/Module/Admin/Queue.php:37
+msgid "Priority"
+msgstr "Приоритет"
-#: ../../Zotlabs/Module/Mitem.php:192
-msgid "Link Target"
-msgstr "Цель ссылки"
+#: ../../Zotlabs/Module/Admin/Queue.php:38
+msgid "Destination URL"
+msgstr "Конечный URL-адрес"
-#: ../../Zotlabs/Module/Mitem.php:195
-msgid "Edit menu"
-msgstr "Редактировать меню"
+#: ../../Zotlabs/Module/Admin/Queue.php:39
+msgid "Mark hub permanently offline"
+msgstr "Пометить хаб как постоянно отключенный"
-#: ../../Zotlabs/Module/Mitem.php:198
-msgid "Edit element"
-msgstr "Редактировать элемент"
+#: ../../Zotlabs/Module/Admin/Queue.php:40
+msgid "Empty queue for this hub"
+msgstr "Освободить очередь для этого хаба"
-#: ../../Zotlabs/Module/Mitem.php:199
-msgid "Drop element"
-msgstr "Удалить элемент"
+#: ../../Zotlabs/Module/Admin/Queue.php:41
+msgid "Last known contact"
+msgstr "Последний известный контакт"
-#: ../../Zotlabs/Module/Mitem.php:200
-msgid "New element"
-msgstr "Новый элемент"
+#: ../../Zotlabs/Module/Admin/Features.php:55
+#: ../../Zotlabs/Module/Admin/Features.php:56
+#: ../../Zotlabs/Module/Settings/Features.php:36 ../../include/features.php:55
+msgid "Off"
+msgstr "Выкл."
-#: ../../Zotlabs/Module/Mitem.php:201
-msgid "Edit this menu container"
-msgstr "Редактировать контейнер меню"
+#: ../../Zotlabs/Module/Admin/Features.php:55
+#: ../../Zotlabs/Module/Admin/Features.php:56
+#: ../../Zotlabs/Module/Settings/Features.php:36 ../../include/features.php:55
+msgid "On"
+msgstr "Вкл."
-#: ../../Zotlabs/Module/Mitem.php:202
-msgid "Add menu element"
-msgstr "Добавить элемент меню"
+#: ../../Zotlabs/Module/Admin/Features.php:56
+#, php-format
+msgid "Lock feature %s"
+msgstr "Заблокировать функцию \"%s\""
-#: ../../Zotlabs/Module/Mitem.php:203
-msgid "Delete this menu item"
-msgstr "Удалить этот элемент меню"
+#: ../../Zotlabs/Module/Admin/Features.php:64
+msgid "Manage Additional Features"
+msgstr "Управление дополнительными функциями"
-#: ../../Zotlabs/Module/Mitem.php:204
-msgid "Edit this menu item"
-msgstr "Редактировать этот элемент меню"
+#: ../../Zotlabs/Module/Admin/Dbsync.php:19
+msgid "Update has been marked successful"
+msgstr "Обновление было помечено как успешное"
-#: ../../Zotlabs/Module/Mitem.php:222
-msgid "Menu item not found."
-msgstr "Элемент меню не найден."
+#: ../../Zotlabs/Module/Admin/Dbsync.php:31
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "Выполнение %s неудачно. Проверьте системный журнал."
-#: ../../Zotlabs/Module/Mitem.php:235
-msgid "Menu item deleted."
-msgstr "Элемент меню удалён."
+#: ../../Zotlabs/Module/Admin/Dbsync.php:34
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "Обновление %sбыло успешно применено."
-#: ../../Zotlabs/Module/Mitem.php:237
-msgid "Menu item could not be deleted."
-msgstr "Невозможно удалить элемент меню."
+#: ../../Zotlabs/Module/Admin/Dbsync.php:38
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "Обновление %s не вернуло статус. Неизвестно было ли оно успешным."
-#: ../../Zotlabs/Module/Mitem.php:244
-msgid "Edit Menu Element"
-msgstr "Редактировать элемент меню"
+#: ../../Zotlabs/Module/Admin/Dbsync.php:41
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "Функция обновления %sне может быть найдена."
-#: ../../Zotlabs/Module/Mitem.php:254
-msgid "Link text"
-msgstr "Текст ссылки"
+#: ../../Zotlabs/Module/Admin/Dbsync.php:59
+msgid "Failed Updates"
+msgstr "Обновления с ошибками"
-#: ../../Zotlabs/Module/Admin/Features.php:56
+#: ../../Zotlabs/Module/Admin/Dbsync.php:61
+msgid "Mark success (if update was manually applied)"
+msgstr "Пометить успешным (если обновление было применено вручную)"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:62
+msgid "Attempt to execute this update step automatically"
+msgstr "Попытаться применить это обновление автоматически"
+
+#: ../../Zotlabs/Module/Admin/Dbsync.php:67
+msgid "No failed updates."
+msgstr "Ошибок обновлений нет."
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:37
#, php-format
-msgid "Lock feature %s"
-msgstr "Заблокировать функцию \"%s\""
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "%s аккаунт блокирован/разблокирован"
+msgstr[1] "%s аккаунта блокированы/разблокированы"
+msgstr[2] "%s аккаунтов блокированы/разблокированы"
-#: ../../Zotlabs/Module/Admin/Features.php:64
-msgid "Manage Additional Features"
-msgstr "Управление дополнительными функциями"
+#: ../../Zotlabs/Module/Admin/Accounts.php:44
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s аккаунт удалён"
+msgstr[1] "%s аккаунта удалёны"
+msgstr[2] "%s аккаунтов удалёны"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:80
+msgid "Account not found"
+msgstr "Аккаунт не найден"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2562
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "Аккаунт '%s' удален"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:99
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "Аккаунт '%s' заблокирован"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:107
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "Аккаунт '%s' разблокирован"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:166
+#: ../../Zotlabs/Module/Admin/Logs.php:82
+#: ../../Zotlabs/Module/Admin/Channels.php:145
+#: ../../Zotlabs/Module/Admin/Themes.php:122
+#: ../../Zotlabs/Module/Admin/Themes.php:156
+#: ../../Zotlabs/Module/Admin/Site.php:287
+#: ../../Zotlabs/Module/Admin/Addons.php:341
+#: ../../Zotlabs/Module/Admin/Addons.php:439
+#: ../../Zotlabs/Module/Admin/Security.php:92
+#: ../../Zotlabs/Module/Admin.php:138
+msgid "Administration"
+msgstr "Администрирование"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:167
+#: ../../Zotlabs/Module/Admin/Accounts.php:180
+#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23
+msgid "Accounts"
+msgstr "Учётные записи"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:169
+#: ../../Zotlabs/Module/Admin/Channels.php:148
+msgid "select all"
+msgstr "выбрать все"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:170
+msgid "Registrations waiting for confirm"
+msgstr "Регистрации ждут подтверждения"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:171
+msgid "Request date"
+msgstr "Дата запроса"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:172
+msgid "No registrations."
+msgstr "Нет новых регистраций."
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:173
+#: ../../Zotlabs/Module/Connections.php:306 ../../include/conversation.php:735
+msgid "Approve"
+msgstr "Утвердить"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:174
+#: ../../Zotlabs/Module/Authorize.php:33
+msgid "Deny"
+msgstr "Запретить"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:176
+#: ../../Zotlabs/Module/Connedit.php:636
+msgid "Block"
+msgstr "Блокировать"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:177
+#: ../../Zotlabs/Module/Connedit.php:636
+msgid "Unblock"
+msgstr "Разблокировать"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:182
+msgid "ID"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:184
+msgid "All Channels"
+msgstr "Все каналы"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:185
+msgid "Register date"
+msgstr "Дата регистрации"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:186
+msgid "Last login"
+msgstr "Последний вход"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:187
+msgid "Expires"
+msgstr "Срок действия"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:188
+msgid "Service Class"
+msgstr "Класс обслуживания"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:190
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
+"on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Выбранные учётные записи будут удалены!\n\nВсё что было ими опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?"
+
+#: ../../Zotlabs/Module/Admin/Accounts.php:191
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Этот аккаунт {0} будет удалён!\n\nВсё что им было опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?"
#: ../../Zotlabs/Module/Admin/Logs.php:28
msgid "Log settings updated."
@@ -8421,10 +2669,10 @@ msgstr "Код в канале '%s' разрешён"
msgid "Channel '%s' code disallowed"
msgstr "Код в канале '%s' запрещён"
-#: ../../Zotlabs/Module/Admin/Channels.php:148
-#: ../../Zotlabs/Module/Admin/Accounts.php:169
-msgid "select all"
-msgstr "выбрать все"
+#: ../../Zotlabs/Module/Admin/Channels.php:146
+#: ../../Zotlabs/Module/Admin.php:114 ../../Zotlabs/Widget/Admin.php:24
+msgid "Channels"
+msgstr "Каналы"
#: ../../Zotlabs/Module/Admin/Channels.php:150
msgid "Censor"
@@ -8442,6 +2690,10 @@ msgstr "Разрешить код"
msgid "Disallow Code"
msgstr "Запретить код"
+#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:421
+msgid "Channel"
+msgstr "Канал"
+
#: ../../Zotlabs/Module/Admin/Channels.php:158
msgid "UID"
msgstr ""
@@ -8458,243 +2710,87 @@ msgid ""
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Канал {0} будет удалён!\n\nВсё что было опубликовано в этом канале на этом сайте будет удалено навсегда!\n\nВы уверены?"
-#: ../../Zotlabs/Module/Admin/Security.php:83
-msgid ""
-"By default, unfiltered HTML is allowed in embedded media. This is inherently "
-"insecure."
-msgstr "По умолчанию, HTML без фильтрации доступен во встраиваемых медиа. Это небезопасно."
-
-#: ../../Zotlabs/Module/Admin/Security.php:86
-msgid ""
-"The recommended setting is to only allow unfiltered HTML from the following "
-"sites:"
-msgstr "Рекомендуется настроить разрешения использовать HTML без фильтрации только для следующих сайтов:"
-
-#: ../../Zotlabs/Module/Admin/Security.php:87
-msgid ""
-"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/"
-"<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin/Security.php:88
-msgid ""
-"All other embedded content will be filtered, <strong>unless</strong> "
-"embedded content from that site is explicitly blocked."
-msgstr "се остальные встроенные материалы будут отфильтрованы, <strong>если </strong> встроенное содержимое с этого сайта явно заблокировано."
-
-#: ../../Zotlabs/Module/Admin/Security.php:93 ../../Zotlabs/Widget/Admin.php:25
-msgid "Security"
-msgstr "Безопасность"
-
-#: ../../Zotlabs/Module/Admin/Security.php:95
-msgid "Block public"
-msgstr "Блокировать публичный доступ"
-
-#: ../../Zotlabs/Module/Admin/Security.php:95
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently authenticated."
-msgstr "Установите флажок для блокировки публичного доступа ко всем другим общедоступным страницам на этом сайте, если вы в настоящее время не аутентифицированы."
-
-#: ../../Zotlabs/Module/Admin/Security.php:96
-msgid "Provide a cloud root directory"
-msgstr "Предоставить корневой каталог в облаке"
-
-#: ../../Zotlabs/Module/Admin/Security.php:96
-msgid ""
-"The cloud root directory lists all channel names which provide public files"
-msgstr "В корневом каталоге облака показываются все имена каналов, которые предоставляют общедоступные файлы"
-
-#: ../../Zotlabs/Module/Admin/Security.php:97
-msgid "Show total disk space available to cloud uploads"
-msgstr "Показывать общее доступное для загрузок место в хранилище"
-
-#: ../../Zotlabs/Module/Admin/Security.php:98
-msgid "Set \"Transport Security\" HTTP header"
-msgstr "Установить HTTP-заголовок \"Transport Security\""
-
-#: ../../Zotlabs/Module/Admin/Security.php:99
-msgid "Set \"Content Security Policy\" HTTP header"
-msgstr "Установить HTTP-заголовок \"Content Security Policy\""
-
-#: ../../Zotlabs/Module/Admin/Security.php:100
-msgid "Allowed email domains"
-msgstr "Разрешённые домены email"
-
-#: ../../Zotlabs/Module/Admin/Security.php:100
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Список разделённых запятыми доменов для которых разрешена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены."
-
-#: ../../Zotlabs/Module/Admin/Security.php:101
-msgid "Not allowed email domains"
-msgstr "Запрещённые домены email"
-
-#: ../../Zotlabs/Module/Admin/Security.php:101
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "Список разделённых запятыми доменов для которых запрещена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены до тех пор, пока разрешённые домены не будут указаны."
-
-#: ../../Zotlabs/Module/Admin/Security.php:102
-msgid "Allow communications only from these sites"
-msgstr "Разрешить связь только с этими сайтами"
-
-#: ../../Zotlabs/Module/Admin/Security.php:102
-msgid ""
-"One site per line. Leave empty to allow communication from anywhere by "
-"default"
-msgstr "Один сайт на строку. Оставьте пустым для разрешения взаимодействия без ограничений (по умочанию)."
-
-#: ../../Zotlabs/Module/Admin/Security.php:103
-msgid "Block communications from these sites"
-msgstr "Блокировать связь с этими сайтами"
-
-#: ../../Zotlabs/Module/Admin/Security.php:104
-msgid "Allow communications only from these channels"
-msgstr "Разрешить связь только для этих каналов"
-
-#: ../../Zotlabs/Module/Admin/Security.php:104
-msgid ""
-"One channel (hash) per line. Leave empty to allow from any channel by default"
-msgstr "Один канал (или его хэш) на строку. Оставьте пустым для разрешения взаимодействия с любым каналом (по умолчанию)."
-
-#: ../../Zotlabs/Module/Admin/Security.php:105
-msgid "Block communications from these channels"
-msgstr "Блокировать связь с этими каналами"
-
-#: ../../Zotlabs/Module/Admin/Security.php:106
-msgid "Only allow embeds from secure (SSL) websites and links."
-msgstr "Разрешать встраивание только для безопасных (SSL/TLS) сайтов и ссылок."
-
-#: ../../Zotlabs/Module/Admin/Security.php:107
-msgid "Allow unfiltered embedded HTML content only from these domains"
-msgstr "Разрешить встраивать нефильтруемое HTML-содержимое только для этих доменов"
-
-#: ../../Zotlabs/Module/Admin/Security.php:107
-msgid "One site per line. By default embedded content is filtered."
-msgstr "Один сайт на строку. По умолчанию встраиваемое содержимое фильтруется."
-
-#: ../../Zotlabs/Module/Admin/Security.php:108
-msgid "Block embedded HTML from these domains"
-msgstr "Блокировать встраивание HTML-содержимого для этих доменов"
+#: ../../Zotlabs/Module/Admin/Themes.php:26
+msgid "Theme settings updated."
+msgstr "Настройки темы обновленны."
-#: ../../Zotlabs/Module/Admin/Addons.php:289
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Плагин %s отключен."
+#: ../../Zotlabs/Module/Admin/Themes.php:61
+msgid "No themes found."
+msgstr "Темы не найдены."
-#: ../../Zotlabs/Module/Admin/Addons.php:294
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Плагин %s включен."
+#: ../../Zotlabs/Module/Admin/Themes.php:72
+#: ../../Zotlabs/Module/Admin/Addons.php:259 ../../Zotlabs/Module/Thing.php:94
+#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45
+#: ../../Zotlabs/Module/Display.php:450 ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3693
+msgid "Item not found."
+msgstr "Элемент не найден."
-#: ../../Zotlabs/Module/Admin/Addons.php:310
#: ../../Zotlabs/Module/Admin/Themes.php:95
+#: ../../Zotlabs/Module/Admin/Addons.php:310
msgid "Disable"
msgstr "Запретить"
-#: ../../Zotlabs/Module/Admin/Addons.php:313
#: ../../Zotlabs/Module/Admin/Themes.php:97
+#: ../../Zotlabs/Module/Admin/Addons.php:313
msgid "Enable"
msgstr "Разрешить"
-#: ../../Zotlabs/Module/Admin/Addons.php:342
-#: ../../Zotlabs/Module/Admin/Addons.php:437 ../../Zotlabs/Widget/Admin.php:27
-msgid "Addons"
-msgstr "Расширения"
+#: ../../Zotlabs/Module/Admin/Themes.php:116
+msgid "Screenshot"
+msgstr "Снимок экрана"
+
+#: ../../Zotlabs/Module/Admin/Themes.php:123
+#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28
+msgid "Themes"
+msgstr "Темы"
-#: ../../Zotlabs/Module/Admin/Addons.php:343
#: ../../Zotlabs/Module/Admin/Themes.php:124
+#: ../../Zotlabs/Module/Admin/Addons.php:343
msgid "Toggle"
msgstr "Переключить"
-#: ../../Zotlabs/Module/Admin/Addons.php:351
+#: ../../Zotlabs/Module/Admin/Themes.php:125
+#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:336
+#: ../../Zotlabs/Widget/Newmember.php:53
+#: ../../Zotlabs/Widget/Settings_menu.php:61 ../../include/nav.php:97
+msgid "Settings"
+msgstr "Настройки"
+
#: ../../Zotlabs/Module/Admin/Themes.php:134
+#: ../../Zotlabs/Module/Admin/Addons.php:351
msgid "Author: "
msgstr "Автор: "
-#: ../../Zotlabs/Module/Admin/Addons.php:352
#: ../../Zotlabs/Module/Admin/Themes.php:135
+#: ../../Zotlabs/Module/Admin/Addons.php:352
msgid "Maintainer: "
msgstr "Сопровождающий:"
-#: ../../Zotlabs/Module/Admin/Addons.php:353
-msgid "Minimum project version: "
-msgstr "Минимальная версия проекта: "
-
-#: ../../Zotlabs/Module/Admin/Addons.php:354
-msgid "Maximum project version: "
-msgstr "Максимальная версия проекта: "
-
-#: ../../Zotlabs/Module/Admin/Addons.php:355
-msgid "Minimum PHP version: "
-msgstr "Минимальная версия PHP: "
-
-#: ../../Zotlabs/Module/Admin/Addons.php:356
-msgid "Compatible Server Roles: "
-msgstr "Совместимые роли сервера: "
-
-#: ../../Zotlabs/Module/Admin/Addons.php:357
-msgid "Requires: "
-msgstr "Необходимо:"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:358
-#: ../../Zotlabs/Module/Admin/Addons.php:442
-msgid "Disabled - version incompatibility"
-msgstr "Отключено - несовместимость версий"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:411
-msgid "Enter the public git repository URL of the addon repo."
-msgstr "Введите URL публичного репозитория расширений git"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:412
-msgid "Addon repo git URL"
-msgstr "URL репозитория расширений git"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:413
-msgid "Custom repo name"
-msgstr "Пользовательское имя репозитория"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:413
-msgid "(optional)"
-msgstr "(необязательно)"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:414
-msgid "Download Addon Repo"
-msgstr "Загрузить репозиторий расширений"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:421
-msgid "Install new repo"
-msgstr "Установить новый репозиторий"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:513
-msgid "Install"
-msgstr "Установить"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:445
-msgid "Manage Repos"
-msgstr "Управление репозиториями"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:446
-msgid "Installed Addon Repositories"
-msgstr "Установленные репозитории расширений"
-
-#: ../../Zotlabs/Module/Admin/Addons.php:447
-msgid "Install a New Addon Repository"
-msgstr "Установить новый репозиторий расширений"
+#: ../../Zotlabs/Module/Admin/Themes.php:162
+msgid "[Experimental]"
+msgstr "[экспериментальный]"
-#: ../../Zotlabs/Module/Admin/Addons.php:454
-msgid "Switch branch"
-msgstr "Переключить ветку"
+#: ../../Zotlabs/Module/Admin/Themes.php:163
+msgid "[Unsupported]"
+msgstr "[неподдерживаемый]"
#: ../../Zotlabs/Module/Admin/Site.php:161
msgid "Site settings updated."
msgstr "Настройки сайта обновлены."
+#: ../../Zotlabs/Module/Admin/Site.php:187
+#: ../../view/theme/redbasic_c/php/config.php:15
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3210
+msgid "Default"
+msgstr "По умолчанию"
+
+#: ../../Zotlabs/Module/Admin/Site.php:198
+#: ../../Zotlabs/Module/Settings/Display.php:119
+#, php-format
+msgid "%s - (Incompatible)"
+msgstr "%s - (несовместимо)"
+
#: ../../Zotlabs/Module/Admin/Site.php:205
msgid "mobile"
msgstr "мобильный"
@@ -8740,6 +2836,11 @@ msgstr "Эта роль будет использоваться для перв
msgid "Site"
msgstr "Сайт"
+#: ../../Zotlabs/Module/Admin/Site.php:290
+#: ../../Zotlabs/Module/Register.php:273
+msgid "Registration"
+msgstr "Регистрация"
+
#: ../../Zotlabs/Module/Admin/Site.php:291
msgid "File upload"
msgstr "Загрузка файла"
@@ -8748,8 +2849,12 @@ msgstr "Загрузка файла"
msgid "Policies"
msgstr "Правила"
+#: ../../Zotlabs/Module/Admin/Site.php:293 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Дополнительно"
+
#: ../../Zotlabs/Module/Admin/Site.php:297
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:891
+#: ../../addon/statusnet/statusnet.php:593
msgid "Site name"
msgstr "Название сайта"
@@ -8945,7 +3050,7 @@ msgstr "Импортировать только публичные потоки
#: ../../Zotlabs/Module/Admin/Site.php:323
#: ../../Zotlabs/Module/Admin/Site.php:324
-#: ../../Zotlabs/Module/Connedit.php:881 ../../Zotlabs/Module/Connedit.php:882
+#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
@@ -9119,6 +3224,96 @@ msgstr "Необязательно: место размещения сайта"
msgid "Region or country"
msgstr "Регион или страна"
+#: ../../Zotlabs/Module/Admin/Addons.php:289
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Плагин %s отключен."
+
+#: ../../Zotlabs/Module/Admin/Addons.php:294
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Плагин %s включен."
+
+#: ../../Zotlabs/Module/Admin/Addons.php:342
+#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27
+msgid "Addons"
+msgstr "Расширения"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:353
+msgid "Minimum project version: "
+msgstr "Минимальная версия проекта: "
+
+#: ../../Zotlabs/Module/Admin/Addons.php:354
+msgid "Maximum project version: "
+msgstr "Максимальная версия проекта: "
+
+#: ../../Zotlabs/Module/Admin/Addons.php:355
+msgid "Minimum PHP version: "
+msgstr "Минимальная версия PHP: "
+
+#: ../../Zotlabs/Module/Admin/Addons.php:356
+msgid "Compatible Server Roles: "
+msgstr "Совместимые роли сервера: "
+
+#: ../../Zotlabs/Module/Admin/Addons.php:357
+msgid "Requires: "
+msgstr "Необходимо:"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:358
+#: ../../Zotlabs/Module/Admin/Addons.php:445
+msgid "Disabled - version incompatibility"
+msgstr "Отключено - несовместимость версий"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:414
+msgid "Enter the public git repository URL of the addon repo."
+msgstr "Введите URL публичного репозитория расширений git"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:415
+msgid "Addon repo git URL"
+msgstr "URL репозитория расширений git"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:416
+msgid "Custom repo name"
+msgstr "Пользовательское имя репозитория"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:416
+msgid "(optional)"
+msgstr "(необязательно)"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:417
+msgid "Download Addon Repo"
+msgstr "Загрузить репозиторий расширений"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:424
+msgid "Install new repo"
+msgstr "Установить новый репозиторий"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:535
+msgid "Install"
+msgstr "Установить"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:448
+msgid "Manage Repos"
+msgstr "Управление репозиториями"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:449
+msgid "Installed Addon Repositories"
+msgstr "Установленные репозитории расширений"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:450
+msgid "Install a New Addon Repository"
+msgstr "Установить новый репозиторий расширений"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:457
+msgid "Switch branch"
+msgstr "Переключить ветку"
+
+#: ../../Zotlabs/Module/Admin/Addons.php:458
+#: ../../Zotlabs/Module/Photos.php:1035 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../addon/superblock/Mod_Superblock.php:91
+msgid "Remove"
+msgstr "Удалить"
+
#: ../../Zotlabs/Module/Admin/Profs.php:89
msgid "New Profile Field"
msgstr "Поле нового профиля"
@@ -9158,6 +3353,15 @@ msgstr "Текст подсказки"
msgid "Additional info (optional)"
msgstr "Дополнительная информация (необязательно)"
+#: ../../Zotlabs/Module/Admin/Profs.php:94
+#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
+#: ../../Zotlabs/Widget/Notes.php:23
+#: ../../addon/queueworker/Mod_Queueworker.php:102 ../../include/text.php:1085
+#: ../../include/text.php:1097
+msgid "Save"
+msgstr "Запомнить"
+
#: ../../Zotlabs/Module/Admin/Profs.php:103
msgid "Field definition not found"
msgstr "Определения поля не найдено"
@@ -9194,219 +3398,855 @@ msgstr "Настраиваемые поля"
msgid "Create Custom Field"
msgstr "Создать настраиваемое поле"
-#: ../../Zotlabs/Module/Admin/Queue.php:35
-msgid "Queue Statistics"
-msgstr "Статистика очереди"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:29
+#, php-format
+msgid "Password changed for account %d."
+msgstr "Пароль для аккаунта %d изменён."
-#: ../../Zotlabs/Module/Admin/Queue.php:36
-msgid "Total Entries"
-msgstr "Всего записей"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:46
+msgid "Account settings updated."
+msgstr "Настройки аккаунта обновлены."
-#: ../../Zotlabs/Module/Admin/Queue.php:37
-msgid "Priority"
-msgstr "Приоритет"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:61
+msgid "Account not found."
+msgstr "Учётная запись не найдена."
-#: ../../Zotlabs/Module/Admin/Queue.php:38
-msgid "Destination URL"
-msgstr "Конечный URL-адрес"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:68
+msgid "Account Edit"
+msgstr "Редактировать аккаунт"
-#: ../../Zotlabs/Module/Admin/Queue.php:39
-msgid "Mark hub permanently offline"
-msgstr "Пометить хаб как постоянно отключенный"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:69
+msgid "New Password"
+msgstr "Новый пароль"
-#: ../../Zotlabs/Module/Admin/Queue.php:40
-msgid "Empty queue for this hub"
-msgstr "Освободить очередь для этого хаба"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:70
+msgid "New Password again"
+msgstr "Повторите новый пароль"
-#: ../../Zotlabs/Module/Admin/Queue.php:41
-msgid "Last known contact"
-msgstr "Последний известный контакт"
+#: ../../Zotlabs/Module/Admin/Account_edit.php:71
+msgid "Account language (for emails)"
+msgstr "Язык сообщения для email"
-#: ../../Zotlabs/Module/Admin/Themes.php:26
-msgid "Theme settings updated."
-msgstr "Настройки темы обновленны."
+#: ../../Zotlabs/Module/Admin/Account_edit.php:72
+msgid "Service class"
+msgstr "Класс обслуживания"
-#: ../../Zotlabs/Module/Admin/Themes.php:61
-msgid "No themes found."
-msgstr "Темы не найдены."
+#: ../../Zotlabs/Module/Admin/Security.php:83
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently "
+"insecure."
+msgstr "По умолчанию, HTML без фильтрации доступен во встраиваемых медиа. Это небезопасно."
-#: ../../Zotlabs/Module/Admin/Themes.php:116
-msgid "Screenshot"
-msgstr "Снимок экрана"
+#: ../../Zotlabs/Module/Admin/Security.php:86
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "Рекомендуется настроить разрешения использовать HTML без фильтрации только для следующих сайтов:"
-#: ../../Zotlabs/Module/Admin/Themes.php:123
-#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28
-msgid "Themes"
-msgstr "Темы"
+#: ../../Zotlabs/Module/Admin/Security.php:87
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/"
+"<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr ""
-#: ../../Zotlabs/Module/Admin/Themes.php:162
-msgid "[Experimental]"
-msgstr "[экспериментальный]"
+#: ../../Zotlabs/Module/Admin/Security.php:88
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "се остальные встроенные материалы будут отфильтрованы, <strong>если </strong> встроенное содержимое с этого сайта явно заблокировано."
-#: ../../Zotlabs/Module/Admin/Themes.php:163
-msgid "[Unsupported]"
-msgstr "[неподдерживаемый]"
+#: ../../Zotlabs/Module/Admin/Security.php:93 ../../Zotlabs/Widget/Admin.php:25
+msgid "Security"
+msgstr "Безопасность"
-#: ../../Zotlabs/Module/Admin/Accounts.php:37
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] "%s аккаунт блокирован/разблокирован"
-msgstr[1] "%s аккаунта блокированы/разблокированы"
-msgstr[2] "%s аккаунтов блокированы/разблокированы"
+#: ../../Zotlabs/Module/Admin/Security.php:95
+msgid "Block public"
+msgstr "Блокировать публичный доступ"
-#: ../../Zotlabs/Module/Admin/Accounts.php:44
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] "%s аккаунт удалён"
-msgstr[1] "%s аккаунта удалёны"
-msgstr[2] "%s аккаунтов удалёны"
+#: ../../Zotlabs/Module/Admin/Security.php:95
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr "Установите флажок для блокировки публичного доступа ко всем другим общедоступным страницам на этом сайте, если вы в настоящее время не аутентифицированы."
-#: ../../Zotlabs/Module/Admin/Accounts.php:80
-msgid "Account not found"
-msgstr "Аккаунт не найден"
+#: ../../Zotlabs/Module/Admin/Security.php:96
+msgid "Provide a cloud root directory"
+msgstr "Предоставить корневой каталог в облаке"
-#: ../../Zotlabs/Module/Admin/Accounts.php:99
-#, php-format
-msgid "Account '%s' blocked"
-msgstr "Аккаунт '%s' заблокирован"
+#: ../../Zotlabs/Module/Admin/Security.php:96
+msgid ""
+"The cloud root directory lists all channel names which provide public files"
+msgstr "В корневом каталоге облака показываются все имена каналов, которые предоставляют общедоступные файлы"
-#: ../../Zotlabs/Module/Admin/Accounts.php:107
-#, php-format
-msgid "Account '%s' unblocked"
-msgstr "Аккаунт '%s' разблокирован"
+#: ../../Zotlabs/Module/Admin/Security.php:97
+msgid "Show total disk space available to cloud uploads"
+msgstr "Показывать общее доступное для загрузок место в хранилище"
-#: ../../Zotlabs/Module/Admin/Accounts.php:170
-msgid "Registrations waiting for confirm"
-msgstr "Регистрации ждут подтверждения"
+#: ../../Zotlabs/Module/Admin/Security.php:98
+msgid "Set \"Transport Security\" HTTP header"
+msgstr "Установить HTTP-заголовок \"Transport Security\""
-#: ../../Zotlabs/Module/Admin/Accounts.php:171
-msgid "Request date"
-msgstr "Дата запроса"
+#: ../../Zotlabs/Module/Admin/Security.php:99
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr "Установить HTTP-заголовок \"Content Security Policy\""
-#: ../../Zotlabs/Module/Admin/Accounts.php:172
-msgid "No registrations."
-msgstr "Нет новых регистраций."
+#: ../../Zotlabs/Module/Admin/Security.php:100
+msgid "Allowed email domains"
+msgstr "Разрешённые домены email"
-#: ../../Zotlabs/Module/Admin/Accounts.php:176
-#: ../../Zotlabs/Module/Connedit.php:628
-msgid "Block"
-msgstr "Блокировать"
+#: ../../Zotlabs/Module/Admin/Security.php:100
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Список разделённых запятыми доменов для которых разрешена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены."
-#: ../../Zotlabs/Module/Admin/Accounts.php:177
-#: ../../Zotlabs/Module/Connedit.php:628
-msgid "Unblock"
-msgstr "Разблокировать"
+#: ../../Zotlabs/Module/Admin/Security.php:101
+msgid "Not allowed email domains"
+msgstr "Запрещённые домены email"
-#: ../../Zotlabs/Module/Admin/Accounts.php:182
-msgid "ID"
-msgstr ""
+#: ../../Zotlabs/Module/Admin/Security.php:101
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Список разделённых запятыми доменов для которых запрещена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены до тех пор, пока разрешённые домены не будут указаны."
-#: ../../Zotlabs/Module/Admin/Accounts.php:184
-msgid "All Channels"
-msgstr "Все каналы"
+#: ../../Zotlabs/Module/Admin/Security.php:102
+msgid "Allow communications only from these sites"
+msgstr "Разрешить связь только с этими сайтами"
-#: ../../Zotlabs/Module/Admin/Accounts.php:185
-msgid "Register date"
-msgstr "Дата регистрации"
+#: ../../Zotlabs/Module/Admin/Security.php:102
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr "Один сайт на строку. Оставьте пустым для разрешения взаимодействия без ограничений (по умочанию)."
-#: ../../Zotlabs/Module/Admin/Accounts.php:186
-msgid "Last login"
-msgstr "Последний вход"
+#: ../../Zotlabs/Module/Admin/Security.php:103
+msgid "Block communications from these sites"
+msgstr "Блокировать связь с этими сайтами"
-#: ../../Zotlabs/Module/Admin/Accounts.php:187
-msgid "Expires"
-msgstr "Срок действия"
+#: ../../Zotlabs/Module/Admin/Security.php:104
+msgid "Allow communications only from these channels"
+msgstr "Разрешить связь только для этих каналов"
-#: ../../Zotlabs/Module/Admin/Accounts.php:188
-msgid "Service Class"
-msgstr "Класс обслуживания"
+#: ../../Zotlabs/Module/Admin/Security.php:104
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by default"
+msgstr "Один канал (или его хэш) на строку. Оставьте пустым для разрешения взаимодействия с любым каналом (по умолчанию)."
-#: ../../Zotlabs/Module/Admin/Accounts.php:190
+#: ../../Zotlabs/Module/Admin/Security.php:105
+msgid "Block communications from these channels"
+msgstr "Блокировать связь с этими каналами"
+
+#: ../../Zotlabs/Module/Admin/Security.php:106
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr "Разрешать встраивание только для безопасных (SSL/TLS) сайтов и ссылок."
+
+#: ../../Zotlabs/Module/Admin/Security.php:107
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr "Разрешить встраивать нефильтруемое HTML-содержимое только для этих доменов"
+
+#: ../../Zotlabs/Module/Admin/Security.php:107
+msgid "One site per line. By default embedded content is filtered."
+msgstr "Один сайт на строку. По умолчанию встраиваемое содержимое фильтруется."
+
+#: ../../Zotlabs/Module/Admin/Security.php:108
+msgid "Block embedded HTML from these domains"
+msgstr "Блокировать встраивание HTML-содержимого для этих доменов"
+
+#: ../../Zotlabs/Module/Lockview.php:75
+msgid "Remote privacy information not available."
+msgstr "Удаленная информация о конфиденциальности недоступна."
+
+#: ../../Zotlabs/Module/Lockview.php:96
+msgid "Visible to:"
+msgstr "Видимо для:"
+
+#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
+#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88
+msgctxt "acl"
+msgid "Profile"
+msgstr "Профиль"
+
+#: ../../Zotlabs/Module/Moderate.php:65
+msgid "Comment approved"
+msgstr "Комментарий одобрен"
+
+#: ../../Zotlabs/Module/Moderate.php:69
+msgid "Comment deleted"
+msgstr "Комментарий удалён"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:70
+#: ../../Zotlabs/Module/Settings/Channel.php:74
+#: ../../Zotlabs/Module/Settings/Channel.php:75
+#: ../../Zotlabs/Module/Settings/Channel.php:78
+#: ../../Zotlabs/Module/Settings/Channel.php:89
+#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Widget/Affinity.php:32
+#: ../../include/selectors.php:134 ../../include/channel.php:493
+#: ../../include/channel.php:494 ../../include/channel.php:501
+msgid "Friends"
+msgstr "Друзья"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:266
+#: ../../Zotlabs/Module/Defperms.php:111
+#: ../../addon/rendezvous/rendezvous.php:82
+#: ../../addon/openstreetmap/openstreetmap.php:185
+#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
+#: ../../addon/twitter/twitter.php:605 ../../addon/piwik/piwik.php:116
+#: ../../addon/xmpp/xmpp.php:54
+msgid "Settings updated."
+msgstr "Настройки обновлены."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:327
+msgid "Nobody except yourself"
+msgstr "Никто кроме вас"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:328
+msgid "Only those you specifically allow"
+msgstr "Только персонально разрешённые"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:329
+msgid "Approved connections"
+msgstr "Одобренные контакты"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:330
+msgid "Any connections"
+msgstr "Любые контакты"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:331
+msgid "Anybody on this website"
+msgstr "Любой на этом сайте"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:332
+msgid "Anybody in this network"
+msgstr "Любой в этой сети"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:333
+msgid "Anybody authenticated"
+msgstr "Любой аутентифицированный"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:334
+msgid "Anybody on the internet"
+msgstr "Любой в интернете"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:409
+msgid "Publish your default profile in the network directory"
+msgstr "Публиковать ваш профиль по умолчанию в сетевом каталоге"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:414
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Разрешить предлагать вас как потенциального друга для новых пользователей?"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:418
+msgid "or"
+msgstr "или"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:427
+msgid "Your channel address is"
+msgstr "Адрес вашего канала"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:430
+msgid "Your files/photos are accessible via WebDAV at"
+msgstr "Ваши файлы / фотографии доступны через WebDAV по"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:470
+msgid "Automatic membership approval"
+msgstr "Членство одобрено автоматически"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:470
+#: ../../Zotlabs/Module/Defperms.php:255
msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
-"on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Выбранные учётные записи будут удалены!\n\nВсё что было ими опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?"
+"If enabled, connection requests will be approved without your interaction"
+msgstr "Если включено, запросы контактов будут одобрены без вашего участия"
-#: ../../Zotlabs/Module/Admin/Accounts.php:191
+#: ../../Zotlabs/Module/Settings/Channel.php:491
+msgid "Channel Settings"
+msgstr "Настройки канала"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:498
+msgid "Basic Settings"
+msgstr "Основные настройки"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1577
+msgid "Full Name:"
+msgstr "Полное имя:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:500
+#: ../../Zotlabs/Module/Settings/Account.php:104
+msgid "Email Address:"
+msgstr "Адрес email:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:501
+msgid "Your Timezone:"
+msgstr "Часовой пояс:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:502
+msgid "Default Post Location:"
+msgstr "Расположение по умолчанию:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:502
+msgid "Geographical location to display on your posts"
+msgstr "Показывать географическое положение в ваших публикациях"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:503
+msgid "Use Browser Location:"
+msgstr "Определять расположение из браузера"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:505
+msgid "Adult Content"
+msgstr "Содержимое для взрослых"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:505
msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Этот аккаунт {0} будет удалён!\n\nВсё что им было опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?"
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Этот канал часто или регулярно публикует содержимое для взрослых. Пожалуйста, помечайте любой такой материал тегом #NSFW"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:19
-msgid "Update has been marked successful"
-msgstr "Обновление было помечено как успешное"
+#: ../../Zotlabs/Module/Settings/Channel.php:507
+msgid "Security and Privacy Settings"
+msgstr "Безопасность и настройки приватности"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:31
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Выполнение %s неудачно. Проверьте системный журнал."
+#: ../../Zotlabs/Module/Settings/Channel.php:509
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Ваши разрешения уже настроены. Нажмите чтобы просмотреть или изменить"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:34
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Обновление %sбыло успешно применено."
+#: ../../Zotlabs/Module/Settings/Channel.php:511
+msgid "Hide my online presence"
+msgstr "Скрывать моё присутствие онлайн"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:38
+#: ../../Zotlabs/Module/Settings/Channel.php:511
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Предотвращает отображения статуса \"в сети\" в вашем профиле"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:513
+msgid "Simple Privacy Settings:"
+msgstr "Простые настройки безопасности:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:514
+msgid ""
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Полностью открытый - <em>сверхлиберальный (должен использоваться с осторожностью)</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:515
+msgid ""
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Обычный - <em>открытый по умолчанию, приватность по желанию (как в социальных сетях, но с улучшенными настройками)</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:516
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Частный - <em>частный по умочанию, не открытый и не публичный</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:517
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Закрытый - <em>заблокированный по умолчанию от / для всех</em>"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:519
+msgid "Allow others to tag your posts"
+msgstr "Разрешить другим отмечать ваши публикации"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:519
+msgid ""
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Часто используется сообществом для маркировки неподобающего содержания"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:521
+msgid "Channel Permission Limits"
+msgstr "Ограничения разрешений канала"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:523
+msgid "Expire other channel content after this many days"
+msgstr "Храненить содержимое других каналов, дней"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:523
+msgid "0 or blank to use the website limit."
+msgstr "0 или пусто - использовать настройки сайта."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:523
#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Обновление %s не вернуло статус. Неизвестно было ли оно успешным."
+msgid "This website expires after %d days."
+msgstr "Срок хранения содержимого этого сайта истекает через %d дней"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:41
+#: ../../Zotlabs/Module/Settings/Channel.php:523
+msgid "This website does not expire imported content."
+msgstr "Срок хранения импортированного содержимого этого сайта не ограничен."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:523
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "Ограничение сайта имеет приоритет если ниже вашего значения."
+
+#: ../../Zotlabs/Module/Settings/Channel.php:524
+msgid "Maximum Friend Requests/Day:"
+msgstr "Запросов в друзья в день:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:524
+msgid "May reduce spam activity"
+msgstr "Может ограничить спам активность"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:525
+msgid "Default Privacy Group"
+msgstr "Группа конфиденциальности по умолчанию"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:527
+msgid "Use my default audience setting for the type of object published"
+msgstr "Использовать настройки аудитории по умолчанию для типа опубликованного объекта"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:536
+msgid "Default permissions category"
+msgstr "Категория разрешений по умолчанию"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:542
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Максимально количество сообщений от незнакомых людей, в день:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:542
+msgid "Useful to reduce spamming"
+msgstr "Полезно для сокращения количества спама"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:545
+#: ../../Zotlabs/Lib/Enotify.php:68
+msgid "Notification Settings"
+msgstr "Настройки уведомлений"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:546
+msgid "By default post a status message when:"
+msgstr "По умолчанию публиковать новый статус при:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:547
+msgid "accepting a friend request"
+msgstr "одобрении запроса в друзья"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:548
+msgid "joining a forum/community"
+msgstr "вступлении в сообщество / форум"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:549
+msgid "making an <em>interesting</em> profile change"
+msgstr "<em>интересном</em> изменении профиля"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:550
+msgid "Send a notification email when:"
+msgstr "Отправить уведомление по email когда:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:551
+msgid "You receive a connection request"
+msgstr "вы получили новый запрос контакта"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:552
+msgid "Your connections are confirmed"
+msgstr "Ваш запрос контакта был одобрен"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:553
+msgid "Someone writes on your profile wall"
+msgstr "Кто-то написал на стене вашего профиля"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:554
+msgid "Someone writes a followup comment"
+msgstr "Кто-то пишет комментарий"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:555
+msgid "You receive a private message"
+msgstr "Вы получили личное сообщение"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:556
+msgid "You receive a friend suggestion"
+msgstr "Вы получили предложение друзей"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:557
+msgid "You are tagged in a post"
+msgstr "Вы были отмечены в публикации"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:558
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Вас толкнули, подтолкнули и т.п. в публикации"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:560
+msgid "Someone likes your post/comment"
+msgstr "Кому-то нравится ваша публикация / комментарий"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:563
+msgid "Show visual notifications including:"
+msgstr "Показывать визуальные оповещения включая:"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:565
+msgid "Unseen stream activity"
+msgstr "Невидимая активность в потоке"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:566
+msgid "Unseen channel activity"
+msgstr "Невидимая активность в канале"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:567
+msgid "Unseen private messages"
+msgstr "Невидимые личные сообщения"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:567
+#: ../../Zotlabs/Module/Settings/Channel.php:572
+#: ../../Zotlabs/Module/Settings/Channel.php:573
+#: ../../Zotlabs/Module/Settings/Channel.php:574
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+msgid "Recommended"
+msgstr "Рекомендовано"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:568
+msgid "Upcoming events"
+msgstr "Грядущие события"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:569
+msgid "Events today"
+msgstr "События сегодня"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:570
+msgid "Upcoming birthdays"
+msgstr "Грядущие дни рождения"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:570
+msgid "Not available in all themes"
+msgstr "Не доступно во всех темах"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:571
+msgid "System (personal) notifications"
+msgstr "Системные (личные) уведомления"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:572
+msgid "System info messages"
+msgstr "Сообщения с системной информацией"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:573
+msgid "System critical alerts"
+msgstr "Критические уведомления системы"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:574
+msgid "New connections"
+msgstr "Новые контакты"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:575
+msgid "System Registrations"
+msgstr "Системные регистрации"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:576
+msgid "Unseen shared files"
+msgstr "Невидимые общие файлы"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:577
+msgid "Unseen public stream activity"
+msgstr "Невидимая активность в публичном потоке"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:578
+msgid "Unseen likes and dislikes"
+msgstr "Невидимые лайки и дислайки"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:579
+msgid "Unseen forum posts"
+msgstr "Невидимые публикации на форуме"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:580
+msgid "Email notification hub (hostname)"
+msgstr "Центр уведомлений по email (имя хоста)"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:580
#, php-format
-msgid "Update function %s could not be found."
-msgstr "Функция обновления %sне может быть найдена."
+msgid ""
+"If your channel is mirrored to multiple hubs, set this to your preferred "
+"location. This will prevent duplicate email notifications. Example: %s"
+msgstr "Если ваш канал зеркалируется в нескольких местах, это ваше предпочтительное местоположение. Это должно предотвратить дублировать уведомлений по email. Например: %s"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:59
-msgid "Failed Updates"
-msgstr "Обновления с ошибками"
+#: ../../Zotlabs/Module/Settings/Channel.php:581
+msgid "Show new wall posts, private messages and connections under Notices"
+msgstr "Показать новые сообщения на стене, личные сообщения и контакты в \"Уведомлениях\""
-#: ../../Zotlabs/Module/Admin/Dbsync.php:61
-msgid "Mark success (if update was manually applied)"
-msgstr "Пометить успешным (если обновление было применено вручную)"
+#: ../../Zotlabs/Module/Settings/Channel.php:583
+msgid "Notify me of events this many days in advance"
+msgstr "Уведомлять меня о событиях заранее, дней"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:62
-msgid "Attempt to execute this update step automatically"
-msgstr "Попытаться применить это обновление автоматически"
+#: ../../Zotlabs/Module/Settings/Channel.php:583
+msgid "Must be greater than 0"
+msgstr "Должно быть больше 0"
-#: ../../Zotlabs/Module/Admin/Dbsync.php:67
-msgid "No failed updates."
-msgstr "Ошибок обновлений нет."
+#: ../../Zotlabs/Module/Settings/Channel.php:588
+msgid "Advanced Account/Page Type Settings"
+msgstr "Дополнительные настройки учётной записи / страницы"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:29
+#: ../../Zotlabs/Module/Settings/Channel.php:589
+msgid "Change the behaviour of this account for special situations"
+msgstr "Изменить поведение этого аккаунта в особых ситуациях"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:591
+msgid "Miscellaneous Settings"
+msgstr "Дополнительные настройки"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:592
+msgid "Default photo upload folder"
+msgstr "Каталог загрузки фотографий по умолчанию"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:592
+#: ../../Zotlabs/Module/Settings/Channel.php:593
+msgid "%Y - current year, %m - current month"
+msgstr "%Y - текущий год, %y - текущий месяц"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:593
+msgid "Default file upload folder"
+msgstr "Каталог загрузки файлов по умолчанию"
+
+#: ../../Zotlabs/Module/Settings/Channel.php:595
+msgid "Remove this channel."
+msgstr "Удалить этот канал."
+
+#: ../../Zotlabs/Module/Settings/Features.php:43
+msgid "Additional Features"
+msgstr "Дополнительные функции"
+
+#: ../../Zotlabs/Module/Settings/Events.php:39
+msgid "Events Settings"
+msgstr "Настройки событий"
+
+#: ../../Zotlabs/Module/Settings/Calendar.php:39
+msgid "CalDAV Settings"
+msgstr "Настройки CalDAV"
+
+#: ../../Zotlabs/Module/Settings/Conversation.php:22
+msgid "Settings saved."
+msgstr "Настройки сохранены."
+
+#: ../../Zotlabs/Module/Settings/Conversation.php:24
+msgid "Settings saved. Reload page please."
+msgstr "Настройки сохранены. Пожалуйста, перезагрузите страницу."
+
+#: ../../Zotlabs/Module/Settings/Conversation.php:46
+msgid "Conversation Settings"
+msgstr "Настройки бесед"
+
+#: ../../Zotlabs/Module/Settings/Connections.php:39
+msgid "Connections Settings"
+msgstr "Настройки контактов"
+
+#: ../../Zotlabs/Module/Settings/Photos.php:39
+msgid "Photos Settings"
+msgstr "Настройки фотографий"
+
+#: ../../Zotlabs/Module/Settings/Account.php:19
+msgid "Not valid email."
+msgstr "Не действительный адрес email."
+
+#: ../../Zotlabs/Module/Settings/Account.php:22
+msgid "Protected email address. Cannot change to that email."
+msgstr "Защищенный адрес электронной почты. Нельзя изменить."
+
+#: ../../Zotlabs/Module/Settings/Account.php:31
+msgid "System failure storing new email. Please try again."
+msgstr "Системная ошибка сохранения email. Пожалуйста попробуйте ещё раз."
+
+#: ../../Zotlabs/Module/Settings/Account.php:48
+msgid "Password verification failed."
+msgstr "Не удалось выполнить проверку пароля."
+
+#: ../../Zotlabs/Module/Settings/Account.php:55
+msgid "Passwords do not match. Password unchanged."
+msgstr "Пароли не совпадают. Пароль не изменён."
+
+#: ../../Zotlabs/Module/Settings/Account.php:59
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Пустые пароли не допускаются. Пароль не изменён."
+
+#: ../../Zotlabs/Module/Settings/Account.php:73
+msgid "Password changed."
+msgstr "Пароль изменен."
+
+#: ../../Zotlabs/Module/Settings/Account.php:75
+msgid "Password update failed. Please try again."
+msgstr "Изменение пароля не удалось. Пожалуйста, попробуйте ещё раз."
+
+#: ../../Zotlabs/Module/Settings/Account.php:99
+msgid "Account Settings"
+msgstr "Настройки аккаунта"
+
+#: ../../Zotlabs/Module/Settings/Account.php:100
+msgid "Current Password"
+msgstr "Текущий пароль"
+
+#: ../../Zotlabs/Module/Settings/Account.php:101
+msgid "Enter New Password"
+msgstr "Введите новый пароль:"
+
+#: ../../Zotlabs/Module/Settings/Account.php:102
+msgid "Confirm New Password"
+msgstr "Подтвердите новый пароль:"
+
+#: ../../Zotlabs/Module/Settings/Account.php:102
+msgid "Leave password fields blank unless changing"
+msgstr "Оставьте поля пустыми до измнения"
+
+#: ../../Zotlabs/Module/Settings/Account.php:105
+#: ../../Zotlabs/Module/Removeaccount.php:61
+msgid "Remove Account"
+msgstr "Удалить аккаунт"
+
+#: ../../Zotlabs/Module/Settings/Account.php:106
+msgid "Remove this account including all its channels"
+msgstr "Удалить этот аккаунт включая все каналы"
+
+#: ../../Zotlabs/Module/Settings/Profiles.php:47
+msgid "Profiles Settings"
+msgstr "Настройки профилей"
+
+#: ../../Zotlabs/Module/Settings/Manage.php:39
+msgid "Channel Manager Settings"
+msgstr "Настройки менеджера канала"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:24
+msgid "No feature settings configured"
+msgstr "Параметры функций не настроены"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:33
+msgid "Addon Settings"
+msgstr "Настройки расширений"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:34
+msgid "Please save/submit changes to any panel before opening another."
+msgstr "Пожалуйста сохраните / отправьте изменения на панели прежде чем открывать другую."
+
+#: ../../Zotlabs/Module/Settings/Channel_home.php:44
+#: ../../Zotlabs/Module/Settings/Network.php:41
+msgid "Max height of content (in pixels)"
+msgstr "Максимальная высота содержимого (в пикселях)"
+
+#: ../../Zotlabs/Module/Settings/Channel_home.php:46
+#: ../../Zotlabs/Module/Settings/Network.php:43
+msgid "Click to expand content exceeding this height"
+msgstr "Нажмите чтобы развернуть содержимое превышающее эту высоту"
+
+#: ../../Zotlabs/Module/Settings/Channel_home.php:59
+msgid "Personal menu to display in your channel pages"
+msgstr "Персональное меню для отображения на странице вашего канала"
+
+#: ../../Zotlabs/Module/Settings/Channel_home.php:86
+msgid "Channel Home Settings"
+msgstr "Настройки главной страницы канала"
+
+#: ../../Zotlabs/Module/Settings/Directory.php:39
+msgid "Directory Settings"
+msgstr "Настройки каталога"
+
+#: ../../Zotlabs/Module/Settings/Editor.php:39
+msgid "Editor Settings"
+msgstr "Настройки редактора"
+
+#: ../../Zotlabs/Module/Settings/Display.php:128
#, php-format
-msgid "Password changed for account %d."
-msgstr "Пароль для аккаунта %d изменён."
+msgid "%s - (Experimental)"
+msgstr "%s - (экспериментальный)"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:46
-msgid "Account settings updated."
-msgstr "Настройки аккаунта обновлены."
+#: ../../Zotlabs/Module/Settings/Display.php:184
+msgid "Display Settings"
+msgstr "Настройки отображения"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:61
-msgid "Account not found."
-msgstr "Учётная запись не найдена."
+#: ../../Zotlabs/Module/Settings/Display.php:185
+msgid "Theme Settings"
+msgstr "Настройки темы"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:68
-msgid "Account Edit"
-msgstr "Редактировать аккаунт"
+#: ../../Zotlabs/Module/Settings/Display.php:186
+msgid "Custom Theme Settings"
+msgstr "Дополнительные настройки темы"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:69
-msgid "New Password"
-msgstr "Новый пароль"
+#: ../../Zotlabs/Module/Settings/Display.php:187
+msgid "Content Settings"
+msgstr "Настройки содержимого"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:70
-msgid "New Password again"
-msgstr "Повторите новый пароль"
+#: ../../Zotlabs/Module/Settings/Display.php:193
+msgid "Display Theme:"
+msgstr "Тема отображения:"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:71
-msgid "Account language (for emails)"
-msgstr "Язык сообщения для email"
+#: ../../Zotlabs/Module/Settings/Display.php:194
+msgid "Select scheme"
+msgstr "Выбрать схему"
-#: ../../Zotlabs/Module/Admin/Account_edit.php:72
-msgid "Service class"
-msgstr "Класс обслуживания"
+#: ../../Zotlabs/Module/Settings/Display.php:196
+msgid "Preload images before rendering the page"
+msgstr "Предзагрузка изображений перед обработкой страницы"
+
+#: ../../Zotlabs/Module/Settings/Display.php:196
+msgid ""
+"The subjective page load time will be longer but the page will be ready when "
+"displayed"
+msgstr "Субъективное время загрузки страницы будет длиннее, но страница будет готова при отображении"
+
+#: ../../Zotlabs/Module/Settings/Display.php:197
+msgid "Enable user zoom on mobile devices"
+msgstr "Включить масштабирование на мобильных устройствах"
+
+#: ../../Zotlabs/Module/Settings/Display.php:198
+msgid "Update browser every xx seconds"
+msgstr "Обновление браузера каждые N секунд"
+
+#: ../../Zotlabs/Module/Settings/Display.php:198
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Минимум 10 секунд, без максимума"
+
+#: ../../Zotlabs/Module/Settings/Display.php:199
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Максимальное количество бесед для загрузки одновременно:"
+
+#: ../../Zotlabs/Module/Settings/Display.php:199
+msgid "Maximum of 100 items"
+msgstr "Максимум 100 элементов"
+
+#: ../../Zotlabs/Module/Settings/Display.php:200
+msgid "Show emoticons (smilies) as images"
+msgstr "Показывать эмотиконы (смайлики) как изображения"
+
+#: ../../Zotlabs/Module/Settings/Display.php:201
+msgid "Provide channel menu in navigation bar"
+msgstr "Показывать меню канала в панели навигации"
+
+#: ../../Zotlabs/Module/Settings/Display.php:201
+msgid "Default: channel menu located in app menu"
+msgstr "По умолчанию каналы расположены в меню приложения"
+
+#: ../../Zotlabs/Module/Settings/Display.php:202
+msgid "Manual conversation updates"
+msgstr "Обновление бесед вручную"
+
+#: ../../Zotlabs/Module/Settings/Display.php:202
+msgid "Default is on, turning this off may increase screen jumping"
+msgstr "Включено по умолчанию, выключение может привести к рывкам в отображении"
+
+#: ../../Zotlabs/Module/Settings/Display.php:203
+msgid "Link post titles to source"
+msgstr "Ссылки на источник заголовков публикаций"
+
+#: ../../Zotlabs/Module/Settings/Display.php:205
+#: ../../Zotlabs/Widget/Newmember.php:75
+msgid "New Member Links"
+msgstr "Ссылки для новичков"
+
+#: ../../Zotlabs/Module/Settings/Display.php:205
+msgid "Display new member quick links menu"
+msgstr "Показать меню быстрых ссылок для новых участников"
+
+#: ../../Zotlabs/Module/Settings/Network.php:58
+msgid "Stream Settings"
+msgstr "Настройки потока"
+
+#: ../../Zotlabs/Module/Embedphotos.php:148 ../../Zotlabs/Module/Photos.php:826
+#: ../../Zotlabs/Module/Photos.php:1374 ../../Zotlabs/Widget/Portfolio.php:87
+#: ../../Zotlabs/Widget/Album.php:78
+msgid "View Photo"
+msgstr "Посмотреть фотографию"
+
+#: ../../Zotlabs/Module/Embedphotos.php:164 ../../Zotlabs/Module/Photos.php:857
+#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95
+msgid "Edit Album"
+msgstr "Редактировать Фотоальбом"
+
+#: ../../Zotlabs/Module/Embedphotos.php:166 ../../Zotlabs/Module/Photos.php:727
+#: ../../Zotlabs/Module/Profile_photo.php:459
+#: ../../Zotlabs/Module/Cover_photo.php:395
+#: ../../Zotlabs/Storage/Browser.php:392 ../../Zotlabs/Widget/Cdav.php:133
+#: ../../Zotlabs/Widget/Cdav.php:169 ../../Zotlabs/Widget/Portfolio.php:110
+#: ../../Zotlabs/Widget/Album.php:97
+msgid "Upload"
+msgstr "Загрузка"
#: ../../Zotlabs/Module/Tokens.php:39
#, php-format
@@ -9459,36 +4299,13 @@ msgstr "Пароль"
msgid "Expires (yyyy-mm-dd)"
msgstr "Срок действия (yyyy-mm-dd)"
-#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:896
+#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907
msgid "Their Settings"
msgstr "Их настройки"
-#: ../../Zotlabs/Module/Notifications.php:60
-#: ../../Zotlabs/Lib/ThreadItem.php:425
-msgid "Mark all seen"
-msgstr "Отметить как просмотренное"
-
-#: ../../Zotlabs/Module/Subthread.php:143
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s отслеживает %2$s's %3$s"
-
-#: ../../Zotlabs/Module/Subthread.php:145
-#, php-format
-msgid "%1$s stopped following %2$s's %3$s"
-msgstr "%1$s прекратил отслеживать %2$s's %3$s"
-
-#: ../../Zotlabs/Module/Rpost.php:144 ../../Zotlabs/Module/Editpost.php:108
-msgid "Edit post"
-msgstr "Редактировать сообщение"
-
-#: ../../Zotlabs/Module/Editwebpage.php:139
-msgid "Page link"
-msgstr "Ссылка страницы"
-
-#: ../../Zotlabs/Module/Editwebpage.php:166
-msgid "Edit Webpage"
-msgstr "Редактировать веб-страницу"
+#: ../../Zotlabs/Module/Achievements.php:38
+msgid "Some blurb about what to do when you're new here"
+msgstr "Некоторые предложения о том, что делать, если вы здесь новичок "
#: ../../Zotlabs/Module/Thing.php:120
msgid "Thing updated"
@@ -9543,507 +4360,291 @@ msgstr "URL (необязательно)"
msgid "URL for photo of thing (optional)"
msgstr "URL для фотографии (необязательно)"
+#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372
+#: ../../Zotlabs/Module/Photos.php:717 ../../Zotlabs/Module/Photos.php:1086
+#: ../../Zotlabs/Module/Connedit.php:690 ../../Zotlabs/Module/Chat.php:243
+#: ../../Zotlabs/Module/Filestorage.php:170 ../../include/acl_selectors.php:123
+msgid "Permissions"
+msgstr "Разрешения"
+
#: ../../Zotlabs/Module/Thing.php:362
msgid "Add Thing to your Profile"
msgstr "Добавить к вашему профилю"
-#: ../../Zotlabs/Module/Hq.php:140
-msgid "Welcome to Hubzilla!"
-msgstr "Добро пожаловать в Hubzilla!"
-
-#: ../../Zotlabs/Module/Hq.php:140
-msgid "You have got no unseen posts..."
-msgstr "У вас нет видимых публикаций..."
-
-#: ../../Zotlabs/Module/Search.php:230
-#, php-format
-msgid "Items tagged with: %s"
-msgstr "Объекты помечены как: %s"
-
-#: ../../Zotlabs/Module/Search.php:232
-#, php-format
-msgid "Search results for: %s"
-msgstr "Результаты поиска для: %s"
-
-#: ../../Zotlabs/Module/Notes.php:55
-msgid "Notes App"
-msgstr "Приложение \"Заметки\""
-
-#: ../../Zotlabs/Module/Notes.php:56
-msgid "A simple notes app with a widget (note: notes are not encrypted)"
-msgstr "Простое приложение для заметок с виджетом (примечание: заметки не зашифрованы)"
-
-#: ../../Zotlabs/Module/Moderate.php:65
-msgid "Comment approved"
-msgstr "Комментарий одобрен"
-
-#: ../../Zotlabs/Module/Moderate.php:69
-msgid "Comment deleted"
-msgstr "Комментарий удалён"
-
-#: ../../Zotlabs/Module/Webpages.php:48
-msgid "Webpages App"
-msgstr "Приложение \"Веб-страницы\""
-
-#: ../../Zotlabs/Module/Webpages.php:49
-msgid "Provide managed web pages on your channel"
-msgstr "Предоставлять управляемые веб-страницы на Вашем канале"
-
-#: ../../Zotlabs/Module/Webpages.php:69
-msgid "Import Webpage Elements"
-msgstr "Импортировать части веб-страницы"
-
-#: ../../Zotlabs/Module/Webpages.php:70
-msgid "Import selected"
-msgstr "Импортировать выбранное"
-
-#: ../../Zotlabs/Module/Webpages.php:93
-msgid "Export Webpage Elements"
-msgstr "Экспортировать часть веб-страницы"
-
-#: ../../Zotlabs/Module/Webpages.php:94
-msgid "Export selected"
-msgstr "Экспортировать выбранное"
-
-#: ../../Zotlabs/Module/Webpages.php:263
-msgid "Actions"
-msgstr "Действия"
-
-#: ../../Zotlabs/Module/Webpages.php:264
-msgid "Page Link"
-msgstr "Ссылка страницы"
-
-#: ../../Zotlabs/Module/Webpages.php:265
-msgid "Page Title"
-msgstr "Заголовок страницы"
-
-#: ../../Zotlabs/Module/Webpages.php:295
-msgid "Invalid file type."
-msgstr "Неверный тип файла."
-
-#: ../../Zotlabs/Module/Webpages.php:307
-msgid "Error opening zip file"
-msgstr "Ошибка открытия ZIP файла"
-
-#: ../../Zotlabs/Module/Webpages.php:318
-msgid "Invalid folder path."
-msgstr "Неверный путь к каталогу."
-
-#: ../../Zotlabs/Module/Webpages.php:345
-msgid "No webpage elements detected."
-msgstr "Не обнаружено частей веб-страницы."
-
-#: ../../Zotlabs/Module/Webpages.php:420
-msgid "Import complete."
-msgstr "Импорт завершен."
-
-#: ../../Zotlabs/Module/Home.php:72 ../../Zotlabs/Module/Home.php:80
-#: ../../Zotlabs/Lib/Enotify.php:66
-#: ../../extend/addon/hzaddons/opensearch/opensearch.php:42
-msgid "$Projectname"
-msgstr ""
-
-#: ../../Zotlabs/Module/Home.php:90
-#, php-format
-msgid "Welcome to %s"
-msgstr "Добро пожаловать в %s"
-
-#: ../../Zotlabs/Module/Profile_photo.php:218
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:298
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Если новая фотография не отображается немедленно то нажмите Shift + \"Обновить\" для очистки кэша браузера"
-
-#: ../../Zotlabs/Module/Profile_photo.php:454
-msgid ""
-"Your default profile photo is visible to anybody on the internet. Profile "
-"photos for alternate profiles will inherit the permissions of the profile"
-msgstr "Фотография вашего профиля по умолчанию видна всем в Интернете. Фотографияпрофиля для альтернативных профилей наследуют разрешения текущего профиля"
-
-#: ../../Zotlabs/Module/Profile_photo.php:454
-msgid ""
-"Your profile photo is visible to anybody on the internet and may be "
-"distributed to other websites."
-msgstr "Фотография вашего профиля видна всем в Интернете и может быть отправлена на другие сайты."
-
-#: ../../Zotlabs/Module/Profile_photo.php:458
-msgid "Use Photo for Profile"
-msgstr "Использовать фотографию для профиля"
-
-#: ../../Zotlabs/Module/Profile_photo.php:458
-msgid "Change Profile Photo"
-msgstr "Изменить фотографию профиля"
-
-#: ../../Zotlabs/Module/Profile_photo.php:459
-msgid "Use"
-msgstr "Использовать"
-
-#: ../../Zotlabs/Module/Rbmark.php:94
-msgid "Select a bookmark folder"
-msgstr "Выбрать каталог для закладок"
-
-#: ../../Zotlabs/Module/Rbmark.php:99
-msgid "Save Bookmark"
-msgstr "Сохранить закладку"
-
-#: ../../Zotlabs/Module/Rbmark.php:100
-msgid "URL of bookmark"
-msgstr "URL закладки"
+#: ../../Zotlabs/Module/Notify.php:61 ../../Zotlabs/Module/Notifications.php:55
+msgid "No more system notifications."
+msgstr "Нет новых оповещений системы."
-#: ../../Zotlabs/Module/Rbmark.php:105
-msgid "Or enter new bookmark folder name"
-msgstr "или введите новое имя каталога закладок"
+#: ../../Zotlabs/Module/Notify.php:65 ../../Zotlabs/Module/Notifications.php:59
+msgid "System Notifications"
+msgstr "Системные оповещения "
#: ../../Zotlabs/Module/Follow.php:36
msgid "Connection added."
msgstr "Контакт добавлен."
-#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43
-msgid "Item is not editable"
-msgstr "Элемент нельзя редактировать"
-
-#: ../../Zotlabs/Module/Connedit.php:111
-msgid "Could not locate selected profile."
-msgstr "Не удалось обнаружить выбранный профиль."
-
-#: ../../Zotlabs/Module/Connedit.php:248
-msgid "Connection updated."
-msgstr "Контакты обновлены."
-
-#: ../../Zotlabs/Module/Connedit.php:250
-msgid "Failed to update connection record."
-msgstr "Не удалось обновить запись контакта."
-
-#: ../../Zotlabs/Module/Connedit.php:304
-msgid "is now connected to"
-msgstr "теперь подключён к"
-
-#: ../../Zotlabs/Module/Connedit.php:429
-msgid "Could not access address book record."
-msgstr "Не удалось получить доступ к записи адресной книги."
-
-#: ../../Zotlabs/Module/Connedit.php:477 ../../Zotlabs/Module/Connedit.php:481
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Обновление невозможно - в настоящее время канал недоступен."
-
-#: ../../Zotlabs/Module/Connedit.php:496 ../../Zotlabs/Module/Connedit.php:505
-#: ../../Zotlabs/Module/Connedit.php:514 ../../Zotlabs/Module/Connedit.php:523
-#: ../../Zotlabs/Module/Connedit.php:536
-msgid "Unable to set address book parameters."
-msgstr "Не удалось получить доступ к параметрам адресной книги."
-
-#: ../../Zotlabs/Module/Connedit.php:560
-msgid "Connection has been removed."
-msgstr "Контакт был удалён."
-
-#: ../../Zotlabs/Module/Connedit.php:603
+#: ../../Zotlabs/Module/Import.php:155
#, php-format
-msgid "View %s's profile"
-msgstr "Просмотр %s профиля"
-
-#: ../../Zotlabs/Module/Connedit.php:607
-msgid "Refresh Permissions"
-msgstr "Обновить разрешения"
-
-#: ../../Zotlabs/Module/Connedit.php:610
-msgid "Fetch updated permissions"
-msgstr "Получить обновлённые разрешения"
-
-#: ../../Zotlabs/Module/Connedit.php:614
-msgid "Refresh Photo"
-msgstr "Обновить фотографию"
-
-#: ../../Zotlabs/Module/Connedit.php:617
-msgid "Fetch updated photo"
-msgstr "Получить обновлённую фотографию"
-
-#: ../../Zotlabs/Module/Connedit.php:624
-msgid "View recent posts and comments"
-msgstr "Просмотреть последние публикации и комментарии"
-
-#: ../../Zotlabs/Module/Connedit.php:631
-msgid "Block (or Unblock) all communications with this connection"
-msgstr "Блокировать (или разблокировать) связи с этим контактом"
-
-#: ../../Zotlabs/Module/Connedit.php:632
-msgid "This connection is blocked!"
-msgstr "Этот контакт заблокирован!"
-
-#: ../../Zotlabs/Module/Connedit.php:636
-msgid "Unignore"
-msgstr "Не игнорировать"
-
-#: ../../Zotlabs/Module/Connedit.php:636
-#: ../../Zotlabs/Module/Connections.php:308
-msgid "Ignore"
-msgstr "Игнорировать"
+msgid "Your service plan only allows %d channels."
+msgstr "Ваш класс обслуживания разрешает только %d каналов."
-#: ../../Zotlabs/Module/Connedit.php:639
-msgid "Ignore (or Unignore) all inbound communications from this connection"
-msgstr "Игнорировать (или не игнорировать) все связи для этого контакта"
+#: ../../Zotlabs/Module/Import.php:182
+msgid "No channel. Import failed."
+msgstr "Канала нет. Импорт невозможен."
-#: ../../Zotlabs/Module/Connedit.php:640
-msgid "This connection is ignored!"
-msgstr "Этот контакт игнорируется!"
+#: ../../Zotlabs/Module/Import.php:522
+#: ../../addon/diaspora/import_diaspora.php:141
+msgid "Import completed."
+msgstr "Импорт завершен."
-#: ../../Zotlabs/Module/Connedit.php:644
-msgid "Unarchive"
-msgstr "Разархивировать"
+#: ../../Zotlabs/Module/Import.php:550
+msgid "You must be logged in to use this feature."
+msgstr "Вы должны войти в систему, чтобы использовать эту функцию."
-#: ../../Zotlabs/Module/Connedit.php:644
-msgid "Archive"
-msgstr "Заархивировать"
+#: ../../Zotlabs/Module/Import.php:555
+msgid "Import Channel"
+msgstr "Импортировать канал"
-#: ../../Zotlabs/Module/Connedit.php:647
+#: ../../Zotlabs/Module/Import.php:556
msgid ""
-"Archive (or Unarchive) this connection - mark channel dead but keep content"
-msgstr "Заархивировать (или разархивировать) этот контакт - пометить канал отключённым но сохранить содержимое"
-
-#: ../../Zotlabs/Module/Connedit.php:648
-msgid "This connection is archived!"
-msgstr "Этот контакт заархивирован!"
-
-#: ../../Zotlabs/Module/Connedit.php:652
-msgid "Unhide"
-msgstr "Показать"
+"Use this form to import an existing channel from a different server/hub. You "
+"may retrieve the channel identity from the old server/hub via the network or "
+"provide an export file."
+msgstr "Используйте эту форм для импорта существующего канала с другого сервера / хаба. Вы можете получить идентификационные данные канала со старого сервера / хаба через сеть или предоставить файл экспорта."
-#: ../../Zotlabs/Module/Connedit.php:652
-msgid "Hide"
-msgstr "Скрыть"
+#: ../../Zotlabs/Module/Import.php:558
+msgid "Or provide the old server/hub details"
+msgstr "или предоставьте данные старого сервера"
-#: ../../Zotlabs/Module/Connedit.php:655
-msgid "Hide or Unhide this connection from your other connections"
-msgstr "Скрыть или показать этот контакт от / для остальных"
+#: ../../Zotlabs/Module/Import.php:560
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Ваш старый адрес идентичности (xyz@example.com)"
-#: ../../Zotlabs/Module/Connedit.php:656
-msgid "This connection is hidden!"
-msgstr "Этот контакт скрыт!"
+#: ../../Zotlabs/Module/Import.php:561
+msgid "Your old login email address"
+msgstr "Ваш старый адрес электронной почты"
-#: ../../Zotlabs/Module/Connedit.php:663
-msgid "Delete this connection"
-msgstr "Удалить этот контакт"
+#: ../../Zotlabs/Module/Import.php:562
+msgid "Your old login password"
+msgstr "Ваш старый пароль"
-#: ../../Zotlabs/Module/Connedit.php:671
-msgid "Fetch Vcard"
-msgstr "Получить vCard"
+#: ../../Zotlabs/Module/Import.php:563
+msgid "Import a few months of posts if possible (limited by available memory"
+msgstr "Импортировать несколько месяцев публикаций если возможно (ограничено доступной памятью)"
-#: ../../Zotlabs/Module/Connedit.php:674
-msgid "Fetch electronic calling card for this connection"
-msgstr "Получить электронную телефонную карточку для этого контакта"
+#: ../../Zotlabs/Module/Import.php:565
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be "
+"able to post from either location, but only one can be marked as the primary "
+"location for files, photos, and media."
+msgstr "Для любого варианта, пожалуйста, выберите, следует ли сделать этот хаб вашим новым основным адресом, или ваше прежнее местоположение должно продолжить выполнять эту роль. Вы сможете отправлять сообщения из любого местоположения, но только одно может быть помечено как основное место для файлов, фотографий и мультимедиа."
-#: ../../Zotlabs/Module/Connedit.php:685
-msgid "Open Individual Permissions section by default"
-msgstr "Открывать раздел \"Индивидуальные разрешения\" по умолчанию"
+#: ../../Zotlabs/Module/Import.php:567
+msgid "Make this hub my primary location"
+msgstr "Сделать этот хаб главным"
-#: ../../Zotlabs/Module/Connedit.php:708
-msgid "Affinity"
-msgstr "Сходство"
+#: ../../Zotlabs/Module/Import.php:568
+msgid "Move this channel (disable all previous locations)"
+msgstr "Переместить это канал (отключить все предыдущие месторасположения)"
-#: ../../Zotlabs/Module/Connedit.php:711
-msgid "Open Set Affinity section by default"
-msgstr "Открыть секцию установления сходства по умолчанию"
+#: ../../Zotlabs/Module/Import.php:569
+msgid "Use this channel nickname instead of the one provided"
+msgstr "Использовать псевдоним этого канала вместо предоставленного"
-#: ../../Zotlabs/Module/Connedit.php:715 ../../Zotlabs/Widget/Affinity.php:22
-msgid "Me"
-msgstr "Я"
+#: ../../Zotlabs/Module/Import.php:569
+msgid ""
+"Leave blank to keep your existing channel nickname. You will be randomly "
+"assigned a similar nickname if either name is already allocated on this site."
+msgstr "Оставьте пустым для сохранения существующего псевдонима канала. Вам будет случайным образом назначен похожий псевдоним если такое имя уже выделено на этом сайте."
-#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Widget/Affinity.php:23
-msgid "Family"
-msgstr "Семья"
+#: ../../Zotlabs/Module/Import.php:571
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
+msgstr "Процесс может занять несколько минут. Пожалуйста, отправьте форму только один раз и оставьте эту страницу открытой до завершения."
-#: ../../Zotlabs/Module/Connedit.php:718 ../../Zotlabs/Widget/Affinity.php:25
-msgid "Acquaintances"
-msgstr "Знакомые"
+#: ../../Zotlabs/Module/Rmagic.php:44
+msgid "Authentication failed."
+msgstr "Ошибка аутентификации."
-#: ../../Zotlabs/Module/Connedit.php:719
-#: ../../Zotlabs/Module/Connections.php:97
-#: ../../Zotlabs/Module/Connections.php:111
-#: ../../Zotlabs/Widget/Affinity.php:26
-msgid "All"
-msgstr "Все"
+#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1630
+#: ../../include/channel.php:2405
+msgid "Remote Authentication"
+msgstr "Удаленная аутентификация"
-#: ../../Zotlabs/Module/Connedit.php:745
-msgid "Filter"
-msgstr "Фильтр"
+#: ../../Zotlabs/Module/Rmagic.php:94 ../../include/channel.php:2406
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Введите адрес вашего канала (например: channel@example.com)"
-#: ../../Zotlabs/Module/Connedit.php:748
-msgid "Open Custom Filter section by default"
-msgstr "Открывать секцию \"Настраиваемый фильтр\" по умолчанию"
+#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2407
+msgid "Authenticate"
+msgstr "Проверка подлинности"
-#: ../../Zotlabs/Module/Connedit.php:785
-msgid "Approve this connection"
-msgstr "Утвердить этот контакт"
+#: ../../Zotlabs/Module/Oauth2.php:54
+msgid "Name and Secret are required"
+msgstr "Требуются имя и код"
-#: ../../Zotlabs/Module/Connedit.php:785
-msgid "Accept connection to allow communication"
-msgstr "Принять контакт чтобы разрешить связь"
+#: ../../Zotlabs/Module/Oauth2.php:106
+msgid "OAuth2 Apps Manager App"
+msgstr "Приложение \"Менеджер Oauth2\""
-#: ../../Zotlabs/Module/Connedit.php:790
-msgid "Set Affinity"
-msgstr "Установить сходство"
+#: ../../Zotlabs/Module/Oauth2.php:107
+msgid "OAuth2 authenticatication tokens for mobile and remote apps"
+msgstr "Аутентификация OAuth2 для мобильных и удаленных приложений"
-#: ../../Zotlabs/Module/Connedit.php:793
-msgid "Set Profile"
-msgstr "Установить профиль"
+#: ../../Zotlabs/Module/Oauth2.php:115
+msgid "Add OAuth2 application"
+msgstr "Добавить приложение OAuth2"
-#: ../../Zotlabs/Module/Connedit.php:796
-msgid "Set Affinity & Profile"
-msgstr "Установить сходство и профиль"
+#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146
+#: ../../Zotlabs/Module/Oauth.php:113
+msgid "Name of application"
+msgstr "Название приложения"
-#: ../../Zotlabs/Module/Connedit.php:844
-msgid "This connection is unreachable from this location."
-msgstr "Этот контакт недоступен для данного местоположения"
+#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
+#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141
+#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:615
+msgid "Consumer Secret"
+msgstr "Код клиента"
-#: ../../Zotlabs/Module/Connedit.php:845
-msgid "This connection may be unreachable from other channel locations."
-msgstr "Этот контакт может быть недоступен из других мест размещения канала"
+#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
+#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:115
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Сгенерирован автоматические - измените если требуется. Макс. длина 20"
-#: ../../Zotlabs/Module/Connedit.php:847
-msgid "Location independence is not supported by their network."
-msgstr "Независимое местоположение не поддерживается их сетью."
+#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148
+#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142
+msgid "Redirect"
+msgstr "Перенаправление"
-#: ../../Zotlabs/Module/Connedit.php:853
+#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148
+#: ../../Zotlabs/Module/Oauth.php:116
msgid ""
-"This connection is unreachable from this location. Location independence is "
-"not supported by their network."
-msgstr "Этот контакт недоступен из данного местоположения. Независимое местоположение не поддерживается их сетью."
-
-#: ../../Zotlabs/Module/Connedit.php:857
-msgid "Connection requests will be approved without your interaction"
-msgstr "Запросы контактов будут одобрены без вашего участия"
+"Redirect URI - leave blank unless your application specifically requires this"
+msgstr "URI перенаправления - оставьте пустыми до тех пока ваше приложение не требует этого"
-#: ../../Zotlabs/Module/Connedit.php:866
-msgid "This connection's primary address is"
-msgstr "Главный адрес это контакта"
+#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149
+msgid "Grant Types"
+msgstr "Разрешить типы"
-#: ../../Zotlabs/Module/Connedit.php:867
-msgid "Available locations:"
-msgstr "Доступные расположения:"
+#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122
+msgid "leave blank unless your application sepcifically requires this"
+msgstr "оставьте пустыми до тех пока ваше приложение не требует этого"
-#: ../../Zotlabs/Module/Connedit.php:873
-msgid "Connection Tools"
-msgstr "Инструменты контактов"
+#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150
+msgid "Authorization scope"
+msgstr "Область полномочий"
-#: ../../Zotlabs/Module/Connedit.php:875
-msgid "Slide to adjust your degree of friendship"
-msgstr "Прокрутить для настройки степени дружбы"
+#: ../../Zotlabs/Module/Oauth2.php:134
+msgid "OAuth2 Application not found."
+msgstr "Приложение OAuth2 не найдено."
-#: ../../Zotlabs/Module/Connedit.php:877
-msgid "Slide to adjust your rating"
-msgstr "Прокрутить для настройки оценки"
+#: ../../Zotlabs/Module/Oauth2.php:143 ../../Zotlabs/Module/Oauth2.php:193
+#: ../../Zotlabs/Module/Oauth.php:110 ../../Zotlabs/Module/Oauth.php:136
+#: ../../Zotlabs/Module/Oauth.php:172
+msgid "Add application"
+msgstr "Добавить приложение"
-#: ../../Zotlabs/Module/Connedit.php:878 ../../Zotlabs/Module/Connedit.php:883
-msgid "Optionally explain your rating"
-msgstr "Объясните свою оценку (не обязательно)"
+#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150
+msgid "leave blank unless your application specifically requires this"
+msgstr "оставьте поле пустым, если ваше приложение не требует этого"
-#: ../../Zotlabs/Module/Connedit.php:880
-msgid "Custom Filter"
-msgstr "Настраиваемый фильтр"
+#: ../../Zotlabs/Module/Oauth2.php:192
+msgid "Connected OAuth2 Apps"
+msgstr "Подключённые приложения OAuth2"
-#: ../../Zotlabs/Module/Connedit.php:881
-msgid "Only import posts with this text"
-msgstr "Импортировать публикации только с этим текстом"
+#: ../../Zotlabs/Module/Oauth2.php:196 ../../Zotlabs/Module/Oauth.php:175
+msgid "Client key starts with"
+msgstr "Ключ клиента начинается с"
-#: ../../Zotlabs/Module/Connedit.php:882
-msgid "Do not import posts with this text"
-msgstr "Не импортировать публикации с этим текстом"
+#: ../../Zotlabs/Module/Oauth2.php:197 ../../Zotlabs/Module/Oauth.php:176
+msgid "No name"
+msgstr "Без названия"
-#: ../../Zotlabs/Module/Connedit.php:884
-msgid "This information is public!"
-msgstr "Эта информация общедоступна!"
+#: ../../Zotlabs/Module/Oauth2.php:198 ../../Zotlabs/Module/Oauth.php:177
+msgid "Remove authorization"
+msgstr "Удалить разрешение"
-#: ../../Zotlabs/Module/Connedit.php:889
-msgid "Connection Pending Approval"
-msgstr "Ожидающие подтверждения контактов"
+#: ../../Zotlabs/Module/Cal.php:70
+msgid "Permissions denied."
+msgstr "Доступ запрещен."
-#: ../../Zotlabs/Module/Connedit.php:894
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Пожалуйста, выберите профиль который вы хотит показывать в %s при безопасном просмотре."
+#: ../../Zotlabs/Module/Cal.php:343 ../../include/text.php:2558
+msgid "Import"
+msgstr "Импортировать"
-#: ../../Zotlabs/Module/Connedit.php:901
-msgid ""
-"Some permissions may be inherited from your channel's <a href=\"settings"
-"\"><strong>privacy settings</strong></a>, which have higher priority than "
-"individual settings. You can change those settings here but they wont have "
-"any impact unless the inherited setting changes."
-msgstr "Некоторые разрешения могут быть унаследованы из <a href=\"settings\"><strong>настроек приватности</strong></a> вашего канала, которые могут иметь более высокий приоритет чем индивидуальные. Вы можете изменить эти настройки, однако они не будут применены до изменения переданных по наследству настроек."
+#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95
+msgid "Authorize application connection"
+msgstr "Авторизовать подключение приложения"
-#: ../../Zotlabs/Module/Connedit.php:902
-msgid "Last update:"
-msgstr "Последнее обновление:"
+#: ../../Zotlabs/Module/Api.php:75
+msgid "Return to your app and insert this Security Code:"
+msgstr "Вернитесь к своему приложению и вставьте этот код безопасности:"
-#: ../../Zotlabs/Module/Connedit.php:910
-msgid "Details"
-msgstr "Сведения"
+#: ../../Zotlabs/Module/Api.php:85
+msgid "Please login to continue."
+msgstr "Пожалуйста, войдите, чтобы продолжить."
-#: ../../Zotlabs/Module/Group.php:45
-msgid "Privacy group created."
-msgstr "Группа безопасности создана."
+#: ../../Zotlabs/Module/Api.php:97
+msgid ""
+"Do you want to authorize this application to access your posts and contacts, "
+"and/or create new posts for you?"
+msgstr "Вы хотите авторизовать это приложение для доступа к вашим публикациям и контактам и / или созданию новых публикаций?"
-#: ../../Zotlabs/Module/Group.php:48
-msgid "Could not create privacy group."
-msgstr "Не удалось создать группу безопасности."
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Элемент недоступен."
-#: ../../Zotlabs/Module/Group.php:77
-msgid "Privacy group updated."
-msgstr "Группа безопасности обновлена."
+#: ../../Zotlabs/Module/Randprof.php:29
+msgid "Random Channel App"
+msgstr "Приложение \"Случайный канал\""
-#: ../../Zotlabs/Module/Group.php:101
-msgid "Privacy Groups App"
-msgstr "Приложение \"Группы безопасности\""
+#: ../../Zotlabs/Module/Randprof.php:30
+msgid "Visit a random channel in the $Projectname network"
+msgstr "Посещение случайного канала в сети $Projectname"
-#: ../../Zotlabs/Module/Group.php:102
-msgid "Management of privacy groups"
-msgstr "Управление группами безопасности."
+#: ../../Zotlabs/Module/Editblock.php:138
+msgid "Edit Block"
+msgstr "Редактировать блок"
-#: ../../Zotlabs/Module/Group.php:133
-msgid "Add Group"
-msgstr "Добавить группу"
+#: ../../Zotlabs/Module/Profile.php:93
+msgid "vcard"
+msgstr "vCard"
-#: ../../Zotlabs/Module/Group.php:137
-msgid "Privacy group name"
-msgstr "Имя группы безопасности"
+#: ../../Zotlabs/Module/Apps.php:50 ../../Zotlabs/Widget/Appstore.php:14
+msgid "Available Apps"
+msgstr "Доступные приложения"
-#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:239
-msgid "Members are visible to other channels"
-msgstr "Участники канала видимые для остальных"
+#: ../../Zotlabs/Module/Apps.php:50
+msgid "Installed Apps"
+msgstr "Установленные приложения"
-#: ../../Zotlabs/Module/Group.php:170
-msgid "Privacy group removed."
-msgstr "Группа безопасности удалена."
+#: ../../Zotlabs/Module/Apps.php:53
+msgid "Manage Apps"
+msgstr "Управление приложениями"
-#: ../../Zotlabs/Module/Group.php:172
-msgid "Unable to remove privacy group."
-msgstr "Ну удалось удалить группу безопасности."
+#: ../../Zotlabs/Module/Apps.php:54
+msgid "Create Custom App"
+msgstr "Создать пользовательское приложение"
-#: ../../Zotlabs/Module/Group.php:234
+#: ../../Zotlabs/Module/Mood.php:76 ../../include/conversation.php:268
#, php-format
-msgid "Privacy Group: %s"
-msgstr "Группа безопасности: %s"
-
-#: ../../Zotlabs/Module/Group.php:236
-msgid "Privacy group name: "
-msgstr "Название группы безопасности: "
-
-#: ../../Zotlabs/Module/Group.php:241
-msgid "Delete Group"
-msgstr "Удалить группу"
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s в %2$s"
-#: ../../Zotlabs/Module/Group.php:251
-msgid "Group members"
-msgstr "Члены группы"
+#: ../../Zotlabs/Module/Mood.php:134
+msgid "Mood App"
+msgstr "Приложение \"Настроение\""
-#: ../../Zotlabs/Module/Group.php:253
-msgid "Not in this group"
-msgstr "Не в этой группе"
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155
+msgid "Set your current mood and tell your friends"
+msgstr "Установить текущее настроение и рассказать друзьям"
-#: ../../Zotlabs/Module/Group.php:285
-msgid "Click a channel to toggle membership"
-msgstr "Нажмите на канал для просмотра членства"
+#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:347
+msgid "Mood"
+msgstr "Настроение"
#: ../../Zotlabs/Module/Connections.php:58
#: ../../Zotlabs/Module/Connections.php:115
@@ -10074,6 +4675,18 @@ msgstr "Скрыт"
msgid "Archived/Unreachable"
msgstr "Заархивировано / недоступно"
+#: ../../Zotlabs/Module/Connections.php:83
+#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:179
+#: ../../Zotlabs/Module/Notifications.php:50
+msgid "New"
+msgstr "Новые"
+
+#: ../../Zotlabs/Module/Connections.php:97
+#: ../../Zotlabs/Module/Connections.php:111
+#: ../../Zotlabs/Module/Connedit.php:727 ../../Zotlabs/Widget/Affinity.php:34
+msgid "All"
+msgstr "Все"
+
#: ../../Zotlabs/Module/Connections.php:143
msgid "Active Connections"
msgstr "Активные контакты"
@@ -10140,6 +4753,10 @@ msgstr "Удалить контакт"
msgid "Channel address"
msgstr "Адрес канала"
+#: ../../Zotlabs/Module/Connections.php:296 ../../include/features.php:313
+msgid "Network"
+msgstr "Сеть"
+
#: ../../Zotlabs/Module/Connections.php:299
msgid "Call"
msgstr "Вызов"
@@ -10160,10 +4777,20 @@ msgstr "Утвердить контакт"
msgid "Ignore connection"
msgstr "Игнорировать контакт"
+#: ../../Zotlabs/Module/Connections.php:308
+#: ../../Zotlabs/Module/Connedit.php:644
+msgid "Ignore"
+msgstr "Игнорировать"
+
#: ../../Zotlabs/Module/Connections.php:309
msgid "Recent activity"
msgstr "Последние действия"
+#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:330
+#: ../../include/text.php:991 ../../include/features.php:125
+msgid "Connections"
+msgstr "Контакты"
+
#: ../../Zotlabs/Module/Connections.php:339
msgid "Search your connections"
msgstr "Поиск ваших контактов"
@@ -10172,241 +4799,311 @@ msgstr "Поиск ваших контактов"
msgid "Connections search"
msgstr "Поиск контаков"
-#: ../../Zotlabs/Module/Mood.php:134
-msgid "Mood App"
-msgstr "Приложение \"Настроение\""
+#: ../../Zotlabs/Module/Connections.php:341
+#: ../../Zotlabs/Module/Directory.php:405
+#: ../../Zotlabs/Module/Directory.php:410 ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Поиск"
-#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155
-msgid "Set your current mood and tell your friends"
-msgstr "Установить текущее настроение и рассказать друзьям"
+#: ../../Zotlabs/Module/Viewsrc.php:43
+msgid "item"
+msgstr "пункт"
-#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:325
-msgid "Mood"
-msgstr "Настроение"
+#: ../../Zotlabs/Module/Bookmarks.php:62
+msgid "Bookmark added"
+msgstr "Закладка добавлена"
-#: ../../Zotlabs/Module/Card_edit.php:128
-msgid "Edit Card"
-msgstr "Редактировать карточку"
+#: ../../Zotlabs/Module/Bookmarks.php:78
+msgid "Bookmarks App"
+msgstr "Приложение \"Закладки\""
-#: ../../Zotlabs/Module/Article_edit.php:128
-msgid "Edit Article"
-msgstr "Редактировать статью"
+#: ../../Zotlabs/Module/Bookmarks.php:79
+msgid "Bookmark links from posts and manage them"
+msgstr "Поместить ссылки из публикации в закладки и управлять ими"
-#: ../../Zotlabs/Module/Lang.php:17
-msgid "Language App"
-msgstr "Приложение \"Язык\""
+#: ../../Zotlabs/Module/Bookmarks.php:92
+msgid "My Bookmarks"
+msgstr "Мои закладки"
-#: ../../Zotlabs/Module/Lang.php:18
-msgid "Change UI language"
-msgstr "Изменить язык интерфейса"
+#: ../../Zotlabs/Module/Bookmarks.php:103
+msgid "My Connections Bookmarks"
+msgstr "Закладки моих контактов"
-#: ../../Zotlabs/Module/Blocks.php:156
-msgid "Block Title"
-msgstr "Заблокировать заголовок"
+#: ../../Zotlabs/Module/Removeaccount.php:35
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Удаление канала не разрешается в течении 48 часов после смены пароля у аккаунта."
-#: ../../Zotlabs/Module/Randprof.php:29
-msgid "Random Channel App"
-msgstr "Приложение \"Случайный канал\""
+#: ../../Zotlabs/Module/Removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Удалить этот аккаунт"
-#: ../../Zotlabs/Module/Randprof.php:30
-msgid "Visit a random channel in the $Projectname network"
-msgstr "Посещение случайного канала в сети $Projectname"
+#: ../../Zotlabs/Module/Removeaccount.php:58
+msgid ""
+"This account and all its channels will be completely removed from the "
+"network. "
+msgstr "Этот аккаунт и все его каналы будут полностью удалены из сети."
-#: ../../Zotlabs/Module/Invite.php:37
-msgid "Total invitation limit exceeded."
-msgstr "Превышено общее количество приглашений."
+#: ../../Zotlabs/Module/Removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Удалить этот аккаунт, все его каналы и их клоны из сети."
-#: ../../Zotlabs/Module/Invite.php:61
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : Недействительный адрес электронной почты."
+#: ../../Zotlabs/Module/Removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "По умолчанию только представление канала расположенное на данном хабе будет удалено из сети"
-#: ../../Zotlabs/Module/Invite.php:75
-msgid "Please join us on $Projectname"
-msgstr "Присоединятесь к $Projectname !"
+#: ../../Zotlabs/Module/Photos.php:78
+msgid "Page owner information could not be retrieved."
+msgstr "Информация о владельце страницы не может быть получена."
-#: ../../Zotlabs/Module/Invite.php:85
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Превышен лимит приглашений. Пожалуйста, свяжитесь с администрацией сайта."
+#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113
+msgid "Album not found."
+msgstr "Альбом не найден."
-#: ../../Zotlabs/Module/Invite.php:90
-#: ../../extend/addon/hzaddons/notifyadmin/notifyadmin.php:40
+#: ../../Zotlabs/Module/Photos.php:103
+msgid "Delete Album"
+msgstr "Удалить альбом"
+
+#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1098
+msgid "Delete Photo"
+msgstr "Удалить фотографию"
+
+#: ../../Zotlabs/Module/Photos.php:569
+msgid "No photos selected"
+msgstr "Никакие фотографии не выбраны"
+
+#: ../../Zotlabs/Module/Photos.php:618
+msgid "Access to this item is restricted."
+msgstr "Доступ к этому элементу ограничен."
+
+#: ../../Zotlabs/Module/Photos.php:661
#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Доставка сообщения не удалась."
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "Вы использовали %1$.2f мегабайт из %2$.2f для хранения фото."
-#: ../../Zotlabs/Module/Invite.php:94
+#: ../../Zotlabs/Module/Photos.php:664
#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d сообщение отправлено."
-msgstr[1] "%d сообщения отправлено."
-msgstr[2] "%d сообщений отправлено."
+msgid "%1$.2f MB photo storage used."
+msgstr "Вы использовали %1$.2f мегабайт для хранения фото."
-#: ../../Zotlabs/Module/Invite.php:110
-msgid "Invite App"
-msgstr "Приложение \"Пригласить\""
+#: ../../Zotlabs/Module/Photos.php:706
+msgid "Upload Photos"
+msgstr "Загрузить фотографии"
-#: ../../Zotlabs/Module/Invite.php:111
-msgid "Send email invitations to join this network"
-msgstr "Отправить приглашение присоединиться к этой сети по электронной почте"
+#: ../../Zotlabs/Module/Photos.php:710
+msgid "Enter an album name"
+msgstr "Введите название альбома"
-#: ../../Zotlabs/Module/Invite.php:124
-msgid "You have no more invitations available"
-msgstr "У вас больше нет приглашений"
+#: ../../Zotlabs/Module/Photos.php:711
+msgid "or select an existing album (doubleclick)"
+msgstr "или выберите существующий альбом (двойной щелчок)"
-#: ../../Zotlabs/Module/Invite.php:155
-msgid "Send invitations"
-msgstr "Отправить приглашение"
+#: ../../Zotlabs/Module/Photos.php:712
+msgid "Create a status post for this upload"
+msgstr "Сделать публикацию о статусе для этой загрузки"
-#: ../../Zotlabs/Module/Invite.php:156
-msgid "Enter email addresses, one per line:"
-msgstr "Введите адреса электронной почты, по одному в строке:"
+#: ../../Zotlabs/Module/Photos.php:714
+msgid "Description (optional)"
+msgstr "Описание (необязательно)"
-#: ../../Zotlabs/Module/Invite.php:158
-msgid "Please join my community on $Projectname."
-msgstr "Присоединятесь к нашему сообществу $Projectname !"
+#: ../../Zotlabs/Module/Photos.php:800
+msgid "Show Newest First"
+msgstr "Показать новые первыми"
-#: ../../Zotlabs/Module/Invite.php:160
-msgid "You will need to supply this invitation code:"
-msgstr "Вам нужно предоставит этот код приглашения:"
+#: ../../Zotlabs/Module/Photos.php:802
+msgid "Show Oldest First"
+msgstr "Показать старые первыми"
-#: ../../Zotlabs/Module/Invite.php:161
-msgid "1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Зарегистрируйтесь на любом из серверов $Projectname"
+#: ../../Zotlabs/Module/Photos.php:859 ../../Zotlabs/Module/Photos.php:1405
+msgid "Add Photos"
+msgstr "Добавить фотографии"
-#: ../../Zotlabs/Module/Invite.php:163
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Введите сетевой адрес $Projectname в поисковой строке сайта"
+#: ../../Zotlabs/Module/Photos.php:907
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Доступ запрещен. Доступ к этому элементу может быть ограничен."
-#: ../../Zotlabs/Module/Invite.php:164
-msgid "or visit"
-msgstr "или посетите"
+#: ../../Zotlabs/Module/Photos.php:909
+msgid "Photo not available"
+msgstr "Фотография не доступна"
-#: ../../Zotlabs/Module/Invite.php:166
-msgid "3. Click [Connect]"
-msgstr "Нажать [Подключиться]"
+#: ../../Zotlabs/Module/Photos.php:967
+msgid "Use as profile photo"
+msgstr "Использовать в качестве фотографии профиля"
-#: ../../Zotlabs/Module/Articles.php:43
-msgid "Articles App"
-msgstr "Приложение \"Статьи\""
+#: ../../Zotlabs/Module/Photos.php:968
+msgid "Use as cover photo"
+msgstr "Использовать в качестве фотографии обложки"
-#: ../../Zotlabs/Module/Articles.php:44
-msgid "Create interactive articles"
-msgstr "Создать интерактивные статьи"
+#: ../../Zotlabs/Module/Photos.php:975
+msgid "Private Photo"
+msgstr "Личная фотография"
-#: ../../Zotlabs/Module/Articles.php:107
-msgid "Add Article"
-msgstr "Добавить статью"
+#: ../../Zotlabs/Module/Photos.php:990
+msgid "View Full Size"
+msgstr "Посмотреть в полный размер"
-#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135
-msgid "Continue"
-msgstr "Продолжить"
+#: ../../Zotlabs/Module/Photos.php:1072
+msgid "Edit photo"
+msgstr "Редактировать фотографию"
-#: ../../Zotlabs/Module/Connect.php:104
-msgid "Premium Channel App"
-msgstr "Приложение \"Премиальный канал\""
+#: ../../Zotlabs/Module/Photos.php:1074
+msgid "Rotate CW (right)"
+msgstr "Повернуть CW (направо)"
-#: ../../Zotlabs/Module/Connect.php:105
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Позволяет установить ограничения и условия для подключающихся к вашему каналу"
+#: ../../Zotlabs/Module/Photos.php:1075
+msgid "Rotate CCW (left)"
+msgstr "Повернуть CCW (налево)"
-#: ../../Zotlabs/Module/Connect.php:116
-msgid "Premium Channel Setup"
-msgstr "Установка премиального канала"
+#: ../../Zotlabs/Module/Photos.php:1078
+msgid "Move photo to album"
+msgstr "Переместить фотографию в альбом"
-#: ../../Zotlabs/Module/Connect.php:118
-msgid "Enable premium channel connection restrictions"
-msgstr "Включить ограничения для премиального канала"
+#: ../../Zotlabs/Module/Photos.php:1079
+msgid "Enter a new album name"
+msgstr "Введите новое название альбома"
-#: ../../Zotlabs/Module/Connect.php:119
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Пожалуйста введите ваши ограничения или условия, такие, как оплата PayPal, правила использования и т.п."
+#: ../../Zotlabs/Module/Photos.php:1080
+msgid "or select an existing one (doubleclick)"
+msgstr "или выбрать существующую (двойной щелчок)"
-#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Этот канал до подключения может требовать дополнительных шагов или подтверждений следующих условий:"
+#: ../../Zotlabs/Module/Photos.php:1085
+msgid "Add a Tag"
+msgstr "Добавить тег"
-#: ../../Zotlabs/Module/Connect.php:122
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Потенциальные соединения будут видеть следующий предварительный текст:"
+#: ../../Zotlabs/Module/Photos.php:1093
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Пример: @bob, @Barbara_Jensen, @jim@example.com"
-#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided "
-"on this page."
-msgstr "Продолжая, я подтверждаю что я выполнил все условия представленные на данной странице."
+#: ../../Zotlabs/Module/Photos.php:1096
+msgid "Flag as adult in album view"
+msgstr "Пометить как альбом \"для взрослых\""
-#: ../../Zotlabs/Module/Connect.php:132
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Владельцем канала не было представлено никаких специальных инструкций.)"
+#: ../../Zotlabs/Module/Photos.php:1115 ../../Zotlabs/Lib/ThreadItem.php:306
+msgid "I like this (toggle)"
+msgstr "мне это нравится (переключение)"
-#: ../../Zotlabs/Module/Connect.php:140
-msgid "Restricted or Premium Channel"
-msgstr "Ограниченный или премиальный канал"
+#: ../../Zotlabs/Module/Photos.php:1116 ../../Zotlabs/Lib/ThreadItem.php:307
+msgid "I don't like this (toggle)"
+msgstr "мне это не нравится (переключение)"
-#: ../../Zotlabs/Module/Cloud.php:123
-msgid "Not found"
-msgstr "Не найдено."
+#: ../../Zotlabs/Module/Photos.php:1118 ../../Zotlabs/Lib/ThreadItem.php:469
+#: ../../include/conversation.php:787
+msgid "Please wait"
+msgstr "Подождите пожалуйста"
-#: ../../Zotlabs/Module/Cloud.php:129
-msgid "Please refresh page"
-msgstr "Пожалуйста обновите страницу"
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Module/Photos.php:1254
+#: ../../Zotlabs/Lib/ThreadItem.php:792
+msgid "This is you"
+msgstr "Это вы"
-#: ../../Zotlabs/Module/Cloud.php:132
-msgid "Unknown error"
-msgstr "Неизвестная ошибка"
+#: ../../Zotlabs/Module/Photos.php:1137 ../../Zotlabs/Module/Photos.php:1256
+#: ../../Zotlabs/Lib/ThreadItem.php:794 ../../include/js_strings.php:6
+msgid "Comment"
+msgstr "Комментарий"
-#: ../../Zotlabs/Module/Pdledit.php:26
-msgid "Layout updated."
-msgstr "Шаблон обновлен."
+#: ../../Zotlabs/Module/Photos.php:1154 ../../include/conversation.php:619
+msgctxt "title"
+msgid "Likes"
+msgstr "Нравится"
-#: ../../Zotlabs/Module/Pdledit.php:42
-msgid "PDL Editor App"
-msgstr "Приложение \"Редактор PDL\""
+#: ../../Zotlabs/Module/Photos.php:1154 ../../include/conversation.php:619
+msgctxt "title"
+msgid "Dislikes"
+msgstr "Не нравится"
-#: ../../Zotlabs/Module/Pdledit.php:43
-msgid "Provides the ability to edit system page layouts"
-msgstr "Предоставляет возможность редактировать макеты системных страниц"
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
+msgctxt "title"
+msgid "Agree"
+msgstr "Согласен"
-#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99
-msgid "Edit System Page Description"
-msgstr "Редактировать описание системной страницы"
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
+msgctxt "title"
+msgid "Disagree"
+msgstr "Не согласен"
-#: ../../Zotlabs/Module/Pdledit.php:77
-msgid "(modified)"
-msgstr "(изменено)"
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
+msgctxt "title"
+msgid "Abstain"
+msgstr "Воздержался"
-#: ../../Zotlabs/Module/Pdledit.php:94
-msgid "Layout not found."
-msgstr "Шаблон не найден."
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
+msgctxt "title"
+msgid "Attending"
+msgstr "Посещаю"
-#: ../../Zotlabs/Module/Pdledit.php:100
-msgid "Module Name:"
-msgstr "Имя модуля:"
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
+msgctxt "title"
+msgid "Not attending"
+msgstr "Не посещаю"
-#: ../../Zotlabs/Module/Pdledit.php:101
-msgid "Layout Help"
-msgstr "Помощь к шаблону"
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
+msgctxt "title"
+msgid "Might attend"
+msgstr "Возможно посещу"
-#: ../../Zotlabs/Module/Pdledit.php:102
-msgid "Edit another layout"
-msgstr "Редактировать другой шаблон"
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Photos.php:1185
+#: ../../Zotlabs/Lib/ThreadItem.php:231 ../../Zotlabs/Lib/ThreadItem.php:243
+msgid "View all"
+msgstr "Просмотреть все"
-#: ../../Zotlabs/Module/Pdledit.php:103
-msgid "System layout"
-msgstr "Системный шаблон"
+#: ../../Zotlabs/Module/Photos.php:1177 ../../Zotlabs/Lib/ThreadItem.php:235
+#: ../../include/conversation.php:1702 ../../include/channel.php:1595
+#: ../../include/taxonomy.php:661
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Нравится"
+msgstr[1] "Нравится"
+msgstr[2] "Нравится"
+
+#: ../../Zotlabs/Module/Photos.php:1182 ../../Zotlabs/Lib/ThreadItem.php:240
+#: ../../include/conversation.php:1705
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Не нравится"
+msgstr[1] "Не нравится"
+msgstr[2] "Не нравится"
+
+#: ../../Zotlabs/Module/Photos.php:1288
+msgid "Photo Tools"
+msgstr "Фото-Инструменты"
+
+#: ../../Zotlabs/Module/Photos.php:1297
+msgid "In This Photo:"
+msgstr "На этой фотографии:"
+
+#: ../../Zotlabs/Module/Photos.php:1302
+msgid "Map"
+msgstr "Карта"
+
+#: ../../Zotlabs/Module/Photos.php:1310 ../../Zotlabs/Lib/ThreadItem.php:457
+msgctxt "noun"
+msgid "Likes"
+msgstr "Нравится"
+
+#: ../../Zotlabs/Module/Photos.php:1311 ../../Zotlabs/Lib/ThreadItem.php:458
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Не нравится"
+
+#: ../../Zotlabs/Module/Photos.php:1316 ../../Zotlabs/Lib/ThreadItem.php:463
+#: ../../include/acl_selectors.php:125
+msgid "Close"
+msgstr "Закрыть"
+
+#: ../../Zotlabs/Module/Photos.php:1389 ../../Zotlabs/Module/Photos.php:1402
+#: ../../Zotlabs/Module/Photos.php:1403 ../../include/photos.php:670
+msgid "Recent Photos"
+msgstr "Последние фотографии"
#: ../../Zotlabs/Module/Wiki.php:35
-#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:34
-#: ../../extend/addon/hzaddons/cart/cart.php:1297
+#: ../../addon/flashcards/Mod_Flashcards.php:34 ../../addon/cart/cart.php:1298
msgid "Profile Unavailable."
msgstr "Профиль недоступен."
@@ -10418,11 +5115,10 @@ msgstr "Приложение \"Wiki\""
msgid "Provide a wiki for your channel"
msgstr "Предоставьте Wiki для вашего канала"
-#: ../../Zotlabs/Module/Wiki.php:77
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:456
-#: ../../extend/addon/hzaddons/cart/myshop.php:37
-#: ../../extend/addon/hzaddons/cart/manual_payments.php:93
-#: ../../extend/addon/hzaddons/cart/cart.php:1443
+#: ../../Zotlabs/Module/Wiki.php:77 ../../addon/cart/myshop.php:37
+#: ../../addon/cart/cart.php:1444
+#: ../../addon/cart/submodules/paypalbutton.php:456
+#: ../../addon/cart/manual_payments.php:93
msgid "Invalid channel"
msgstr "Недействительный канал"
@@ -10438,10 +5134,20 @@ msgstr "Ошибка при создании zip-файла при экспор
msgid "Error downloading wiki: "
msgstr "Ошибка загрузки Wiki:"
+#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15
+#: ../../include/nav.php:536
+msgid "Wikis"
+msgstr ""
+
#: ../../Zotlabs/Module/Wiki.php:212
msgid "Download"
msgstr "Загрузить"
+#: ../../Zotlabs/Module/Wiki.php:214 ../../Zotlabs/Module/Chat.php:264
+#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Manage.php:145
+msgid "Create New"
+msgstr "Создать новый"
+
#: ../../Zotlabs/Module/Wiki.php:216
msgid "Wiki name"
msgstr "Название Wiki"
@@ -10450,6 +5156,28 @@ msgstr "Название Wiki"
msgid "Content type"
msgstr "Тип содержимого"
+#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371
+#: ../../Zotlabs/Widget/Wiki_pages.php:38
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../addon/mdpost/mdpost.php:41
+#: ../../include/text.php:1955
+msgid "Markdown"
+msgstr "Разметка Markdown"
+
+#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371
+#: ../../Zotlabs/Widget/Wiki_pages.php:38
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1953
+msgid "BBcode"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Widget/Wiki_pages.php:38
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1956
+msgid "Text"
+msgstr "Текст"
+
+#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:286
+msgid "Type"
+msgstr "Тип"
+
#: ../../Zotlabs/Module/Wiki.php:220
msgid "Any&nbsp;type"
msgstr "Любой&nbsp;тип"
@@ -10486,9 +5214,8 @@ msgstr "Новая страница"
msgid "Revision Comparison"
msgstr "Сравнение ревизий"
-#: ../../Zotlabs/Module/Wiki.php:367
+#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564
#: ../../Zotlabs/Widget/Wiki_page_history.php:25
-#: ../../Zotlabs/Lib/NativeWikiPage.php:564
msgid "Revert"
msgstr "Отменить"
@@ -10508,6 +5235,53 @@ msgstr "Новое имя страницы"
msgid "Embed image from photo albums"
msgstr "Встроить изображение из фотоальбома"
+#: ../../Zotlabs/Module/Wiki.php:400 ../../addon/hsse/hsse.php:208
+#: ../../include/conversation.php:1414
+msgid "Embed an image from your albums"
+msgstr "Встроить изображение из ваших альбомов"
+
+#: ../../Zotlabs/Module/Wiki.php:402 ../../Zotlabs/Module/Profile_photo.php:466
+#: ../../Zotlabs/Module/Cover_photo.php:400 ../../addon/hsse/hsse.php:210
+#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1416
+#: ../../include/conversation.php:1463
+msgid "OK"
+msgstr ""
+
+#: ../../Zotlabs/Module/Wiki.php:403 ../../Zotlabs/Module/Profile_photo.php:467
+#: ../../Zotlabs/Module/Cover_photo.php:401 ../../addon/hsse/hsse.php:139
+#: ../../include/conversation.php:1342
+msgid "Choose images to embed"
+msgstr "Выбрать изображения для встраивания"
+
+#: ../../Zotlabs/Module/Wiki.php:404 ../../Zotlabs/Module/Profile_photo.php:468
+#: ../../Zotlabs/Module/Cover_photo.php:402 ../../addon/hsse/hsse.php:140
+#: ../../include/conversation.php:1343
+msgid "Choose an album"
+msgstr "Выбрать альбом"
+
+#: ../../Zotlabs/Module/Wiki.php:405 ../../Zotlabs/Module/Profile_photo.php:469
+#: ../../Zotlabs/Module/Cover_photo.php:403
+msgid "Choose a different album"
+msgstr "Выбрать другой альбом"
+
+#: ../../Zotlabs/Module/Wiki.php:406 ../../Zotlabs/Module/Profile_photo.php:470
+#: ../../Zotlabs/Module/Cover_photo.php:404 ../../addon/hsse/hsse.php:142
+#: ../../include/conversation.php:1345
+msgid "Error getting album list"
+msgstr "Ошибка получения списка альбомов"
+
+#: ../../Zotlabs/Module/Wiki.php:407 ../../Zotlabs/Module/Profile_photo.php:471
+#: ../../Zotlabs/Module/Cover_photo.php:405 ../../addon/hsse/hsse.php:143
+#: ../../include/conversation.php:1346
+msgid "Error getting photo link"
+msgstr "Ошибка получения ссылки на фотографию"
+
+#: ../../Zotlabs/Module/Wiki.php:408 ../../Zotlabs/Module/Profile_photo.php:472
+#: ../../Zotlabs/Module/Cover_photo.php:406 ../../addon/hsse/hsse.php:144
+#: ../../include/conversation.php:1347
+msgid "Error getting album"
+msgstr "Ошибка получения альбома"
+
#: ../../Zotlabs/Module/Wiki.php:410
msgid "History"
msgstr "История"
@@ -10564,293 +5338,797 @@ msgstr "Выбранная ревизия"
msgid "You must be authenticated."
msgstr "Вы должны быть аутентифицированы."
-#: ../../Zotlabs/Module/Email_resend.php:30
-msgid "Email verification resent"
-msgstr "Сообщение для проверки email отправлено повторно"
+#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1473
+#, php-format
+msgid "&#x1f501; Repeated %1$s's %2$s"
+msgstr "&#x1f501; Повторил %1$s %2$s"
-#: ../../Zotlabs/Module/Email_resend.php:33
-msgid "Unable to resend email verification message."
-msgstr "Невозможно повторно отправить сообщение для проверки email"
+#: ../../Zotlabs/Module/Share.php:119
+msgid "Post repeated"
+msgstr "Публикация повторяется"
-#: ../../Zotlabs/Module/Filer.php:52
-msgid "Enter a folder name"
-msgstr "Введите название каталога"
+#: ../../Zotlabs/Module/Chanview.php:139
+msgid "toggle full screen mode"
+msgstr "переключение полноэкранного режима"
-#: ../../Zotlabs/Module/Filer.php:52
-msgid "or select an existing folder (doubleclick)"
-msgstr "или выберите существующий каталог (двойной щелчок)"
+#: ../../Zotlabs/Module/Pdledit.php:26
+msgid "Layout updated."
+msgstr "Шаблон обновлен."
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:164
-msgid "Save to Folder"
-msgstr "Сохранить в каталог"
+#: ../../Zotlabs/Module/Pdledit.php:42
+msgid "PDL Editor App"
+msgstr "Приложение \"Редактор PDL\""
-#: ../../Zotlabs/Module/Manage.php:145
-msgid "Create a new channel"
-msgstr "Создать новый канал"
+#: ../../Zotlabs/Module/Pdledit.php:43
+msgid "Provides the ability to edit system page layouts"
+msgstr "Предоставляет возможность редактировать макеты системных страниц"
-#: ../../Zotlabs/Module/Manage.php:171
-msgid "Current Channel"
-msgstr "Текущий канал"
+#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99
+msgid "Edit System Page Description"
+msgstr "Редактировать описание системной страницы"
-#: ../../Zotlabs/Module/Manage.php:173
-msgid "Switch to one of your channels by selecting it."
-msgstr "Выбрать и переключиться на один из ваших каналов"
+#: ../../Zotlabs/Module/Pdledit.php:77
+msgid "(modified)"
+msgstr "(изменено)"
-#: ../../Zotlabs/Module/Manage.php:174
-msgid "Default Channel"
-msgstr "Основной канал"
+#: ../../Zotlabs/Module/Pdledit.php:77 ../../Zotlabs/Module/Lostpass.php:133
+msgid "Reset"
+msgstr "Сбросить"
-#: ../../Zotlabs/Module/Manage.php:175
-msgid "Make Default"
-msgstr "Сделать основным"
+#: ../../Zotlabs/Module/Pdledit.php:94
+msgid "Layout not found."
+msgstr "Шаблон не найден."
-#: ../../Zotlabs/Module/Manage.php:178
-#, php-format
-msgid "%d new messages"
-msgstr "%d новых сообщений"
+#: ../../Zotlabs/Module/Pdledit.php:100
+msgid "Module Name:"
+msgstr "Имя модуля:"
-#: ../../Zotlabs/Module/Manage.php:179
-#, php-format
-msgid "%d new introductions"
-msgstr "%d новых представлений"
+#: ../../Zotlabs/Module/Pdledit.php:101
+msgid "Layout Help"
+msgstr "Помощь к шаблону"
-#: ../../Zotlabs/Module/Manage.php:181
-msgid "Delegated Channel"
-msgstr "Делегированный канал"
+#: ../../Zotlabs/Module/Pdledit.php:102
+msgid "Edit another layout"
+msgstr "Редактировать другой шаблон"
-#: ../../Zotlabs/Module/Suggest.php:40
-msgid "Suggest Channels App"
-msgstr "Приложение \"Рекомендуемые каналы\""
+#: ../../Zotlabs/Module/Pdledit.php:103
+msgid "System layout"
+msgstr "Системный шаблон"
-#: ../../Zotlabs/Module/Suggest.php:41
+#: ../../Zotlabs/Module/Poke.php:165
+msgid "Poke App"
+msgstr "Приложение \"Ткнуть\""
+
+#: ../../Zotlabs/Module/Poke.php:166
+msgid "Poke somebody in your addressbook"
+msgstr "Ткнуть кого-нибудь в вашей адресной книге"
+
+#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:348
+#: ../../include/conversation.php:1098
+msgid "Poke"
+msgstr "Ткнуть"
+
+#: ../../Zotlabs/Module/Poke.php:200
+msgid "Poke somebody"
+msgstr "Ткнуть кого-нибудь"
+
+#: ../../Zotlabs/Module/Poke.php:203
+msgid "Poke/Prod"
+msgstr "Толкнуть / подтолкнуть"
+
+#: ../../Zotlabs/Module/Poke.php:204
+msgid "Poke, prod or do other things to somebody"
+msgstr "Толкнуть, подтолкнуть или сделать что-то ещё с кем-то"
+
+#: ../../Zotlabs/Module/Poke.php:211
+msgid "Recipient"
+msgstr "Получатель"
+
+#: ../../Zotlabs/Module/Poke.php:212
+msgid "Choose what you wish to do to recipient"
+msgstr "Выбрать что вы хотите сделать с получателем"
+
+#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216
+msgid "Make this post private"
+msgstr "Сделать эту публикацию приватной"
+
+#: ../../Zotlabs/Module/Profile_photo.php:66
+#: ../../Zotlabs/Module/Cover_photo.php:57
+msgid "Image uploaded but image cropping failed."
+msgstr "Изображение загружено но обрезка не удалась."
+
+#: ../../Zotlabs/Module/Profile_photo.php:120
+#: ../../Zotlabs/Module/Profile_photo.php:248
+#: ../../include/photo/photo_driver.php:367
+msgid "Profile Photos"
+msgstr "Фотографии профиля"
+
+#: ../../Zotlabs/Module/Profile_photo.php:142
+#: ../../Zotlabs/Module/Cover_photo.php:191
+msgid "Image resize failed."
+msgstr "Не удалось изменить размер изображения."
+
+#: ../../Zotlabs/Module/Profile_photo.php:218
+#: ../../addon/openclipatar/openclipatar.php:298
msgid ""
-"Suggestions for channels in the $Projectname network you might be interested "
-"in"
-msgstr "Предложения по рекомендуемым каналам в сети $Projectname которые могут вас заинтересовать"
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Если новая фотография не отображается немедленно то нажмите Shift + \"Обновить\" для очистки кэша браузера"
-#: ../../Zotlabs/Module/Suggest.php:54
+#: ../../Zotlabs/Module/Profile_photo.php:225
+#: ../../Zotlabs/Module/Cover_photo.php:205 ../../include/photos.php:196
+msgid "Unable to process image"
+msgstr "Не удается обработать изображение"
+
+#: ../../Zotlabs/Module/Profile_photo.php:260
+#: ../../Zotlabs/Module/Cover_photo.php:229
+msgid "Image upload failed."
+msgstr "Загрузка изображения не удалась."
+
+#: ../../Zotlabs/Module/Profile_photo.php:279
+#: ../../Zotlabs/Module/Cover_photo.php:246
+msgid "Unable to process image."
+msgstr "Невозможно обработать изображение."
+
+#: ../../Zotlabs/Module/Profile_photo.php:343
+#: ../../Zotlabs/Module/Profile_photo.php:390
+#: ../../Zotlabs/Module/Cover_photo.php:339
+#: ../../Zotlabs/Module/Cover_photo.php:354
+msgid "Photo not available."
+msgstr "Фотография недоступна."
+
+#: ../../Zotlabs/Module/Profile_photo.php:454
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Нет предложений. Если это новый сайт, повторите попытку через 24 часа."
+"Your default profile photo is visible to anybody on the internet. Profile "
+"photos for alternate profiles will inherit the permissions of the profile"
+msgstr "Фотография вашего профиля по умолчанию видна всем в Интернете. Фотографияпрофиля для альтернативных профилей наследуют разрешения текущего профиля"
-#: ../../Zotlabs/Module/Suggest.php:73 ../../Zotlabs/Widget/Suggestions.php:46
-msgid "Ignore/Hide"
-msgstr "Игнорировать / cкрыть"
+#: ../../Zotlabs/Module/Profile_photo.php:454
+msgid ""
+"Your profile photo is visible to anybody on the internet and may be "
+"distributed to other websites."
+msgstr "Фотография вашего профиля видна всем в Интернете и может быть отправлена на другие сайты."
-#: ../../Zotlabs/Module/Import.php:66 ../../Zotlabs/Module/Import_items.php:48
-msgid "Nothing to import."
-msgstr "Ничего импортировать."
+#: ../../Zotlabs/Module/Profile_photo.php:456
+#: ../../Zotlabs/Module/Cover_photo.php:392
+msgid "Upload File:"
+msgstr "Загрузить файл:"
-#: ../../Zotlabs/Module/Import.php:81 ../../Zotlabs/Module/Import.php:97
-#: ../../Zotlabs/Module/Import_items.php:72
-msgid "Unable to download data from old server"
-msgstr "Невозможно загрузить данные со старого сервера"
+#: ../../Zotlabs/Module/Profile_photo.php:457
+#: ../../Zotlabs/Module/Cover_photo.php:393
+msgid "Select a profile:"
+msgstr "Выбрать профиль:"
-#: ../../Zotlabs/Module/Import.php:104 ../../Zotlabs/Module/Import_items.php:77
-msgid "Imported file is empty."
-msgstr "Импортированный файл пуст."
+#: ../../Zotlabs/Module/Profile_photo.php:458
+msgid "Use Photo for Profile"
+msgstr "Использовать фотографию для профиля"
+
+#: ../../Zotlabs/Module/Profile_photo.php:458
+msgid "Change Profile Photo"
+msgstr "Изменить фотографию профиля"
+
+#: ../../Zotlabs/Module/Profile_photo.php:459
+msgid "Use"
+msgstr "Использовать"
+
+#: ../../Zotlabs/Module/Profile_photo.php:463
+#: ../../Zotlabs/Module/Profile_photo.php:464
+#: ../../Zotlabs/Module/Cover_photo.php:397
+#: ../../Zotlabs/Module/Cover_photo.php:398
+msgid "Use a photo from your albums"
+msgstr "Использовать фотографию из ваших альбомов"
+
+#: ../../Zotlabs/Module/Profile_photo.php:474
+#: ../../Zotlabs/Module/Cover_photo.php:409
+msgid "Select existing photo"
+msgstr "Выбрать существующую фотографию"
+
+#: ../../Zotlabs/Module/Profile_photo.php:493
+#: ../../Zotlabs/Module/Cover_photo.php:426
+msgid "Crop Image"
+msgstr "Обрезать изображение"
+
+#: ../../Zotlabs/Module/Profile_photo.php:494
+#: ../../Zotlabs/Module/Cover_photo.php:427
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Пожалуйста настройте обрезку изображения для оптимального просмотра."
-#: ../../Zotlabs/Module/Import.php:146
+#: ../../Zotlabs/Module/Profile_photo.php:496
+#: ../../Zotlabs/Module/Cover_photo.php:429
+msgid "Done Editing"
+msgstr "Закончить редактирование"
+
+#: ../../Zotlabs/Module/Chatsvc.php:131
+msgid "Away"
+msgstr "Нет на месте"
+
+#: ../../Zotlabs/Module/Chatsvc.php:136
+msgid "Online"
+msgstr "В сети"
+
+#: ../../Zotlabs/Module/Item.php:341
+msgid "Unable to locate original post."
+msgstr "Не удалось найти оригинальную публикацию."
+
+#: ../../Zotlabs/Module/Item.php:628
+msgid "Empty post discarded."
+msgstr "Пустая публикация отклонена."
+
+#: ../../Zotlabs/Module/Item.php:1037
+msgid "Duplicate post suppressed."
+msgstr "Подавлена дублирующаяся публикация."
+
+#: ../../Zotlabs/Module/Item.php:1182
+msgid "System error. Post not saved."
+msgstr "Системная ошибка. Публикация не сохранена."
+
+#: ../../Zotlabs/Module/Item.php:1218
+msgid "Your comment is awaiting approval."
+msgstr "Ваш комментарий ожидает одобрения."
+
+#: ../../Zotlabs/Module/Item.php:1335
+msgid "Unable to obtain post information from database."
+msgstr "Невозможно получить информацию о публикации из базы данных"
+
+#: ../../Zotlabs/Module/Item.php:1342
#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr "Ваш класс обслуживания разрешает только %d каналов."
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Вы достигли вашего ограничения в %1$.0f публикаций высокого уровня."
-#: ../../Zotlabs/Module/Import.php:173
-msgid "No channel. Import failed."
-msgstr "Канала нет. Импорт невозможен."
+#: ../../Zotlabs/Module/Item.php:1349
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Вы достигли вашего ограничения в %1$.0f страниц."
-#: ../../Zotlabs/Module/Import.php:513
-#: ../../extend/addon/hzaddons/diaspora/import_diaspora.php:141
-msgid "Import completed."
-msgstr "Импорт завершен."
+#: ../../Zotlabs/Module/Ping.php:338
+msgid "sent you a private message"
+msgstr "отправил вам личное сообщение"
-#: ../../Zotlabs/Module/Import.php:541
-msgid "You must be logged in to use this feature."
-msgstr "Вы должны войти в систему, чтобы использовать эту функцию."
+#: ../../Zotlabs/Module/Ping.php:394
+msgid "added your channel"
+msgstr "добавил ваш канал"
-#: ../../Zotlabs/Module/Import.php:546
-msgid "Import Channel"
-msgstr "Импортировать канал"
+#: ../../Zotlabs/Module/Ping.php:419
+msgid "requires approval"
+msgstr "Требуется подтверждение"
-#: ../../Zotlabs/Module/Import.php:547
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You "
-"may retrieve the channel identity from the old server/hub via the network or "
-"provide an export file."
-msgstr "Используйте эту форм для импорта существующего канала с другого сервера / хаба. Вы можете получить идентификационные данные канала со старого сервера / хаба через сеть или предоставить файл экспорта."
+#: ../../Zotlabs/Module/Ping.php:429
+msgid "g A l F d"
+msgstr "g A l F d"
-#: ../../Zotlabs/Module/Import.php:548
-#: ../../Zotlabs/Module/Import_items.php:127
-msgid "File to Upload"
-msgstr "Файл для загрузки"
+#: ../../Zotlabs/Module/Ping.php:447
+msgid "[today]"
+msgstr "[сегодня]"
-#: ../../Zotlabs/Module/Import.php:549
-msgid "Or provide the old server/hub details"
-msgstr "или предоставьте данные старого сервера"
+#: ../../Zotlabs/Module/Ping.php:457
+msgid "posted an event"
+msgstr "событие опубликовано"
-#: ../../Zotlabs/Module/Import.php:551
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Ваш старый адрес идентичности (xyz@example.com)"
+#: ../../Zotlabs/Module/Ping.php:491
+msgid "shared a file with you"
+msgstr "с вами поделились файлом"
-#: ../../Zotlabs/Module/Import.php:552
-msgid "Your old login email address"
-msgstr "Ваш старый адрес электронной почты"
+#: ../../Zotlabs/Module/Ping.php:673
+msgid "Private forum"
+msgstr "Частный форум"
-#: ../../Zotlabs/Module/Import.php:553
-msgid "Your old login password"
-msgstr "Ваш старый пароль"
+#: ../../Zotlabs/Module/Ping.php:673
+msgid "Public forum"
+msgstr "Публичный форум"
-#: ../../Zotlabs/Module/Import.php:554
-msgid "Import a few months of posts if possible (limited by available memory"
-msgstr "Импортировать несколько месяцев публикаций если возможно (ограничено доступной памятью)"
+#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29
+msgid "Invalid item."
+msgstr "Недействительный элемент."
-#: ../../Zotlabs/Module/Import.php:556
+#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77
+#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157
+#: ../../Zotlabs/Module/Display.php:174
+#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185
+#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132
+msgid "Page not found."
+msgstr "Страница не найдена."
+
+#: ../../Zotlabs/Module/Page.php:173
msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be "
-"able to post from either location, but only one can be marked as the primary "
-"location for files, photos, and media."
-msgstr "Для любого варианта, пожалуйста, выберите, следует ли сделать этот хаб вашим новым основным адресом, или ваше прежнее местоположение должно продолжить выполнять эту роль. Вы сможете отправлять сообщения из любого местоположения, но только одно может быть помечено как основное место для файлов, фотографий и мультимедиа."
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
+"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr ""
-#: ../../Zotlabs/Module/Import.php:558
-msgid "Make this hub my primary location"
-msgstr "Сделать этот хаб главным"
+#: ../../Zotlabs/Module/Connedit.php:81 ../../Zotlabs/Module/Defperms.php:67
+msgid "Could not access contact record."
+msgstr "Не удалось получить доступ к записи контакта."
-#: ../../Zotlabs/Module/Import.php:559
-msgid "Move this channel (disable all previous locations)"
-msgstr "Переместить это канал (отключить все предыдущие месторасположения)"
+#: ../../Zotlabs/Module/Connedit.php:112
+msgid "Could not locate selected profile."
+msgstr "Не удалось обнаружить выбранный профиль."
-#: ../../Zotlabs/Module/Import.php:560
-msgid "Use this channel nickname instead of the one provided"
-msgstr "Использовать псевдоним этого канала вместо предоставленного"
+#: ../../Zotlabs/Module/Connedit.php:256
+msgid "Connection updated."
+msgstr "Контакты обновлены."
-#: ../../Zotlabs/Module/Import.php:560
-msgid ""
-"Leave blank to keep your existing channel nickname. You will be randomly "
-"assigned a similar nickname if either name is already allocated on this site."
-msgstr "Оставьте пустым для сохранения существующего псевдонима канала. Вам будет случайным образом назначен похожий псевдоним если такое имя уже выделено на этом сайте."
+#: ../../Zotlabs/Module/Connedit.php:258
+msgid "Failed to update connection record."
+msgstr "Не удалось обновить запись контакта."
-#: ../../Zotlabs/Module/Import.php:562
-msgid ""
-"This process may take several minutes to complete. Please submit the form "
-"only once and leave this page open until finished."
-msgstr "Процесс может занять несколько минут. Пожалуйста, отправьте форму только один раз и оставьте эту страницу открытой до завершения."
+#: ../../Zotlabs/Module/Connedit.php:312
+msgid "is now connected to"
+msgstr "теперь подключён к"
-#: ../../Zotlabs/Module/Magic.php:76
-msgid "Hub not found."
-msgstr "Узел не найден."
+#: ../../Zotlabs/Module/Connedit.php:437
+msgid "Could not access address book record."
+msgstr "Не удалось получить доступ к записи адресной книги."
-#: ../../Zotlabs/Module/Import_items.php:93
+#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Обновление невозможно - в настоящее время канал недоступен."
+
+#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513
+#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:544
+msgid "Unable to set address book parameters."
+msgstr "Не удалось получить доступ к параметрам адресной книги."
+
+#: ../../Zotlabs/Module/Connedit.php:568
+msgid "Connection has been removed."
+msgstr "Контакт был удалён."
+
+#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:341
+#: ../../addon/openclipatar/openclipatar.php:57
+#: ../../include/conversation.php:1038 ../../include/nav.php:106
+msgid "View Profile"
+msgstr "Просмотреть профиль"
+
+#: ../../Zotlabs/Module/Connedit.php:611
#, php-format
-msgid "Warning: Database versions differ by %1$d updates."
-msgstr "Предупреждение: Версия базы данных отличается от %1$d обновления."
+msgid "View %s's profile"
+msgstr "Просмотр %s профиля"
-#: ../../Zotlabs/Module/Import_items.php:108
-msgid "Import completed"
-msgstr "Импорт завершён."
+#: ../../Zotlabs/Module/Connedit.php:615
+msgid "Refresh Permissions"
+msgstr "Обновить разрешения"
-#: ../../Zotlabs/Module/Import_items.php:125
-msgid "Import Items"
-msgstr "Импортировать объекты"
+#: ../../Zotlabs/Module/Connedit.php:618
+msgid "Fetch updated permissions"
+msgstr "Получить обновлённые разрешения"
-#: ../../Zotlabs/Module/Import_items.php:126
-msgid "Use this form to import existing posts and content from an export file."
-msgstr "Используйте эту форму для импорта существующих публикаций и содержимого из файла."
+#: ../../Zotlabs/Module/Connedit.php:622
+msgid "Refresh Photo"
+msgstr "Обновить фотографию"
-#: ../../Zotlabs/Module/Siteinfo.php:21
-msgid "About this site"
-msgstr "Об этом сайте"
+#: ../../Zotlabs/Module/Connedit.php:625
+msgid "Fetch updated photo"
+msgstr "Получить обновлённую фотографию"
-#: ../../Zotlabs/Module/Siteinfo.php:22
-msgid "Site Name"
-msgstr "Название сайта"
+#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048
+msgid "Recent Activity"
+msgstr "Последние действия"
-#: ../../Zotlabs/Module/Siteinfo.php:26
-msgid "Administrator"
-msgstr "Администратор"
+#: ../../Zotlabs/Module/Connedit.php:632
+msgid "View recent posts and comments"
+msgstr "Просмотреть последние публикации и комментарии"
-#: ../../Zotlabs/Module/Siteinfo.php:29
-msgid "Software and Project information"
-msgstr "Информация о программном обеспечении и проекте"
+#: ../../Zotlabs/Module/Connedit.php:639
+msgid "Block (or Unblock) all communications with this connection"
+msgstr "Блокировать (или разблокировать) связи с этим контактом"
-#: ../../Zotlabs/Module/Siteinfo.php:30
-msgid "This site is powered by $Projectname"
-msgstr "Этот сайт работает на $Projectname"
+#: ../../Zotlabs/Module/Connedit.php:640
+msgid "This connection is blocked!"
+msgstr "Этот контакт заблокирован!"
-#: ../../Zotlabs/Module/Siteinfo.php:31
+#: ../../Zotlabs/Module/Connedit.php:644
+msgid "Unignore"
+msgstr "Не игнорировать"
+
+#: ../../Zotlabs/Module/Connedit.php:647
+msgid "Ignore (or Unignore) all inbound communications from this connection"
+msgstr "Игнорировать (или не игнорировать) все связи для этого контакта"
+
+#: ../../Zotlabs/Module/Connedit.php:648
+msgid "This connection is ignored!"
+msgstr "Этот контакт игнорируется!"
+
+#: ../../Zotlabs/Module/Connedit.php:652
+msgid "Unarchive"
+msgstr "Разархивировать"
+
+#: ../../Zotlabs/Module/Connedit.php:652
+msgid "Archive"
+msgstr "Заархивировать"
+
+#: ../../Zotlabs/Module/Connedit.php:655
msgid ""
-"Federated and decentralised networking and identity services provided by Zot"
-msgstr "Объединенные и децентрализованные сети и службы идентификациии обеспечиваются Zot"
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
+msgstr "Заархивировать (или разархивировать) этот контакт - пометить канал отключённым но сохранить содержимое"
-#: ../../Zotlabs/Module/Siteinfo.php:34
-msgid "Additional federated transport protocols:"
-msgstr "Дополнительные федеративные транспортные протоколы:"
+#: ../../Zotlabs/Module/Connedit.php:656
+msgid "This connection is archived!"
+msgstr "Этот контакт заархивирован!"
-#: ../../Zotlabs/Module/Siteinfo.php:36
-#, php-format
-msgid "Version %s"
-msgstr "Версия %s"
+#: ../../Zotlabs/Module/Connedit.php:660
+msgid "Unhide"
+msgstr "Показать"
-#: ../../Zotlabs/Module/Siteinfo.php:37
-msgid "Project homepage"
-msgstr "Домашняя страница проекта"
+#: ../../Zotlabs/Module/Connedit.php:660
+msgid "Hide"
+msgstr "Скрыть"
-#: ../../Zotlabs/Module/Siteinfo.php:38
-msgid "Developer homepage"
-msgstr "Домашняя страница разработчика"
+#: ../../Zotlabs/Module/Connedit.php:663
+msgid "Hide or Unhide this connection from your other connections"
+msgstr "Скрыть или показать этот контакт от / для остальных"
-#: ../../Zotlabs/Module/Cards.php:46
-msgid "Cards App"
-msgstr "Приложение \"Карточки\""
+#: ../../Zotlabs/Module/Connedit.php:664
+msgid "This connection is hidden!"
+msgstr "Этот контакт скрыт!"
-#: ../../Zotlabs/Module/Cards.php:47
-msgid "Create personal planning cards"
-msgstr "Создать личные карточки планирования"
+#: ../../Zotlabs/Module/Connedit.php:671
+msgid "Delete this connection"
+msgstr "Удалить этот контакт"
-#: ../../Zotlabs/Module/Cards.php:108
-msgid "Add Card"
-msgstr "Добавить карточку"
+#: ../../Zotlabs/Module/Connedit.php:679
+msgid "Fetch Vcard"
+msgstr "Получить vCard"
-#: ../../Zotlabs/Module/Removeaccount.php:35
+#: ../../Zotlabs/Module/Connedit.php:682
+msgid "Fetch electronic calling card for this connection"
+msgstr "Получить электронную телефонную карточку для этого контакта"
+
+#: ../../Zotlabs/Module/Connedit.php:693
+msgid "Open Individual Permissions section by default"
+msgstr "Открывать раздел \"Индивидуальные разрешения\" по умолчанию"
+
+#: ../../Zotlabs/Module/Connedit.php:716
+msgid "Affinity"
+msgstr "Сходство"
+
+#: ../../Zotlabs/Module/Connedit.php:719
+msgid "Open Set Affinity section by default"
+msgstr "Открыть секцию установления сходства по умолчанию"
+
+#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30
+msgid "Me"
+msgstr "Я"
+
+#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31
+msgid "Family"
+msgstr "Семья"
+
+#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33
+msgid "Acquaintances"
+msgstr "Знакомые"
+
+#: ../../Zotlabs/Module/Connedit.php:756
+msgid "Filter"
+msgstr "Фильтр"
+
+#: ../../Zotlabs/Module/Connedit.php:759
+msgid "Open Custom Filter section by default"
+msgstr "Открывать секцию \"Настраиваемый фильтр\" по умолчанию"
+
+#: ../../Zotlabs/Module/Connedit.php:796
+msgid "Approve this connection"
+msgstr "Утвердить этот контакт"
+
+#: ../../Zotlabs/Module/Connedit.php:796
+msgid "Accept connection to allow communication"
+msgstr "Принять контакт чтобы разрешить связь"
+
+#: ../../Zotlabs/Module/Connedit.php:801
+msgid "Set Affinity"
+msgstr "Установить сходство"
+
+#: ../../Zotlabs/Module/Connedit.php:804
+msgid "Set Profile"
+msgstr "Установить профиль"
+
+#: ../../Zotlabs/Module/Connedit.php:807
+msgid "Set Affinity & Profile"
+msgstr "Установить сходство и профиль"
+
+#: ../../Zotlabs/Module/Connedit.php:855
+msgid "This connection is unreachable from this location."
+msgstr "Этот контакт недоступен для данного местоположения"
+
+#: ../../Zotlabs/Module/Connedit.php:856
+msgid "This connection may be unreachable from other channel locations."
+msgstr "Этот контакт может быть недоступен из других мест размещения канала"
+
+#: ../../Zotlabs/Module/Connedit.php:858
+msgid "Location independence is not supported by their network."
+msgstr "Независимое местоположение не поддерживается их сетью."
+
+#: ../../Zotlabs/Module/Connedit.php:864
msgid ""
-"Account removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "Удаление канала не разрешается в течении 48 часов после смены пароля у аккаунта."
+"This connection is unreachable from this location. Location independence is "
+"not supported by their network."
+msgstr "Этот контакт недоступен из данного местоположения. Независимое местоположение не поддерживается их сетью."
-#: ../../Zotlabs/Module/Removeaccount.php:57
-msgid "Remove This Account"
-msgstr "Удалить этот аккаунт"
+#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254
+msgid "Connection Default Permissions"
+msgstr "Разрешения по умолчанию для контакта"
-#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4308
+#, php-format
+msgid "Connection: %s"
+msgstr "Контакт: %s"
+
+#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255
+msgid "Apply these permissions automatically"
+msgstr "Применить эти разрешения автоматически"
+
+#: ../../Zotlabs/Module/Connedit.php:868
+msgid "Connection requests will be approved without your interaction"
+msgstr "Запросы контактов будут одобрены без вашего участия"
+
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256
+msgid "Permission role"
+msgstr "Роль разрешения"
+
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257
+msgid "Add permission role"
+msgstr "Добавить роль разрешения"
+
+#: ../../Zotlabs/Module/Connedit.php:877
+msgid "This connection's primary address is"
+msgstr "Главный адрес это контакта"
+
+#: ../../Zotlabs/Module/Connedit.php:878
+msgid "Available locations:"
+msgstr "Доступные расположения:"
+
+#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:261
msgid ""
-"This account and all its channels will be completely removed from the "
-"network. "
-msgstr "Этот аккаунт и все его каналы будут полностью удалены из сети."
+"The permissions indicated on this page will be applied to all new "
+"connections."
+msgstr "Разрешения, указанные на этой странице, будут применяться ко всем новым соединениям."
-#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Connedit.php:884
+msgid "Connection Tools"
+msgstr "Инструменты контактов"
+
+#: ../../Zotlabs/Module/Connedit.php:886
+msgid "Slide to adjust your degree of friendship"
+msgstr "Прокрутить для настройки степени дружбы"
+
+#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155
+#: ../../include/js_strings.php:20
+msgid "Rating"
+msgstr "Оценка"
+
+#: ../../Zotlabs/Module/Connedit.php:888
+msgid "Slide to adjust your rating"
+msgstr "Прокрутить для настройки оценки"
+
+#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
+msgid "Optionally explain your rating"
+msgstr "Объясните свою оценку (не обязательно)"
+
+#: ../../Zotlabs/Module/Connedit.php:891
+msgid "Custom Filter"
+msgstr "Настраиваемый фильтр"
+
+#: ../../Zotlabs/Module/Connedit.php:892
+msgid "Only import posts with this text"
+msgstr "Импортировать публикации только с этим текстом"
+
+#: ../../Zotlabs/Module/Connedit.php:893
+msgid "Do not import posts with this text"
+msgstr "Не импортировать публикации с этим текстом"
+
+#: ../../Zotlabs/Module/Connedit.php:895
+msgid "This information is public!"
+msgstr "Эта информация общедоступна!"
+
+#: ../../Zotlabs/Module/Connedit.php:900
+msgid "Connection Pending Approval"
+msgstr "Ожидающие подтверждения контактов"
+
+#: ../../Zotlabs/Module/Connedit.php:905
+#, php-format
msgid ""
-"Remove this account, all its channels and all its channel clones from the "
-"network"
-msgstr "Удалить этот аккаунт, все его каналы и их клоны из сети."
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Пожалуйста, выберите профиль который вы хотит показывать в %s при безопасном просмотре."
-#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Connedit.php:912
msgid ""
-"By default only the instances of the channels located on this hub will be "
-"removed from the network"
-msgstr "По умолчанию только представление канала расположенное на данном хабе будет удалено из сети"
+"Some permissions may be inherited from your channel's <a href=\"settings"
+"\"><strong>privacy settings</strong></a>, which have higher priority than "
+"individual settings. You can change those settings here but they wont have "
+"any impact unless the inherited setting changes."
+msgstr "Некоторые разрешения могут быть унаследованы из <a href=\"settings\"><strong>настроек приватности</strong></a> вашего канала, которые могут иметь более высокий приоритет чем индивидуальные. Вы можете изменить эти настройки, однако они не будут применены до изменения переданных по наследству настроек."
-#: ../../Zotlabs/Module/Oexchange.php:27
-msgid "Unable to find your hub."
-msgstr "Невозможно найти ваш сервер"
+#: ../../Zotlabs/Module/Connedit.php:913
+msgid "Last update:"
+msgstr "Последнее обновление:"
-#: ../../Zotlabs/Module/Oexchange.php:41
-msgid "Post successful."
-msgstr "Успешно опубликовано."
+#: ../../Zotlabs/Module/Connedit.php:921
+msgid "Details"
+msgstr "Сведения"
-#: ../../Zotlabs/Module/Rmagic.php:35
-msgid "Authentication failed."
-msgstr "Ошибка аутентификации."
+#: ../../Zotlabs/Module/Chat.php:102
+msgid "Chatrooms App"
+msgstr "Приложение \"Мои чаты\""
+
+#: ../../Zotlabs/Module/Chat.php:103
+msgid "Access Controlled Chatrooms"
+msgstr "Получить доступ к контролируемым чатам"
+
+#: ../../Zotlabs/Module/Chat.php:196
+msgid "Room not found"
+msgstr "Комната не найдена"
+
+#: ../../Zotlabs/Module/Chat.php:212
+msgid "Leave Room"
+msgstr "Покинуть комнату"
+
+#: ../../Zotlabs/Module/Chat.php:213
+msgid "Delete Room"
+msgstr "Удалить комнату"
+
+#: ../../Zotlabs/Module/Chat.php:214
+msgid "I am away right now"
+msgstr "Я сейчас отошёл"
+
+#: ../../Zotlabs/Module/Chat.php:215
+msgid "I am online"
+msgstr "Я на связи"
+
+#: ../../Zotlabs/Module/Chat.php:217
+msgid "Bookmark this room"
+msgstr "Запомнить эту комнату"
+
+#: ../../Zotlabs/Module/Chat.php:220 ../../Zotlabs/Module/Mail.php:241
+#: ../../Zotlabs/Module/Mail.php:362 ../../addon/hsse/hsse.php:134
+#: ../../include/conversation.php:1337
+msgid "Please enter a link URL:"
+msgstr "Пожалуйста введите URL ссылки:"
+
+#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:294
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:809
+#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461
+msgid "Encrypt text"
+msgstr "Зашифровать текст"
+
+#: ../../Zotlabs/Module/Chat.php:240
+msgid "New Chatroom"
+msgstr "Новый чат"
+
+#: ../../Zotlabs/Module/Chat.php:241
+msgid "Chatroom name"
+msgstr "Название чата"
+
+#: ../../Zotlabs/Module/Chat.php:242
+msgid "Expiration of chats (minutes)"
+msgstr "Завершение чатов (минут)"
+
+#: ../../Zotlabs/Module/Chat.php:258
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "Чаты пользователя %1$s"
+
+#: ../../Zotlabs/Module/Chat.php:263
+msgid "No chatrooms available"
+msgstr "Нет доступных чатов"
+
+#: ../../Zotlabs/Module/Chat.php:267
+msgid "Expiration"
+msgstr "Срок действия"
+
+#: ../../Zotlabs/Module/Chat.php:268
+msgid "min"
+msgstr "мин."
+
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:342
+#: ../../include/features.php:383 ../../include/nav.php:444
+msgid "Photos"
+msgstr "Фотографии"
+
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:337
+#: ../../Zotlabs/Storage/Browser.php:272 ../../include/nav.php:452
+msgid "Files"
+msgstr "Файлы"
+
+#: ../../Zotlabs/Module/Menu.php:67
+msgid "Unable to update menu."
+msgstr "Невозможно обновить меню."
+
+#: ../../Zotlabs/Module/Menu.php:78
+msgid "Unable to create menu."
+msgstr "Невозможно создать меню."
+
+#: ../../Zotlabs/Module/Menu.php:160 ../../Zotlabs/Module/Menu.php:173
+msgid "Menu Name"
+msgstr "Название меню"
+
+#: ../../Zotlabs/Module/Menu.php:160
+msgid "Unique name (not visible on webpage) - required"
+msgstr "Уникальное название (не видимо на странице) - требуется"
+
+#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174
+msgid "Menu Title"
+msgstr "Заголовок меню"
+
+#: ../../Zotlabs/Module/Menu.php:161
+msgid "Visible on webpage - leave empty for no title"
+msgstr "Видимость на странице - оставьте пустым если не хотите иметь заголовок"
+
+#: ../../Zotlabs/Module/Menu.php:162
+msgid "Allow Bookmarks"
+msgstr "Разрешить закладки"
+
+#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Меню может использоваться, чтобы сохранить закладки"
+
+#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:224
+msgid "Submit and proceed"
+msgstr "Отправить и обработать"
+
+#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2535
+msgid "Menus"
+msgstr "Меню"
+
+#: ../../Zotlabs/Module/Menu.php:180
+msgid "Bookmarks allowed"
+msgstr "Закладки разрешены"
+
+#: ../../Zotlabs/Module/Menu.php:182
+msgid "Delete this menu"
+msgstr "Удалить это меню"
+
+#: ../../Zotlabs/Module/Menu.php:183 ../../Zotlabs/Module/Menu.php:218
+msgid "Edit menu contents"
+msgstr "Редактировать содержание меню"
+
+#: ../../Zotlabs/Module/Menu.php:184
+msgid "Edit this menu"
+msgstr "Редактировать это меню"
+
+#: ../../Zotlabs/Module/Menu.php:200
+msgid "Menu could not be deleted."
+msgstr "Меню не может быть удалено."
+
+#: ../../Zotlabs/Module/Menu.php:213
+msgid "Edit Menu"
+msgstr "Редактировать меню"
+
+#: ../../Zotlabs/Module/Menu.php:217
+msgid "Add or remove entries to this menu"
+msgstr "Добавить или удалить пункты этого меню"
+
+#: ../../Zotlabs/Module/Menu.php:219
+msgid "Menu name"
+msgstr "Название меню"
+
+#: ../../Zotlabs/Module/Menu.php:219
+msgid "Must be unique, only seen by you"
+msgstr "Должно быть уникальным (видно только вам)"
+
+#: ../../Zotlabs/Module/Menu.php:220
+msgid "Menu title"
+msgstr "Заголовок меню"
+
+#: ../../Zotlabs/Module/Menu.php:220
+msgid "Menu title as seen by others"
+msgstr "Видимый другими заголовок меню"
+
+#: ../../Zotlabs/Module/Menu.php:221
+msgid "Allow bookmarks"
+msgstr "Разрешить закладки"
+
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2536
+msgid "Layouts"
+msgstr "Шаблоны"
+
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:345
+#: ../../include/nav.php:168 ../../include/nav.php:319
+#: ../../include/help.php:117 ../../include/help.php:125
+msgid "Help"
+msgstr "Помощь"
#: ../../Zotlabs/Module/Layouts.php:186
msgid "Comanche page description language help"
@@ -10864,6 +6142,530 @@ msgstr "Описание шаблона"
msgid "Download PDL file"
msgstr "Загрузить PDL файл"
+#: ../../Zotlabs/Module/Notes.php:56
+msgid "Notes App"
+msgstr "Приложение \"Заметки\""
+
+#: ../../Zotlabs/Module/Notes.php:57
+msgid "A simple notes app with a widget (note: notes are not encrypted)"
+msgstr "Простое приложение для заметок с виджетом (примечание: заметки не зашифрованы)"
+
+#: ../../Zotlabs/Module/Cloud.php:123
+msgid "Not found"
+msgstr "Не найдено."
+
+#: ../../Zotlabs/Module/Cloud.php:129
+msgid "Please refresh page"
+msgstr "Пожалуйста обновите страницу"
+
+#: ../../Zotlabs/Module/Cloud.php:132
+msgid "Unknown error"
+msgstr "Неизвестная ошибка"
+
+#: ../../Zotlabs/Module/Email_validation.php:24
+#: ../../Zotlabs/Module/Email_resend.php:12
+msgid "Token verification failed."
+msgstr "Не удалось выполнить проверку токена."
+
+#: ../../Zotlabs/Module/Email_validation.php:36
+msgid "Email Verification Required"
+msgstr "Требуется проверка адреса email"
+
+#: ../../Zotlabs/Module/Email_validation.php:37
+#, php-format
+msgid ""
+"A verification token was sent to your email address [%s]. Enter that token "
+"here to complete the account verification step. Please allow a few minutes "
+"for delivery, and check your spam folder if you do not see the message."
+msgstr "Проверочный токен был отправлен на ваш адрес электронной почты [%s]. Введите этот токен здесь для завершения этапа проверки учётной записи. Пожалуйста, подождите несколько минут для завершения доставки и проверьте вашу папку \"Спам\" если вы не видите письма."
+
+#: ../../Zotlabs/Module/Email_validation.php:38
+msgid "Resend Email"
+msgstr "Выслать повторно"
+
+#: ../../Zotlabs/Module/Email_validation.php:41
+msgid "Validation token"
+msgstr "Проверочный токен"
+
+#: ../../Zotlabs/Module/Tagger.php:48
+msgid "Post not found."
+msgstr "Публикация не найдена"
+
+#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:200
+#: ../../include/bbcode.php:343
+msgid "post"
+msgstr "публикация"
+
+#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
+#: ../../include/text.php:2099
+msgid "comment"
+msgstr "комментарий"
+
+#: ../../Zotlabs/Module/Tagger.php:119
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s отметил тегом %2$s %3$s с %4$s"
+
+#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Этот параметр требует специальной обработки и редактирования и был заблокирован."
+
+#: ../../Zotlabs/Module/Pconfig.php:57
+msgid "Configuration Editor"
+msgstr "Редактор конфигурации"
+
+#: ../../Zotlabs/Module/Pconfig.php:58
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please "
+"leave this page unless you are comfortable with and knowledgeable about how "
+"to correctly use this feature."
+msgstr "Предупреждение. Изменение некоторых настроек может привести к неработоспособности вашего канала. Пожалуйста, покиньте эту страницу, если вы точно не значете, как правильно использовать эту функцию."
+
+#: ../../Zotlabs/Module/Affinity.php:35
+msgid "Affinity Tool settings updated."
+msgstr "Настройки степени сходства обновлены."
+
+#: ../../Zotlabs/Module/Affinity.php:47
+msgid ""
+"This app presents a slider control in your connection editor and also on "
+"your network page. The slider represents your degree of friendship "
+"(affinity) with each connection. It allows you to zoom in or out and display "
+"conversations from only your closest friends or everybody in your stream."
+msgstr "Это приложение представляет управление ползунком на странице контактов и сетевом потоке, который позволяет выбирать вашу степень дружбы (сходства). Это позволяет вам увеличивать или уменьшать масштаб и отображать разговоры только от ваших самых близких друзей или всех в вашем потоке."
+
+#: ../../Zotlabs/Module/Affinity.php:52
+msgid "Affinity Tool App"
+msgstr "Приложение \"Степень сходства\""
+
+#: ../../Zotlabs/Module/Affinity.php:57
+msgid ""
+"The numbers below represent the minimum and maximum slider default positions "
+"for your network/stream page as a percentage."
+msgstr "Числа ниже представляют минимальное и максимальное значение по умолчанию для вашей сети / потока в процентах."
+
+#: ../../Zotlabs/Module/Affinity.php:64
+msgid "Default maximum affinity level"
+msgstr "Максимальная степень сходства по умолчанию."
+
+#: ../../Zotlabs/Module/Affinity.php:64
+msgid "0-99 default 99"
+msgstr "0-99 (по умолчанию 99)"
+
+#: ../../Zotlabs/Module/Affinity.php:70
+msgid "Default minimum affinity level"
+msgstr "Максимальная степень сходства по умолчанию."
+
+#: ../../Zotlabs/Module/Affinity.php:70
+msgid "0-99 - default 0"
+msgstr "0-99 (по умолчанию 0)"
+
+#: ../../Zotlabs/Module/Affinity.php:76
+msgid "Persistent affinity levels"
+msgstr "Устоявшиеся степени сходства"
+
+#: ../../Zotlabs/Module/Affinity.php:76
+msgid ""
+"If disabled the max and min levels will be reset to default after page reload"
+msgstr "Если этот параметр отключен, максимальный и минимальный уровни будут сброшены к значениям по умолчанию после перезагрузки страницы"
+
+#: ../../Zotlabs/Module/Affinity.php:84
+msgid "Affinity Tool Settings"
+msgstr "Настройки степени сходства"
+
+#: ../../Zotlabs/Module/Defperms.php:189
+msgid "Default Permissions App"
+msgstr "Приложение \"Разрешения по умолчанию\""
+
+#: ../../Zotlabs/Module/Defperms.php:190
+msgid "Set custom default permissions for new connections"
+msgstr "Настройка пользовательских разрешений по умолчанию для новых подключений "
+
+#: ../../Zotlabs/Module/Defperms.php:262
+msgid "Automatic approval settings"
+msgstr "Настройки автоматического одобрения"
+
+#: ../../Zotlabs/Module/Defperms.php:270
+msgid ""
+"Some individual permissions may have been preset or locked based on your "
+"channel type and privacy settings."
+msgstr "Некоторые индивидуальные разрешения могут быть предустановлены или заблокированы на основании типа вашего канала и настроек приватности."
+
+#: ../../Zotlabs/Module/Authorize.php:17
+msgid "Unknown App"
+msgstr "Неизвестное приложение"
+
+#: ../../Zotlabs/Module/Authorize.php:29
+msgid "Authorize"
+msgstr "Авторизовать"
+
+#: ../../Zotlabs/Module/Authorize.php:30
+#, php-format
+msgid "Do you authorize the app %s to access your channel data?"
+msgstr "Авторизуете ли вы приложение %s для доступа к данным вашего канала?"
+
+#: ../../Zotlabs/Module/Authorize.php:32
+msgid "Allow"
+msgstr "Разрешить"
+
+#: ../../Zotlabs/Module/Group.php:45
+msgid "Privacy group created."
+msgstr "Группа безопасности создана."
+
+#: ../../Zotlabs/Module/Group.php:48
+msgid "Could not create privacy group."
+msgstr "Не удалось создать группу безопасности."
+
+#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213
+#: ../../include/items.php:4275
+msgid "Privacy group not found."
+msgstr "Группа безопасности не найдена."
+
+#: ../../Zotlabs/Module/Group.php:80
+msgid "Privacy group updated."
+msgstr "Группа безопасности обновлена."
+
+#: ../../Zotlabs/Module/Group.php:106
+msgid "Privacy Groups App"
+msgstr "Приложение \"Группы безопасности\""
+
+#: ../../Zotlabs/Module/Group.php:107
+msgid "Management of privacy groups"
+msgstr "Управление группами безопасности."
+
+#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153
+#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Lib/Group.php:324
+#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../include/nav.php:95
+#: ../../include/group.php:320
+msgid "Privacy Groups"
+msgstr "Группы безопасности"
+
+#: ../../Zotlabs/Module/Group.php:142
+msgid "Add Group"
+msgstr "Добавить группу"
+
+#: ../../Zotlabs/Module/Group.php:146
+msgid "Privacy group name"
+msgstr "Имя группы безопасности"
+
+#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256
+msgid "Members are visible to other channels"
+msgstr "Участники канала видимые для остальных"
+
+#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81
+msgid "Members"
+msgstr "Участники"
+
+#: ../../Zotlabs/Module/Group.php:182
+msgid "Privacy group removed."
+msgstr "Группа безопасности удалена."
+
+#: ../../Zotlabs/Module/Group.php:185
+msgid "Unable to remove privacy group."
+msgstr "Ну удалось удалить группу безопасности."
+
+#: ../../Zotlabs/Module/Group.php:251
+#, php-format
+msgid "Privacy Group: %s"
+msgstr "Группа безопасности: %s"
+
+#: ../../Zotlabs/Module/Group.php:253
+msgid "Privacy group name: "
+msgstr "Название группы безопасности: "
+
+#: ../../Zotlabs/Module/Group.php:258
+msgid "Delete Group"
+msgstr "Удалить группу"
+
+#: ../../Zotlabs/Module/Group.php:269
+msgid "Group members"
+msgstr "Члены группы"
+
+#: ../../Zotlabs/Module/Group.php:271
+msgid "Not in this group"
+msgstr "Не в этой группе"
+
+#: ../../Zotlabs/Module/Group.php:303
+msgid "Click a channel to toggle membership"
+msgstr "Нажмите на канал для просмотра членства"
+
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184
+#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659
+msgid "Profile not found."
+msgstr "Профиль не найден."
+
+#: ../../Zotlabs/Module/Profiles.php:44
+msgid "Profile deleted."
+msgstr "Профиль удален."
+
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105
+msgid "Profile-"
+msgstr "Профиль -"
+
+#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127
+msgid "New profile created."
+msgstr "Новый профиль создан."
+
+#: ../../Zotlabs/Module/Profiles.php:111
+msgid "Profile unavailable to clone."
+msgstr "Профиль недоступен для клонирования."
+
+#: ../../Zotlabs/Module/Profiles.php:146
+msgid "Profile unavailable to export."
+msgstr "Профиль недоступен для экспорта."
+
+#: ../../Zotlabs/Module/Profiles.php:252
+msgid "Profile Name is required."
+msgstr "Требуется имя профиля."
+
+#: ../../Zotlabs/Module/Profiles.php:459
+msgid "Marital Status"
+msgstr "Семейное положение"
+
+#: ../../Zotlabs/Module/Profiles.php:463
+msgid "Romantic Partner"
+msgstr "Романтический партнер"
+
+#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772
+msgid "Likes"
+msgstr "Нравится"
+
+#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773
+msgid "Dislikes"
+msgstr "Не нравится"
+
+#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780
+msgid "Work/Employment"
+msgstr "Работа / Занятость"
+
+#: ../../Zotlabs/Module/Profiles.php:478
+msgid "Religion"
+msgstr "Религия"
+
+#: ../../Zotlabs/Module/Profiles.php:482
+msgid "Political Views"
+msgstr "Политические взгляды"
+
+#: ../../Zotlabs/Module/Profiles.php:486
+#: ../../addon/openid/MysqlProvider.php:74
+msgid "Gender"
+msgstr "Гендер"
+
+#: ../../Zotlabs/Module/Profiles.php:490
+msgid "Sexual Preference"
+msgstr "Сексуальная ориентация"
+
+#: ../../Zotlabs/Module/Profiles.php:494
+msgid "Homepage"
+msgstr "Домашняя страница"
+
+#: ../../Zotlabs/Module/Profiles.php:498
+msgid "Interests"
+msgstr "Интересы"
+
+#: ../../Zotlabs/Module/Profiles.php:594
+msgid "Profile updated."
+msgstr "Профиль обновлен."
+
+#: ../../Zotlabs/Module/Profiles.php:678
+msgid "Hide your connections list from viewers of this profile"
+msgstr "Скрывать от просмотра ваш список контактов в этом профиле"
+
+#: ../../Zotlabs/Module/Profiles.php:722
+msgid "Edit Profile Details"
+msgstr "Редактирование профиля"
+
+#: ../../Zotlabs/Module/Profiles.php:724
+msgid "View this profile"
+msgstr "Посмотреть этот профиль"
+
+#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824
+#: ../../include/channel.php:1375
+msgid "Edit visibility"
+msgstr "Редактировать видимость"
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Profile Tools"
+msgstr "Инструменты профиля"
+
+#: ../../Zotlabs/Module/Profiles.php:727
+msgid "Change cover photo"
+msgstr "Изменить фотографию обложки"
+
+#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1345
+msgid "Change profile photo"
+msgstr "Изменить фотографию профиля"
+
+#: ../../Zotlabs/Module/Profiles.php:729
+msgid "Create a new profile using these settings"
+msgstr "Создать новый профиль с теми же настройками"
+
+#: ../../Zotlabs/Module/Profiles.php:730
+msgid "Clone this profile"
+msgstr "Клонировать этот профиль"
+
+#: ../../Zotlabs/Module/Profiles.php:731
+msgid "Delete this profile"
+msgstr "Удалить этот профиль"
+
+#: ../../Zotlabs/Module/Profiles.php:732
+msgid "Add profile things"
+msgstr "Добавить в профиль"
+
+#: ../../Zotlabs/Module/Profiles.php:733
+msgid "Personal"
+msgstr "Личное"
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Relationship"
+msgstr "Отношения"
+
+#: ../../Zotlabs/Module/Profiles.php:736 ../../Zotlabs/Widget/Newmember.php:51
+#: ../../include/datetime.php:58
+msgid "Miscellaneous"
+msgstr "Прочее"
+
+#: ../../Zotlabs/Module/Profiles.php:738
+msgid "Import profile from file"
+msgstr "Импортировать профиль из файла"
+
+#: ../../Zotlabs/Module/Profiles.php:739
+msgid "Export profile to file"
+msgstr "Экспортировать профиль в файл"
+
+#: ../../Zotlabs/Module/Profiles.php:740
+msgid "Your gender"
+msgstr "Ваш пол"
+
+#: ../../Zotlabs/Module/Profiles.php:741
+msgid "Marital status"
+msgstr "Семейное положение"
+
+#: ../../Zotlabs/Module/Profiles.php:742
+msgid "Sexual preference"
+msgstr "Сексуальная ориентация"
+
+#: ../../Zotlabs/Module/Profiles.php:745
+msgid "Profile name"
+msgstr "Имя профиля"
+
+#: ../../Zotlabs/Module/Profiles.php:747
+msgid "This is your default profile."
+msgstr "Это ваш профиль по умолчанию."
+
+#: ../../Zotlabs/Module/Profiles.php:749
+msgid "Your full name"
+msgstr "Ваше полное имя"
+
+#: ../../Zotlabs/Module/Profiles.php:750
+msgid "Title/Description"
+msgstr "Заголовок / описание"
+
+#: ../../Zotlabs/Module/Profiles.php:753
+msgid "Street address"
+msgstr "Улица, дом, квартира"
+
+#: ../../Zotlabs/Module/Profiles.php:754
+msgid "Locality/City"
+msgstr "Населенный пункт / город"
+
+#: ../../Zotlabs/Module/Profiles.php:755
+msgid "Region/State"
+msgstr "Регион / Область"
+
+#: ../../Zotlabs/Module/Profiles.php:756
+msgid "Postal/Zip code"
+msgstr "Почтовый индекс"
+
+#: ../../Zotlabs/Module/Profiles.php:762
+msgid "Who (if applicable)"
+msgstr "Кто (если применимо)"
+
+#: ../../Zotlabs/Module/Profiles.php:762
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Примеры: ivan1990, Ivan Petrov, ivan@example.com"
+
+#: ../../Zotlabs/Module/Profiles.php:763
+msgid "Since (date)"
+msgstr "С (дата)"
+
+#: ../../Zotlabs/Module/Profiles.php:766
+msgid "Tell us about yourself"
+msgstr "Расскажите нам о себе"
+
+#: ../../Zotlabs/Module/Profiles.php:767
+#: ../../addon/openid/MysqlProvider.php:68
+msgid "Homepage URL"
+msgstr "URL домашней страницы"
+
+#: ../../Zotlabs/Module/Profiles.php:768
+msgid "Hometown"
+msgstr "Родной город"
+
+#: ../../Zotlabs/Module/Profiles.php:769
+msgid "Political views"
+msgstr "Политические взгляды"
+
+#: ../../Zotlabs/Module/Profiles.php:770
+msgid "Religious views"
+msgstr "Религиозные взгляды"
+
+#: ../../Zotlabs/Module/Profiles.php:771
+msgid "Keywords used in directory listings"
+msgstr "Ключевые слова для участия в каталоге"
+
+#: ../../Zotlabs/Module/Profiles.php:771
+msgid "Example: fishing photography software"
+msgstr "Например: fishing photography software"
+
+#: ../../Zotlabs/Module/Profiles.php:774
+msgid "Musical interests"
+msgstr "Музыкальные интересы"
+
+#: ../../Zotlabs/Module/Profiles.php:775
+msgid "Books, literature"
+msgstr "Книги, литература"
+
+#: ../../Zotlabs/Module/Profiles.php:776
+msgid "Television"
+msgstr "Телевидение"
+
+#: ../../Zotlabs/Module/Profiles.php:777
+msgid "Film/Dance/Culture/Entertainment"
+msgstr "Кино / танцы / культура / развлечения"
+
+#: ../../Zotlabs/Module/Profiles.php:778
+msgid "Hobbies/Interests"
+msgstr "Хобби / интересы"
+
+#: ../../Zotlabs/Module/Profiles.php:779
+msgid "Love/Romance"
+msgstr "Любовь / романтические отношения"
+
+#: ../../Zotlabs/Module/Profiles.php:781
+msgid "School/Education"
+msgstr "Школа / образование"
+
+#: ../../Zotlabs/Module/Profiles.php:782
+msgid "Contact information and social networks"
+msgstr "Информация и социальные сети для связи"
+
+#: ../../Zotlabs/Module/Profiles.php:783
+msgid "My other channels"
+msgstr "Мои другие контакты"
+
+#: ../../Zotlabs/Module/Profiles.php:785
+msgid "Communications"
+msgstr "Связи"
+
+#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1371
+msgid "Profile Image"
+msgstr "Изображение профиля"
+
+#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1352
+#: ../../include/nav.php:109
+msgid "Edit Profiles"
+msgstr "Редактирование профилей"
+
#: ../../Zotlabs/Module/Go.php:21
msgid "This page is available only to site members"
msgstr "Эта страница доступна только для подписчиков сайта"
@@ -10927,732 +6729,1818 @@ msgstr "Ваш персональный поток (может быть пуст
msgid "View the public stream. Warning: this content is not moderated"
msgstr "Просмотр публичного потока. Предупреждение: этот контент не модерируется"
-#: ../../Zotlabs/Widget/Forums.php:100
-#: ../../Zotlabs/Widget/Notifications.php:119
-#: ../../Zotlabs/Widget/Notifications.php:120
-#: ../../Zotlabs/Widget/Activity_filter.php:73
-msgid "Forums"
-msgstr "Форумы"
+#: ../../Zotlabs/Module/Editwebpage.php:139
+msgid "Page link"
+msgstr "Ссылка страницы"
-#: ../../Zotlabs/Widget/Notes.php:21 ../../Zotlabs/Lib/Apps.php:346
-msgid "Notes"
-msgstr "Заметки"
+#: ../../Zotlabs/Module/Editwebpage.php:166
+msgid "Edit Webpage"
+msgstr "Редактировать веб-страницу"
-#: ../../Zotlabs/Widget/Suggestions.php:51
-msgid "Suggestions"
-msgstr "Рекомендации"
+#: ../../Zotlabs/Module/Manage.php:145
+msgid "Create a new channel"
+msgstr "Создать новый канал"
-#: ../../Zotlabs/Widget/Suggestions.php:52
-msgid "See more..."
-msgstr "Просмотреть больше..."
+#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:334
+#: ../../include/nav.php:92
+msgid "Channel Manager"
+msgstr "Менеджер каналов"
-#: ../../Zotlabs/Widget/Notifications.php:16
-msgid "New Network Activity"
-msgstr "Новая сетевая активность"
+#: ../../Zotlabs/Module/Manage.php:171
+msgid "Current Channel"
+msgstr "Текущий канал"
-#: ../../Zotlabs/Widget/Notifications.php:17
-msgid "New Network Activity Notifications"
-msgstr "Новые уведомления о сетевой активности"
+#: ../../Zotlabs/Module/Manage.php:173
+msgid "Switch to one of your channels by selecting it."
+msgstr "Выбрать и переключиться на один из ваших каналов"
-#: ../../Zotlabs/Widget/Notifications.php:20
-msgid "View your network activity"
-msgstr "Просмотреть вашу сетевую активность"
+#: ../../Zotlabs/Module/Manage.php:174
+msgid "Default Channel"
+msgstr "Основной канал"
-#: ../../Zotlabs/Widget/Notifications.php:23
-msgid "Mark all notifications read"
-msgstr "Пометить уведомления как прочитанные"
+#: ../../Zotlabs/Module/Manage.php:175
+msgid "Make Default"
+msgstr "Сделать основным"
-#: ../../Zotlabs/Widget/Notifications.php:26
-#: ../../Zotlabs/Widget/Notifications.php:45
-#: ../../Zotlabs/Widget/Notifications.php:152
-msgid "Show new posts only"
-msgstr "Показывать только новые публикации"
+#: ../../Zotlabs/Module/Manage.php:178
+#, php-format
+msgid "%d new messages"
+msgstr "%d новых сообщений"
-#: ../../Zotlabs/Widget/Notifications.php:27
-#: ../../Zotlabs/Widget/Notifications.php:46
-#: ../../Zotlabs/Widget/Notifications.php:122
-#: ../../Zotlabs/Widget/Notifications.php:153
-#: ../../Zotlabs/Widget/Activity_filter.php:165
-msgid "Filter by name"
-msgstr "Отфильтровать по имени"
+#: ../../Zotlabs/Module/Manage.php:179
+#, php-format
+msgid "%d new introductions"
+msgstr "%d новых представлений"
-#: ../../Zotlabs/Widget/Notifications.php:35
-msgid "New Home Activity"
-msgstr "Новая локальная активность"
+#: ../../Zotlabs/Module/Manage.php:181
+msgid "Delegated Channel"
+msgstr "Делегированный канал"
-#: ../../Zotlabs/Widget/Notifications.php:36
-msgid "New Home Activity Notifications"
-msgstr "Новые уведомления локальной активности"
+#: ../../Zotlabs/Module/Cards.php:51
+msgid "Cards App"
+msgstr "Приложение \"Карточки\""
-#: ../../Zotlabs/Widget/Notifications.php:39
-msgid "View your home activity"
-msgstr "Просмотреть локальную активность"
+#: ../../Zotlabs/Module/Cards.php:52
+msgid "Create personal planning cards"
+msgstr "Создать личные карточки планирования"
-#: ../../Zotlabs/Widget/Notifications.php:42
-#: ../../Zotlabs/Widget/Notifications.php:149
-msgid "Mark all notifications seen"
-msgstr "Пометить уведомления как просмотренные"
+#: ../../Zotlabs/Module/Cards.php:112
+msgid "Add Card"
+msgstr "Добавить карточку"
-#: ../../Zotlabs/Widget/Notifications.php:54
-msgid "New Mails"
-msgstr "Новая переписка"
+#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325
+#: ../../include/nav.php:501
+msgid "Cards"
+msgstr "Карточки"
-#: ../../Zotlabs/Widget/Notifications.php:55
-msgid "New Mails Notifications"
-msgstr "Уведомления о новой переписке"
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Для доступа к этому серверу каталогов требуется токен"
-#: ../../Zotlabs/Widget/Notifications.php:58
-msgid "View your private mails"
-msgstr "Просмотреть вашу личную переписку"
+#: ../../Zotlabs/Module/Siteinfo.php:21
+msgid "About this site"
+msgstr "Об этом сайте"
-#: ../../Zotlabs/Widget/Notifications.php:61
-msgid "Mark all messages seen"
-msgstr "Пометить сообщения как просмотренные"
+#: ../../Zotlabs/Module/Siteinfo.php:22
+msgid "Site Name"
+msgstr "Название сайта"
-#: ../../Zotlabs/Widget/Notifications.php:69
-msgid "New Events"
-msgstr "Новые события"
+#: ../../Zotlabs/Module/Siteinfo.php:26
+msgid "Administrator"
+msgstr "Администратор"
-#: ../../Zotlabs/Widget/Notifications.php:70
-msgid "New Events Notifications"
-msgstr "Уведомления о новых событиях"
+#: ../../Zotlabs/Module/Siteinfo.php:28 ../../Zotlabs/Module/Register.php:236
+msgid "Terms of Service"
+msgstr "Условия предоставления услуг"
-#: ../../Zotlabs/Widget/Notifications.php:73
-msgid "View events"
-msgstr "Просмотреть события"
+#: ../../Zotlabs/Module/Siteinfo.php:29
+msgid "Software and Project information"
+msgstr "Информация о программном обеспечении и проекте"
-#: ../../Zotlabs/Widget/Notifications.php:76
-msgid "Mark all events seen"
-msgstr "Пометить все события как просмотренные"
+#: ../../Zotlabs/Module/Siteinfo.php:30
+msgid "This site is powered by $Projectname"
+msgstr "Этот сайт работает на $Projectname"
-#: ../../Zotlabs/Widget/Notifications.php:85
-msgid "New Connections Notifications"
-msgstr "Уведомления о новых контактах"
+#: ../../Zotlabs/Module/Siteinfo.php:31
+msgid ""
+"Federated and decentralised networking and identity services provided by Zot"
+msgstr "Объединенные и децентрализованные сети и службы идентификациии обеспечиваются Zot"
-#: ../../Zotlabs/Widget/Notifications.php:88
-msgid "View all connections"
-msgstr "Просмотр всех контактов"
+#: ../../Zotlabs/Module/Siteinfo.php:34
+msgid "Additional federated transport protocols:"
+msgstr "Дополнительные федеративные транспортные протоколы:"
-#: ../../Zotlabs/Widget/Notifications.php:96
-msgid "New Files"
-msgstr "Новые файлы"
+#: ../../Zotlabs/Module/Siteinfo.php:36
+#, php-format
+msgid "Version %s"
+msgstr "Версия %s"
-#: ../../Zotlabs/Widget/Notifications.php:97
-msgid "New Files Notifications"
-msgstr "Уведомления о новых файлах"
+#: ../../Zotlabs/Module/Siteinfo.php:37
+msgid "Project homepage"
+msgstr "Домашняя страница проекта"
-#: ../../Zotlabs/Widget/Notifications.php:104
-#: ../../Zotlabs/Widget/Notifications.php:105
-msgid "Notices"
-msgstr "Оповещения"
+#: ../../Zotlabs/Module/Siteinfo.php:38
+msgid "Developer homepage"
+msgstr "Домашняя страница разработчика"
-#: ../../Zotlabs/Widget/Notifications.php:108
-msgid "View all notices"
-msgstr "Просмотреть все оповещения"
+#: ../../Zotlabs/Module/Ratings.php:70
+msgid "No ratings"
+msgstr "Оценок нет"
-#: ../../Zotlabs/Widget/Notifications.php:111
-msgid "Mark all notices seen"
-msgstr "Пометить все оповещения как просмотренные"
+#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35
+#: ../../include/conversation.php:1088
+msgid "Ratings"
+msgstr "Оценки"
-#: ../../Zotlabs/Widget/Notifications.php:132
-msgid "New Registrations"
-msgstr "Новые регистрации"
+#: ../../Zotlabs/Module/Ratings.php:98
+msgid "Rating: "
+msgstr "Оценкa:"
-#: ../../Zotlabs/Widget/Notifications.php:133
-msgid "New Registrations Notifications"
-msgstr "Уведомления о новых регистрациях"
+#: ../../Zotlabs/Module/Ratings.php:99
+msgid "Website: "
+msgstr "Веб-сайт:"
-#: ../../Zotlabs/Widget/Notifications.php:143
-msgid "Public Stream Notifications"
-msgstr "Уведомления публичного потока"
+#: ../../Zotlabs/Module/Ratings.php:101
+msgid "Description: "
+msgstr "Описание:"
-#: ../../Zotlabs/Widget/Notifications.php:146
-msgid "View the public stream"
-msgstr "Просмотреть публичный поток"
+#: ../../Zotlabs/Module/Webpages.php:48
+msgid "Webpages App"
+msgstr "Приложение \"Веб-страницы\""
-#: ../../Zotlabs/Widget/Notifications.php:161
-msgid "Sorry, you have got no notifications at the moment"
-msgstr "Извините, но сейчас у вас нет уведомлений"
+#: ../../Zotlabs/Module/Webpages.php:49
+msgid "Provide managed web pages on your channel"
+msgstr "Предоставлять управляемые веб-страницы на Вашем канале"
-#: ../../Zotlabs/Widget/Tasklist.php:23
-msgid "Tasks"
-msgstr "Задачи"
+#: ../../Zotlabs/Module/Webpages.php:69
+msgid "Import Webpage Elements"
+msgstr "Импортировать части веб-страницы"
-#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58
-msgid "photo/image"
-msgstr "фотография / изображение"
+#: ../../Zotlabs/Module/Webpages.php:70
+msgid "Import selected"
+msgstr "Импортировать выбранное"
-#: ../../Zotlabs/Widget/Cdav.php:37
-msgid "Select Channel"
-msgstr "Выбрать канал"
+#: ../../Zotlabs/Module/Webpages.php:93
+msgid "Export Webpage Elements"
+msgstr "Экспортировать часть веб-страницы"
-#: ../../Zotlabs/Widget/Cdav.php:42
-msgid "Read-write"
-msgstr "Чтение-запись"
+#: ../../Zotlabs/Module/Webpages.php:94
+msgid "Export selected"
+msgstr "Экспортировать выбранное"
-#: ../../Zotlabs/Widget/Cdav.php:43
-msgid "Read-only"
-msgstr "Только чтение"
+#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:338
+#: ../../include/nav.php:524
+msgid "Webpages"
+msgstr "Веб-страницы"
-#: ../../Zotlabs/Widget/Cdav.php:117
-msgid "My Calendars"
-msgstr "Мои календари"
+#: ../../Zotlabs/Module/Webpages.php:263
+msgid "Actions"
+msgstr "Действия"
-#: ../../Zotlabs/Widget/Cdav.php:119
-msgid "Shared Calendars"
-msgstr "Общие календари"
+#: ../../Zotlabs/Module/Webpages.php:264
+msgid "Page Link"
+msgstr "Ссылка страницы"
-#: ../../Zotlabs/Widget/Cdav.php:123
-msgid "Share this calendar"
-msgstr "Поделиться этим календарём"
+#: ../../Zotlabs/Module/Webpages.php:265
+msgid "Page Title"
+msgstr "Заголовок страницы"
-#: ../../Zotlabs/Widget/Cdav.php:125
-msgid "Calendar name and color"
-msgstr "Имя и цвет календаря"
+#: ../../Zotlabs/Module/Webpages.php:295
+msgid "Invalid file type."
+msgstr "Неверный тип файла."
-#: ../../Zotlabs/Widget/Cdav.php:127
-msgid "Create new calendar"
-msgstr "Создать новый календарь"
+#: ../../Zotlabs/Module/Webpages.php:307
+msgid "Error opening zip file"
+msgstr "Ошибка открытия ZIP файла"
-#: ../../Zotlabs/Widget/Cdav.php:129
-msgid "Calendar Name"
-msgstr "Имя календаря"
+#: ../../Zotlabs/Module/Webpages.php:318
+msgid "Invalid folder path."
+msgstr "Неверный путь к каталогу."
-#: ../../Zotlabs/Widget/Cdav.php:130
-msgid "Calendar Tools"
-msgstr "Инструменты календаря"
+#: ../../Zotlabs/Module/Webpages.php:345
+msgid "No webpage elements detected."
+msgstr "Не обнаружено частей веб-страницы."
-#: ../../Zotlabs/Widget/Cdav.php:131
-msgid "Import calendar"
-msgstr "Импортировать календарь"
+#: ../../Zotlabs/Module/Webpages.php:420
+msgid "Import complete."
+msgstr "Импорт завершен."
-#: ../../Zotlabs/Widget/Cdav.php:132
-msgid "Select a calendar to import to"
-msgstr "Выбрать календарь для импорта в"
+#: ../../Zotlabs/Module/Changeaddr.php:35
+msgid ""
+"Channel name changes are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Изменение названия канала не разрешается в течении 48 часов после смены пароля у аккаунта."
-#: ../../Zotlabs/Widget/Cdav.php:159
-msgid "Addressbooks"
-msgstr "Адресные книги"
+#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:222
+#: ../../include/channel.php:655
+msgid "Reserved nickname. Please choose another."
+msgstr "Зарезервированый псевдоним. Пожалуйста, выберите другой."
-#: ../../Zotlabs/Widget/Cdav.php:161
-msgid "Addressbook name"
-msgstr "Имя адресной книги"
+#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:227
+#: ../../include/channel.php:660
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Псевдоним имеет недопустимые символы или уже используется на этом сайте."
-#: ../../Zotlabs/Widget/Cdav.php:163
-msgid "Create new addressbook"
-msgstr "Создать новую адресную книгу"
+#: ../../Zotlabs/Module/Changeaddr.php:77
+msgid "Change channel nickname/address"
+msgstr "Изменить псевдоним / адрес канала"
-#: ../../Zotlabs/Widget/Cdav.php:164
-msgid "Addressbook Name"
-msgstr "Имя адресной книги"
+#: ../../Zotlabs/Module/Changeaddr.php:78
+msgid "Any/all connections on other networks will be lost!"
+msgstr "Любые / все контакты в других сетях будут утеряны!"
-#: ../../Zotlabs/Widget/Cdav.php:166
-msgid "Addressbook Tools"
-msgstr "Инструменты адресной книги"
+#: ../../Zotlabs/Module/Changeaddr.php:80
+msgid "New channel address"
+msgstr "Новый адрес канала"
-#: ../../Zotlabs/Widget/Cdav.php:167
-msgid "Import addressbook"
-msgstr "Импортировать адресную книгу"
+#: ../../Zotlabs/Module/Changeaddr.php:81
+msgid "Rename Channel"
+msgstr "Переименовать канал"
-#: ../../Zotlabs/Widget/Cdav.php:168
-msgid "Select an addressbook to import to"
-msgstr "Выбрать адресную книгу для импорта в"
+#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43
+msgid "Item is not editable"
+msgstr "Элемент нельзя редактировать"
-#: ../../Zotlabs/Widget/Activity.php:50
-msgctxt "widget"
-msgid "Activity"
-msgstr "Активность"
+#: ../../Zotlabs/Module/Editpost.php:108 ../../Zotlabs/Module/Rpost.php:144
+msgid "Edit post"
+msgstr "Редактировать сообщение"
-#: ../../Zotlabs/Widget/Hq_controls.php:14
-msgid "HQ Control Panel"
-msgstr "Панель управления HQ"
+#: ../../Zotlabs/Module/Dreport.php:56
+msgid "Invalid message"
+msgstr "Неверное сообщение"
-#: ../../Zotlabs/Widget/Hq_controls.php:17
-msgid "Create a new post"
-msgstr "Создать новую публикацию"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "no results"
+msgstr "Ничего не найдено."
-#: ../../Zotlabs/Widget/Follow.php:22
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "channel sync processed"
+msgstr "синхронизация канала завершена"
+
+#: ../../Zotlabs/Module/Dreport.php:108
+msgid "queued"
+msgstr "в очереди"
+
+#: ../../Zotlabs/Module/Dreport.php:112
+msgid "posted"
+msgstr "опубликовано"
+
+#: ../../Zotlabs/Module/Dreport.php:116
+msgid "accepted for delivery"
+msgstr "принято к доставке"
+
+#: ../../Zotlabs/Module/Dreport.php:120
+msgid "updated"
+msgstr "обновлено"
+
+#: ../../Zotlabs/Module/Dreport.php:123
+msgid "update ignored"
+msgstr "обновление игнорируется"
+
+#: ../../Zotlabs/Module/Dreport.php:126
+msgid "permission denied"
+msgstr "доступ запрещен"
+
+#: ../../Zotlabs/Module/Dreport.php:130
+msgid "recipient not found"
+msgstr "получатель не найден"
+
+#: ../../Zotlabs/Module/Dreport.php:133
+msgid "mail recalled"
+msgstr "почта отозвана"
+
+#: ../../Zotlabs/Module/Dreport.php:136
+msgid "duplicate mail received"
+msgstr "получено дублирующее сообщение"
+
+#: ../../Zotlabs/Module/Dreport.php:139
+msgid "mail delivered"
+msgstr "почта доставлен"
+
+#: ../../Zotlabs/Module/Dreport.php:159
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "У вас есть %1$.0f из %2$.0f разрешенных контактов."
+msgid "Delivery report for %1$s"
+msgstr "Отчёт о доставке для %1$s"
-#: ../../Zotlabs/Widget/Follow.php:29
-msgid "Add New Connection"
-msgstr "Добавить новый контакт"
+#: ../../Zotlabs/Module/Dreport.php:162 ../../Zotlabs/Widget/Wiki_pages.php:41
+#: ../../Zotlabs/Widget/Wiki_pages.php:98
+msgid "Options"
+msgstr "Параметры"
-#: ../../Zotlabs/Widget/Follow.php:30
-msgid "Enter channel address"
-msgstr "Введите адрес канала"
+#: ../../Zotlabs/Module/Dreport.php:163
+msgid "Redeliver"
+msgstr "Доставить повторно"
-#: ../../Zotlabs/Widget/Follow.php:31
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Пример: ivan@example.com, http://example.com/ivan"
+#: ../../Zotlabs/Module/Sources.php:41
+msgid "Failed to create source. No channel selected."
+msgstr "Не удалось создать источник. Канал не выбран."
-#: ../../Zotlabs/Widget/Archive.php:43
-msgid "Archives"
-msgstr "Архивы"
+#: ../../Zotlabs/Module/Sources.php:57
+msgid "Source created."
+msgstr "Источник создан."
-#: ../../Zotlabs/Widget/Suggestedchats.php:32
-msgid "Suggested Chatrooms"
-msgstr "Рекомендуемые чаты"
+#: ../../Zotlabs/Module/Sources.php:70
+msgid "Source updated."
+msgstr "Источник обновлен."
-#: ../../Zotlabs/Widget/Rating.php:51
-msgid "Rating Tools"
-msgstr "Инструменты оценки"
+#: ../../Zotlabs/Module/Sources.php:88
+msgid "Sources App"
+msgstr "Приложение \"Источники канала\""
-#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57
-msgid "Rate Me"
-msgstr "Оценить меня"
+#: ../../Zotlabs/Module/Sources.php:89
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Автоматический импорт контента из других каналов или лент"
-#: ../../Zotlabs/Widget/Rating.php:60
-msgid "View Ratings"
-msgstr "Просмотр оценок"
+#: ../../Zotlabs/Module/Sources.php:101
+msgid "*"
+msgstr ""
-#: ../../Zotlabs/Widget/Newmember.php:31
-msgid "Profile Creation"
-msgstr "Создание профиля"
+#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:366
+msgid "Channel Sources"
+msgstr "Источники канала"
-#: ../../Zotlabs/Widget/Newmember.php:33
-msgid "Upload profile photo"
-msgstr "Загрузить фотографию профиля"
+#: ../../Zotlabs/Module/Sources.php:108
+msgid "Manage remote sources of content for your channel."
+msgstr "Управление удалённым источниками содержимого для вашего канала"
-#: ../../Zotlabs/Widget/Newmember.php:34
-msgid "Upload cover photo"
-msgstr "Загрузить фотографию обложки"
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:119
+msgid "New Source"
+msgstr "Новый источник"
-#: ../../Zotlabs/Widget/Newmember.php:38
-msgid "Find and Connect with others"
-msgstr "Найти и вступить в контакт"
+#: ../../Zotlabs/Module/Sources.php:120 ../../Zotlabs/Module/Sources.php:154
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Импортировать всё или выбранное содержимое из следующего канала в этот канал и распределить его в соответствии с вашими настройками."
-#: ../../Zotlabs/Widget/Newmember.php:40
-msgid "View the directory"
-msgstr "Просмотреть каталог"
+#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155
+msgid "Only import content with these words (one per line)"
+msgstr "Импортировать содержимое только с этим текстом (построчно)"
-#: ../../Zotlabs/Widget/Newmember.php:42
-msgid "Manage your connections"
-msgstr "Управление вашими контактами"
+#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155
+msgid "Leave blank to import all public content"
+msgstr "Оставьте пустым для импорта всего общедоступного содержимого"
-#: ../../Zotlabs/Widget/Newmember.php:45
-msgid "Communicate"
-msgstr "Связаться"
+#: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:161
+msgid "Channel Name"
+msgstr "Название канала"
-#: ../../Zotlabs/Widget/Newmember.php:47
-msgid "View your channel homepage"
-msgstr "Домашняя страница канала"
+#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr "Добавить следующие категории к импортированным публикациям из этого источника (через запятые)"
-#: ../../Zotlabs/Widget/Newmember.php:48
-msgid "View your network stream"
-msgstr "Просмотреть ваш сетевой поток"
+#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158
+#: ../../Zotlabs/Module/Oauth.php:117
+msgid "Optional"
+msgstr "Необязательно"
-#: ../../Zotlabs/Widget/Newmember.php:54
-msgid "Documentation"
-msgstr "Документация"
+#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
+msgid "Resend posts with this channel as author"
+msgstr "Отправить публикации в этот канал повторно как автор"
-#: ../../Zotlabs/Widget/Newmember.php:57
-msgid "Missing Features?"
-msgstr "Отсутствует функция?"
+#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
+msgid "Copyrights may apply"
+msgstr "Могут применяться авторские права"
-#: ../../Zotlabs/Widget/Newmember.php:59
-msgid "Pin apps to navigation bar"
-msgstr "Прикрепить приложение к панели"
+#: ../../Zotlabs/Module/Sources.php:144 ../../Zotlabs/Module/Sources.php:174
+msgid "Source not found."
+msgstr "Источник не найден."
-#: ../../Zotlabs/Widget/Newmember.php:60
-msgid "Install more apps"
-msgstr "Установить больше приложений"
+#: ../../Zotlabs/Module/Sources.php:151
+msgid "Edit Source"
+msgstr "Редактировать источник"
-#: ../../Zotlabs/Widget/Newmember.php:71
-msgid "View public stream"
-msgstr "Просмотреть публичный поток"
+#: ../../Zotlabs/Module/Sources.php:152
+msgid "Delete Source"
+msgstr "Удалить источник"
-#: ../../Zotlabs/Widget/Mailmenu.php:13
-msgid "Private Mail Menu"
-msgstr "Меню личной переписки"
+#: ../../Zotlabs/Module/Sources.php:182
+msgid "Source removed"
+msgstr "Источник удален"
-#: ../../Zotlabs/Widget/Mailmenu.php:15
-msgid "Combined View"
-msgstr "Комбинированный вид"
+#: ../../Zotlabs/Module/Sources.php:184
+msgid "Unable to remove source."
+msgstr "Невозможно удалить источник."
-#: ../../Zotlabs/Widget/Mailmenu.php:20
-msgid "Inbox"
-msgstr "Входящие"
+#: ../../Zotlabs/Module/Like.php:56
+msgid "Like/Dislike"
+msgstr "Нравится / не нравится"
-#: ../../Zotlabs/Widget/Mailmenu.php:25
-msgid "Outbox"
-msgstr "Исходящие"
+#: ../../Zotlabs/Module/Like.php:61
+msgid "This action is restricted to members."
+msgstr "Это действие доступно только участникам."
-#: ../../Zotlabs/Widget/Mailmenu.php:30
-msgid "New Message"
-msgstr "Новое сообщение"
+#: ../../Zotlabs/Module/Like.php:62
+msgid ""
+"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
+"\"register\">register as a new $Projectname member</a> to continue."
+msgstr "Пожалуйста, для продолжения <a href=\"rmagic\"> войдите с вашим $Projectname ID</a> или <a href=\"register\">зарегистрируйтесь как новый участник $Projectname</a>."
-#: ../../Zotlabs/Widget/Wiki_pages.php:34
-#: ../../Zotlabs/Widget/Wiki_pages.php:91
-msgid "Add new page"
-msgstr "Добавить новую страницу"
+#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137
+#: ../../Zotlabs/Module/Like.php:175
+msgid "Invalid request."
+msgstr "Неверный запрос."
-#: ../../Zotlabs/Widget/Wiki_pages.php:85
-msgid "Wiki Pages"
-msgstr "Wiki страницы"
+#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122
+msgid "channel"
+msgstr "канал"
-#: ../../Zotlabs/Widget/Wiki_pages.php:96
-msgid "Page name"
-msgstr "Название страницы"
+#: ../../Zotlabs/Module/Like.php:152
+msgid "thing"
+msgstr "предмет"
-#: ../../Zotlabs/Widget/Eventstools.php:13
-msgid "Events Tools"
-msgstr "Инструменты для событий"
+#: ../../Zotlabs/Module/Like.php:198
+msgid "Channel unavailable."
+msgstr "Канал недоступен."
-#: ../../Zotlabs/Widget/Eventstools.php:14
-msgid "Export Calendar"
-msgstr "Экспортировать календарь"
+#: ../../Zotlabs/Module/Like.php:246
+msgid "Previous action reversed."
+msgstr "Предыдущее действие отменено."
-#: ../../Zotlabs/Widget/Eventstools.php:15
-msgid "Import Calendar"
-msgstr "Импортировать календарь"
+#: ../../Zotlabs/Module/Like.php:447 ../../Zotlabs/Lib/Activity.php:1994
+#: ../../addon/diaspora/Receiver.php:1491 ../../addon/pubcrawl/as.php:1540
+#: ../../include/conversation.php:160
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s нравится %3$s %2$s"
-#: ../../Zotlabs/Widget/Chatroom_list.php:20
-msgid "Overview"
-msgstr "Обзор"
+#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:1996
+#: ../../addon/pubcrawl/as.php:1542 ../../include/conversation.php:163
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s не нравится %2$s %3$s"
-#: ../../Zotlabs/Widget/Settings_menu.php:32
-msgid "Account settings"
-msgstr "Настройки аккаунта"
+#: ../../Zotlabs/Module/Like.php:451
+#, php-format
+msgid "%1$s agrees with %2$s's %3$s"
+msgstr "%1$s согласен с %2$s %3$s"
-#: ../../Zotlabs/Widget/Settings_menu.php:38
-msgid "Channel settings"
-msgstr "Настройки канала"
+#: ../../Zotlabs/Module/Like.php:453
+#, php-format
+msgid "%1$s doesn't agree with %2$s's %3$s"
+msgstr "%1$s не согласен с %2$s %3$s"
-#: ../../Zotlabs/Widget/Settings_menu.php:47
-msgid "Display settings"
-msgstr "Настройки отображения"
+#: ../../Zotlabs/Module/Like.php:455
+#, php-format
+msgid "%1$s abstains from a decision on %2$s's %3$s"
+msgstr "%1$s воздерживается от решения по %2$s%3$s"
-#: ../../Zotlabs/Widget/Settings_menu.php:53
-msgid "Addon settings"
-msgstr "Настройки расширений"
+#: ../../Zotlabs/Module/Like.php:457 ../../addon/diaspora/Receiver.php:2137
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr "%1$s посещает %2$s%3$s"
-#: ../../Zotlabs/Widget/Settings_menu.php:60
-msgid "Manage locations"
-msgstr "Управление местоположением"
+#: ../../Zotlabs/Module/Like.php:459 ../../addon/diaspora/Receiver.php:2139
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr "%1$s не посещает %2$s%3$s"
-#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
-msgid "Member registrations waiting for confirmation"
-msgstr "Регистрации участников, ожидающие подверждения"
+#: ../../Zotlabs/Module/Like.php:461 ../../addon/diaspora/Receiver.php:2141
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr "%1$s может посетить %2$s%3$s"
-#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:333
-msgid "Features"
-msgstr "Функции"
+#: ../../Zotlabs/Module/Like.php:572
+msgid "Action completed."
+msgstr "Действие завершено."
-#: ../../Zotlabs/Widget/Admin.php:29
-msgid "Inspect queue"
-msgstr "Просмотр очереди"
+#: ../../Zotlabs/Module/Like.php:573
+msgid "Thank you."
+msgstr "Спасибо."
-#: ../../Zotlabs/Widget/Admin.php:31
-msgid "DB updates"
-msgstr "Обновление базы данных"
+#: ../../Zotlabs/Module/Directory.php:110
+msgid "No default suggestions were found."
+msgstr "Предложений по умолчанию не найдено."
-#: ../../Zotlabs/Widget/Admin.php:56
-msgid "Addon Features"
-msgstr "Настройки расширений"
+#: ../../Zotlabs/Module/Directory.php:259
+#, php-format
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] "%d оценка"
+msgstr[1] "%d оценки"
+msgstr[2] "%d оценок"
-#: ../../Zotlabs/Widget/Appstore.php:11
-msgid "App Collections"
-msgstr "Коллекции приложений"
+#: ../../Zotlabs/Module/Directory.php:270
+msgid "Gender: "
+msgstr "Пол:"
-#: ../../Zotlabs/Widget/Appstore.php:13
-msgid "Installed apps"
-msgstr "Установленные приложения"
+#: ../../Zotlabs/Module/Directory.php:272
+msgid "Status: "
+msgstr "Статус:"
-#: ../../Zotlabs/Widget/Savedsearch.php:75
-msgid "Remove term"
-msgstr "Удалить термин"
+#: ../../Zotlabs/Module/Directory.php:274
+msgid "Homepage: "
+msgstr "Домашняя страница:"
-#: ../../Zotlabs/Widget/Activity_filter.php:36
+#: ../../Zotlabs/Module/Directory.php:323 ../../include/channel.php:1620
+msgid "Age:"
+msgstr "Возраст:"
+
+#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1447
+#: ../../include/event.php:58 ../../include/event.php:90
+msgid "Location:"
+msgstr "Местоположение:"
+
+#: ../../Zotlabs/Module/Directory.php:334
+msgid "Description:"
+msgstr "Описание:"
+
+#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1649
+msgid "Hometown:"
+msgstr "Родной город:"
+
+#: ../../Zotlabs/Module/Directory.php:341 ../../include/channel.php:1655
+msgid "About:"
+msgstr "О себе:"
+
+#: ../../Zotlabs/Module/Directory.php:342 ../../Zotlabs/Module/Suggest.php:71
+#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
+#: ../../include/conversation.php:1058 ../../include/channel.php:1432
+#: ../../include/connections.php:110
+msgid "Connect"
+msgstr "Подключить"
+
+#: ../../Zotlabs/Module/Directory.php:343
+msgid "Public Forum:"
+msgstr "Публичный форум:"
+
+#: ../../Zotlabs/Module/Directory.php:346
+msgid "Keywords: "
+msgstr "Ключевые слова:"
+
+#: ../../Zotlabs/Module/Directory.php:349
+msgid "Don't suggest"
+msgstr "Не предлагать"
+
+#: ../../Zotlabs/Module/Directory.php:351
+msgid "Common connections (estimated):"
+msgstr "Общие контакты (оценочно):"
+
+#: ../../Zotlabs/Module/Directory.php:400
+msgid "Global Directory"
+msgstr "Глобальный каталог"
+
+#: ../../Zotlabs/Module/Directory.php:400
+msgid "Local Directory"
+msgstr "Локальный каталог"
+
+#: ../../Zotlabs/Module/Directory.php:406
+msgid "Finding:"
+msgstr "Поиск:"
+
+#: ../../Zotlabs/Module/Directory.php:409 ../../Zotlabs/Module/Suggest.php:79
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
+msgstr "Рекомендации каналов"
+
+#: ../../Zotlabs/Module/Directory.php:411
+msgid "next page"
+msgstr "следующая страница"
+
+#: ../../Zotlabs/Module/Directory.php:411
+msgid "previous page"
+msgstr "предыдущая страница"
+
+#: ../../Zotlabs/Module/Directory.php:412
+msgid "Sort options"
+msgstr "Параметры сортировки"
+
+#: ../../Zotlabs/Module/Directory.php:413
+msgid "Alphabetic"
+msgstr "По алфавиту"
+
+#: ../../Zotlabs/Module/Directory.php:414
+msgid "Reverse Alphabetic"
+msgstr "Против алфавита"
+
+#: ../../Zotlabs/Module/Directory.php:415
+msgid "Newest to Oldest"
+msgstr "От новых к старым"
+
+#: ../../Zotlabs/Module/Directory.php:416
+msgid "Oldest to Newest"
+msgstr "От старых к новым"
+
+#: ../../Zotlabs/Module/Directory.php:433
+msgid "No entries (some entries may be hidden)."
+msgstr "Нет записей (некоторые записи могут быть скрыты)."
+
+#: ../../Zotlabs/Module/Xchan.php:10
+msgid "Xchan Lookup"
+msgstr "Поиск Xchan"
+
+#: ../../Zotlabs/Module/Xchan.php:13
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Запрос Xchan начинается с (или webbie):"
+
+#: ../../Zotlabs/Module/Suggest.php:40
+msgid "Suggest Channels App"
+msgstr "Приложение \"Рекомендуемые каналы\""
+
+#: ../../Zotlabs/Module/Suggest.php:41
+msgid ""
+"Suggestions for channels in the $Projectname network you might be interested "
+"in"
+msgstr "Предложения по рекомендуемым каналам в сети $Projectname которые могут вас заинтересовать"
+
+#: ../../Zotlabs/Module/Suggest.php:54
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Нет предложений. Если это новый сайт, повторите попытку через 24 часа."
+
+#: ../../Zotlabs/Module/Suggest.php:73 ../../Zotlabs/Widget/Suggestions.php:46
+msgid "Ignore/Hide"
+msgstr "Игнорировать / cкрыть"
+
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Невозможно найти ваш сервер"
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Успешно опубликовано."
+
+#: ../../Zotlabs/Module/Mail.php:73
+msgid "Unable to lookup recipient."
+msgstr "Не удалось найти получателя."
+
+#: ../../Zotlabs/Module/Mail.php:80
+msgid "Unable to communicate with requested channel."
+msgstr "Не удалось установить связь с запрашиваемым каналом."
+
+#: ../../Zotlabs/Module/Mail.php:87
+msgid "Cannot verify requested channel."
+msgstr "Не удалось установить подлинность требуемого канала."
+
+#: ../../Zotlabs/Module/Mail.php:105
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Выбранный канал ограничивает частные сообщения. Отправка не удалась."
+
+#: ../../Zotlabs/Module/Mail.php:160
+msgid "Messages"
+msgstr "Сообщения"
+
+#: ../../Zotlabs/Module/Mail.php:173
+msgid "message"
+msgstr "сообщение"
+
+#: ../../Zotlabs/Module/Mail.php:214
+msgid "Message recalled."
+msgstr "Сообщение отозванно."
+
+#: ../../Zotlabs/Module/Mail.php:227
+msgid "Conversation removed."
+msgstr "Беседа удалена."
+
+#: ../../Zotlabs/Module/Mail.php:242 ../../Zotlabs/Module/Mail.php:363
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Истекает YYYY-MM-DD HH:MM"
+
+#: ../../Zotlabs/Module/Mail.php:270
+msgid "Requested channel is not in this network"
+msgstr "Запрашиваемый канал не доступен."
+
+#: ../../Zotlabs/Module/Mail.php:278
+msgid "Send Private Message"
+msgstr "Отправить личное сообщение"
+
+#: ../../Zotlabs/Module/Mail.php:279 ../../Zotlabs/Module/Mail.php:421
+msgid "To:"
+msgstr "Кому:"
+
+#: ../../Zotlabs/Module/Mail.php:282 ../../Zotlabs/Module/Mail.php:423
+msgid "Subject:"
+msgstr "Тема:"
+
+#: ../../Zotlabs/Module/Mail.php:287 ../../Zotlabs/Module/Mail.php:429
+msgid "Attach file"
+msgstr "Прикрепить файл"
+
+#: ../../Zotlabs/Module/Mail.php:289
+msgid "Send"
+msgstr "Отправить"
+
+#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
+#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456
+msgid "Set expiration date"
+msgstr "Установить срок действия"
+
+#: ../../Zotlabs/Module/Mail.php:393
+msgid "Delete message"
+msgstr "Удалить сообщение"
+
+#: ../../Zotlabs/Module/Mail.php:394
+msgid "Delivery report"
+msgstr "Отчёт о доставке"
+
+#: ../../Zotlabs/Module/Mail.php:395
+msgid "Recall message"
+msgstr "Отозвать сообщение"
+
+#: ../../Zotlabs/Module/Mail.php:397
+msgid "Message has been recalled."
+msgstr "Сообщение отозванно"
+
+#: ../../Zotlabs/Module/Mail.php:414
+msgid "Delete Conversation"
+msgstr "Удалить беседу"
+
+#: ../../Zotlabs/Module/Mail.php:416
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Безопасная связь недоступна. Вы <strong>можете</strong> попытаться ответить со страницы профиля отправителя."
+
+#: ../../Zotlabs/Module/Mail.php:420
+msgid "Send Reply"
+msgstr "Отправить ответ"
+
+#: ../../Zotlabs/Module/Mail.php:425
#, php-format
-msgid "Show posts related to the %s privacy group"
-msgstr "Показывать публикации относящиеся к группе безопасности %s"
+msgid "Your message for %s (%s):"
+msgstr "Ваше сообщение для %s (%s):"
-#: ../../Zotlabs/Widget/Activity_filter.php:45
-msgid "Show my privacy groups"
-msgstr "Показывать мои группы безопасности"
+#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12
+msgid "Public Hubs"
+msgstr "Публичные хабы"
-#: ../../Zotlabs/Widget/Activity_filter.php:66
-msgid "Show posts to this forum"
-msgstr "Показывать публикации этого форума"
+#: ../../Zotlabs/Module/Pubsites.php:27
+msgid ""
+"The listed hubs allow public registration for the $Projectname network. All "
+"hubs in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some hubs may require subscription or "
+"provide tiered service plans. The hub itself <strong>may</strong> provide "
+"additional details."
+msgstr "Указанные хабы разрешают публичную регистрацию для сети $Projectname. Все хабы в сети взаимосвязаны, поэтому членство в любом из них передает членство во всю сеть. Некоторым хабам может потребоваться подписка или предоставление многоуровневых планов обслуживания. Сам хаб <strong>может</strong> предоставить дополнительные сведения."
-#: ../../Zotlabs/Widget/Activity_filter.php:77
-msgid "Show forums"
-msgstr "Показывать форумы"
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Hub URL"
+msgstr "URL сервера"
-#: ../../Zotlabs/Widget/Activity_filter.php:91
-msgid "Starred Posts"
-msgstr "Отмеченные публикации"
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Access Type"
+msgstr "Тип доступа"
-#: ../../Zotlabs/Widget/Activity_filter.php:95
-msgid "Show posts that I have starred"
-msgstr "Показывать публикации которые я отметил"
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Registration Policy"
+msgstr "Политика регистрации"
-#: ../../Zotlabs/Widget/Activity_filter.php:106
-msgid "Personal Posts"
-msgstr "Личные публикации"
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Stats"
+msgstr "Статистика"
-#: ../../Zotlabs/Widget/Activity_filter.php:110
-msgid "Show posts that mention or involve me"
-msgstr "Показывать публикации где вы были упомянуты или привлечены"
+#: ../../Zotlabs/Module/Pubsites.php:33
+msgid "Software"
+msgstr "Программное обеспечение"
-#: ../../Zotlabs/Widget/Activity_filter.php:131
+#: ../../Zotlabs/Module/Pubsites.php:49
+msgid "Rate"
+msgstr "Оценка"
+
+#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:269
+msgid "webpage"
+msgstr "веб-страница"
+
+#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:275
+msgid "block"
+msgstr "заблокировать"
+
+#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:272
+msgid "layout"
+msgstr "шаблон"
+
+#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:278
+msgid "menu"
+msgstr "меню"
+
+#: ../../Zotlabs/Module/Impel.php:185
#, php-format
-msgid "Show posts that I have filed to %s"
-msgstr "Показывать публикации которые я добавил в %s"
+msgid "%s element installed"
+msgstr "%s элемент установлен"
-#: ../../Zotlabs/Widget/Activity_filter.php:141
-msgid "Show filed post categories"
-msgstr "Показывать категории добавленных публикаций"
+#: ../../Zotlabs/Module/Impel.php:188
+#, php-format
+msgid "%s element installation failed"
+msgstr "%sустановка элемента неудачна."
-#: ../../Zotlabs/Widget/Activity_filter.php:155
-msgid "Panel search"
-msgstr "Панель поиска"
+#: ../../Zotlabs/Module/Rbmark.php:94
+msgid "Select a bookmark folder"
+msgstr "Выбрать каталог для закладок"
-#: ../../Zotlabs/Widget/Activity_filter.php:180
-msgid "Remove active filter"
-msgstr "Удалить активный фильтр"
+#: ../../Zotlabs/Module/Rbmark.php:99
+msgid "Save Bookmark"
+msgstr "Сохранить закладку"
-#: ../../Zotlabs/Widget/Activity_filter.php:196
-msgid "Stream Filters"
-msgstr "Фильтры потока"
+#: ../../Zotlabs/Module/Rbmark.php:100
+msgid "URL of bookmark"
+msgstr "URL закладки"
-#: ../../Zotlabs/Widget/Chatroom_members.php:11
-msgid "Chat Members"
-msgstr "Участники чата"
+#: ../../Zotlabs/Module/Rbmark.php:105
+msgid "Or enter new bookmark folder name"
+msgstr "или введите новое имя каталога закладок"
-#: ../../Zotlabs/Widget/Cover_photo.php:65
-msgid "Click to show more"
-msgstr "Нажмите чтобы показать больше"
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Enter a folder name"
+msgstr "Введите название каталога"
-#: ../../Zotlabs/Widget/Affinity.php:45
-msgid "Refresh"
-msgstr "Обновить"
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "or select an existing folder (doubleclick)"
+msgstr "или выберите существующий каталог (двойной щелчок)"
-#: ../../Zotlabs/Widget/Activity_order.php:90
-msgid "Commented Date"
-msgstr "По комментариям"
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:181
+msgid "Save to Folder"
+msgstr "Сохранить в каталог"
-#: ../../Zotlabs/Widget/Activity_order.php:94
-msgid "Order by last commented date"
-msgstr "Сортировка по дате последнего комментария"
+#: ../../Zotlabs/Module/Probe.php:18
+msgid "Remote Diagnostics App"
+msgstr "Приложение \"Удалённая диагностика\""
-#: ../../Zotlabs/Widget/Activity_order.php:97
-msgid "Posted Date"
-msgstr "По публикациям"
+#: ../../Zotlabs/Module/Probe.php:19
+msgid "Perform diagnostics on remote channels"
+msgstr "Производит диагностику удалённых каналов"
-#: ../../Zotlabs/Widget/Activity_order.php:101
-msgid "Order by last posted date"
-msgstr "Сортировка по дате последней публикации"
+#: ../../Zotlabs/Module/Register.php:49
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Превышено максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра."
-#: ../../Zotlabs/Widget/Activity_order.php:104
-msgid "Date Unthreaded"
-msgstr "По порядку"
+#: ../../Zotlabs/Module/Register.php:55
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Пожалуйста, подтвердите согласие с \"Условиями обслуживания\". Регистрация не удалась."
-#: ../../Zotlabs/Widget/Activity_order.php:108
-msgid "Order unthreaded by date"
-msgstr "Сортировка в порядке поступления"
+#: ../../Zotlabs/Module/Register.php:89
+msgid "Passwords do not match."
+msgstr "Пароли не совпадают."
-#: ../../Zotlabs/Widget/Activity_order.php:123
-msgid "Stream Order"
-msgstr "Упорядочить поток"
+#: ../../Zotlabs/Module/Register.php:132
+msgid "Registration successful. Continue to create your first channel..."
+msgstr "Регистрация завершена успешно. Для продолжения создайте свой первый канал..."
-#: ../../Zotlabs/Widget/Bookmarkedchats.php:24
-msgid "Bookmarked Chatrooms"
-msgstr "Закладки чатов"
+#: ../../Zotlabs/Module/Register.php:135
+msgid ""
+"Registration successful. Please check your email for validation instructions."
+msgstr "Регистрация завершена успешно. Пожалуйста проверьте вашу электронную почту для подтверждения."
-#: ../../Zotlabs/Widget/Conversations.php:17
-msgid "Received Messages"
-msgstr "Полученные сообщения"
+#: ../../Zotlabs/Module/Register.php:142
+msgid "Your registration is pending approval by the site owner."
+msgstr "Ваша регистрация ожидает одобрения администрации сайта."
-#: ../../Zotlabs/Widget/Conversations.php:21
-msgid "Sent Messages"
-msgstr "Отправленные сообщения"
+#: ../../Zotlabs/Module/Register.php:145
+msgid "Your registration can not be processed."
+msgstr "Ваша регистрация не может быть обработана."
-#: ../../Zotlabs/Widget/Conversations.php:25
-msgid "Conversations"
-msgstr "Беседы"
+#: ../../Zotlabs/Module/Register.php:192
+msgid "Registration on this hub is disabled."
+msgstr "Регистрация на этом хабе отключена."
-#: ../../Zotlabs/Widget/Conversations.php:37
-msgid "No messages."
-msgstr "Сообщений нет."
+#: ../../Zotlabs/Module/Register.php:201
+msgid "Registration on this hub is by approval only."
+msgstr "Регистрация на этом хабе только по утверждению."
-#: ../../Zotlabs/Widget/Conversations.php:57
-msgid "Delete conversation"
-msgstr "Удалить беседу"
+#: ../../Zotlabs/Module/Register.php:202 ../../Zotlabs/Module/Register.php:211
+msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
+msgstr "<a href=\"pubsites\">Зарегистрироваться на другом хабе.</a>"
+
+#: ../../Zotlabs/Module/Register.php:210
+msgid "Registration on this hub is by invitation only."
+msgstr "Регистрация на этом хабе доступна только по приглашениям."
+
+#: ../../Zotlabs/Module/Register.php:221
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Этот сайт превысил максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра. "
+
+#: ../../Zotlabs/Module/Register.php:242
+#, php-format
+msgid "I accept the %s for this website"
+msgstr "Я принимаю %s для этого веб-сайта."
+
+#: ../../Zotlabs/Module/Register.php:249
+#, php-format
+msgid "I am over %s years of age and accept the %s for this website"
+msgstr "Мой возраст превышает %s лет и я принимаю %s для этого веб-сайта."
+
+#: ../../Zotlabs/Module/Register.php:254
+msgid "Your email address"
+msgstr "Ваш адрес электронной почты"
+
+#: ../../Zotlabs/Module/Register.php:255
+msgid "Choose a password"
+msgstr "Выберите пароль"
+
+#: ../../Zotlabs/Module/Register.php:256
+msgid "Please re-enter your password"
+msgstr "Пожалуйста, введите пароль еще раз"
+
+#: ../../Zotlabs/Module/Register.php:257
+msgid "Please enter your invitation code"
+msgstr "Пожалуйста, введите Ваш код приглашения"
+
+#: ../../Zotlabs/Module/Register.php:258
+msgid "Your Name"
+msgstr "Ваше имя"
+
+#: ../../Zotlabs/Module/Register.php:258
+msgid "Real names are preferred."
+msgstr "Предпочтительны реальные имена."
+
+#: ../../Zotlabs/Module/Register.php:260
+#, php-format
+msgid ""
+"Your nickname will be used to create an easy to remember channel address e."
+"g. nickname%s"
+msgstr "Ваш псевдоним будет использован для создания легко запоминаемого адреса канала, напр. nickname %s"
+
+#: ../../Zotlabs/Module/Register.php:261
+msgid ""
+"Select a channel permission role for your usage needs and privacy "
+"requirements."
+msgstr "Выберите разрешения для канала в зависимости от ваших потребностей и требований приватности."
+
+#: ../../Zotlabs/Module/Register.php:262
+msgid "no"
+msgstr "нет"
+
+#: ../../Zotlabs/Module/Register.php:262
+msgid "yes"
+msgstr "да"
+
+#: ../../Zotlabs/Module/Register.php:289 ../../boot.php:1609
+#: ../../include/nav.php:156
+msgid "Register"
+msgstr "Регистрация"
+
+#: ../../Zotlabs/Module/Register.php:290
+msgid ""
+"This site requires email verification. After completing this form, please "
+"check your email for further instructions."
+msgstr "Этот сайт требует проверку адреса электронной почты. После заполнения этой формы, пожалуйста, проверьте ваш почтовый ящик для дальнейших инструкций."
+
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Cover_photo.php:218
+msgid "Cover Photos"
+msgstr "Фотографии обложки"
+
+#: ../../Zotlabs/Module/Cover_photo.php:269 ../../include/items.php:4652
+msgid "female"
+msgstr "женщина"
+
+#: ../../Zotlabs/Module/Cover_photo.php:270 ../../include/items.php:4653
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s обновила её %2$s"
+
+#: ../../Zotlabs/Module/Cover_photo.php:271 ../../include/items.php:4654
+msgid "male"
+msgstr "мужчина"
+
+#: ../../Zotlabs/Module/Cover_photo.php:272 ../../include/items.php:4655
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s обновил его %2$s"
+
+#: ../../Zotlabs/Module/Cover_photo.php:274 ../../include/items.php:4657
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "%1$s обновили их %2$s"
+
+#: ../../Zotlabs/Module/Cover_photo.php:276 ../../include/channel.php:2137
+msgid "cover photo"
+msgstr "фотография обложки"
+
+#: ../../Zotlabs/Module/Cover_photo.php:390
+msgid "Your cover photo may be visible to anybody on the internet"
+msgstr "Фотография вашей обложки может быть видна всем в Интернете"
+
+#: ../../Zotlabs/Module/Cover_photo.php:394
+msgid "Change Cover Photo"
+msgstr "Изменить фотографию обложки"
+
+#: ../../Zotlabs/Module/Help.php:23
+msgid "Documentation Search"
+msgstr "Поиск документации"
+
+#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:434
+msgid "About"
+msgstr "О себе"
+
+#: ../../Zotlabs/Module/Help.php:82
+msgid "Administrators"
+msgstr "Администраторы"
+
+#: ../../Zotlabs/Module/Help.php:83
+msgid "Developers"
+msgstr "Разработчики"
+
+#: ../../Zotlabs/Module/Help.php:84
+msgid "Tutorials"
+msgstr "Руководства"
+
+#: ../../Zotlabs/Module/Help.php:95
+msgid "$Projectname Documentation"
+msgstr "$Projectname Документация"
+
+#: ../../Zotlabs/Module/Help.php:96
+msgid "Contents"
+msgstr "Содержимое"
+
+#: ../../Zotlabs/Module/Display.php:391
+msgid "Article"
+msgstr "Статья"
+
+#: ../../Zotlabs/Module/Display.php:443
+msgid "Item has been removed."
+msgstr "Элемент был удалён."
+
+#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
+msgid "Tag removed"
+msgstr "Тег удалён"
+
+#: ../../Zotlabs/Module/Tagrm.php:123
+msgid "Remove Item Tag"
+msgstr "Удалить тег элемента"
+
+#: ../../Zotlabs/Module/Tagrm.php:125
+msgid "Select a tag to remove: "
+msgstr "Выбрать тег для удаления:"
+
+#: ../../Zotlabs/Module/Network.php:109
+msgid "No such group"
+msgstr "Нет такой группы"
+
+#: ../../Zotlabs/Module/Network.php:158
+msgid "No such channel"
+msgstr "Нет такого канала"
+
+#: ../../Zotlabs/Module/Network.php:242
+msgid "Privacy group is empty"
+msgstr "Группа безопасности пуста"
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Privacy group: "
+msgstr "Группа безопасности: "
+
+#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29
+msgid "Invalid channel."
+msgstr "Недействительный канал."
+
+#: ../../Zotlabs/Module/Acl.php:360
+msgid "network"
+msgstr "сеть"
+
+#: ../../Zotlabs/Module/Home.php:72 ../../Zotlabs/Module/Home.php:80
+#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42
+msgid "$Projectname"
+msgstr ""
+
+#: ../../Zotlabs/Module/Home.php:90
+#, php-format
+msgid "Welcome to %s"
+msgstr "Добро пожаловать в %s"
+
+#: ../../Zotlabs/Module/Filestorage.php:79
+msgid "Permission Denied."
+msgstr "Доступ запрещен."
+
+#: ../../Zotlabs/Module/Filestorage.php:112
+msgid "File not found."
+msgstr "Файл не найден."
+
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Edit file permissions"
+msgstr "Редактировать разрешения файла"
+
+#: ../../Zotlabs/Module/Filestorage.php:177
+msgid "Set/edit permissions"
+msgstr "Редактировать разрешения"
+
+#: ../../Zotlabs/Module/Filestorage.php:178
+msgid "Include all files and sub folders"
+msgstr "Включить все файлы и подкаталоги"
+
+#: ../../Zotlabs/Module/Filestorage.php:179
+msgid "Return to file list"
+msgstr "Вернутся к списку файлов"
+
+#: ../../Zotlabs/Module/Filestorage.php:181
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Копировать / вставить этот код для прикрепления файла к публикации"
+
+#: ../../Zotlabs/Module/Filestorage.php:182
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Копировать / вставить эту URL для ссылки на файл со страницы"
+
+#: ../../Zotlabs/Module/Filestorage.php:184
+msgid "Share this file"
+msgstr "Поделиться этим файлом"
+
+#: ../../Zotlabs/Module/Filestorage.php:185
+msgid "Show URL to this file"
+msgstr "Показать URL этого файла"
+
+#: ../../Zotlabs/Module/Filestorage.php:186
+#: ../../Zotlabs/Storage/Browser.php:405
+msgid "Show in your contacts shared folder"
+msgstr "Показать общий каталог в ваших контактах"
+
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Канала нет."
+
+#: ../../Zotlabs/Module/Common.php:45
+msgid "No connections in common."
+msgstr "Общих контактов нет."
+
+#: ../../Zotlabs/Module/Common.php:65
+msgid "View Common Connections"
+msgstr "Просмотр общий контактов"
+
+#: ../../Zotlabs/Module/Email_resend.php:30
+msgid "Email verification resent"
+msgstr "Сообщение для проверки email отправлено повторно"
+
+#: ../../Zotlabs/Module/Email_resend.php:33
+msgid "Unable to resend email verification message."
+msgstr "Невозможно повторно отправить сообщение для проверки email"
+
+#: ../../Zotlabs/Module/Viewconnections.php:65
+msgid "No connections."
+msgstr "Контактов нет."
+
+#: ../../Zotlabs/Module/Viewconnections.php:83
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "Посетить %s ​​профиль [%s]"
+
+#: ../../Zotlabs/Module/Viewconnections.php:113
+msgid "View Connections"
+msgstr "Просмотр контактов"
+
+#: ../../Zotlabs/Module/Admin.php:97
+msgid "Blocked accounts"
+msgstr "Заблокированные аккаунты"
+
+#: ../../Zotlabs/Module/Admin.php:98
+msgid "Expired accounts"
+msgstr "Просроченные аккаунты"
+
+#: ../../Zotlabs/Module/Admin.php:99
+msgid "Expiring accounts"
+msgstr "Близкие к просрочке аккаунты"
+
+#: ../../Zotlabs/Module/Admin.php:120
+msgid "Message queues"
+msgstr "Очередь сообщений"
+
+#: ../../Zotlabs/Module/Admin.php:134
+msgid "Your software should be updated"
+msgstr "Ваше программное обеспечение должно быть обновлено"
+
+#: ../../Zotlabs/Module/Admin.php:139
+msgid "Summary"
+msgstr "Резюме"
+
+#: ../../Zotlabs/Module/Admin.php:142
+msgid "Registered accounts"
+msgstr "Зарегистрированные аккаунты"
+
+#: ../../Zotlabs/Module/Admin.php:143
+msgid "Pending registrations"
+msgstr "Ждут утверждения"
+
+#: ../../Zotlabs/Module/Admin.php:144
+msgid "Registered channels"
+msgstr "Зарегистрированные каналы"
+
+#: ../../Zotlabs/Module/Admin.php:145
+msgid "Active addons"
+msgstr "Активные расширения"
+
+#: ../../Zotlabs/Module/Admin.php:146
+msgid "Version"
+msgstr "Версия системы"
+
+#: ../../Zotlabs/Module/Admin.php:147
+msgid "Repository version (master)"
+msgstr "Версия репозитория (master)"
+
+#: ../../Zotlabs/Module/Admin.php:148
+msgid "Repository version (dev)"
+msgstr "Версия репозитория (dev)"
+
+#: ../../Zotlabs/Module/Service_limits.php:23
+msgid "No service class restrictions found."
+msgstr "Ограничений класса обслуживание не найдено."
+
+#: ../../Zotlabs/Module/Rate.php:156
+msgid "Website:"
+msgstr "Веб-сайт:"
+
+#: ../../Zotlabs/Module/Rate.php:159
+#, php-format
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Удалённый канал [%s] (пока неизвестен на этом сайте)"
+
+#: ../../Zotlabs/Module/Rate.php:160
+msgid "Rating (this information is public)"
+msgstr "Оценка (эта информация общедоступна)"
+
+#: ../../Zotlabs/Module/Rate.php:161
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Объясните свою оценку (необязательно; эта информация общедоступна)"
+
+#: ../../Zotlabs/Module/Card_edit.php:128
+msgid "Edit Card"
+msgstr "Редактировать карточку"
+
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Действительный аккаунт не найден."
+
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Запрос на сброс пароля отправлен. Проверьте вашу электронную почту."
+
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Участник сайта (%s)"
+
+#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Запрошен сброс пароля на %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:68
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Запрос не может быть проверен. (Вы могли отправить его раньше). Сброс пароля не возможен."
+
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1638
+msgid "Password Reset"
+msgstr "Сбросить пароль"
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your password has been reset as requested."
+msgstr "Ваш пароль в соответствии с просьбой сброшен."
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Your new password is"
+msgstr "Ваш новый пароль"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "Save or copy your new password - and then"
+msgstr "Сохраните ваш новый пароль и затем"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid "click here to login"
+msgstr "нажмите здесь чтобы войти"
+
+#: ../../Zotlabs/Module/Lostpass.php:96
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Ваш пароль может быть изменён на странице <em>Настройки</em> после успешного входа."
+
+#: ../../Zotlabs/Module/Lostpass.php:117
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Пароль был изменен на %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Forgot your Password?"
+msgstr "Забыли ваш пароль?"
+
+#: ../../Zotlabs/Module/Lostpass.php:131
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Введите ваш адрес электронной почты и нажмите отправить чтобы сбросить пароль. Затем проверьте ваш почтовый ящик для дальнейших инструкций. "
+
+#: ../../Zotlabs/Module/Lostpass.php:132
+msgid "Email Address"
+msgstr "Адрес электронной почты"
+
+#: ../../Zotlabs/Module/Oauth.php:45
+msgid "Name is required"
+msgstr "Необходимо имя"
+
+#: ../../Zotlabs/Module/Oauth.php:49
+msgid "Key and Secret are required"
+msgstr "Требуются ключ и код"
+
+#: ../../Zotlabs/Module/Oauth.php:100
+msgid "OAuth Apps Manager App"
+msgstr "Приложение \"Менеджер Oauth\""
+
+#: ../../Zotlabs/Module/Oauth.php:101
+msgid "OAuth authentication tokens for mobile and remote apps"
+msgstr "Токены аутентификации OAuth для мобильный и удалённых приложений"
+
+#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140
+#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:614
+msgid "Consumer Key"
+msgstr "Ключ клиента"
+
+#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143
+msgid "Icon url"
+msgstr "URL значка"
+
+#: ../../Zotlabs/Module/Oauth.php:128
+msgid "Application not found."
+msgstr "Приложение не найдено."
+
+#: ../../Zotlabs/Module/Oauth.php:171
+msgid "Connected OAuth Apps"
+msgstr "Подключенные приложения OAuth"
+
+#: ../../Zotlabs/Module/Notifications.php:60
+#: ../../Zotlabs/Lib/ThreadItem.php:450
+msgid "Mark all seen"
+msgstr "Отметить как просмотренное"
+
+#: ../../Zotlabs/Lib/Activity.php:1458
+#, php-format
+msgid "Likes %1$s's %2$s"
+msgstr "Нравится %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1461
+#, php-format
+msgid "Doesn't like %1$s's %2$s"
+msgstr "Не нравится %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1464
+#, php-format
+msgid "Will attend %1$s's %2$s"
+msgstr "Примет участие %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1467
+#, php-format
+msgid "Will not attend %1$s's %2$s"
+msgstr "Не примет участие %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1470
+#, php-format
+msgid "May attend %1$s's %2$s"
+msgstr "Возможно примет участие %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1806 ../../Zotlabs/Lib/Activity.php:2003
+#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1214
+#: ../../addon/pubcrawl/as.php:1369 ../../addon/pubcrawl/as.php:1549
+#: ../../include/network.php:1720
+msgid "ActivityPub"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Techlevels.php:10
+msgid "0. Beginner/Basic"
+msgstr "Начинающий / Базовый"
+
+#: ../../Zotlabs/Lib/Techlevels.php:11
+msgid "1. Novice - not skilled but willing to learn"
+msgstr "1. Новичок - не опытный, но желающий учиться"
+
+#: ../../Zotlabs/Lib/Techlevels.php:12
+msgid "2. Intermediate - somewhat comfortable"
+msgstr "2. Промежуточный - более удобный"
+
+#: ../../Zotlabs/Lib/Techlevels.php:13
+msgid "3. Advanced - very comfortable"
+msgstr "3. Продвинутый - очень удобный"
+
+#: ../../Zotlabs/Lib/Techlevels.php:14
+msgid "4. Expert - I can write computer code"
+msgstr "4. Эксперт - я умею программировать"
+
+#: ../../Zotlabs/Lib/Techlevels.php:15
+msgid "5. Wizard - I probably know more than you do"
+msgstr "5. Волшебник - возможно я знаю больше чем ты"
+
+#: ../../Zotlabs/Lib/Libzot.php:652 ../../include/zot.php:802
+msgid "Unable to verify channel signature"
+msgstr "Невозможно проверить подпись канала"
+
+#: ../../Zotlabs/Lib/Apps.php:322
+msgid "Apps"
+msgstr "Приложения"
+
+#: ../../Zotlabs/Lib/Apps.php:323
+msgid "Affinity Tool"
+msgstr "Степень сходства"
+
+#: ../../Zotlabs/Lib/Apps.php:326
+msgid "Site Admin"
+msgstr "Администратор сайта"
+
+#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16
+msgid "Report Bug"
+msgstr "Сообщить об ошибке"
+
+#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:490
+msgid "Bookmarks"
+msgstr "Закладки"
+
+#: ../../Zotlabs/Lib/Apps.php:329 ../../Zotlabs/Widget/Chatroom_list.php:16
+#: ../../include/nav.php:477 ../../include/nav.php:480
+msgid "Chatrooms"
+msgstr "Чаты"
+
+#: ../../Zotlabs/Lib/Apps.php:331
+msgid "Remote Diagnostics"
+msgstr "Удалённая диагностика"
+
+#: ../../Zotlabs/Lib/Apps.php:332 ../../include/features.php:365
+msgid "Suggest Channels"
+msgstr "Предлагаемые каналы"
+
+#: ../../Zotlabs/Lib/Apps.php:333 ../../boot.php:1629 ../../include/nav.php:118
+#: ../../include/nav.php:122
+msgid "Login"
+msgstr "Войти"
+
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Stream"
+msgstr "Поток"
+
+#: ../../Zotlabs/Lib/Apps.php:339 ../../include/nav.php:539
+msgid "Wiki"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:340 ../../include/features.php:96
+msgid "Channel Home"
+msgstr "Главная канала"
+
+#: ../../Zotlabs/Lib/Apps.php:343 ../../include/features.php:269
+msgid "Events"
+msgstr "События"
+
+#: ../../Zotlabs/Lib/Apps.php:344 ../../include/features.php:176
+msgid "Directory"
+msgstr "Каталог"
+
+#: ../../Zotlabs/Lib/Apps.php:346
+msgid "Mail"
+msgstr "Переписка"
+
+#: ../../Zotlabs/Lib/Apps.php:349
+msgid "Chat"
+msgstr "Чат"
+
+#: ../../Zotlabs/Lib/Apps.php:351
+msgid "Probe"
+msgstr "Проба"
+
+#: ../../Zotlabs/Lib/Apps.php:352
+msgid "Suggest"
+msgstr "Предложить"
+
+#: ../../Zotlabs/Lib/Apps.php:353
+msgid "Random Channel"
+msgstr "Случайный канал"
+
+#: ../../Zotlabs/Lib/Apps.php:354
+msgid "Invite"
+msgstr "Пригласить"
+
+#: ../../Zotlabs/Lib/Apps.php:355 ../../Zotlabs/Widget/Admin.php:26
+msgid "Features"
+msgstr "Функции"
+
+#: ../../Zotlabs/Lib/Apps.php:356 ../../addon/openid/MysqlProvider.php:69
+msgid "Language"
+msgstr "Язык"
+
+#: ../../Zotlabs/Lib/Apps.php:357
+msgid "Post"
+msgstr "Публикация"
+
+#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:58
+#: ../../addon/openid/MysqlProvider.php:59
+#: ../../addon/openid/MysqlProvider.php:60
+msgid "Profile Photo"
+msgstr "Фотография профиля"
+
+#: ../../Zotlabs/Lib/Apps.php:360 ../../include/features.php:397
+msgid "Profiles"
+msgstr "Редактировать профиль"
+
+#: ../../Zotlabs/Lib/Apps.php:362
+msgid "Notifications"
+msgstr "Оповещения"
+
+#: ../../Zotlabs/Lib/Apps.php:363
+msgid "Order Apps"
+msgstr "Порядок приложений"
+
+#: ../../Zotlabs/Lib/Apps.php:364 ../../include/features.php:82
+msgid "CalDAV"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:365
+msgid "CardDAV"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:367
+msgid "Guest Access"
+msgstr "Гостевой доступ"
+
+#: ../../Zotlabs/Lib/Apps.php:368 ../../Zotlabs/Widget/Notes.php:21
+msgid "Notes"
+msgstr "Заметки"
+
+#: ../../Zotlabs/Lib/Apps.php:369
+msgid "OAuth Apps Manager"
+msgstr "Менеджер OAuth"
+
+#: ../../Zotlabs/Lib/Apps.php:370
+msgid "OAuth2 Apps Manager"
+msgstr "Менеджер OAuth2"
+
+#: ../../Zotlabs/Lib/Apps.php:371
+msgid "PDL Editor"
+msgstr "Редактор PDL"
+
+#: ../../Zotlabs/Lib/Apps.php:373
+msgid "Premium Channel"
+msgstr "Премиальный канал"
+
+#: ../../Zotlabs/Lib/Apps.php:375
+msgid "My Chatrooms"
+msgstr "Мои чаты"
+
+#: ../../Zotlabs/Lib/Apps.php:376
+msgid "Channel Export"
+msgstr "Экспорт канала"
+
+#: ../../Zotlabs/Lib/Apps.php:553
+msgid "Purchase"
+msgstr "Купить"
+
+#: ../../Zotlabs/Lib/Apps.php:558
+msgid "Undelete"
+msgstr "Восстановить"
+
+#: ../../Zotlabs/Lib/Apps.php:567
+msgid "Add to app-tray"
+msgstr "Добавить в app-tray"
+
+#: ../../Zotlabs/Lib/Apps.php:568
+msgid "Remove from app-tray"
+msgstr "Удалить из app-tray"
+
+#: ../../Zotlabs/Lib/Apps.php:569
+msgid "Pin to navbar"
+msgstr "Добавить на панель навигации"
+
+#: ../../Zotlabs/Lib/Apps.php:570
+msgid "Unpin from navbar"
+msgstr "Удалить с панели навигации"
+
+#: ../../Zotlabs/Lib/Permcat.php:82
+msgctxt "permcat"
+msgid "default"
+msgstr "по умолчанию"
+
+#: ../../Zotlabs/Lib/Permcat.php:133
+msgctxt "permcat"
+msgid "follower"
+msgstr "поклонник"
+
+#: ../../Zotlabs/Lib/Permcat.php:137
+msgctxt "permcat"
+msgid "contributor"
+msgstr "участник"
+
+#: ../../Zotlabs/Lib/Permcat.php:141
+msgctxt "permcat"
+msgid "publisher"
+msgstr "издатель"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:42
+#: ../../Zotlabs/Lib/NativeWikiPage.php:94
+msgid "(No Title)"
+msgstr "(нет заголовка)"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:109
+msgid "Wiki page create failed."
+msgstr "Не удалось создать страницу Wiki."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:122
+msgid "Wiki not found."
+msgstr "Wiki не найдена."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:133
+msgid "Destination name already exists"
+msgstr "Имя назначения уже существует"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:166
+#: ../../Zotlabs/Lib/NativeWikiPage.php:362
+msgid "Page not found"
+msgstr "Страница не найдена."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:197
+msgid "Error reading page content"
+msgstr "Ошибка чтения содержимого страницы"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:353
+#: ../../Zotlabs/Lib/NativeWikiPage.php:402
+#: ../../Zotlabs/Lib/NativeWikiPage.php:469
+#: ../../Zotlabs/Lib/NativeWikiPage.php:510
+msgid "Error reading wiki"
+msgstr "Ошибка чтения Wiki"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:390
+msgid "Page update failed."
+msgstr "Не удалось обновить страницу."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:424
+msgid "Nothing deleted"
+msgstr "Ничего не удалено"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:490
+msgid "Compare: object not found."
+msgstr "Сравнение: объект не найден."
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:496
+msgid "Page updated"
+msgstr "Страница обновлена"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:499
+msgid "Untitled"
+msgstr "Не озаглавлено"
+
+#: ../../Zotlabs/Lib/NativeWikiPage.php:505
+msgid "Wiki resource_id required for git commit"
+msgstr "Требуется resource_id Wiki для отправки в Git"
-#: ../../Zotlabs/Widget/Wiki_page_history.php:23
#: ../../Zotlabs/Lib/NativeWikiPage.php:562
+#: ../../Zotlabs/Widget/Wiki_page_history.php:23
msgctxt "wiki_history"
msgid "Message"
msgstr "Сообщение"
-#: ../../Zotlabs/Widget/Wiki_page_history.php:24
#: ../../Zotlabs/Lib/NativeWikiPage.php:563
+#: ../../Zotlabs/Widget/Wiki_page_history.php:24
msgid "Date"
msgstr "Дата"
-#: ../../Zotlabs/Widget/Wiki_page_history.php:26
#: ../../Zotlabs/Lib/NativeWikiPage.php:565
+#: ../../Zotlabs/Widget/Wiki_page_history.php:26
msgid "Compare"
msgstr "Сравнить"
-#: ../../Zotlabs/Access/Permissions.php:56
-msgid "Can view my channel stream and posts"
-msgstr "Может просматривать мой поток и сообщения"
-
-#: ../../Zotlabs/Access/Permissions.php:57
-msgid "Can send me their channel stream and posts"
-msgstr "Может присылать мне свои потоки и сообщения"
-
-#: ../../Zotlabs/Access/Permissions.php:58
-msgid "Can view my default channel profile"
-msgstr "Может просматривать мой стандартный профиль канала"
-
-#: ../../Zotlabs/Access/Permissions.php:59
-msgid "Can view my connections"
-msgstr "Может просматривать мои контакты"
-
-#: ../../Zotlabs/Access/Permissions.php:60
-msgid "Can view my file storage and photos"
-msgstr "Может просматривать мое хранилище файлов"
+#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:735
+#: ../../include/bbcode.php:905
+msgid "Different viewers will see this text differently"
+msgstr "Различные зрители увидят этот текст по-разному"
-#: ../../Zotlabs/Access/Permissions.php:61
-msgid "Can upload/modify my file storage and photos"
-msgstr "Может загружать/изменять мои файлы и фотографии в хранилище"
+#: ../../Zotlabs/Lib/PermissionDescription.php:34
+#: ../../include/acl_selectors.php:33
+msgid "Visible to your default audience"
+msgstr "Видно вашей аудитории по умолчанию."
-#: ../../Zotlabs/Access/Permissions.php:62
-msgid "Can view my channel webpages"
-msgstr "Может просматривать мои веб-страницы"
+#: ../../Zotlabs/Lib/PermissionDescription.php:107
+#: ../../include/acl_selectors.php:106
+msgid "Only me"
+msgstr "Только мне"
-#: ../../Zotlabs/Access/Permissions.php:63
-msgid "Can view my wiki pages"
-msgstr "Может просматривать мои вики-страницы"
+#: ../../Zotlabs/Lib/PermissionDescription.php:108
+msgid "Public"
+msgstr "Общедоступно"
-#: ../../Zotlabs/Access/Permissions.php:64
-msgid "Can create/edit my channel webpages"
-msgstr "Может редактировать мои веб-страницы"
+#: ../../Zotlabs/Lib/PermissionDescription.php:109
+msgid "Anybody in the $Projectname network"
+msgstr "Любому в сети $Projectname"
-#: ../../Zotlabs/Access/Permissions.php:65
-msgid "Can write to my wiki pages"
-msgstr "Может редактировать мои вики-страницы"
+#: ../../Zotlabs/Lib/PermissionDescription.php:110
+#, php-format
+msgid "Any account on %s"
+msgstr "Любой аккаунт в %s"
-#: ../../Zotlabs/Access/Permissions.php:66
-msgid "Can post on my channel (wall) page"
-msgstr "Может публиковать на моей странице канала"
+#: ../../Zotlabs/Lib/PermissionDescription.php:111
+msgid "Any of my connections"
+msgstr "Любой из моих контактов"
-#: ../../Zotlabs/Access/Permissions.php:67
-msgid "Can comment on or like my posts"
-msgstr "Может прокомментировать или отмечать как понравившиеся мои посты"
+#: ../../Zotlabs/Lib/PermissionDescription.php:112
+msgid "Only connections I specifically allow"
+msgstr "Только те контакты, кому я дам разрешение"
-#: ../../Zotlabs/Access/Permissions.php:68
-msgid "Can send me private mail messages"
-msgstr "Может отправлять мне личные сообщения по эл. почте"
+#: ../../Zotlabs/Lib/PermissionDescription.php:113
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Любой аутентифицированный (может включать посетителей их других сетей)"
-#: ../../Zotlabs/Access/Permissions.php:69
-msgid "Can like/dislike profiles and profile things"
-msgstr "Может комментировать или отмечать как нравится/ненравится мой профиль"
+#: ../../Zotlabs/Lib/PermissionDescription.php:114
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Любые контакты включая те, которые вы ещё не одобрили"
-#: ../../Zotlabs/Access/Permissions.php:70
-msgid "Can forward to all my channel connections via ! mentions in posts"
-msgstr "Может пересылать всем подписчикам моего канала используя ! в публикациях"
+#: ../../Zotlabs/Lib/PermissionDescription.php:150
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr "Это настройка по умолчанию для аудитории ваших обычных потоков и публикаций"
-#: ../../Zotlabs/Access/Permissions.php:71
-msgid "Can chat with me"
-msgstr "Может общаться со мной в чате"
+#: ../../Zotlabs/Lib/PermissionDescription.php:151
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr "Это настройка по умолчанию для тех, кто может просматривать профиль вашего основного канала"
-#: ../../Zotlabs/Access/Permissions.php:72
-msgid "Can source my public posts in derived channels"
-msgstr "Может использовать мои публичные сообщения в клонированных лентах сообщений"
+#: ../../Zotlabs/Lib/PermissionDescription.php:152
+msgid "This is your default setting for who can view your connections"
+msgstr "Это настройка по умолчанию для тех, кто может просматривать ваши контакты"
-#: ../../Zotlabs/Access/Permissions.php:73
-msgid "Can administer my channel"
-msgstr "Может администрировать мой канал"
+#: ../../Zotlabs/Lib/PermissionDescription.php:153
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr "Это настройка по умолчанию для тех, кто может просматривать ваше хранилище файлов и фотографий"
-#: ../../Zotlabs/Access/PermissionRoles.php:283
-msgid "Social Networking"
-msgstr "Социальная Сеть"
+#: ../../Zotlabs/Lib/PermissionDescription.php:154
+msgid "This is your default setting for the audience of your webpages"
+msgstr "Это настройка по умолчанию для аудитории ваших веб-страниц"
-#: ../../Zotlabs/Access/PermissionRoles.php:284
-msgid "Social - Federation"
-msgstr "Социальная - Федерация"
+#: ../../Zotlabs/Lib/Libzotdir.php:160 ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Параметры каталога"
-#: ../../Zotlabs/Access/PermissionRoles.php:285
-msgid "Social - Mostly Public"
-msgstr "Социальная - В основном общественный"
+#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Безопасный режим"
-#: ../../Zotlabs/Access/PermissionRoles.php:286
-msgid "Social - Restricted"
-msgstr "Социальная - Ограниченный"
+#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Только публичные форумы"
-#: ../../Zotlabs/Access/PermissionRoles.php:287
-msgid "Social - Private"
-msgstr "Социальная - Частный"
+#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Только этот веб-сайт"
-#: ../../Zotlabs/Access/PermissionRoles.php:290
-msgid "Community Forum"
-msgstr "Форум сообщества"
+#: ../../Zotlabs/Lib/Group.php:28 ../../include/group.php:22
+msgid ""
+"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."
+msgstr "Удаленная группа с этим названием была восстановлена. Существующие разрешения пункт <strong>могут</strong> применяться к этой группе и к её будущих участников. Если это не то, чего вы хотели, пожалуйста, создайте другую группу с другим именем."
-#: ../../Zotlabs/Access/PermissionRoles.php:291
-msgid "Forum - Mostly Public"
-msgstr "Форум - В основном общественный"
+#: ../../Zotlabs/Lib/Group.php:270 ../../include/group.php:264
+msgid "Add new connections to this privacy group"
+msgstr "Добавить новые контакты в группу безопасности"
-#: ../../Zotlabs/Access/PermissionRoles.php:292
-msgid "Forum - Restricted"
-msgstr "Форум - Ограниченный"
+#: ../../Zotlabs/Lib/Group.php:302 ../../include/group.php:298
+msgid "edit"
+msgstr "редактировать"
-#: ../../Zotlabs/Access/PermissionRoles.php:293
-msgid "Forum - Private"
-msgstr "Форум - Частный"
+#: ../../Zotlabs/Lib/Group.php:325 ../../include/group.php:321
+msgid "Edit group"
+msgstr "Редактировать группу"
-#: ../../Zotlabs/Access/PermissionRoles.php:296
-msgid "Feed Republish"
-msgstr "Публиковать ленты новостей"
+#: ../../Zotlabs/Lib/Group.php:326 ../../include/group.php:322
+msgid "Add privacy group"
+msgstr "Добавить группу безопасности"
-#: ../../Zotlabs/Access/PermissionRoles.php:297
-msgid "Feed - Mostly Public"
-msgstr "Ленты новостей - В основном общественный"
+#: ../../Zotlabs/Lib/Group.php:327 ../../include/group.php:323
+msgid "Channels not in any privacy group"
+msgstr "Каналы не включены ни в одну группу безопасности"
-#: ../../Zotlabs/Access/PermissionRoles.php:298
-msgid "Feed - Restricted"
-msgstr "Ленты новостей - Ограниченный"
+#: ../../Zotlabs/Lib/Group.php:329 ../../Zotlabs/Widget/Savedsearch.php:84
+#: ../../include/group.php:325
+msgid "add"
+msgstr "добавить"
-#: ../../Zotlabs/Access/PermissionRoles.php:301
-msgid "Special Purpose"
-msgstr "Спец. назначение"
+#: ../../Zotlabs/Lib/Chatroom.php:23
+msgid "Missing room name"
+msgstr "Отсутствует название комнаты"
-#: ../../Zotlabs/Access/PermissionRoles.php:302
-msgid "Special - Celebrity/Soapbox"
-msgstr "Спец. назначение - Знаменитость/Soapbox"
+#: ../../Zotlabs/Lib/Chatroom.php:32
+msgid "Duplicate room name"
+msgstr "Название комнаты дублируется"
-#: ../../Zotlabs/Access/PermissionRoles.php:303
-msgid "Special - Group Repository"
-msgstr "Спец. назначение - Групповой репозиторий"
+#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90
+msgid "Invalid room specifier."
+msgstr "Неверный указатель комнаты."
-#: ../../Zotlabs/Access/PermissionRoles.php:307
-msgid "Custom/Expert Mode"
-msgstr "Экспертный режим"
+#: ../../Zotlabs/Lib/Chatroom.php:122
+msgid "Room not found."
+msgstr "Комната не найдена."
-#: ../../Zotlabs/Lib/DB_Upgrade.php:83
-#, php-format
-msgid "Update Error at %s"
-msgstr "Ошибка обновления на %s"
+#: ../../Zotlabs/Lib/Chatroom.php:143
+msgid "Room is full"
+msgstr "Комната переполнена"
-#: ../../Zotlabs/Lib/DB_Upgrade.php:89
+#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2591
#, php-format
-msgid "Update %s failed. See error logs."
-msgstr "Выполнение %s неудачно. Проверьте системный журнал."
+msgid "Unable to verify site signature for %s"
+msgstr "Невозможно проверить подпись сайта %s"
#: ../../Zotlabs/Lib/Enotify.php:60
msgid "$Projectname Notification"
msgstr "Оповещение $Projectname "
-#: ../../Zotlabs/Lib/Enotify.php:61
-#: ../../extend/addon/hzaddons/diaspora/p.php:48
-#: ../../extend/addon/hzaddons/diaspora/util.php:308
-#: ../../extend/addon/hzaddons/diaspora/util.php:321
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:313
+#: ../../addon/diaspora/util.php:326 ../../addon/diaspora/p.php:48
msgid "$projectname"
msgstr ""
@@ -11660,8 +8548,7 @@ msgstr ""
msgid "Thank You,"
msgstr "Спасибо,"
-#: ../../Zotlabs/Lib/Enotify.php:65
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:33
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33
#, php-format
msgid "%s Administrator"
msgstr "администратор %s"
@@ -11915,249 +8802,105 @@ msgstr "отредактировал публикацию датированну
msgid "edited a comment dated %s"
msgstr "отредактировал комментарий датированный %s"
-#: ../../Zotlabs/Lib/NativeWikiPage.php:42
-#: ../../Zotlabs/Lib/NativeWikiPage.php:94
-msgid "(No Title)"
-msgstr "(нет заголовка)"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:109
-msgid "Wiki page create failed."
-msgstr "Не удалось создать страницу Wiki."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:122
-msgid "Wiki not found."
-msgstr "Wiki не найдена."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:133
-msgid "Destination name already exists"
-msgstr "Имя назначения уже существует"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:166
-#: ../../Zotlabs/Lib/NativeWikiPage.php:362
-msgid "Page not found"
-msgstr "Страница не найдена."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:197
-msgid "Error reading page content"
-msgstr "Ошибка чтения содержимого страницы"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:353
-#: ../../Zotlabs/Lib/NativeWikiPage.php:402
-#: ../../Zotlabs/Lib/NativeWikiPage.php:469
-#: ../../Zotlabs/Lib/NativeWikiPage.php:510
-msgid "Error reading wiki"
-msgstr "Ошибка чтения Wiki"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:390
-msgid "Page update failed."
-msgstr "Не удалось обновить страницу."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:424
-msgid "Nothing deleted"
-msgstr "Ничего не удалено"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:490
-msgid "Compare: object not found."
-msgstr "Сравнение: объект не найден."
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:496
-msgid "Page updated"
-msgstr "Страница обновлена"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:499
-msgid "Untitled"
-msgstr "Не озаглавлено"
-
-#: ../../Zotlabs/Lib/NativeWikiPage.php:505
-msgid "Wiki resource_id required for git commit"
-msgstr "Требуется resource_id Wiki для отправки в Git"
-
-#: ../../Zotlabs/Lib/Permcat.php:82
-msgctxt "permcat"
-msgid "default"
-msgstr "по умолчанию"
-
-#: ../../Zotlabs/Lib/Permcat.php:133
-msgctxt "permcat"
-msgid "follower"
-msgstr "поклонник"
-
-#: ../../Zotlabs/Lib/Permcat.php:137
-msgctxt "permcat"
-msgid "contributor"
-msgstr "участник"
-
-#: ../../Zotlabs/Lib/Permcat.php:141
-msgctxt "permcat"
-msgid "publisher"
-msgstr "издатель"
-
-#: ../../Zotlabs/Lib/Apps.php:301
-msgid "Apps"
-msgstr "Приложения"
-
-#: ../../Zotlabs/Lib/Apps.php:304
-msgid "Site Admin"
-msgstr "Администратор сайта"
-
-#: ../../Zotlabs/Lib/Apps.php:305
-#: ../../extend/addon/hzaddons/buglink/buglink.php:16
-msgid "Report Bug"
-msgstr "Сообщить об ошибке"
-
-#: ../../Zotlabs/Lib/Apps.php:309
-msgid "Remote Diagnostics"
-msgstr "Удалённая диагностика"
-
-#: ../../Zotlabs/Lib/Apps.php:313
-msgid "Stream"
-msgstr "Поток"
-
-#: ../../Zotlabs/Lib/Apps.php:324
-msgid "Mail"
-msgstr "Переписка"
-
-#: ../../Zotlabs/Lib/Apps.php:327
-msgid "Chat"
-msgstr "Чат"
-
-#: ../../Zotlabs/Lib/Apps.php:329
-msgid "Probe"
-msgstr "Проба"
-
-#: ../../Zotlabs/Lib/Apps.php:330
-msgid "Suggest"
-msgstr "Предложить"
-
-#: ../../Zotlabs/Lib/Apps.php:331
-msgid "Random Channel"
-msgstr "Случайный канал"
-
-#: ../../Zotlabs/Lib/Apps.php:332
-msgid "Invite"
-msgstr "Пригласить"
-
-#: ../../Zotlabs/Lib/Apps.php:334
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:69
-msgid "Language"
-msgstr "Язык"
-
-#: ../../Zotlabs/Lib/Apps.php:335
-msgid "Post"
-msgstr "Публикация"
-
-#: ../../Zotlabs/Lib/Apps.php:336
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:58
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:59
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:60
-msgid "Profile Photo"
-msgstr "Фотография профиля"
-
-#: ../../Zotlabs/Lib/Apps.php:340
-msgid "Notifications"
-msgstr "Оповещения"
-
-#: ../../Zotlabs/Lib/Apps.php:341
-msgid "Order Apps"
-msgstr "Порядок приложений"
-
-#: ../../Zotlabs/Lib/Apps.php:343
-msgid "CardDAV"
-msgstr ""
-
-#: ../../Zotlabs/Lib/Apps.php:345
-msgid "Guest Access"
-msgstr "Гостевой доступ"
-
-#: ../../Zotlabs/Lib/Apps.php:347
-msgid "OAuth Apps Manager"
-msgstr "Менеджер OAuth"
-
-#: ../../Zotlabs/Lib/Apps.php:348
-msgid "OAuth2 Apps Manager"
-msgstr "Менеджер OAuth2"
-
-#: ../../Zotlabs/Lib/Apps.php:349
-msgid "PDL Editor"
-msgstr "Редактор PDL"
-
-#: ../../Zotlabs/Lib/Apps.php:351
-msgid "Premium Channel"
-msgstr "Премиальный канал"
-
-#: ../../Zotlabs/Lib/Apps.php:353
-msgid "My Chatrooms"
-msgstr "Мои чаты"
+#: ../../Zotlabs/Lib/NativeWiki.php:143
+msgid "Wiki updated successfully"
+msgstr "Wiki успешно обновлена"
-#: ../../Zotlabs/Lib/Apps.php:354
-msgid "Channel Export"
-msgstr "Экспорт канала"
+#: ../../Zotlabs/Lib/NativeWiki.php:197
+msgid "Wiki files deleted successfully"
+msgstr "Wiki успешно удалена"
-#: ../../Zotlabs/Lib/Apps.php:531
-msgid "Purchase"
-msgstr "Купить"
+#: ../../Zotlabs/Lib/DB_Upgrade.php:83
+#, php-format
+msgid "Update Error at %s"
+msgstr "Ошибка обновления на %s"
-#: ../../Zotlabs/Lib/Apps.php:536
-msgid "Undelete"
-msgstr "Восстановить"
+#: ../../Zotlabs/Lib/DB_Upgrade.php:89
+#, php-format
+msgid "Update %s failed. See error logs."
+msgstr "Выполнение %s неудачно. Проверьте системный журнал."
-#: ../../Zotlabs/Lib/Apps.php:545
-msgid "Add to app-tray"
-msgstr "Добавить в app-tray"
+#: ../../Zotlabs/Lib/ThreadItem.php:102 ../../include/conversation.php:700
+msgid "Private Message"
+msgstr "Личное сообщение"
-#: ../../Zotlabs/Lib/Apps.php:546
-msgid "Remove from app-tray"
-msgstr "Удалить из app-tray"
+#: ../../Zotlabs/Lib/ThreadItem.php:129
+msgid "Privacy conflict. Discretion advised."
+msgstr "Конфиликт настроек конфиденциальности."
-#: ../../Zotlabs/Lib/Apps.php:547
-msgid "Pin to navbar"
-msgstr "Добавить на панель навигации"
+#: ../../Zotlabs/Lib/ThreadItem.php:171 ../../Zotlabs/Storage/Browser.php:280
+msgid "Admin Delete"
+msgstr "Удалено администратором"
-#: ../../Zotlabs/Lib/Apps.php:548
-msgid "Unpin from navbar"
-msgstr "Удалить с панели навигации"
+#: ../../Zotlabs/Lib/ThreadItem.php:177 ../../include/conversation.php:690
+msgid "Select"
+msgstr "Выбрать"
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I will attend"
-msgstr "Я буду присутствовать"
+msgstr "Я буду участвовать"
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I will not attend"
-msgstr "Я не буду присутствовать"
+msgstr "Я не буду участвовать"
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I might attend"
msgstr "Я возможно буду присутствовать"
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I agree"
msgstr "Я согласен"
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I disagree"
msgstr "Я не согласен"
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I abstain"
msgstr "Я воздержался"
-#: ../../Zotlabs/Lib/ThreadItem.php:269
+#: ../../Zotlabs/Lib/ThreadItem.php:266 ../../include/conversation.php:695
+msgid "Toggle Star Status"
+msgstr "Переключить статус пометки"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:277 ../../include/conversation.php:707
+msgid "Message signature validated"
+msgstr "Подпись сообщения проверена"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:708
+msgid "Message signature incorrect"
+msgstr "Подпись сообщения неверная"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "Add Tag"
msgstr "Добавить тег"
-#: ../../Zotlabs/Lib/ThreadItem.php:294
+#: ../../Zotlabs/Lib/ThreadItem.php:290 ../../include/conversation.php:891
+msgid "Conversation Tools"
+msgstr "Инструменты общения"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:306 ../../include/taxonomy.php:575
+msgid "like"
+msgstr "нравится"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:576
+msgid "dislike"
+msgstr "не нравится"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:317
msgid "Share This"
msgstr "Поделиться этим"
-#: ../../Zotlabs/Lib/ThreadItem.php:294
+#: ../../Zotlabs/Lib/ThreadItem.php:317
msgid "share"
msgstr "поделиться"
-#: ../../Zotlabs/Lib/ThreadItem.php:303
+#: ../../Zotlabs/Lib/ThreadItem.php:327
msgid "Delivery Report"
msgstr "Отчёт о доставке"
-#: ../../Zotlabs/Lib/ThreadItem.php:323
+#: ../../Zotlabs/Lib/ThreadItem.php:347
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
@@ -12165,1486 +8908,3027 @@ msgstr[0] "%d комментарий"
msgstr[1] "%d комментария"
msgstr[2] "%d комментариев"
-#: ../../Zotlabs/Lib/ThreadItem.php:357 ../../Zotlabs/Lib/ThreadItem.php:358
+#: ../../Zotlabs/Lib/ThreadItem.php:381 ../../Zotlabs/Lib/ThreadItem.php:382
#, php-format
msgid "View %s's profile - %s"
msgstr "Просмотр %s профиля - %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:361
+#: ../../Zotlabs/Lib/ThreadItem.php:385
msgid "to"
msgstr "к"
-#: ../../Zotlabs/Lib/ThreadItem.php:362
+#: ../../Zotlabs/Lib/ThreadItem.php:386
msgid "via"
msgstr "через"
-#: ../../Zotlabs/Lib/ThreadItem.php:363
+#: ../../Zotlabs/Lib/ThreadItem.php:387
msgid "Wall-to-Wall"
msgstr "Стена-к-Стене"
-#: ../../Zotlabs/Lib/ThreadItem.php:364
+#: ../../Zotlabs/Lib/ThreadItem.php:388
msgid "via Wall-To-Wall:"
msgstr "через Стена-к-Стене:"
-#: ../../Zotlabs/Lib/ThreadItem.php:390
+#: ../../Zotlabs/Lib/ThreadItem.php:402 ../../include/conversation.php:766
+#, php-format
+msgid "from %s"
+msgstr "от %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:769
+#, php-format
+msgid "last edited: %s"
+msgstr "последнее редактирование: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:406 ../../include/conversation.php:770
+#, php-format
+msgid "Expires: %s"
+msgstr "Срок действия: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:414
msgid "Attend"
msgstr "Посетить"
-#: ../../Zotlabs/Lib/ThreadItem.php:391
+#: ../../Zotlabs/Lib/ThreadItem.php:415
msgid "Attendance Options"
msgstr "Параметры посещаемости"
-#: ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../Zotlabs/Lib/ThreadItem.php:416
msgid "Vote"
msgstr "Голосовать"
-#: ../../Zotlabs/Lib/ThreadItem.php:393
+#: ../../Zotlabs/Lib/ThreadItem.php:417
msgid "Voting Options"
msgstr "Параметры голосования"
-#: ../../Zotlabs/Lib/ThreadItem.php:414
-#: ../../extend/addon/hzaddons/bookmarker/bookmarker.php:38
+#: ../../Zotlabs/Lib/ThreadItem.php:439
+#: ../../addon/bookmarker/bookmarker.php:38
msgid "Save Bookmarks"
msgstr "Сохранить закладки"
-#: ../../Zotlabs/Lib/ThreadItem.php:415
+#: ../../Zotlabs/Lib/ThreadItem.php:440
msgid "Add to Calendar"
msgstr "Добавить в календарь"
-#: ../../Zotlabs/Lib/ThreadItem.php:776
+#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483
+msgid "This is an unsaved preview"
+msgstr "Это несохранённый просмотр"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:501 ../../include/js_strings.php:7
+#, php-format
+msgid "%s show all"
+msgstr "%s показать всё"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:796 ../../addon/hsse/hsse.php:200
+#: ../../include/conversation.php:1406
+msgid "Bold"
+msgstr "Жирный"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:201
+#: ../../include/conversation.php:1407
+msgid "Italic"
+msgstr "Курсив"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:202
+#: ../../include/conversation.php:1408
+msgid "Underline"
+msgstr "Подчеркнутый"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:203
+#: ../../include/conversation.php:1409
+msgid "Quote"
+msgstr "Цитата"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:204
+#: ../../include/conversation.php:1410
+msgid "Code"
+msgstr "Код"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:801
msgid "Image"
msgstr "Изображение"
-#: ../../Zotlabs/Lib/ThreadItem.php:778
+#: ../../Zotlabs/Lib/ThreadItem.php:802 ../../addon/hsse/hsse.php:205
+#: ../../include/conversation.php:1411
+msgid "Attach/Upload file"
+msgstr "Прикрепить/загрузить файл"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:803
msgid "Insert Link"
msgstr "Вставить ссылку"
-#: ../../Zotlabs/Lib/ThreadItem.php:779
+#: ../../Zotlabs/Lib/ThreadItem.php:804
msgid "Video"
msgstr "Видео"
-#: ../../Zotlabs/Lib/ThreadItem.php:789
+#: ../../Zotlabs/Lib/ThreadItem.php:814
msgid "Your full name (required)"
msgstr "Ваше полное имя (требуется)"
-#: ../../Zotlabs/Lib/ThreadItem.php:790
+#: ../../Zotlabs/Lib/ThreadItem.php:815
msgid "Your email address (required)"
msgstr "Ваш адрес электронной почты (требуется)"
-#: ../../Zotlabs/Lib/ThreadItem.php:791
+#: ../../Zotlabs/Lib/ThreadItem.php:816
msgid "Your website URL (optional)"
msgstr "URL вашего вебсайта (необязательно)"
-#: ../../Zotlabs/Lib/Chatroom.php:23
-msgid "Missing room name"
-msgstr "Отсутствует название комнаты"
+#: ../../Zotlabs/Zot/Auth.php:152
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please "
+"logout and retry."
+msgstr "Удалённая аутентификация заблокирована. Вы вошли на этот сайт локально. Пожалуйста, выйдите и попробуйте ещё раз."
-#: ../../Zotlabs/Lib/Chatroom.php:32
-msgid "Duplicate room name"
-msgstr "Название комнаты дублируется"
+#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76
+#: ../../addon/openid/Mod_Openid.php:178
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Добро пожаловать %s. Удаленная аутентификация успешно завершена."
-#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90
-msgid "Invalid room specifier."
-msgstr "Неверный указатель комнаты."
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:289
+msgid "parent"
+msgstr "источник"
-#: ../../Zotlabs/Lib/Chatroom.php:122
-msgid "Room not found."
-msgstr "Комната не найдена."
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2941
+msgid "Collection"
+msgstr "Коллекция"
-#: ../../Zotlabs/Lib/Chatroom.php:143
-msgid "Room is full"
-msgstr "Комната переполнена"
+#: ../../Zotlabs/Storage/Browser.php:134
+msgid "Principal"
+msgstr "Субъект"
-#: ../../Zotlabs/Lib/PermissionDescription.php:108
-msgid "Public"
-msgstr "Общедоступно"
+#: ../../Zotlabs/Storage/Browser.php:137
+msgid "Addressbook"
+msgstr "Адресная книга"
-#: ../../Zotlabs/Lib/PermissionDescription.php:109
-msgid "Anybody in the $Projectname network"
-msgstr "Любому в сети $Projectname"
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:463
+#: ../../include/nav.php:466
+msgid "Calendar"
+msgstr "Календарь"
-#: ../../Zotlabs/Lib/PermissionDescription.php:110
+#: ../../Zotlabs/Storage/Browser.php:143
+msgid "Schedule Inbox"
+msgstr "План занятий входящий"
+
+#: ../../Zotlabs/Storage/Browser.php:146
+msgid "Schedule Outbox"
+msgstr "План занятий исходящий"
+
+#: ../../Zotlabs/Storage/Browser.php:273
+msgid "Total"
+msgstr "Всего"
+
+#: ../../Zotlabs/Storage/Browser.php:275
+msgid "Shared"
+msgstr "Общие"
+
+#: ../../Zotlabs/Storage/Browser.php:277
+msgid "Add Files"
+msgstr "Добавить файлы"
+
+#: ../../Zotlabs/Storage/Browser.php:361
#, php-format
-msgid "Any account on %s"
-msgstr "Любой аккаунт в %s"
+msgid "You are using %1$s of your available file storage."
+msgstr "Вы используете %1$s из доступного вам хранилища файлов."
-#: ../../Zotlabs/Lib/PermissionDescription.php:111
-msgid "Any of my connections"
-msgstr "Любой из моих контактов"
+#: ../../Zotlabs/Storage/Browser.php:366
+#, php-format
+msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
+msgstr "Вы используете %1$s из %2$s доступного хранилища файлов (%3$s&#37;)."
-#: ../../Zotlabs/Lib/PermissionDescription.php:112
-msgid "Only connections I specifically allow"
-msgstr "Только те контакты, кому я дам разрешение"
+#: ../../Zotlabs/Storage/Browser.php:377
+msgid "WARNING:"
+msgstr "Предупреждение:"
-#: ../../Zotlabs/Lib/PermissionDescription.php:113
-msgid "Anybody authenticated (could include visitors from other networks)"
-msgstr "Любой аутентифицированный (может включать посетителей их других сетей)"
+#: ../../Zotlabs/Storage/Browser.php:389
+msgid "Create new folder"
+msgstr "Создать новую папку"
-#: ../../Zotlabs/Lib/PermissionDescription.php:114
-msgid "Any connections including those who haven't yet been approved"
-msgstr "Любые контакты включая те, которые вы ещё не одобрили"
+#: ../../Zotlabs/Storage/Browser.php:391
+msgid "Upload file"
+msgstr "Загрузить файл"
-#: ../../Zotlabs/Lib/PermissionDescription.php:150
-msgid ""
-"This is your default setting for the audience of your normal stream, and "
-"posts."
-msgstr "Это настройка по умолчанию для аудитории ваших обычных потоков и публикаций"
+#: ../../Zotlabs/Storage/Browser.php:404
+msgid "Drop files here to immediately upload"
+msgstr "Поместите файлы сюда для немедленной загрузки"
-#: ../../Zotlabs/Lib/PermissionDescription.php:151
-msgid ""
-"This is your default setting for who can view your default channel profile"
-msgstr "Это настройка по умолчанию для тех, кто может просматривать профиль вашего основного канала"
+#: ../../Zotlabs/Widget/Forums.php:100
+#: ../../Zotlabs/Widget/Activity_filter.php:73
+#: ../../Zotlabs/Widget/Notifications.php:119
+#: ../../Zotlabs/Widget/Notifications.php:120
+msgid "Forums"
+msgstr "Форумы"
-#: ../../Zotlabs/Lib/PermissionDescription.php:152
-msgid "This is your default setting for who can view your connections"
-msgstr "Это настройка по умолчанию для тех, кто может просматривать ваши контакты"
+#: ../../Zotlabs/Widget/Cdav.php:37
+msgid "Select Channel"
+msgstr "Выбрать канал"
-#: ../../Zotlabs/Lib/PermissionDescription.php:153
-msgid ""
-"This is your default setting for who can view your file storage and photos"
-msgstr "Это настройка по умолчанию для тех, кто может просматривать ваше хранилище файлов и фотографий"
+#: ../../Zotlabs/Widget/Cdav.php:42
+msgid "Read-write"
+msgstr "Чтение-запись"
-#: ../../Zotlabs/Lib/PermissionDescription.php:154
-msgid "This is your default setting for the audience of your webpages"
-msgstr "Это настройка по умолчанию для аудитории ваших веб-страниц"
+#: ../../Zotlabs/Widget/Cdav.php:43
+msgid "Read-only"
+msgstr "Только чтение"
-#: ../../Zotlabs/Lib/Techlevels.php:10
-msgid "0. Beginner/Basic"
-msgstr "Начинающий / Базовый"
+#: ../../Zotlabs/Widget/Cdav.php:117
+msgid "My Calendars"
+msgstr "Мои календари"
-#: ../../Zotlabs/Lib/Techlevels.php:11
-msgid "1. Novice - not skilled but willing to learn"
-msgstr "1. Новичок - не опытный, но желающий учиться"
+#: ../../Zotlabs/Widget/Cdav.php:119
+msgid "Shared Calendars"
+msgstr "Общие календари"
-#: ../../Zotlabs/Lib/Techlevels.php:12
-msgid "2. Intermediate - somewhat comfortable"
-msgstr "2. Промежуточный - более удобный"
+#: ../../Zotlabs/Widget/Cdav.php:123
+msgid "Share this calendar"
+msgstr "Поделиться этим календарём"
-#: ../../Zotlabs/Lib/Techlevels.php:13
-msgid "3. Advanced - very comfortable"
-msgstr "3. Продвинутый - очень удобный"
+#: ../../Zotlabs/Widget/Cdav.php:125
+msgid "Calendar name and color"
+msgstr "Имя и цвет календаря"
-#: ../../Zotlabs/Lib/Techlevels.php:14
-msgid "4. Expert - I can write computer code"
-msgstr "4. Эксперт - я умею программировать"
+#: ../../Zotlabs/Widget/Cdav.php:127
+msgid "Create new calendar"
+msgstr "Создать новый календарь"
-#: ../../Zotlabs/Lib/Techlevels.php:15
-msgid "5. Wizard - I probably know more than you do"
-msgstr "5. Волшебник - возможно я знаю больше чем ты"
+#: ../../Zotlabs/Widget/Cdav.php:129
+msgid "Calendar Name"
+msgstr "Имя календаря"
-#: ../../Zotlabs/Lib/NativeWiki.php:143
-msgid "Wiki updated successfully"
-msgstr "Wiki успешно обновлена"
+#: ../../Zotlabs/Widget/Cdav.php:130
+msgid "Calendar Tools"
+msgstr "Инструменты календаря"
-#: ../../Zotlabs/Lib/NativeWiki.php:197
-msgid "Wiki files deleted successfully"
-msgstr "Wiki успешно удалена"
+#: ../../Zotlabs/Widget/Cdav.php:131
+msgid "Import calendar"
+msgstr "Импортировать календарь"
-#: ../../extend/addon/hzaddons/mdpost/mdpost.php:42
-msgid "Use markdown for editing posts"
-msgstr "Использовать язык разметки Markdown для редактирования публикаций"
+#: ../../Zotlabs/Widget/Cdav.php:132
+msgid "Select a calendar to import to"
+msgstr "Выбрать календарь для импорта в"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:42
-msgid "Post to Dreamwidth"
-msgstr "Публиковать в Dreamwidth"
+#: ../../Zotlabs/Widget/Cdav.php:159
+msgid "Addressbooks"
+msgstr "Адресные книги"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:73
-msgid "Enable Dreamwidth Post Plugin"
-msgstr "Включить плагин публикаций Dreamwidth"
+#: ../../Zotlabs/Widget/Cdav.php:161
+msgid "Addressbook name"
+msgstr "Имя адресной книги"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:77
-msgid "Dreamwidth username"
-msgstr "Имя пользователя Dreamwidth"
+#: ../../Zotlabs/Widget/Cdav.php:163
+msgid "Create new addressbook"
+msgstr "Создать новую адресную книгу"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:81
-msgid "Dreamwidth password"
-msgstr "Пароль Dreamwidth"
+#: ../../Zotlabs/Widget/Cdav.php:164
+msgid "Addressbook Name"
+msgstr "Имя адресной книги"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:85
-msgid "Post to Dreamwidth by default"
-msgstr "Публиковать в Dreamwidth по умолчанию"
+#: ../../Zotlabs/Widget/Cdav.php:166
+msgid "Addressbook Tools"
+msgstr "Инструменты адресной книги"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:89
-msgid "Dreamwidth Post Settings"
-msgstr "Настройки публикаций в Dreamwidth"
+#: ../../Zotlabs/Widget/Cdav.php:167
+msgid "Import addressbook"
+msgstr "Импортировать адресную книгу"
-#: ../../extend/addon/hzaddons/donate/donate.php:21
-msgid "Project Servers and Resources"
-msgstr "Серверы и ресурсы проекта"
+#: ../../Zotlabs/Widget/Cdav.php:168
+msgid "Select an addressbook to import to"
+msgstr "Выбрать адресную книгу для импорта в"
-#: ../../extend/addon/hzaddons/donate/donate.php:22
-msgid "Project Creator and Tech Lead"
-msgstr "Создатель проекта и технический руководитель"
+#: ../../Zotlabs/Widget/Appcategories.php:43
+#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139
+#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409
+#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511
+#: ../../include/taxonomy.php:532
+msgid "Categories"
+msgstr "Категории"
+
+#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31
+#: ../../widget/Netselect/Netselect.php:26 ../../include/contact_widgets.php:56
+#: ../../include/contact_widgets.php:99 ../../include/contact_widgets.php:142
+#: ../../include/contact_widgets.php:187
+msgid "Everything"
+msgstr "Всё"
+
+#: ../../Zotlabs/Widget/Eventstools.php:13
+msgid "Events Tools"
+msgstr "Инструменты для событий"
+
+#: ../../Zotlabs/Widget/Eventstools.php:14
+msgid "Export Calendar"
+msgstr "Экспортировать календарь"
+
+#: ../../Zotlabs/Widget/Eventstools.php:15
+msgid "Import Calendar"
+msgstr "Импортировать календарь"
+
+#: ../../Zotlabs/Widget/Suggestedchats.php:32
+msgid "Suggested Chatrooms"
+msgstr "Рекомендуемые чаты"
+
+#: ../../Zotlabs/Widget/Hq_controls.php:14
+msgid "HQ Control Panel"
+msgstr "Панель управления HQ"
+
+#: ../../Zotlabs/Widget/Hq_controls.php:17
+msgid "Create a new post"
+msgstr "Создать новую публикацию"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:13
+msgid "Private Mail Menu"
+msgstr "Меню личной переписки"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:15
+msgid "Combined View"
+msgstr "Комбинированный вид"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:20
+msgid "Inbox"
+msgstr "Входящие"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:25
+msgid "Outbox"
+msgstr "Исходящие"
+
+#: ../../Zotlabs/Widget/Mailmenu.php:30
+msgid "New Message"
+msgstr "Новое сообщение"
+
+#: ../../Zotlabs/Widget/Chatroom_list.php:20
+msgid "Overview"
+msgstr "Обзор"
+
+#: ../../Zotlabs/Widget/Rating.php:51
+msgid "Rating Tools"
+msgstr "Инструменты оценки"
+
+#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57
+msgid "Rate Me"
+msgstr "Оценить меня"
+
+#: ../../Zotlabs/Widget/Rating.php:60
+msgid "View Ratings"
+msgstr "Просмотр оценок"
+
+#: ../../Zotlabs/Widget/Activity.php:50
+msgctxt "widget"
+msgid "Activity"
+msgstr "Активность"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:36
+#, php-format
+msgid "Show posts related to the %s privacy group"
+msgstr "Показывать публикации относящиеся к группе безопасности %s"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:45
+msgid "Show my privacy groups"
+msgstr "Показывать мои группы безопасности"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:66
+msgid "Show posts to this forum"
+msgstr "Показывать публикации этого форума"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:77
+msgid "Show forums"
+msgstr "Показывать форумы"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:91
+msgid "Starred Posts"
+msgstr "Отмеченные публикации"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:95
+msgid "Show posts that I have starred"
+msgstr "Показывать публикации которые я отметил"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:106
+msgid "Personal Posts"
+msgstr "Личные публикации"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:110
+msgid "Show posts that mention or involve me"
+msgstr "Показывать публикации где вы были упомянуты или привлечены"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:131
+#, php-format
+msgid "Show posts that I have filed to %s"
+msgstr "Показывать публикации которые я добавил в %s"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:137
+#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
+#: ../../include/features.php:325
+msgid "Saved Folders"
+msgstr "Сохранённые каталоги"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:141
+msgid "Show filed post categories"
+msgstr "Показывать категории добавленных публикаций"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:155
+msgid "Panel search"
+msgstr "Панель поиска"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:165
+msgid "Filter by name"
+msgstr "Отфильтровать по имени"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:180
+msgid "Remove active filter"
+msgstr "Удалить активный фильтр"
+
+#: ../../Zotlabs/Widget/Activity_filter.php:196
+msgid "Stream Filters"
+msgstr "Фильтры потока"
+
+#: ../../Zotlabs/Widget/Follow.php:22
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "У вас есть %1$.0f из %2$.0f разрешенных контактов."
+
+#: ../../Zotlabs/Widget/Follow.php:29
+msgid "Add New Connection"
+msgstr "Добавить новый контакт"
+
+#: ../../Zotlabs/Widget/Follow.php:30
+msgid "Enter channel address"
+msgstr "Введите адрес канала"
+
+#: ../../Zotlabs/Widget/Follow.php:31
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Пример: ivan@example.com, http://example.com/ivan"
+
+#: ../../Zotlabs/Widget/Archive.php:43
+msgid "Archives"
+msgstr "Архивы"
+
+#: ../../Zotlabs/Widget/Conversations.php:17
+msgid "Received Messages"
+msgstr "Полученные сообщения"
+
+#: ../../Zotlabs/Widget/Conversations.php:21
+msgid "Sent Messages"
+msgstr "Отправленные сообщения"
+
+#: ../../Zotlabs/Widget/Conversations.php:25
+msgid "Conversations"
+msgstr "Беседы"
+
+#: ../../Zotlabs/Widget/Conversations.php:37
+msgid "No messages."
+msgstr "Сообщений нет."
+
+#: ../../Zotlabs/Widget/Conversations.php:57
+msgid "Delete conversation"
+msgstr "Удалить беседу"
+
+#: ../../Zotlabs/Widget/Chatroom_members.php:11
+msgid "Chat Members"
+msgstr "Участники чата"
+
+#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58
+msgid "photo/image"
+msgstr "фотография / изображение"
+
+#: ../../Zotlabs/Widget/Savedsearch.php:75
+msgid "Remove term"
+msgstr "Удалить термин"
+
+#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:317
+msgid "Saved Searches"
+msgstr "Сохранённые поиски"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:34
+#: ../../Zotlabs/Widget/Wiki_pages.php:91
+msgid "Add new page"
+msgstr "Добавить новую страницу"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:85
+msgid "Wiki Pages"
+msgstr "Wiki страницы"
+
+#: ../../Zotlabs/Widget/Wiki_pages.php:96
+msgid "Page name"
+msgstr "Название страницы"
+
+#: ../../Zotlabs/Widget/Affinity.php:54
+msgid "Refresh"
+msgstr "Обновить"
+
+#: ../../Zotlabs/Widget/Tasklist.php:23
+msgid "Tasks"
+msgstr "Задачи"
+
+#: ../../Zotlabs/Widget/Suggestions.php:51
+msgid "Suggestions"
+msgstr "Рекомендации"
+
+#: ../../Zotlabs/Widget/Suggestions.php:52
+msgid "See more..."
+msgstr "Просмотреть больше..."
+
+#: ../../Zotlabs/Widget/Activity_order.php:90
+msgid "Commented Date"
+msgstr "По комментариям"
+
+#: ../../Zotlabs/Widget/Activity_order.php:94
+msgid "Order by last commented date"
+msgstr "Сортировка по дате последнего комментария"
+
+#: ../../Zotlabs/Widget/Activity_order.php:97
+msgid "Posted Date"
+msgstr "По публикациям"
+
+#: ../../Zotlabs/Widget/Activity_order.php:101
+msgid "Order by last posted date"
+msgstr "Сортировка по дате последней публикации"
+
+#: ../../Zotlabs/Widget/Activity_order.php:104
+msgid "Date Unthreaded"
+msgstr "По порядку"
+
+#: ../../Zotlabs/Widget/Activity_order.php:108
+msgid "Order unthreaded by date"
+msgstr "Сортировка в порядке поступления"
+
+#: ../../Zotlabs/Widget/Activity_order.php:123
+msgid "Stream Order"
+msgstr "Упорядочить поток"
+
+#: ../../Zotlabs/Widget/Cover_photo.php:65
+msgid "Click to show more"
+msgstr "Нажмите чтобы показать больше"
+
+#: ../../Zotlabs/Widget/Tagcloud.php:22 ../../include/taxonomy.php:320
+#: ../../include/taxonomy.php:449 ../../include/taxonomy.php:470
+msgid "Tags"
+msgstr "Теги"
+
+#: ../../Zotlabs/Widget/Appstore.php:11
+msgid "App Collections"
+msgstr "Коллекции приложений"
+
+#: ../../Zotlabs/Widget/Appstore.php:13
+msgid "Installed apps"
+msgstr "Установленные приложения"
+
+#: ../../Zotlabs/Widget/Newmember.php:31
+msgid "Profile Creation"
+msgstr "Создание профиля"
+
+#: ../../Zotlabs/Widget/Newmember.php:33
+msgid "Upload profile photo"
+msgstr "Загрузить фотографию профиля"
+
+#: ../../Zotlabs/Widget/Newmember.php:34
+msgid "Upload cover photo"
+msgstr "Загрузить фотографию обложки"
+
+#: ../../Zotlabs/Widget/Newmember.php:35 ../../include/nav.php:111
+msgid "Edit your profile"
+msgstr "Редактировать профиль"
+
+#: ../../Zotlabs/Widget/Newmember.php:38
+msgid "Find and Connect with others"
+msgstr "Найти и вступить в контакт"
+
+#: ../../Zotlabs/Widget/Newmember.php:40
+msgid "View the directory"
+msgstr "Просмотреть каталог"
+
+#: ../../Zotlabs/Widget/Newmember.php:42
+msgid "Manage your connections"
+msgstr "Управление вашими контактами"
+
+#: ../../Zotlabs/Widget/Newmember.php:45
+msgid "Communicate"
+msgstr "Связаться"
+
+#: ../../Zotlabs/Widget/Newmember.php:47
+msgid "View your channel homepage"
+msgstr "Домашняя страница канала"
+
+#: ../../Zotlabs/Widget/Newmember.php:48
+msgid "View your network stream"
+msgstr "Просмотреть ваш сетевой поток"
+
+#: ../../Zotlabs/Widget/Newmember.php:54
+msgid "Documentation"
+msgstr "Документация"
+
+#: ../../Zotlabs/Widget/Newmember.php:57
+msgid "Missing Features?"
+msgstr "Отсутствует функция?"
+
+#: ../../Zotlabs/Widget/Newmember.php:59
+msgid "Pin apps to navigation bar"
+msgstr "Прикрепить приложение к панели"
+
+#: ../../Zotlabs/Widget/Newmember.php:60
+msgid "Install more apps"
+msgstr "Установить больше приложений"
+
+#: ../../Zotlabs/Widget/Newmember.php:71
+msgid "View public stream"
+msgstr "Просмотреть публичный поток"
+
+#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60
+msgid "Member registrations waiting for confirmation"
+msgstr "Регистрации участников, ожидающие подверждения"
+
+#: ../../Zotlabs/Widget/Admin.php:29
+msgid "Inspect queue"
+msgstr "Просмотр очереди"
+
+#: ../../Zotlabs/Widget/Admin.php:31
+msgid "DB updates"
+msgstr "Обновление базы данных"
+
+#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:189
+msgid "Admin"
+msgstr "Администрирование"
+
+#: ../../Zotlabs/Widget/Admin.php:56
+msgid "Addon Features"
+msgstr "Настройки расширений"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:32
+msgid "Account settings"
+msgstr "Настройки аккаунта"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:38
+msgid "Channel settings"
+msgstr "Настройки канала"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:46
+msgid "Display settings"
+msgstr "Настройки отображения"
+
+#: ../../Zotlabs/Widget/Settings_menu.php:53
+msgid "Manage locations"
+msgstr "Управление местоположением"
+
+#: ../../Zotlabs/Widget/Bookmarkedchats.php:24
+msgid "Bookmarked Chatrooms"
+msgstr "Закладки чатов"
+
+#: ../../Zotlabs/Widget/Notifications.php:16
+msgid "New Network Activity"
+msgstr "Новая сетевая активность"
+
+#: ../../Zotlabs/Widget/Notifications.php:17
+msgid "New Network Activity Notifications"
+msgstr "Новые уведомления о сетевой активности"
+
+#: ../../Zotlabs/Widget/Notifications.php:20
+msgid "View your network activity"
+msgstr "Просмотреть вашу сетевую активность"
+
+#: ../../Zotlabs/Widget/Notifications.php:23
+msgid "Mark all notifications read"
+msgstr "Пометить уведомления как прочитанные"
+
+#: ../../Zotlabs/Widget/Notifications.php:26
+#: ../../Zotlabs/Widget/Notifications.php:45
+#: ../../Zotlabs/Widget/Notifications.php:152
+msgid "Show new posts only"
+msgstr "Показывать только новые публикации"
+
+#: ../../Zotlabs/Widget/Notifications.php:27
+#: ../../Zotlabs/Widget/Notifications.php:46
+#: ../../Zotlabs/Widget/Notifications.php:122
+#: ../../Zotlabs/Widget/Notifications.php:153
+msgid "Filter by name or address"
+msgstr "Фильтровать по имени или адресу"
+
+#: ../../Zotlabs/Widget/Notifications.php:35
+msgid "New Home Activity"
+msgstr "Новая локальная активность"
+
+#: ../../Zotlabs/Widget/Notifications.php:36
+msgid "New Home Activity Notifications"
+msgstr "Новые уведомления локальной активности"
+
+#: ../../Zotlabs/Widget/Notifications.php:39
+msgid "View your home activity"
+msgstr "Просмотреть локальную активность"
+
+#: ../../Zotlabs/Widget/Notifications.php:42
+#: ../../Zotlabs/Widget/Notifications.php:149
+msgid "Mark all notifications seen"
+msgstr "Пометить уведомления как просмотренные"
+
+#: ../../Zotlabs/Widget/Notifications.php:54
+msgid "New Mails"
+msgstr "Новая переписка"
+
+#: ../../Zotlabs/Widget/Notifications.php:55
+msgid "New Mails Notifications"
+msgstr "Уведомления о новой переписке"
+
+#: ../../Zotlabs/Widget/Notifications.php:58
+msgid "View your private mails"
+msgstr "Просмотреть вашу личную переписку"
+
+#: ../../Zotlabs/Widget/Notifications.php:61
+msgid "Mark all messages seen"
+msgstr "Пометить сообщения как просмотренные"
+
+#: ../../Zotlabs/Widget/Notifications.php:69
+msgid "New Events"
+msgstr "Новые события"
+
+#: ../../Zotlabs/Widget/Notifications.php:70
+msgid "New Events Notifications"
+msgstr "Уведомления о новых событиях"
+
+#: ../../Zotlabs/Widget/Notifications.php:73
+msgid "View events"
+msgstr "Просмотреть события"
+
+#: ../../Zotlabs/Widget/Notifications.php:76
+msgid "Mark all events seen"
+msgstr "Пометить все события как просмотренные"
+
+#: ../../Zotlabs/Widget/Notifications.php:85
+msgid "New Connections Notifications"
+msgstr "Уведомления о новых контактах"
+
+#: ../../Zotlabs/Widget/Notifications.php:88
+msgid "View all connections"
+msgstr "Просмотр всех контактов"
+
+#: ../../Zotlabs/Widget/Notifications.php:96
+msgid "New Files"
+msgstr "Новые файлы"
+
+#: ../../Zotlabs/Widget/Notifications.php:97
+msgid "New Files Notifications"
+msgstr "Уведомления о новых файлах"
+
+#: ../../Zotlabs/Widget/Notifications.php:104
+#: ../../Zotlabs/Widget/Notifications.php:105
+msgid "Notices"
+msgstr "Оповещения"
+
+#: ../../Zotlabs/Widget/Notifications.php:108
+msgid "View all notices"
+msgstr "Просмотреть все оповещения"
+
+#: ../../Zotlabs/Widget/Notifications.php:111
+msgid "Mark all notices seen"
+msgstr "Пометить все оповещения как просмотренные"
+
+#: ../../Zotlabs/Widget/Notifications.php:132
+msgid "New Registrations"
+msgstr "Новые регистрации"
+
+#: ../../Zotlabs/Widget/Notifications.php:133
+msgid "New Registrations Notifications"
+msgstr "Уведомления о новых регистрациях"
+
+#: ../../Zotlabs/Widget/Notifications.php:143
+msgid "Public Stream Notifications"
+msgstr "Уведомления публичного потока"
+
+#: ../../Zotlabs/Widget/Notifications.php:146
+msgid "View the public stream"
+msgstr "Просмотреть публичный поток"
+
+#: ../../Zotlabs/Widget/Notifications.php:161
+msgid "Sorry, you have got no notifications at the moment"
+msgstr "Извините, но сейчас у вас нет уведомлений"
+
+#: ../../util/nconfig.php:34
+msgid "Source channel not found."
+msgstr "Канал-источник не найден."
+
+#: ../../widget/Netselect/Netselect.php:24
+msgid "Network/Protocol"
+msgstr "Сеть / протокол"
+
+#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1724
+msgid "Zot"
+msgstr ""
+
+#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1722
+msgid "Diaspora"
+msgstr ""
+
+#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1715
+#: ../../include/network.php:1716
+msgid "Friendica"
+msgstr ""
+
+#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1717
+msgid "OStatus"
+msgstr ""
+
+#: ../../boot.php:1608
+msgid "Create an account to access services and applications"
+msgstr "Создайте аккаунт для доступа к службам и приложениям"
+
+#: ../../boot.php:1628 ../../include/nav.php:103 ../../include/nav.php:132
+#: ../../include/nav.php:151
+msgid "Logout"
+msgstr "Выход"
+
+#: ../../boot.php:1632
+msgid "Login/Email"
+msgstr "Пользователь / email"
+
+#: ../../boot.php:1633
+msgid "Password"
+msgstr "Пароль"
+
+#: ../../boot.php:1634
+msgid "Remember me"
+msgstr "Запомнить меня"
+
+#: ../../boot.php:1637
+msgid "Forgot your password?"
+msgstr "Забыли пароль или логин?"
+
+#: ../../boot.php:2433
+#, php-format
+msgid "[$Projectname] Website SSL error for %s"
+msgstr "[$Projectname] Ошибка SSL/TLS веб-сайта для %s"
+
+#: ../../boot.php:2438
+msgid "Website SSL certificate is not valid. Please correct."
+msgstr "SSL/TLS сертификат веб-сайт недействителен. Исправьте это."
-#: ../../extend/addon/hzaddons/donate/donate.php:49
+#: ../../boot.php:2554
+#, php-format
+msgid "[$Projectname] Cron tasks not running on %s"
+msgstr "[$Projectname] Задания Cron не запущены на %s"
+
+#: ../../boot.php:2559
+msgid "Cron/Scheduled tasks not running."
+msgstr "Задания Cron / планировщика не запущены."
+
+#: ../../boot.php:2560 ../../include/datetime.php:238
+msgid "never"
+msgstr "никогда"
+
+#: ../../view/theme/redbasic_c/php/config.php:16
+#: ../../view/theme/redbasic_c/php/config.php:19
+#: ../../view/theme/redbasic/php/config.php:16
+#: ../../view/theme/redbasic/php/config.php:19
+msgid "Focus (Hubzilla default)"
+msgstr "Фокус (по умолчанию Hubzilla)"
+
+#: ../../view/theme/redbasic_c/php/config.php:99
+#: ../../view/theme/redbasic/php/config.php:98
+msgid "Theme settings"
+msgstr "Настройки темы"
+
+#: ../../view/theme/redbasic_c/php/config.php:100
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Narrow navbar"
+msgstr "Узкая панель навигации"
+
+#: ../../view/theme/redbasic_c/php/config.php:101
+#: ../../view/theme/redbasic/php/config.php:100
+msgid "Navigation bar background color"
+msgstr "Панель навигации, цвет фона"
+
+#: ../../view/theme/redbasic_c/php/config.php:102
+#: ../../view/theme/redbasic/php/config.php:101
+msgid "Navigation bar icon color "
+msgstr "Панель навигации, цвет значков"
+
+#: ../../view/theme/redbasic_c/php/config.php:103
+#: ../../view/theme/redbasic/php/config.php:102
+msgid "Navigation bar active icon color "
+msgstr "Панель навигации, цвет активного значка"
+
+#: ../../view/theme/redbasic_c/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:103
+msgid "Link color"
+msgstr "Цвет ссылок"
+
+#: ../../view/theme/redbasic_c/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:104
+msgid "Set font-color for banner"
+msgstr "Цвет текста в шапке"
+
+#: ../../view/theme/redbasic_c/php/config.php:106
+#: ../../view/theme/redbasic/php/config.php:105
+msgid "Set the background color"
+msgstr "Цвет фона"
+
+#: ../../view/theme/redbasic_c/php/config.php:107
+#: ../../view/theme/redbasic/php/config.php:106
+msgid "Set the background image"
+msgstr "Фоновое изображение"
+
+#: ../../view/theme/redbasic_c/php/config.php:108
+#: ../../view/theme/redbasic/php/config.php:107
+msgid "Set the background color of items"
+msgstr "Цвет фона элементов"
+
+#: ../../view/theme/redbasic_c/php/config.php:109
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Set the background color of comments"
+msgstr "Цвет фона комментариев"
+
+#: ../../view/theme/redbasic_c/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Set font-size for the entire application"
+msgstr "Установить системный размер шрифта"
+
+#: ../../view/theme/redbasic_c/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Examples: 1rem, 100%, 16px"
+msgstr "Например: 1rem, 100%, 16px"
+
+#: ../../view/theme/redbasic_c/php/config.php:111
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Set font-color for posts and comments"
+msgstr "Цвет шрифта для публикаций и комментариев"
+
+#: ../../view/theme/redbasic_c/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Set radius of corners"
+msgstr "Радиус скруглений"
+
+#: ../../view/theme/redbasic_c/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Example: 4px"
+msgstr "Например: 4px"
+
+#: ../../view/theme/redbasic_c/php/config.php:113
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Set shadow depth of photos"
+msgstr "Глубина теней фотографий"
+
+#: ../../view/theme/redbasic_c/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "Set maximum width of content region in pixel"
+msgstr "Максимальная ширина содержания региона (в пикселях)"
+
+#: ../../view/theme/redbasic_c/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "Leave empty for default width"
+msgstr "Оставьте пустым для ширины по умолчанию"
+
+#: ../../view/theme/redbasic_c/php/config.php:115
+msgid "Left align page content"
+msgstr "Выровнять содержимое страницы по левому краю"
+
+#: ../../view/theme/redbasic_c/php/config.php:116
+#: ../../view/theme/redbasic/php/config.php:114
+msgid "Set size of conversation author photo"
+msgstr "Размер фотографии автора беседы"
+
+#: ../../view/theme/redbasic_c/php/config.php:117
+#: ../../view/theme/redbasic/php/config.php:115
+msgid "Set size of followup author photos"
+msgstr "Размер фотографий подписчиков"
+
+#: ../../view/theme/redbasic/php/config.php:116
+msgid "Show advanced settings"
+msgstr "Показать расширенные настройки"
+
+#: ../../addon/rendezvous/rendezvous.php:57
+msgid "Errors encountered deleting database table "
+msgstr "Возникшие при удалении таблицы базы данных ошибки"
+
+#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:612
+msgid "Submit Settings"
+msgstr "Отправить настройки"
+
+#: ../../addon/rendezvous/rendezvous.php:96
+msgid "Drop tables when uninstalling?"
+msgstr "Удалить таблицы при деинсталляции?"
+
+#: ../../addon/rendezvous/rendezvous.php:96
msgid ""
-"And the hundreds of other people and organisations who helped make the "
-"Hubzilla possible."
-msgstr "И сотни других людей и организаций которые помогали в создании Hubzilla."
+"If checked, the Rendezvous database tables will be deleted when the plugin "
+"is uninstalled."
+msgstr "Если включено, то таблицы базы данных Rendezvous будут удалены при удалении плагина."
+
+#: ../../addon/rendezvous/rendezvous.php:97
+msgid "Mapbox Access Token"
+msgstr "Токен доступа к Mapbox"
-#: ../../extend/addon/hzaddons/donate/donate.php:52
+#: ../../addon/rendezvous/rendezvous.php:97
msgid ""
-"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving "
-"their time and expertise - and often paying out of pocket for services they "
-"share with others."
-msgstr "Проекты Redmatrix / Hubzilla предоставляются, в основном, добровольцами, которые предоставляют свое время и опыт и, часто, оплачивают из своего кармана услуги, которыми они делятся с другими."
+"If you enter a Mapbox access token, it will be used to retrieve map tiles "
+"from Mapbox instead of the default OpenStreetMap tile server."
+msgstr "Если вы введете токен доступа к Mapbox, он будет использоваться для извлечения фрагментов карты из Mapbox вместо стандартного сервера OpenStreetMap."
-#: ../../extend/addon/hzaddons/donate/donate.php:53
+#: ../../addon/rendezvous/rendezvous.php:162
+msgid "Rendezvous"
+msgstr ""
+
+#: ../../addon/rendezvous/rendezvous.php:167
msgid ""
-"There is no corporate funding and no ads, and we do not collect and sell "
-"your personal information. (We don't control your personal information - "
-"<strong>you do</strong>.)"
-msgstr "Здесь нет корпоративного финансирования и рекламы, мы не собираем и не продаем вашу личную информацию. (Мы не контролируем вашу личную информацию - <strong>это делаете вы</strong>.)"
+"This identity has been deleted by another member due to inactivity. Please "
+"press the \"New identity\" button or refresh the page to register a new "
+"identity. You may use the same name."
+msgstr "Этот идентификатор был удалён другим участником из-за неактивности. Пожалуйста нажмите кнопку \"Новый идентификатор\" для обновления страницы и получения нового идентификатора. Вы можете использовать то же имя."
+
+#: ../../addon/rendezvous/rendezvous.php:168
+msgid "Welcome to Rendezvous!"
+msgstr "Добро пожаловать в Rendezvous!"
-#: ../../extend/addon/hzaddons/donate/donate.php:54
+#: ../../addon/rendezvous/rendezvous.php:169
msgid ""
-"Help support our ground-breaking work in decentralisation, web identity, and "
-"privacy."
-msgstr "Помогите поддержать нашу новаторскую работу в областях децентрализации, веб-идентификации и конфиденциальности."
+"Enter your name to join this rendezvous. To begin sharing your location with "
+"the other members, tap the GPS control. When your location is discovered, a "
+"red dot will appear and others will be able to see you on the map."
+msgstr "Введите ваше имя для вступления в это Rendezvous. Для того, чтобы делиться вашим положением с другими участниками, нажмите \"GPS control\". Когда ваше местоположение определно, красная точка появится и остальные смогут увидеть вас на карте."
+
+#: ../../addon/rendezvous/rendezvous.php:171
+msgid "Let's meet here"
+msgstr "Давайте встретимся здесь"
+
+#: ../../addon/rendezvous/rendezvous.php:174
+msgid "New marker"
+msgstr "Новый маркер"
+
+#: ../../addon/rendezvous/rendezvous.php:175
+msgid "Edit marker"
+msgstr "Редактировать маркер"
+
+#: ../../addon/rendezvous/rendezvous.php:176
+msgid "New identity"
+msgstr "Новый идентификатор"
+
+#: ../../addon/rendezvous/rendezvous.php:177
+msgid "Delete marker"
+msgstr "Удалить маркер"
+
+#: ../../addon/rendezvous/rendezvous.php:178
+msgid "Delete member"
+msgstr "Удалить участника"
+
+#: ../../addon/rendezvous/rendezvous.php:179
+msgid "Edit proximity alert"
+msgstr "Изменить оповещение о близости"
-#: ../../extend/addon/hzaddons/donate/donate.php:56
+#: ../../addon/rendezvous/rendezvous.php:180
msgid ""
-"Your donations keep servers and services running and also helps us to "
-"provide innovative new features and continued development."
-msgstr "В ваших пожертвованиях поддерживают серверы и службы, а также помогают нам предоставлять новые возможности и продолжать развитие."
+"A proximity alert will be issued when this member is within a certain radius "
+"of you.<br><br>Enter a radius in meters (0 to disable):"
+msgstr "Оповещение о близости будет произведено, если этот участник находится на определённом расстоянии от вас. <br><br>Введите радиус в метрах (0 для отключения):"
-#: ../../extend/addon/hzaddons/donate/donate.php:59
-msgid "Donate"
-msgstr "Пожертвовать"
+#: ../../addon/rendezvous/rendezvous.php:180
+#: ../../addon/rendezvous/rendezvous.php:185
+msgid "distance"
+msgstr "расстояние"
+
+#: ../../addon/rendezvous/rendezvous.php:181
+msgid "Proximity alert distance (meters)"
+msgstr "Расстояние для уведомления о близости (метров)"
-#: ../../extend/addon/hzaddons/donate/donate.php:61
+#: ../../addon/rendezvous/rendezvous.php:182
+#: ../../addon/rendezvous/rendezvous.php:184
msgid ""
-"Choose a project, developer, or public hub to support with a one-time "
-"donation"
-msgstr "Выберите проект, разработчика или общедоступный узел для поддержки в форме единоразового пожертвования"
+"A proximity alert will be issued when you are within a certain radius of the "
+"marker location.<br><br>Enter a radius in meters (0 to disable):"
+msgstr "Оповещение о близости будет произведено, если вы находитесь на определённом расстоянии местоположения маркера. <br><br>Введите радиус в метрах (0 для отключения):"
-#: ../../extend/addon/hzaddons/donate/donate.php:62
-msgid "Donate Now"
-msgstr "Пожертвовать сейчас"
+#: ../../addon/rendezvous/rendezvous.php:183
+msgid "Marker proximity alert"
+msgstr "Маркер уведомления о близости"
+
+#: ../../addon/rendezvous/rendezvous.php:186
+msgid "Reminder note"
+msgstr "Напоминание"
-#: ../../extend/addon/hzaddons/donate/donate.php:63
+#: ../../addon/rendezvous/rendezvous.php:187
msgid ""
-"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"
-msgstr "<strong><em>или</em></strong> станьте спонсором проекта (только для Hubzilla)"
+"Enter a note to be displayed when you are within the specified proximity..."
+msgstr "Введите сообщение для отображения когда вы находитесь рядом"
-#: ../../extend/addon/hzaddons/donate/donate.php:64
+#: ../../addon/rendezvous/rendezvous.php:199
+msgid "Add new rendezvous"
+msgstr "Добавить новое Rendezvous."
+
+#: ../../addon/rendezvous/rendezvous.php:200
msgid ""
-"Please indicate if you would like your first name or full name (or nothing) "
-"to appear in our sponsor listing"
-msgstr "Пожалуйста, если желаете, укажите ваше имя для отображения в списке спонсоров."
+"Create a new rendezvous and share the access link with those you wish to "
+"invite to the group. Those who open the link become members of the "
+"rendezvous. They can view other member locations, add markers to the map, or "
+"share their own locations with the group."
+msgstr "Создайте новое Rendezvous и поделитесь ссылкой доступа с теми, кого вы хотите пригласить в группу. Тот, кто откроет эту ссылку, станет её участником. Участники могут видеть местоположение, добавлять маркеры на карту или делится своим собственным местоположением с группой."
-#: ../../extend/addon/hzaddons/donate/donate.php:65
-msgid "Sponsor"
-msgstr "Спонсор"
+#: ../../addon/rendezvous/rendezvous.php:232
+msgid "You have no rendezvous. Press the button above to create a rendezvous!"
+msgstr "У вас нет Rendezvous. Нажмите на кнопку ниже чтобы создать его!"
-#: ../../extend/addon/hzaddons/donate/donate.php:68
-msgid "Special thanks to: "
-msgstr "Особые благодарности:"
+#: ../../addon/skeleton/Mod_Skeleton.php:32
+msgid "Skeleton App"
+msgstr "Приложение \"Скелет\""
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:148
-msgid "Fuzzloc Settings updated."
-msgstr "Настройки Fuzzloc обновлены."
+#: ../../addon/skeleton/Mod_Skeleton.php:33
+msgid "A skeleton for addons, you can copy/paste"
+msgstr "Скелет для приложений. Вы можете использовать copy/paste"
+
+#: ../../addon/skeleton/Mod_Skeleton.php:40
+msgid "Some setting"
+msgstr "Некоторые настройки"
+
+#: ../../addon/skeleton/Mod_Skeleton.php:40
+msgid "A setting"
+msgstr "Настройка"
+
+#: ../../addon/skeleton/Mod_Skeleton.php:48
+msgid "Skeleton Settings"
+msgstr "Настройки скелета"
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:175
+#: ../../addon/gnusoc/Mod_Gnusoc.php:16
msgid ""
-"Fuzzloc allows you to blur your precise location if your channel uses "
-"browser location mapping."
-msgstr "Fuzzloc позволяет размыть ваше точное местоположение, если ваш канал использует сопоставление местоположений браузера."
+"The GNU-Social protocol does not support location independence. Connections "
+"you make within that network may be unreachable from alternate channel "
+"locations."
+msgstr "Протокол GNU-Social не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала."
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:178
-msgid "Enable Fuzzloc Plugin"
-msgstr "Включить плагин Fuzzloc"
+#: ../../addon/gnusoc/Mod_Gnusoc.php:22
+msgid "GNU-Social Protocol App"
+msgstr "Приложение \"Протокол GNU-Social\""
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:182
-msgid "Minimum offset in meters"
-msgstr "Минимальное смещение в метрах"
+#: ../../addon/gnusoc/Mod_Gnusoc.php:34
+msgid "GNU-Social Protocol"
+msgstr "Протокол GNU-Social"
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:186
-msgid "Maximum offset in meters"
-msgstr "Максимальное смещение в метрах"
+#: ../../addon/gnusoc/gnusoc.php:451
+msgid "Follow"
+msgstr "Отслеживать"
+
+#: ../../addon/gnusoc/gnusoc.php:454
+#, php-format
+msgid "%1$s is now following %2$s"
+msgstr "%1$s сейчас отслеживает %2$s"
-#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:191
-msgid "Fuzzloc Settings"
-msgstr "Настройки Fuzzloc"
+#: ../../addon/planets/Mod_Planets.php:20
+#: ../../addon/planets/Mod_Planets.php:23
+msgid "Random Planet App"
+msgstr "Приложение \"Случайная планета\""
-#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:22
+#: ../../addon/planets/Mod_Planets.php:23
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26
+#: ../../addon/nsabait/Mod_Nsabait.php:24 ../../addon/hsse/Mod_Hsse.php:26
+#: ../../addon/authchoose/Mod_Authchoose.php:33
+msgid "Installed"
+msgstr "Установлено"
+
+#: ../../addon/planets/Mod_Planets.php:25
msgid ""
-"Allow magic authentication only to websites of your immediate connections"
-msgstr "Разрешить волшебную аутентификацию только на сайтах ваших непосредственных соединений"
+"Set a random planet from the Star Wars Empire as your location when posting"
+msgstr "Установить случайную планету из Империи Звездных Войн в качестве вашего местоположения при публикации"
-#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:39
-msgid "Authchoose"
-msgstr ""
+#: ../../addon/openclipatar/openclipatar.php:50
+#: ../../addon/openclipatar/openclipatar.php:128
+msgid "System defaults:"
+msgstr "Системные по умолчанию:"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:106
-msgid "Photos imported"
-msgstr "Фотографии импортированы"
+#: ../../addon/openclipatar/openclipatar.php:54
+msgid "Preferred Clipart IDs"
+msgstr "Предпочитаемый Clipart ID"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:129
-msgid "Redmatrix Photo Album Import"
-msgstr "Импортировать альбом фотографий Redmatrix"
+#: ../../addon/openclipatar/openclipatar.php:54
+msgid "List of preferred clipart ids. These will be shown first."
+msgstr "Список предпочитаемых Clipart ID. Эти будут показаны первыми."
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:130
-msgid "This will import all your Redmatrix photo albums to this channel."
-msgstr "Это позволит импортировать все ваши альбомы фотографий Redmatrix в этот канал."
+#: ../../addon/openclipatar/openclipatar.php:55
+msgid "Default Search Term"
+msgstr "Условие поиска по умолчанию"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:131
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:121
-msgid "Redmatrix Server base URL"
-msgstr "Базовый URL сервера Redmatrix"
+#: ../../addon/openclipatar/openclipatar.php:55
+msgid "The default search term. These will be shown second."
+msgstr "Условие поиска по умолчанию. Показываются во вторую очередь."
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:132
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:122
-msgid "Redmatrix Login Username"
-msgstr "Имя пользователя Redmatrix"
+#: ../../addon/openclipatar/openclipatar.php:56
+msgid "Return After"
+msgstr "Вернуться после"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:133
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:123
-msgid "Redmatrix Login Password"
-msgstr "Пароль Redmatrix"
+#: ../../addon/openclipatar/openclipatar.php:56
+msgid "Page to load after image selection."
+msgstr "Страница для загрузки после выбора изображения."
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:134
-msgid "Import just this album"
-msgstr "Импортировать только этот альбом"
+#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1356
+#: ../../include/nav.php:111
+msgid "Edit Profile"
+msgstr "Редактировать профиль"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:134
-msgid "Leave blank to import all albums"
-msgstr "Оставьте пустым для импорта всех альбомов"
+#: ../../addon/openclipatar/openclipatar.php:59
+msgid "Profile List"
+msgstr "Список профилей"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:135
-msgid "Maximum count to import"
-msgstr "Максимальное количество для импорта"
+#: ../../addon/openclipatar/openclipatar.php:61
+msgid "Order of Preferred"
+msgstr "Порядок предпочтения"
-#: ../../extend/addon/hzaddons/redphotos/redphotos.php:135
-msgid "0 or blank to import all available"
-msgstr "0 или пусто для импорта всех доступных"
+#: ../../addon/openclipatar/openclipatar.php:61
+msgid "Sort order of preferred clipart ids."
+msgstr "Порядок сортировки предпочитаемых Clipart ID. "
-#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:57
-msgid "A simple gallery for your photo albums"
-msgstr "Простая галлерея для ваших фотоальбомов"
+#: ../../addon/openclipatar/openclipatar.php:62
+#: ../../addon/openclipatar/openclipatar.php:68
+msgid "Newest first"
+msgstr "Новое первым"
-#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:115
-#: ../../extend/addon/hzaddons/gallery/gallery.php:28
-msgid "Gallery"
-msgstr "Галерея"
+#: ../../addon/openclipatar/openclipatar.php:65
+msgid "As entered"
+msgstr "По мере ввода"
-#: ../../extend/addon/hzaddons/gallery/gallery.php:31
-msgid "Photo Gallery"
-msgstr "Фотогалерея"
+#: ../../addon/openclipatar/openclipatar.php:67
+msgid "Order of other"
+msgstr "Порядок других"
-#: ../../extend/addon/hzaddons/rtof/rtof.php:45
-msgid "Post to Friendica"
-msgstr "Опубликовать в Friendica"
+#: ../../addon/openclipatar/openclipatar.php:67
+msgid "Sort order of other clipart ids."
+msgstr "Порядок сортировки остальных Clipart ID."
-#: ../../extend/addon/hzaddons/rtof/rtof.php:62
-msgid "rtof Settings saved."
-msgstr "Настройки rtof сохранены."
+#: ../../addon/openclipatar/openclipatar.php:69
+msgid "Most downloaded first"
+msgstr "Самое загружаемое первым"
-#: ../../extend/addon/hzaddons/rtof/rtof.php:81
-msgid "Allow posting to Friendica"
-msgstr "Разрешить публиковать в Friendica"
+#: ../../addon/openclipatar/openclipatar.php:70
+msgid "Most liked first"
+msgstr "Самое нравящееся первым"
-#: ../../extend/addon/hzaddons/rtof/rtof.php:85
-msgid "Send public postings to Friendica by default"
-msgstr "Отправлять общедоступные публикации во Friendica по умолчанию"
+#: ../../addon/openclipatar/openclipatar.php:72
+msgid "Preferred IDs Message"
+msgstr "Сообщение от предпочитаемых ID"
-#: ../../extend/addon/hzaddons/rtof/rtof.php:89
-msgid "Friendica API Path"
-msgstr "Путь к Friendica API"
+#: ../../addon/openclipatar/openclipatar.php:72
+msgid "Message to display above preferred results."
+msgstr "Отображаемое сообщение над предпочитаемыми результатами."
-#: ../../extend/addon/hzaddons/rtof/rtof.php:89
-#: ../../extend/addon/hzaddons/redred/redred.php:103
-msgid "https://{sitename}/api"
+#: ../../addon/openclipatar/openclipatar.php:78
+msgid "Uploaded by: "
+msgstr "Загружено:"
+
+#: ../../addon/openclipatar/openclipatar.php:78
+msgid "Drawn by: "
+msgstr "Нарисовано:"
+
+#: ../../addon/openclipatar/openclipatar.php:182
+#: ../../addon/openclipatar/openclipatar.php:194
+msgid "Use this image"
+msgstr "Использовать это изображение"
+
+#: ../../addon/openclipatar/openclipatar.php:192
+msgid "Or select from a free OpenClipart.org image:"
+msgstr "Или выберите из бесплатных изображений на OpenClipart.org"
+
+#: ../../addon/openclipatar/openclipatar.php:195
+msgid "Search Term"
+msgstr "Условие поиска"
+
+#: ../../addon/openclipatar/openclipatar.php:232
+msgid "Unknown error. Please try again later."
+msgstr "Неизвестная ошибка. Пожалуйста, повторите попытку позже."
+
+#: ../../addon/openclipatar/openclipatar.php:308
+msgid "Profile photo updated successfully."
+msgstr "Фотография профиля обновлена успешно."
+
+#: ../../addon/adultphotoflag/adultphotoflag.php:24
+msgid "Flag Adult Photos"
+msgstr "Пометка фотографий для взрослых"
+
+#: ../../addon/adultphotoflag/adultphotoflag.php:25
+msgid ""
+"Provide photo edit option to hide inappropriate photos from default album "
+"view"
+msgstr "Предоставьте возможность редактирования фотографий, чтобы скрыть неприемлемые фотографии из альбома по умолчанию"
+
+#: ../../addon/totp/Settings/Totp.php:90
+msgid ""
+"You haven't set a TOTP secret yet.\n"
+"Please click the button below to generate one and register this site\n"
+"with your preferred authenticator app."
+msgstr "Вы еще не установили секретный код TOTP. Пожалуйста, нажмите на кнопку ниже, чтобы сгенерировать его и зарегистрировать этот сайт в предпочитаемом вами приложении для аутентификации."
+
+#: ../../addon/totp/Settings/Totp.php:93
+msgid "Your TOTP secret is"
+msgstr "Ваш секретный код TOTP"
+
+#: ../../addon/totp/Settings/Totp.php:94
+msgid ""
+"Be sure to save it somewhere in case you lose or replace your mobile "
+"device.\n"
+"Use your mobile device to scan the QR code below to register this site\n"
+"with your preferred authenticator app."
+msgstr "Обязательно сохраните его где-нибудь на случай потери или замены мобильного устройства. С помощью мобильного устройства отсканируйте приведенный ниже QR-код, чтобы зарегистрировать этот сайт в предпочитаемом вами приложении для аутентификации."
+
+#: ../../addon/totp/Settings/Totp.php:99
+msgid "Test"
+msgstr "Тест"
+
+#: ../../addon/totp/Settings/Totp.php:100
+msgid "Generate New Secret"
+msgstr "Сгенерировать новый секретный код"
+
+#: ../../addon/totp/Settings/Totp.php:101
+msgid "Go"
+msgstr "Вперёд"
+
+#: ../../addon/totp/Settings/Totp.php:102
+msgid "Enter your password"
+msgstr "Введите ваш пароль"
+
+#: ../../addon/totp/Settings/Totp.php:103
+msgid "enter TOTP code from your device"
+msgstr "введите код TOTP из вашего устройства"
+
+#: ../../addon/totp/Settings/Totp.php:104
+msgid "Pass!"
+msgstr "Принято!"
+
+#: ../../addon/totp/Settings/Totp.php:105
+msgid "Fail"
+msgstr "Отказано"
+
+#: ../../addon/totp/Settings/Totp.php:106
+msgid "Incorrect password, try again."
+msgstr "Неверный пароль, попробуйте снова."
+
+#: ../../addon/totp/Settings/Totp.php:107
+msgid "Record your new TOTP secret and rescan the QR code above."
+msgstr "Запишите ваш секретный код TOTP и повторно отсканируйте приведенный ниже QR-код."
+
+#: ../../addon/totp/Settings/Totp.php:115
+msgid "TOTP Settings"
+msgstr "Настройки TOTP"
+
+#: ../../addon/totp/Mod_Totp.php:23
+msgid "TOTP Two-Step Verification"
+msgstr "Двухэтапная верификация TOTP"
+
+#: ../../addon/totp/Mod_Totp.php:24
+msgid "Enter the 2-step verification generated by your authenticator app:"
+msgstr "Введите код проверки, созданный вашим приложением для аутентификации"
+
+#: ../../addon/totp/Mod_Totp.php:25
+msgid "Success!"
+msgstr "Успех!"
+
+#: ../../addon/totp/Mod_Totp.php:26
+msgid "Invalid code, please try again."
+msgstr "Неверный код. Пожалуйста, попробуйте ещё раз."
+
+#: ../../addon/totp/Mod_Totp.php:27
+msgid "Too many invalid codes..."
+msgstr "Слишком много неверных кодов..."
+
+#: ../../addon/totp/Mod_Totp.php:28
+msgid "Verify"
+msgstr "Проверить"
+
+#: ../../addon/wppost/Mod_Wppost.php:28
+msgid "Wordpress Settings saved."
+msgstr "Настройки WordPress сохранены."
+
+#: ../../addon/wppost/Mod_Wppost.php:41
+msgid "Wordpress Post App"
+msgstr "Приложение \"Публикация в Wordpress\""
+
+#: ../../addon/wppost/Mod_Wppost.php:42
+msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API"
+msgstr "Опубликовать в WordPress или в чём-то ещё, поддерживающем wordpress XMLRPC API"
+
+#: ../../addon/wppost/Mod_Wppost.php:65
+msgid "WordPress username"
+msgstr "Имя пользователя WordPress"
+
+#: ../../addon/wppost/Mod_Wppost.php:69
+msgid "WordPress password"
+msgstr "Пароль WordPress"
+
+#: ../../addon/wppost/Mod_Wppost.php:73
+msgid "WordPress API URL"
+msgstr "URL API WordPress"
+
+#: ../../addon/wppost/Mod_Wppost.php:74
+msgid "Typically https://your-blog.tld/xmlrpc.php"
+msgstr "Обычно https://your-blog.tld/xmlrpc.php"
+
+#: ../../addon/wppost/Mod_Wppost.php:77
+msgid "WordPress blogid"
msgstr ""
-#: ../../extend/addon/hzaddons/rtof/rtof.php:93
-msgid "Friendica login name"
-msgstr "Имя входа Friendica"
+#: ../../addon/wppost/Mod_Wppost.php:78
+msgid "For multi-user sites such as wordpress.com, otherwise leave blank"
+msgstr "Для многопользовательских сайтов, таких, как wordpress.com. В противном случае оставьте пустым"
-#: ../../extend/addon/hzaddons/rtof/rtof.php:97
-msgid "Friendica password"
-msgstr "Пароль Friendica"
+#: ../../addon/wppost/Mod_Wppost.php:82
+msgid "Post to WordPress by default"
+msgstr "Публиковать в WordPress по умолчанию"
+
+#: ../../addon/wppost/Mod_Wppost.php:86
+msgid "Forward comments (requires hubzilla_wp plugin)"
+msgstr "Пересылать комментарии (требуется плагин hubzilla_wp)"
-#: ../../extend/addon/hzaddons/rtof/rtof.php:101
-msgid "Hubzilla to Friendica Post Settings"
-msgstr "Настройки публикаций Hubzilla для Friendica"
+#: ../../addon/wppost/Mod_Wppost.php:94
+msgid "Wordpress Post"
+msgstr "Публикация в WordPress"
-#: ../../extend/addon/hzaddons/ldapauth/ldapauth.php:70
-msgid "An account has been created for you."
-msgstr "Учётная запись, которая была для вас создана."
+#: ../../addon/wppost/wppost.php:46
+msgid "Post to WordPress"
+msgstr "Опубликовать в WordPress"
-#: ../../extend/addon/hzaddons/ldapauth/ldapauth.php:77
-msgid "Authentication successful but rejected: account creation is disabled."
-msgstr "Аутентификация выполнена успешно, но отклонена: создание учетной записи отключено."
+#: ../../addon/nsfw/nsfw.php:152
+msgid "Possible adult content"
+msgstr "Возможно содержимое для взрослых"
+
+#: ../../addon/nsfw/nsfw.php:167
+#, php-format
+msgid "%s - view"
+msgstr "%s - просмотр"
+
+#: ../../addon/nsfw/Mod_Nsfw.php:22
+msgid "NSFW Settings saved."
+msgstr "Настройки NSFW сохранены."
+
+#: ../../addon/nsfw/Mod_Nsfw.php:33
+msgid "NSFW App"
+msgstr "Приложение NSFW"
+
+#: ../../addon/nsfw/Mod_Nsfw.php:34
+msgid "Collapse content that contains predefined words"
+msgstr "Свернуть содержимое, содержащее предопределенные слова"
+
+#: ../../addon/nsfw/Mod_Nsfw.php:44
+msgid ""
+"This app looks in posts for the words/text you specify below, and collapses "
+"any content containing those keywords so it is not displayed at "
+"inappropriate times, such as sexual innuendo that may be improper in a work "
+"setting. It is polite and recommended to tag any content containing nudity "
+"with #NSFW. This filter can also match any other word/text you specify, and "
+"can thereby be used as a general purpose content filter."
+msgstr "Это приложение просматривает публикации для слов / текста, которые вы указываете ниже, и сворачивает любой контент, содержащий эти ключевые слова, поэтому он не отображается в неподходящее время, например, сексуальные инсинуации, которые могут быть неправильными в настройке работы. Например, мы рекомендуем отмечать любой контент, содержащий наготу, тегом #NSFW. Этот фильтр также способен реагировать на любое другое указанное вами слово / текст и может использоваться в качестве фильтра содержимого общего назначения."
+
+#: ../../addon/nsfw/Mod_Nsfw.php:49
+msgid "Comma separated list of keywords to hide"
+msgstr "Список ключевых слов для скрытия, через запятую"
+
+#: ../../addon/nsfw/Mod_Nsfw.php:49
+msgid "Word, /regular-expression/, lang=xx, lang!=xx"
+msgstr "слово, /регулярное_выражение/, lang=xx, lang!=xx"
+
+#: ../../addon/nsfw/Mod_Nsfw.php:58
+msgid "NSFW"
+msgstr ""
+
+#: ../../addon/queueworker/Mod_Queueworker.php:73
+msgid "Max queueworker threads"
+msgstr "Макс. количество обработчиков очереди"
+
+#: ../../addon/queueworker/Mod_Queueworker.php:87
+msgid "Assume workers dead after ___ seconds"
+msgstr "Считать обработчики неактивными через секунд"
+
+#: ../../addon/queueworker/Mod_Queueworker.php:99
+msgid "Queueworker Settings"
+msgstr "Настройки обработчика очереди"
+
+#: ../../addon/ijpost/Mod_Ijpost.php:23
+msgid "Insane Journal Crosspost Connector Settings saved."
+msgstr "Настройки пересылки публикаций Insane Journal сохранены."
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:42
-msgid "Post to Insanejournal"
-msgstr "Опубликовать в InsaneJournal"
+#: ../../addon/ijpost/Mod_Ijpost.php:35
+msgid "Insane Journal Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Insane Journal\""
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:73
-msgid "Enable InsaneJournal Post Plugin"
-msgstr "Включить плагин публикаций InsaneJournal"
+#: ../../addon/ijpost/Mod_Ijpost.php:36
+msgid "Relay public postings to Insane Journal"
+msgstr "Пересылает общедоступные публикации в Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:77
+#: ../../addon/ijpost/Mod_Ijpost.php:53
msgid "InsaneJournal username"
-msgstr "Имя пользователя InsaneJournal"
+msgstr "Имя пользователя Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:81
+#: ../../addon/ijpost/Mod_Ijpost.php:57
msgid "InsaneJournal password"
-msgstr "Пароль InsaneJournal"
+msgstr "Пароль Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:85
+#: ../../addon/ijpost/Mod_Ijpost.php:61
msgid "Post to InsaneJournal by default"
-msgstr "Публиковать в InsaneJournal по умолчанию"
+msgstr "Публиковать в Insane Journal по умолчанию"
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:89
-msgid "InsaneJournal Post Settings"
-msgstr "Настройки публикаций в InsaneJournal"
+#: ../../addon/ijpost/Mod_Ijpost.php:69
+msgid "Insane Journal Crosspost Connector"
+msgstr "Пересылка публикаций Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/ijpost.php:104
-msgid "Insane Journal Settings saved."
-msgstr "Настройки InsaneJournal сохранены."
+#: ../../addon/ijpost/ijpost.php:45
+msgid "Post to Insane Journal"
+msgstr "Опубликовать в Insane Journal"
-#: ../../extend/addon/hzaddons/testdrive/testdrive.php:104
+#: ../../addon/dwpost/dwpost.php:48
+msgid "Post to Dreamwidth"
+msgstr "Публиковать в Dreamwidth"
+
+#: ../../addon/dwpost/Mod_Dwpost.php:24
+msgid "Dreamwidth Crosspost Connector Settings saved."
+msgstr "Настройки пересылки публикаций Dreamwidth сохранены."
+
+#: ../../addon/dwpost/Mod_Dwpost.php:36
+msgid "Dreamwidth Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Dreamwidth\""
+
+#: ../../addon/dwpost/Mod_Dwpost.php:37
+msgid "Relay public postings to Dreamwidth"
+msgstr "Пересылает общедоступные публикации в Dreamwidth"
+
+#: ../../addon/dwpost/Mod_Dwpost.php:52
+msgid "Dreamwidth username"
+msgstr "Имя пользователя Dreamwidth"
+
+#: ../../addon/dwpost/Mod_Dwpost.php:56
+msgid "Dreamwidth password"
+msgstr "Пароль Dreamwidth"
+
+#: ../../addon/dwpost/Mod_Dwpost.php:60
+msgid "Post to Dreamwidth by default"
+msgstr "Публиковать в Dreamwidth по умолчанию"
+
+#: ../../addon/dwpost/Mod_Dwpost.php:68
+msgid "Dreamwidth Crosspost Connector"
+msgstr "Пересылка публикаций Dreamwidth"
+
+#: ../../addon/notifyadmin/notifyadmin.php:34
+msgid "New registration"
+msgstr "Новая регистрация"
+
+#: ../../addon/notifyadmin/notifyadmin.php:42
#, php-format
-msgid "Your account on %s will expire in a few days."
-msgstr "Ваш аккаунт на %s перестанет работать через несколько дней."
+msgid "Message sent to %s. New account registration: %s"
+msgstr "Сообщение отправлено в %s. Регистрация нового аккаунта: %s"
-#: ../../extend/addon/hzaddons/testdrive/testdrive.php:105
-msgid "Your $Productname test account is about to expire."
-msgstr "Ваш тестовый аккаунт в $Productname близок к окончанию срока действия."
+#: ../../addon/dirstats/dirstats.php:94
+msgid "Hubzilla Directory Stats"
+msgstr "Каталог статистики Hubzilla"
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:119
-msgid "Redmatrix File Storage Import"
-msgstr "Импорт файлового хранилища Redmatrix"
+#: ../../addon/dirstats/dirstats.php:95
+msgid "Total Hubs"
+msgstr "Всего хабов"
-#: ../../extend/addon/hzaddons/redfiles/redfiles.php:120
-msgid "This will import all your Redmatrix cloud files to this channel."
-msgstr "Это позволит импортировать все ваши файлы в Redmatrix в этот канал."
+#: ../../addon/dirstats/dirstats.php:97
+msgid "Hubzilla Hubs"
+msgstr "Хабы Hubzilla"
-#: ../../extend/addon/hzaddons/redfiles/redfilehelper.php:64
-msgid "file"
-msgstr "файл"
+#: ../../addon/dirstats/dirstats.php:99
+msgid "Friendica Hubs"
+msgstr "Хабы Friendica"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:102
-msgid "Post to Twitter"
-msgstr "Опубликовать в Twitter"
+#: ../../addon/dirstats/dirstats.php:101
+msgid "Diaspora Pods"
+msgstr "Стручки Diaspora"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:158
-msgid "Twitter settings updated."
-msgstr "Настройки Twitter обновлены"
+#: ../../addon/dirstats/dirstats.php:103
+msgid "Hubzilla Channels"
+msgstr "Каналы Hubzilla"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:187
-msgid ""
-"No consumer key pair for Twitter found. Please contact your site "
-"administrator."
-msgstr "Не найдено пары ключей для Twitter. Пожалуйста, свяжитесь с администратором сайта."
+#: ../../addon/dirstats/dirstats.php:105
+msgid "Friendica Channels"
+msgstr "Каналы Friendica"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:209
-msgid ""
-"At this Hubzilla instance the Twitter plugin was enabled but you have not "
-"yet connected your account to your Twitter account. To do so click the "
-"button below to get a PIN from Twitter which you have to copy into the input "
-"box below and submit the form. Only your <strong>public</strong> posts will "
-"be posted to Twitter."
-msgstr "В этой установке Hubzilla плагин Twitter был включён, однако пока он не подключён к вашему аккаунту в Twitter. Для этого нажмите на кнопку ниже для получения PIN-кода от Twitter который нужно скопировать в поле ввода и отправить форму. Только ваши <strong>общедоступные</strong> публикации будут опубликованы в Twitter."
+#: ../../addon/dirstats/dirstats.php:107
+msgid "Diaspora Channels"
+msgstr "Каналы Diaspora"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:211
-msgid "Log in with Twitter"
-msgstr "Войти в Twitter"
+#: ../../addon/dirstats/dirstats.php:109
+msgid "Aged 35 and above"
+msgstr "Возраст 35 и выше"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:214
-msgid "Copy the PIN from Twitter here"
-msgstr "Скопируйте PIN-код из Twitter здесь"
+#: ../../addon/dirstats/dirstats.php:111
+msgid "Aged 34 and under"
+msgstr "Возраст 34 и ниже"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:236
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:401
-msgid "Currently connected to: "
-msgstr "В настоящее время подключён к:"
+#: ../../addon/dirstats/dirstats.php:113
+msgid "Average Age"
+msgstr "Средний возраст"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:241
-msgid ""
-"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to Twitter will lead the visitor to a blank page informing "
-"the visitor that the access to your profile has been restricted."
-msgstr "<strong>Замечание</strong>: Из-за настроек конфиденциальности (<em>скрыть данные своего профиля от неизвестных зрителей?</em>) cсылка, потенциально включенная в общедоступные публикации, переданные в Twitter, приведет посетителя к пустой странице, информирующей его о том, что доступ к вашему профилю был ограничен."
+#: ../../addon/dirstats/dirstats.php:115
+msgid "Known Chatrooms"
+msgstr "Известные чаты"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-msgid "Allow posting to Twitter"
-msgstr "Разрешить публиковать в Twitter"
+#: ../../addon/dirstats/dirstats.php:117
+msgid "Known Tags"
+msgstr "Известные теги"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
+#: ../../addon/dirstats/dirstats.php:119
msgid ""
-"If enabled your public postings can be posted to the associated Twitter "
-"account"
-msgstr "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи Twitter"
+"Please note Diaspora and Friendica statistics are merely those **this "
+"directory** is aware of, and not all those known in the network. This also "
+"applies to chatrooms,"
+msgstr "Обратите внимание, что статистика Diaspora и Friendica это только те, о которых ** этот каталог ** знает, а не все известные в сети. Это также относится и к чатам."
-#: ../../extend/addon/hzaddons/twitter/twitter.php:250
-msgid "Twitter post length"
-msgstr "Длина публикации Twitter"
+#: ../../addon/likebanner/likebanner.php:51
+msgid "Your Webbie:"
+msgstr "Ваш Webbie:"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:250
-msgid "Maximum tweet length"
-msgstr "Максимальная длина твита"
+#: ../../addon/likebanner/likebanner.php:54
+msgid "Fontsize (px):"
+msgstr "Размер шрифта (px):"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
-msgid "Send public postings to Twitter by default"
-msgstr "Отправлять общедоступные публикации в Twitter по умолчанию"
+#: ../../addon/likebanner/likebanner.php:68
+msgid "Link:"
+msgstr "Ссылка:"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
-msgid ""
-"If enabled your public postings will be posted to the associated Twitter "
-"account by default"
-msgstr "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи Twitter по умолчанию"
+#: ../../addon/likebanner/likebanner.php:70
+msgid "Like us on Hubzilla"
+msgstr "Нравится на Hubzilla"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:264
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:424
-msgid "Clear OAuth configuration"
-msgstr "Очистить конфигурацию OAuth"
+#: ../../addon/likebanner/likebanner.php:72
+msgid "Embed:"
+msgstr "Встроить:"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:273
-msgid "Twitter Post Settings"
-msgstr "Настройки публикаций в Twitter"
+#: ../../addon/redphotos/redphotos.php:106
+msgid "Photos imported"
+msgstr "Фотографии импортированы"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:782
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:95
-msgid "Submit Settings"
-msgstr "Отправить настройки"
+#: ../../addon/redphotos/redphotos.php:129
+msgid "Redmatrix Photo Album Import"
+msgstr "Импортировать альбом фотографий Redmatrix"
-#: ../../extend/addon/hzaddons/tour/tour.php:76
-msgid "Edit your profile and change settings."
-msgstr "Отредактировать ваш профиль и изменить настройки."
+#: ../../addon/redphotos/redphotos.php:130
+msgid "This will import all your Redmatrix photo albums to this channel."
+msgstr "Это позволит импортировать все ваши альбомы фотографий Redmatrix в этот канал."
-#: ../../extend/addon/hzaddons/tour/tour.php:77
-msgid "Click here to see activity from your connections."
-msgstr "Нажмите сюда для отображения активности ваши контактов."
+#: ../../addon/redphotos/redphotos.php:131
+#: ../../addon/redfiles/redfiles.php:121
+msgid "Redmatrix Server base URL"
+msgstr "Базовый URL сервера Redmatrix"
-#: ../../extend/addon/hzaddons/tour/tour.php:78
-msgid "Click here to see your channel home."
-msgstr "Нажмите сюда чтобы увидеть главную страницу вашего канала."
+#: ../../addon/redphotos/redphotos.php:132
+#: ../../addon/redfiles/redfiles.php:122
+msgid "Redmatrix Login Username"
+msgstr "Имя пользователя Redmatrix"
-#: ../../extend/addon/hzaddons/tour/tour.php:79
-msgid "You can access your private messages from here."
-msgstr "Вы можете получить доступ с личной переписке здесь."
+#: ../../addon/redphotos/redphotos.php:133
+#: ../../addon/redfiles/redfiles.php:123
+msgid "Redmatrix Login Password"
+msgstr "Пароль Redmatrix"
-#: ../../extend/addon/hzaddons/tour/tour.php:80
-msgid "Create new events here."
-msgstr "Создать новое событие здесь."
+#: ../../addon/redphotos/redphotos.php:134
+msgid "Import just this album"
+msgstr "Импортировать только этот альбом"
-#: ../../extend/addon/hzaddons/tour/tour.php:81
-msgid ""
-"You can accept new connections and change permissions for existing ones "
-"here. You can also e.g. create groups of contacts."
-msgstr "Вы можете подключать новые контакты и менять разрешения для существующих здесь. Также вы можете создавать их группы."
+#: ../../addon/redphotos/redphotos.php:134
+msgid "Leave blank to import all albums"
+msgstr "Оставьте пустым для импорта всех альбомов"
-#: ../../extend/addon/hzaddons/tour/tour.php:82
-msgid "System notifications will arrive here"
-msgstr "Системные оповещения будут показываться здесь"
+#: ../../addon/redphotos/redphotos.php:135
+msgid "Maximum count to import"
+msgstr "Максимальное количество для импорта"
-#: ../../extend/addon/hzaddons/tour/tour.php:83
-msgid "Search for content and users"
-msgstr "Поиск пользователей и содержимого"
+#: ../../addon/redphotos/redphotos.php:135
+msgid "0 or blank to import all available"
+msgstr "0 или пусто для импорта всех доступных"
-#: ../../extend/addon/hzaddons/tour/tour.php:84
-msgid "Browse for new contacts"
-msgstr "Поиск новых контактов"
+#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41
+msgid "Popular Channels"
+msgstr "Популярные каналы"
-#: ../../extend/addon/hzaddons/tour/tour.php:85
-msgid "Launch installed apps"
-msgstr "Запустить установленные приложения"
+#: ../../addon/irc/irc.php:37
+msgid "Channels to auto connect"
+msgstr "Каналы для автоматического подключения"
-#: ../../extend/addon/hzaddons/tour/tour.php:86
-msgid "Looking for help? Click here."
-msgstr "Нужна помощь? Нажмите сюда."
+#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41
+msgid "Comma separated list"
+msgstr "Список, разделённый запятыми"
-#: ../../extend/addon/hzaddons/tour/tour.php:87
-msgid ""
-"New events have occurred in your network. Click here to see what has "
-"happened!"
-msgstr "Новые события произошли в вашей сети. Нажмите здесь для того, чтобы знать что случилось!"
+#: ../../addon/irc/irc.php:45
+msgid "IRC Settings"
+msgstr "Настройки IRC"
-#: ../../extend/addon/hzaddons/tour/tour.php:88
-msgid "You have received a new private message. Click here to see from who!"
-msgstr "Вы получили новое личное сообщение. Нажмите чтобы увидеть от кого!"
+#: ../../addon/irc/irc.php:54
+msgid "IRC settings saved."
+msgstr "Настройки IRC сохранены"
-#: ../../extend/addon/hzaddons/tour/tour.php:89
-msgid "There are events this week. Click here too see which!"
-msgstr "На этой неделе есть события. Нажмите здесь чтобы увидеть какие!"
+#: ../../addon/irc/irc.php:58
+msgid "IRC Chatroom"
+msgstr "Чат IRC"
-#: ../../extend/addon/hzaddons/tour/tour.php:90
-msgid "You have received a new introduction. Click here to see who!"
-msgstr "Вы были представлены. Нажмите чтобы увидеть кому!"
+#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:135
+msgid "Gallery"
+msgstr "Галерея"
-#: ../../extend/addon/hzaddons/tour/tour.php:91
-msgid ""
-"There is a new system notification. Click here to see what has happened!"
-msgstr "Это новое системное уведомление. Нажмите чтобы посмотреть что случилось!"
+#: ../../addon/gallery/gallery.php:41
+msgid "Photo Gallery"
+msgstr "Фотогалерея"
-#: ../../extend/addon/hzaddons/tour/tour.php:94
-msgid "Click here to share text, images, videos and sound."
-msgstr "Нажмите сюда чтобы поделиться текстом, изображениями, видео или треком."
+#: ../../addon/gallery/Mod_Gallery.php:58
+msgid "Gallery App"
+msgstr "Приложение \"Галерея\""
-#: ../../extend/addon/hzaddons/tour/tour.php:95
-msgid "You can write an optional title for your update (good for long posts)."
-msgstr "Вы можете написать необязательный заголовок для вашей публикации (желательно для больших постов)."
+#: ../../addon/gallery/Mod_Gallery.php:59
+msgid "A simple gallery for your photo albums"
+msgstr "Простая галлерея для ваших фотоальбомов"
-#: ../../extend/addon/hzaddons/tour/tour.php:96
-msgid "Entering some categories here makes it easier to find your post later."
-msgstr "Введите категории здесь чтобы было проще найти вашу публикацию позднее."
+#: ../../addon/ljpost/Mod_Ljpost.php:36
+msgid "Livejournal Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Livejournal\""
-#: ../../extend/addon/hzaddons/tour/tour.php:97
-msgid "Share photos, links, location, etc."
-msgstr "Поделиться фотографией, ссылками, местоположение и т.п."
+#: ../../addon/ljpost/Mod_Ljpost.php:37
+msgid "Relay public posts to Livejournal"
+msgstr "Пересылает общедоступные публикации в Livejournal"
+
+#: ../../addon/ljpost/Mod_Ljpost.php:54
+msgid "Livejournal username"
+msgstr "Имя пользователя Livejournal"
+
+#: ../../addon/ljpost/Mod_Ljpost.php:58
+msgid "Livejournal password"
+msgstr "Пароль Livejournal"
+
+#: ../../addon/ljpost/Mod_Ljpost.php:62
+msgid "Post to Livejournal by default"
+msgstr "Публиковать в Livejournal по умолчанию"
+
+#: ../../addon/ljpost/Mod_Ljpost.php:70
+msgid "Livejournal Crosspost Connector"
+msgstr "Пересылка публикаций Livejournal"
-#: ../../extend/addon/hzaddons/tour/tour.php:98
+#: ../../addon/ljpost/ljpost.php:45
+msgid "Post to Livejournal"
+msgstr "Опубликовать в Livejournal"
+
+#: ../../addon/openid/openid.php:49
msgid ""
-"Only want to share content for a while? Make it expire at a certain date."
-msgstr "Хотите только поделиться временным содержимым? Установите срок его действия."
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Мы столкнулись с проблемой входа с предоставленным вами OpenID. Пожалуйста, проверьте корректность его написания."
-#: ../../extend/addon/hzaddons/tour/tour.php:99
-msgid "You can password protect content."
-msgstr "Вы можете защитить содержимое паролем."
+#: ../../addon/openid/openid.php:49
+msgid "The error message was:"
+msgstr "Сообщение об ошибке было:"
-#: ../../extend/addon/hzaddons/tour/tour.php:100
-msgid "Choose who you share with."
-msgstr "Выбрать с кем поделиться."
+#: ../../addon/openid/MysqlProvider.php:52
+msgid "First Name"
+msgstr "Имя"
-#: ../../extend/addon/hzaddons/tour/tour.php:102
-msgid "Click here when you are done."
-msgstr "Нажмите здесь когда закончите."
+#: ../../addon/openid/MysqlProvider.php:53
+msgid "Last Name"
+msgstr "Фамилия"
-#: ../../extend/addon/hzaddons/tour/tour.php:105
-msgid "Adjust from which channels posts should be displayed."
-msgstr "Настройте из каких каналов должны отображаться публикации."
+#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75
+msgid "Nickname"
+msgstr "Псевдоним"
-#: ../../extend/addon/hzaddons/tour/tour.php:106
-msgid "Only show posts from channels in the specified privacy group."
-msgstr "Показывать только публикации из определённой группы безопасности."
+#: ../../addon/openid/MysqlProvider.php:55
+msgid "Full Name"
+msgstr "Полное имя"
-#: ../../extend/addon/hzaddons/tour/tour.php:110
-msgid ""
-"Easily find posts containing tags (keywords preceded by the \"#\" symbol)."
-msgstr "Лёгкий поиск сообщения, содержащего теги (ключевые слова, которым предшествует символ #)."
+#: ../../addon/openid/MysqlProvider.php:61
+msgid "Profile Photo 16px"
+msgstr "Фотография профиля 16px"
-#: ../../extend/addon/hzaddons/tour/tour.php:111
-msgid "Easily find posts in given category."
-msgstr "Лёгкий поиск публикаций в данной категории."
+#: ../../addon/openid/MysqlProvider.php:62
+msgid "Profile Photo 32px"
+msgstr "Фотография профиля 32px"
-#: ../../extend/addon/hzaddons/tour/tour.php:112
-msgid "Easily find posts by date."
-msgstr "Лёгкий поиск публикаций по дате."
+#: ../../addon/openid/MysqlProvider.php:63
+msgid "Profile Photo 48px"
+msgstr "Фотография профиля 48px"
-#: ../../extend/addon/hzaddons/tour/tour.php:113
-msgid ""
-"Suggested users who have volounteered to be shown as suggestions, and who we "
-"think you might find interesting."
-msgstr "Рекомендуемые пользователи, которые были представлены в качестве предложений, и которые, по нашему мнению, могут оказаться интересными."
+#: ../../addon/openid/MysqlProvider.php:64
+msgid "Profile Photo 64px"
+msgstr "Фотография профиля 64px"
-#: ../../extend/addon/hzaddons/tour/tour.php:114
-msgid "Here you see channels you have connected to."
-msgstr "Здесь вы видите каналы, к которым вы подключились."
+#: ../../addon/openid/MysqlProvider.php:65
+msgid "Profile Photo 80px"
+msgstr "Фотография профиля 80px"
-#: ../../extend/addon/hzaddons/tour/tour.php:115
-msgid "Save your search so you can repeat it at a later date."
-msgstr "Сохраните ваш поиск с тем, чтобы повторить его позже."
+#: ../../addon/openid/MysqlProvider.php:66
+msgid "Profile Photo 128px"
+msgstr "Фотография профиля 128px"
-#: ../../extend/addon/hzaddons/tour/tour.php:118
-msgid ""
-"If you see this icon you can be sure that the sender is who it say it is. It "
-"is normal that it is not always possible to verify the sender, so the icon "
-"will be missing sometimes. There is usually no need to worry about that."
-msgstr "Если вы видите этот значок, вы можете быть уверены, что отправитель - это тот, кто это говорит. Это нормально, что не всегда можно проверить отправителя, поэтому значок иногда будет отсутствовать. Обычно об этом не нужно беспокоиться."
+#: ../../addon/openid/MysqlProvider.php:67
+msgid "Timezone"
+msgstr "Часовой пояс"
-#: ../../extend/addon/hzaddons/tour/tour.php:119
-msgid ""
-"Danger! It seems someone tried to forge a message! This message is not "
-"necessarily from who it says it is from!"
-msgstr "Опасность! Кажется, кто-то пытался подделать сообщение! Это сообщение не обязательно от того, от кого оно значится!"
+#: ../../addon/openid/MysqlProvider.php:70
+msgid "Birth Year"
+msgstr "Год рождения"
-#: ../../extend/addon/hzaddons/tour/tour.php:126
-msgid ""
-"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can "
-"pause it at any time and continue where you left off by reloading the page, "
-"or navigting to another page.</p><p>You can also advance by pressing the "
-"return key"
-msgstr "Добро пожаловать в Hubzilla! Желаете получить обзор пользовательского интерфейса?</p> <p>Вы можете его приостановаить и в любое время перезагрузив страницу или перейдя на другую.</p><p>Также вы можете нажать клавишу \"Назад\""
+#: ../../addon/openid/MysqlProvider.php:71
+msgid "Birth Month"
+msgstr "Месяц рождения"
-#: ../../extend/addon/hzaddons/superblock/superblock.php:337
-msgid "Block Completely"
-msgstr "Заблокировать полностью"
+#: ../../addon/openid/MysqlProvider.php:72
+msgid "Birth Day"
+msgstr "День рождения"
-#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:21
-msgid "Block channels"
-msgstr "Заблокировать каналы"
+#: ../../addon/openid/MysqlProvider.php:73
+msgid "Birthdate"
+msgstr "Дата рождения"
-#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:63
-msgid "superblock settings updated"
-msgstr "Настройки Superblock обновлены."
+#: ../../addon/openid/Mod_Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "Ошибка протокола OpenID. Идентификатор не возвращён."
-#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:87
-msgid "Currently blocked"
-msgstr "В настоящее время заблокирован"
+#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317
+msgid "Login failed."
+msgstr "Не удалось войти."
-#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:89
-msgid "No channels currently blocked"
-msgstr "В настоящее время никакие каналы не блокируются"
+#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60
+#: ../../include/selectors.php:77 ../../include/channel.php:1536
+msgid "Male"
+msgstr "Мужчина"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:19
+#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60
+#: ../../include/selectors.php:77 ../../include/channel.php:1534
+msgid "Female"
+msgstr "Женщина"
+
+#: ../../addon/randpost/randpost.php:97
+msgid "You're welcome."
+msgstr "Пожалуйста."
+
+#: ../../addon/randpost/randpost.php:98
+msgid "Ah shucks..."
+msgstr "О, чёрт..."
+
+#: ../../addon/randpost/randpost.php:99
+msgid "Don't mention it."
+msgstr "Не стоит благодарности."
+
+#: ../../addon/randpost/randpost.php:100
+msgid "&lt;blush&gt;"
+msgstr "&lt;краснею&gt;"
+
+#: ../../addon/startpage/Mod_Startpage.php:50
+msgid "Startpage App"
+msgstr "Приложение \"Стартовая страница\""
+
+#: ../../addon/startpage/Mod_Startpage.php:51
+msgid "Set a preferred page to load on login from home page"
+msgstr "Устанавливает предпочтительную страницу для загрузки при входе с домашней страницы"
+
+#: ../../addon/startpage/Mod_Startpage.php:62
+msgid "Page to load after login"
+msgstr "Страница для загрузки после входа"
+
+#: ../../addon/startpage/Mod_Startpage.php:62
+msgid ""
+"Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy "
+"collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave "
+"blank for default network page (grid)."
+msgstr "Примеры: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (оставьте пустым для для страницы сети по умолчанию)."
+
+#: ../../addon/startpage/Mod_Startpage.php:70
+msgid "Startpage"
+msgstr "Стартовая страница"
+
+#: ../../addon/morepokes/morepokes.php:19
msgid "bitchslap"
msgstr "дать леща"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:19
+#: ../../addon/morepokes/morepokes.php:19
msgid "bitchslapped"
msgstr "получил леща"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:20
+#: ../../addon/morepokes/morepokes.php:20
msgid "shag"
msgstr "вздрючить"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:20
+#: ../../addon/morepokes/morepokes.php:20
msgid "shagged"
msgstr "вздрюченный"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:21
+#: ../../addon/morepokes/morepokes.php:21
msgid "patent"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:21
+#: ../../addon/morepokes/morepokes.php:21
msgid "patented"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:22
+#: ../../addon/morepokes/morepokes.php:22
msgid "hug"
msgstr "обнять"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:22
+#: ../../addon/morepokes/morepokes.php:22
msgid "hugged"
msgstr "обнятый"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:23
+#: ../../addon/morepokes/morepokes.php:23
msgid "murder"
msgstr "убить"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:23
+#: ../../addon/morepokes/morepokes.php:23
msgid "murdered"
msgstr "убитый"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:24
+#: ../../addon/morepokes/morepokes.php:24
msgid "worship"
msgstr "почитать"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:24
+#: ../../addon/morepokes/morepokes.php:24
msgid "worshipped"
msgstr "почитаемый"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:25
+#: ../../addon/morepokes/morepokes.php:25
msgid "kiss"
msgstr "целовать"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:25
+#: ../../addon/morepokes/morepokes.php:25
msgid "kissed"
msgstr "поцелованный"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:26
+#: ../../addon/morepokes/morepokes.php:26
msgid "tempt"
msgstr "искушать"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:26
+#: ../../addon/morepokes/morepokes.php:26
msgid "tempted"
msgstr "искушённый"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:27
+#: ../../addon/morepokes/morepokes.php:27
msgid "raise eyebrows at"
msgstr "поднять брови"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:27
+#: ../../addon/morepokes/morepokes.php:27
msgid "raised their eyebrows at"
msgstr "поднял брови"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:28
+#: ../../addon/morepokes/morepokes.php:28
msgid "insult"
msgstr "оскорбить"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:28
+#: ../../addon/morepokes/morepokes.php:28
msgid "insulted"
msgstr "оскорблённый"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:29
+#: ../../addon/morepokes/morepokes.php:29
msgid "praise"
msgstr "хвалить"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:29
+#: ../../addon/morepokes/morepokes.php:29
msgid "praised"
msgstr "похваленный"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:30
+#: ../../addon/morepokes/morepokes.php:30
msgid "be dubious of"
msgstr "усомниться"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:30
+#: ../../addon/morepokes/morepokes.php:30
msgid "was dubious of"
msgstr "усомнился"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:31
+#: ../../addon/morepokes/morepokes.php:31
msgid "eat"
msgstr "есть"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:31
+#: ../../addon/morepokes/morepokes.php:31
msgid "ate"
msgstr "съел"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:32
+#: ../../addon/morepokes/morepokes.php:32
msgid "giggle and fawn at"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:32
+#: ../../addon/morepokes/morepokes.php:32
msgid "giggled and fawned at"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:33
+#: ../../addon/morepokes/morepokes.php:33
msgid "doubt"
msgstr "сомневаться"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:33
+#: ../../addon/morepokes/morepokes.php:33
msgid "doubted"
msgstr "сомневался"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:34
+#: ../../addon/morepokes/morepokes.php:34
msgid "glare"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:34
+#: ../../addon/morepokes/morepokes.php:34
msgid "glared at"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:35
+#: ../../addon/morepokes/morepokes.php:35
msgid "fuck"
msgstr "трахнуть"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:35
+#: ../../addon/morepokes/morepokes.php:35
msgid "fucked"
msgstr "трахнул"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:36
+#: ../../addon/morepokes/morepokes.php:36
msgid "bonk"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:36
+#: ../../addon/morepokes/morepokes.php:36
msgid "bonked"
msgstr ""
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:37
+#: ../../addon/morepokes/morepokes.php:37
msgid "declare undying love for"
msgstr "признаться в любви к"
-#: ../../extend/addon/hzaddons/morepokes/morepokes.php:37
+#: ../../addon/morepokes/morepokes.php:37
msgid "declared undying love for"
msgstr "признался в любви к"
-#: ../../extend/addon/hzaddons/logrot/logrot.php:36
-msgid "Logfile archive directory"
-msgstr "Каталог архивирования журнала"
+#: ../../addon/diaspora/Receiver.php:1495
+#, php-format
+msgid "%1$s dislikes %2$s's %3$s"
+msgstr "%1$s не нравится %2$s's %3$s"
-#: ../../extend/addon/hzaddons/logrot/logrot.php:36
-msgid "Directory to store rotated logs"
-msgstr "Каталог для хранения заархивированных журналов"
+#: ../../addon/diaspora/Mod_Diaspora.php:40
+msgid "Diaspora Protocol Settings updated."
+msgstr "Настройки протокола Diaspora обновлены."
-#: ../../extend/addon/hzaddons/logrot/logrot.php:37
-msgid "Logfile size in bytes before rotating"
-msgstr "Размер файла журнала в байтах для архивирования"
+#: ../../addon/diaspora/Mod_Diaspora.php:49
+msgid ""
+"The diaspora protocol does not support location independence. Connections "
+"you make within that network may be unreachable from alternate channel "
+"locations."
+msgstr "Протокол Diaspora не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала."
-#: ../../extend/addon/hzaddons/logrot/logrot.php:38
-msgid "Number of logfiles to retain"
-msgstr "Количество сохраняемых файлов журналов"
+#: ../../addon/diaspora/Mod_Diaspora.php:55
+msgid "Diaspora Protocol App"
+msgstr "Приложение \"Протокол Diaspora\""
-#: ../../extend/addon/hzaddons/likebanner/likebanner.php:51
-msgid "Your Webbie:"
-msgstr "Ваш Webbie:"
+#: ../../addon/diaspora/Mod_Diaspora.php:74
+msgid "Allow any Diaspora member to comment on your public posts"
+msgstr "Разрешить любому участнику Diaspora комментировать ваши общедоступные публикации"
-#: ../../extend/addon/hzaddons/likebanner/likebanner.php:54
-msgid "Fontsize (px):"
-msgstr "Размер шрифта (px):"
+#: ../../addon/diaspora/Mod_Diaspora.php:78
+msgid "Prevent your hashtags from being redirected to other sites"
+msgstr "Предотвратить перенаправление тегов на другие сайты"
-#: ../../extend/addon/hzaddons/likebanner/likebanner.php:68
-msgid "Link:"
-msgstr "Ссылка:"
+#: ../../addon/diaspora/Mod_Diaspora.php:82
+msgid "Sign and forward posts and comments with no existing Diaspora signature"
+msgstr "Подписывать и отправлять публикации и комментарии с несуществующей подписью Diaspora"
-#: ../../extend/addon/hzaddons/likebanner/likebanner.php:70
-msgid "Like us on Hubzilla"
-msgstr "Нравится на Hubzilla"
+#: ../../addon/diaspora/Mod_Diaspora.php:87
+msgid "Followed hashtags (comma separated, do not include the #)"
+msgstr "Отслеживаемые теги (через запятую, исключая #)"
-#: ../../extend/addon/hzaddons/likebanner/likebanner.php:72
-msgid "Embed:"
-msgstr "Встроить:"
+#: ../../addon/diaspora/Mod_Diaspora.php:96
+msgid "Diaspora Protocol"
+msgstr "Протокол Diaspora"
-#: ../../extend/addon/hzaddons/qrator/qrator.php:48
-msgid "QR code"
-msgstr "QR-код"
+#: ../../addon/diaspora/import_diaspora.php:18
+msgid "No username found in import file."
+msgstr "Имя пользователя не найдено в файле для импорта."
-#: ../../extend/addon/hzaddons/qrator/qrator.php:63
-msgid "QR Generator"
-msgstr "Генератор QR-кодов"
+#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:73
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Не удалось создать уникальный адрес канала. Импорт не завершен."
-#: ../../extend/addon/hzaddons/qrator/qrator.php:64
-msgid "Enter some text"
-msgstr "Введите любой текст"
+#: ../../addon/photocache/Mod_Photocache.php:27
+msgid "Photo Cache settings saved."
+msgstr "Настройки кэширования изображений сохранены."
+
+#: ../../addon/photocache/Mod_Photocache.php:36
+msgid ""
+"Photo Cache addon saves a copy of images from external sites locally to "
+"increase your anonymity in the web."
+msgstr "Приложение \"Кэшировние изображений\" сохраняет копию изображений с внешних сайтов локально для повышения вашей анонимности в Интернет."
+
+#: ../../addon/photocache/Mod_Photocache.php:42
+msgid "Photo Cache App"
+msgstr "Приложение \"Кэширование изображений\""
+
+#: ../../addon/photocache/Mod_Photocache.php:53
+msgid "Minimal photo size for caching"
+msgstr "Минимальный размер изображений для кэширования"
+
+#: ../../addon/photocache/Mod_Photocache.php:55
+msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default."
+msgstr "В пикселях. От 1 до 1024, 0 будет заменён значением по умолчанию."
+
+#: ../../addon/photocache/Mod_Photocache.php:64
+msgid "Photo Cache"
+msgstr "Кэширование изображений"
+
+#: ../../addon/testdrive/testdrive.php:104
+#, php-format
+msgid "Your account on %s will expire in a few days."
+msgstr "Ваш аккаунт на %s перестанет работать через несколько дней."
+
+#: ../../addon/testdrive/testdrive.php:105
+msgid "Your $Productname test account is about to expire."
+msgstr "Ваш тестовый аккаунт в $Productname близок к окончанию срока действия."
+
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15
+msgid "Add some colour to tag clouds"
+msgstr "Добавить немного цвета для облака тегов"
+
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26
+msgid "Rainbow Tag App"
+msgstr "Приложение \"Радуга тегов\""
+
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34
+msgid "Rainbow Tag"
+msgstr "Радуга тегов"
+
+#: ../../addon/upload_limits/upload_limits.php:25
+msgid "Show Upload Limits"
+msgstr "Показать ограничения на загрузку"
+
+#: ../../addon/upload_limits/upload_limits.php:27
+msgid "Hubzilla configured maximum size: "
+msgstr "Максимальный размер настроенный в Hubzilla:"
+
+#: ../../addon/upload_limits/upload_limits.php:28
+msgid "PHP upload_max_filesize: "
+msgstr ""
+
+#: ../../addon/upload_limits/upload_limits.php:29
+msgid "PHP post_max_size (must be larger than upload_max_filesize): "
+msgstr "PHP post_max_size (должен быть больше чем upload_max_filesize): "
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:146
+#: ../../addon/gravatar/gravatar.php:123
+msgid "generic profile image"
+msgstr "Стандартное изображение профиля"
+
+#: ../../addon/gravatar/gravatar.php:124
+msgid "random geometric pattern"
+msgstr "Случайный геометрический рисунок"
+
+#: ../../addon/gravatar/gravatar.php:125
+msgid "monster face"
+msgstr "Лицо чудовища"
+
+#: ../../addon/gravatar/gravatar.php:126
+msgid "computer generated face"
+msgstr "Сгенерированное компьютером лицо"
+
+#: ../../addon/gravatar/gravatar.php:127
+msgid "retro arcade style face"
+msgstr "Лицо в стиле старой аркадной игры"
+
+#: ../../addon/gravatar/gravatar.php:128
+msgid "Hub default profile photo"
+msgstr "Фотография профиля по умолчанию"
+
+#: ../../addon/gravatar/gravatar.php:143
+msgid "Information"
+msgstr "Информация"
+
+#: ../../addon/gravatar/gravatar.php:143
+msgid ""
+"Libravatar addon is installed, too. Please disable Libravatar addon or this "
+"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
+"nothing was found at Libravatar."
+msgstr "Плагин Libravatar также установлен. Пожалуйста, отключите плагин Libravatar или этот плагин Gravatar. Если Плагин Libravatar ничего не найдёт, он вернётся в Gravatar."
+
+#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46
+#: ../../addon/xmpp/xmpp.php:43
+msgid "Save Settings"
+msgstr "Сохранить настройки"
+
+#: ../../addon/gravatar/gravatar.php:151
+msgid "Default avatar image"
+msgstr "Изображение аватара по умолчанию"
+
+#: ../../addon/gravatar/gravatar.php:151
+msgid "Select default avatar image if none was found at Gravatar. See README"
+msgstr "Выберите изображения аватар по умолчанию если ничего не было найдено в Gravatar (см. README)."
+
+#: ../../addon/gravatar/gravatar.php:152
+msgid "Rating of images"
+msgstr "Оценки изображений"
+
+#: ../../addon/gravatar/gravatar.php:152
+msgid "Select the appropriate avatar rating for your site. See README"
+msgstr "Выберите подходящую оценку аватара для вашего сайта (см. README)."
+
+#: ../../addon/gravatar/gravatar.php:165
+msgid "Gravatar settings updated."
+msgstr "Настройки Gravatar обновлены."
+
+#: ../../addon/hzfiles/hzfiles.php:79
+msgid "Hubzilla File Storage Import"
+msgstr "Импорт файлового хранилища Hubzilla"
+
+#: ../../addon/hzfiles/hzfiles.php:80
+msgid "This will import all your cloud files from another server."
+msgstr "Это позволит импортировать все ваши файлы с другого сервера."
+
+#: ../../addon/hzfiles/hzfiles.php:81
+msgid "Hubzilla Server base URL"
+msgstr "Базовый URL сервера Hubzilla"
+
+#: ../../addon/hzfiles/hzfiles.php:82
+msgid "Since modified date yyyy-mm-dd"
+msgstr "Начиная с даты изменений yyyy-mm-dd"
+
+#: ../../addon/hzfiles/hzfiles.php:83
+msgid "Until modified date yyyy-mm-dd"
+msgstr "Заканчивая датой изменений yyyy-mm-dd"
+
+#: ../../addon/visage/Mod_Visage.php:21
+msgid "Who viewed my channel/profile"
+msgstr "Кто смотрел мой канал / профиль"
+
+#: ../../addon/visage/Mod_Visage.php:25
+msgid "Recent Channel/Profile Viewers"
+msgstr "Последние просмотры канала / профиля"
+
+#: ../../addon/visage/Mod_Visage.php:36
+msgid "No entries."
+msgstr "Нет записей."
+
+#: ../../addon/nsabait/Mod_Nsabait.php:20
+#: ../../addon/nsabait/Mod_Nsabait.php:24
+msgid "NSA Bait App"
+msgstr "Приложение NSA Bait"
+
+#: ../../addon/nsabait/Mod_Nsabait.php:26
+msgid "Make yourself a political target"
+msgstr "Сделать себя политической мишенью"
+
+#: ../../addon/mailtest/mailtest.php:19
+msgid "Send test email"
+msgstr "Отправить тестовый email"
+
+#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50
+msgid "No recipients found."
+msgstr "Получателей не найдено."
+
+#: ../../addon/mailtest/mailtest.php:66
+msgid "Mail sent."
+msgstr "Сообщение отправлено"
+
+#: ../../addon/mailtest/mailtest.php:68
+msgid "Sending of mail failed."
+msgstr "Не удалось отправить сообщение."
+
+#: ../../addon/mailtest/mailtest.php:77
+msgid "Mail Test"
+msgstr "Тестовое сообщение"
+
+#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92
+msgid "Message subject"
+msgstr "Тема сообщения"
+
+#: ../../addon/mdpost/mdpost.php:42
+msgid "Use markdown for editing posts"
+msgstr "Использовать язык разметки Markdown для редактирования публикаций"
+
+#: ../../addon/openstreetmap/openstreetmap.php:146
msgid "View Larger"
msgstr "Увеличить"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:169
+#: ../../addon/openstreetmap/openstreetmap.php:170
msgid "Tile Server URL"
msgstr "URL сервера Tile"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:169
+#: ../../addon/openstreetmap/openstreetmap.php:170
msgid ""
"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank"
"\">public tile servers</a>"
msgstr "Список <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">общедоступных серверов</a>"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:170
+#: ../../addon/openstreetmap/openstreetmap.php:171
msgid "Nominatim (reverse geocoding) Server URL"
msgstr "URL сервера Nominatim (обратное геокодирование)"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:170
+#: ../../addon/openstreetmap/openstreetmap.php:171
msgid ""
"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target="
"\"_blank\">Nominatim servers</a>"
msgstr "Список <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">серверов Nominatim</a>"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:171
+#: ../../addon/openstreetmap/openstreetmap.php:172
msgid "Default zoom"
msgstr "Масштаб по умолчанию"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:171
+#: ../../addon/openstreetmap/openstreetmap.php:172
msgid ""
"The default zoom level. (1:world, 18:highest, also depends on tile server)"
msgstr "Уровень размера по умолчанию (1 - весь мир, 18 - максимальный; зависит от сервера)."
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:172
+#: ../../addon/openstreetmap/openstreetmap.php:173
msgid "Include marker on map"
msgstr "Включите маркер на карте"
-#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:172
+#: ../../addon/openstreetmap/openstreetmap.php:173
msgid "Include a marker on the map."
msgstr "Включить маркер на карте"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:309
-msgid "Activate addon"
-msgstr "Активировать расширение"
+#: ../../addon/msgfooter/msgfooter.php:47
+msgid "text to include in all outgoing posts from this site"
+msgstr "текст, который будет добавлен во все исходящие публикации с этого сайта"
+
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22
+msgid "Fuzzloc Settings updated."
+msgstr "Настройки примерного положения обновлены."
+
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34
+msgid "Fuzzy Location App"
+msgstr "Приложение \"Примерное положение\""
+
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35
+msgid ""
+"Blur your precise location if your channel uses browser location mapping"
+msgstr "Размывает вашего точное местоположение в случае если ваш канал использует отображение местоположения из браузера"
+
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40
+msgid "Minimum offset in meters"
+msgstr "Минимальное смещение в метрах"
+
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44
+msgid "Maximum offset in meters"
+msgstr "Максимальное смещение в метрах"
+
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53
+msgid "Fuzzy Location"
+msgstr "Примерное положение"
+
+#: ../../addon/rtof/rtof.php:51
+msgid "Post to Friendica"
+msgstr "Опубликовать в Friendica"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:313
+#: ../../addon/rtof/Mod_Rtof.php:24
+msgid "Friendica Crosspost Connector Settings saved."
+msgstr "Настройки пересылки публикаций Friendica сохранены."
+
+#: ../../addon/rtof/Mod_Rtof.php:36
+msgid "Friendica Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Friendica\""
+
+#: ../../addon/rtof/Mod_Rtof.php:37
+msgid "Relay public postings to a connected Friendica account"
+msgstr "Пересылает общедоступные публикации на подключённую учётную запись Friendica"
+
+#: ../../addon/rtof/Mod_Rtof.php:49
+msgid "Send public postings to Friendica by default"
+msgstr "Отправлять общедоступные публикации во Friendica по умолчанию"
+
+#: ../../addon/rtof/Mod_Rtof.php:53
+msgid "Friendica API Path"
+msgstr "Путь к Friendica API"
+
+#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67
+msgid "https://{sitename}/api"
+msgstr ""
+
+#: ../../addon/rtof/Mod_Rtof.php:57
+msgid "Friendica login name"
+msgstr "Имя входа Friendica"
+
+#: ../../addon/rtof/Mod_Rtof.php:61
+msgid "Friendica password"
+msgstr "Пароль Friendica"
+
+#: ../../addon/rtof/Mod_Rtof.php:69
+msgid "Friendica Crosspost Connector"
+msgstr "Пересылка публикаций Friendica"
+
+#: ../../addon/jappixmini/Mod_Jappixmini.php:96
+msgid "Jappixmini App"
+msgstr "Приложение Jappix Mini"
+
+#: ../../addon/jappixmini/Mod_Jappixmini.php:97
+msgid "Provides a Facebook-like chat using Jappix Mini"
+msgstr "Предоставляет Facebook-подобный чат с использованием Jappix Mini"
+
+#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1452
+#: ../../include/channel.php:1623
+msgid "Status:"
+msgstr "Статус:"
+
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
msgid "Hide Jappixmini Chat-Widget from the webinterface"
-msgstr "Скрыть виджет чата Jappixmini из веб-интерфейса"
+msgstr "Скрыть виджет чата Jappix Mini из веб-интерфейса"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:318
+#: ../../addon/jappixmini/Mod_Jappixmini.php:166
msgid "Jabber username"
msgstr "Имя пользователя Jabber"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:324
+#: ../../addon/jappixmini/Mod_Jappixmini.php:172
msgid "Jabber server"
msgstr "Сервер Jabber"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:330
+#: ../../addon/jappixmini/Mod_Jappixmini.php:178
msgid "Jabber BOSH host URL"
msgstr "URL узла Jabber BOSH"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:337
+#: ../../addon/jappixmini/Mod_Jappixmini.php:185
msgid "Jabber password"
msgstr "Пароль Jabber"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
msgid "Encrypt Jabber password with Hubzilla password"
msgstr "Зашифровать пароль Jabber с помощью пароля Hubzilla"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:347
-#: ../../extend/addon/hzaddons/redred/redred.php:115
+#: ../../addon/jappixmini/Mod_Jappixmini.php:195
+#: ../../addon/redred/Mod_Redred.php:79
msgid "Hubzilla password"
msgstr "Пароль Hubzilla"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:351
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:355
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
msgid "Approve subscription requests from Hubzilla contacts automatically"
msgstr "Утверждать запросы на подписку от контактов Hubzilla автоматически"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:359
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
msgid "Purge internal list of jabber addresses of contacts"
msgstr "Очистить внутренний список адресов контактов Jabber"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:364
+#: ../../addon/jappixmini/Mod_Jappixmini.php:212
msgid "Configuration Help"
msgstr "Помощь по конфигурации"
-#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:371
-msgid "Jappix Mini Settings"
-msgstr "Настройки Jappix Mini"
-
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:57
-msgid "Errors encountered deleting database table "
-msgstr "Возникшие при удалении таблицы базы данных ошибки"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:258
+msgid "Jappixmini Settings"
+msgstr "Настройки Jappix Мini"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:96
-msgid "Drop tables when uninstalling?"
-msgstr "Удалить таблицы при деинсталляции?"
+#: ../../addon/upgrade_info/upgrade_info.php:43
+msgid "Your channel has been upgraded to the latest $Projectname version."
+msgstr "Ваш канал был обновлён на последнюю версию $Projectname."
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:96
+#: ../../addon/upgrade_info/upgrade_info.php:44
msgid ""
-"If checked, the Rendezvous database tables will be deleted when the plugin "
-"is uninstalled."
-msgstr "Если включено, то таблицы базы данных Rendezvous будут удалены при удалении плагина."
+"To improve usability, we have converted some features into installable stand-"
+"alone apps."
+msgstr "Чтобы улучшить удобство использования, некоторые функции теперь доступны в виде устанавливаемых автономных приложений."
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:97
-msgid "Mapbox Access Token"
-msgstr "Токен доступа к Mapbox"
+#: ../../addon/upgrade_info/upgrade_info.php:45
+msgid "Please visit the $Projectname"
+msgstr "Пожалуйста, посетите $Projectname"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:97
-msgid ""
-"If you enter a Mapbox access token, it will be used to retrieve map tiles "
-"from Mapbox instead of the default OpenStreetMap tile server."
-msgstr "Если вы введете токен доступа к Mapbox, он будет использоваться для извлечения фрагментов карты из Mapbox вместо стандартного сервера OpenStreetMap."
+#: ../../addon/upgrade_info/upgrade_info.php:46
+msgid "app store"
+msgstr "раздел \"Приложения\""
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:162
-msgid "Rendezvous"
-msgstr ""
+#: ../../addon/upgrade_info/upgrade_info.php:47
+msgid "and install possibly missing apps."
+msgstr "и установите необходимые вам."
+
+#: ../../addon/upgrade_info/upgrade_info.php:52
+msgid "Upgrade Info"
+msgstr "Сведения об обновлении"
+
+#: ../../addon/upgrade_info/upgrade_info.php:56
+msgid "Do not show this again"
+msgstr "Больше не показывать"
+
+#: ../../addon/channelreputation/channelreputation.php:98
+#: ../../addon/channelreputation/channelreputation.php:99
+#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177
+#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259
+#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317
+msgid "Access Denied"
+msgstr "Доступ запрещён"
+
+#: ../../addon/channelreputation/channelreputation.php:106
+msgid "Enable Community Moderation"
+msgstr "Включить модерацию сообщества"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:167
+#: ../../addon/channelreputation/channelreputation.php:114
+msgid "Reputation automatically given to new members"
+msgstr "Репутация автоматически предоставляемая новым участникам"
+
+#: ../../addon/channelreputation/channelreputation.php:115
+msgid "Reputation will never fall below this value"
+msgstr "Репутация никогда не упадёт ниже этого значения"
+
+#: ../../addon/channelreputation/channelreputation.php:116
+msgid "Minimum reputation before posting is allowed"
+msgstr "Минимальная репутация для разрешения возможности размещать публикации"
+
+#: ../../addon/channelreputation/channelreputation.php:117
+msgid "Minimum reputation before commenting is allowed"
+msgstr "Минимальная репутация для разрешения комментирования"
+
+#: ../../addon/channelreputation/channelreputation.php:118
+msgid "Minimum reputation before a member is able to moderate other posts"
+msgstr "Минимальная репутация для возможности модерирования участником чужих публикаций"
+
+#: ../../addon/channelreputation/channelreputation.php:119
msgid ""
-"This identity has been deleted by another member due to inactivity. Please "
-"press the \"New identity\" button or refresh the page to register a new "
-"identity. You may use the same name."
-msgstr "Этот идентификатор был удалён другим участником из-за неактивности. Пожалуйста нажмите кнопку \"Новый идентификатор\" для обновления страницы и получения нового идентификатора. Вы можете использовать то же имя."
+"Max ratio of moderator's reputation that can be added to/deducted from "
+"reputation of person being moderated"
+msgstr "Максимальное соотношение репутации модератора, которое может быть добавлено / вычтено из репутации модерируемого участника"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:168
-msgid "Welcome to Rendezvous!"
-msgstr "Добро пожаловать в Rendezvous!"
+#: ../../addon/channelreputation/channelreputation.php:120
+msgid "Reputation \"cost\" to post"
+msgstr "\"Стоимость\" репутации для публикации"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:169
+#: ../../addon/channelreputation/channelreputation.php:121
+msgid "Reputation \"cost\" to comment"
+msgstr "\"Стоимость\" репутации для комментирования"
+
+#: ../../addon/channelreputation/channelreputation.php:122
msgid ""
-"Enter your name to join this rendezvous. To begin sharing your location with "
-"the other members, tap the GPS control. When your location is discovered, a "
-"red dot will appear and others will be able to see you on the map."
-msgstr "Введите ваше имя для вступления в это Rendezvous. Для того, чтобы делиться вашим положением с другими участниками, нажмите \"GPS control\". Когда ваше местоположение определно, красная точка появится и остальные смогут увидеть вас на карте."
+"Reputation automatically recovers at this rate per hour until it reaches "
+"minimum_to_post"
+msgstr "Репутация автоматически восстанавливается с этой скоростью в час пока не достигает значения minimum_to_post"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:171
-msgid "Let's meet here"
-msgstr "Давайте встретимся здесь"
+#: ../../addon/channelreputation/channelreputation.php:123
+msgid ""
+"When minimum_to_moderate > reputation > minimum_to_post reputation recovers "
+"at this rate per hour"
+msgstr "При minimum_to_moderate > репутация > minimum_to_post репутация восстанавливается с этой скоростью в час"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:174
-msgid "New marker"
-msgstr "Новый маркер"
+#: ../../addon/channelreputation/channelreputation.php:137
+msgid "Community Moderation Settings"
+msgstr "Настройки модерирования сообщества"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:175
-msgid "Edit marker"
-msgstr "Редактировать маркер"
+#: ../../addon/channelreputation/channelreputation.php:365
+msgid "Can moderate reputation on my channel."
+msgstr "Может модерировать репутацию на моём канале"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:176
-msgid "New identity"
-msgstr "Новый идентификатор"
+#: ../../addon/channelreputation/channelreputation.php:549
+#: ../../addon/channelreputation/channelreputation.php:552
+msgid "Channel Reputation"
+msgstr "Репутация канала"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:177
-msgid "Delete marker"
-msgstr "Удалить маркер"
+#: ../../addon/superblock/superblock.php:337
+msgid "Block Completely"
+msgstr "Заблокировать полностью"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:178
-msgid "Delete member"
-msgstr "Удалить участника"
+#: ../../addon/superblock/Mod_Superblock.php:20
+msgid "Superblock App"
+msgstr "Приложение Superblock"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:179
-msgid "Edit proximity alert"
-msgstr "Изменить оповещение о близости"
+#: ../../addon/superblock/Mod_Superblock.php:21
+msgid "Block channels"
+msgstr "Заблокировать каналы"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:180
-msgid ""
-"A proximity alert will be issued when this member is within a certain radius "
-"of you.<br><br>Enter a radius in meters (0 to disable):"
-msgstr "Оповещение о близости будет произведено, если этот участник находится на определённом расстоянии от вас. <br><br>Введите радиус в метрах (0 для отключения):"
+#: ../../addon/superblock/Mod_Superblock.php:63
+msgid "superblock settings updated"
+msgstr "Настройки Superblock обновлены."
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:180
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:185
-msgid "distance"
-msgstr "расстояние"
+#: ../../addon/superblock/Mod_Superblock.php:87
+msgid "Currently blocked"
+msgstr "В настоящее время заблокирован"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:181
-msgid "Proximity alert distance (meters)"
-msgstr "Расстояние для уведомления о близости (метров)"
+#: ../../addon/superblock/Mod_Superblock.php:89
+msgid "No channels currently blocked"
+msgstr "В настоящее время никакие каналы не блокируются"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:182
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:184
+#: ../../addon/nofed/Mod_Nofed.php:21
+msgid "nofed Settings saved."
+msgstr "Настройки nofed сохранены."
+
+#: ../../addon/nofed/Mod_Nofed.php:33
+msgid "No Federation App"
+msgstr "Приложение No Federation"
+
+#: ../../addon/nofed/Mod_Nofed.php:34
msgid ""
-"A proximity alert will be issued when you are within a certain radius of the "
-"marker location.<br><br>Enter a radius in meters (0 to disable):"
-msgstr "Оповещение о близости будет произведено, если вы находитесь на определённом расстоянии местоположения маркера. <br><br>Введите радиус в метрах (0 для отключения):"
+"Prevent posting from being federated to anybody. It will exist only on your "
+"channel page."
+msgstr "Запрещает федеративные функций для публикаций. Они будут существовать только на странице вашего канала."
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:183
-msgid "Marker proximity alert"
-msgstr "Маркер уведомления о близости"
+#: ../../addon/nofed/Mod_Nofed.php:42
+msgid "Federate posts by default"
+msgstr "Разрешить федерацию публикаций по умолчанию"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:186
-msgid "Reminder note"
-msgstr "Напоминание"
+#: ../../addon/nofed/Mod_Nofed.php:50
+msgid "No Federation"
+msgstr "Отключить Federation"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:187
-msgid ""
-"Enter a note to be displayed when you are within the specified proximity..."
-msgstr "Введите сообщение для отображения когда вы находитесь рядом"
+#: ../../addon/nofed/nofed.php:47
+msgid "Federate"
+msgstr "Федерировать"
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:199
-msgid "Add new rendezvous"
-msgstr "Добавить новое Rendezvous."
+#: ../../addon/redred/Mod_Redred.php:24
+msgid "Channel is required."
+msgstr "Необходим канал."
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:200
-msgid ""
-"Create a new rendezvous and share the access link with those you wish to "
-"invite to the group. Those who open the link become members of the "
-"rendezvous. They can view other member locations, add markers to the map, or "
-"share their own locations with the group."
-msgstr "Создайте новое Rendezvous и поделитесь ссылкой доступа с теми, кого вы хотите пригласить в группу. Тот, кто откроет эту ссылку, станет её участником. Участники могут видеть местоположение, добавлять маркеры на карту или делится своим собственным местоположением с группой."
+#: ../../addon/redred/Mod_Redred.php:38
+msgid "Hubzilla Crosspost Connector Settings saved."
+msgstr "Настройки пересылки публикаций Hubzilla сохранены."
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:232
-msgid "You have no rendezvous. Press the button above to create a rendezvous!"
-msgstr "У вас нет Rendezvous. Нажмите на кнопку ниже чтобы создать его!"
+#: ../../addon/redred/Mod_Redred.php:50
+#: ../../addon/statusnet/Mod_Statusnet.php:146
+msgid "Hubzilla Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Hubzilla\""
-#: ../../extend/addon/hzaddons/piwik/piwik.php:85
-msgid ""
-"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> "
-"analytics tool."
-msgstr "Этот сайт отслеживается с помощью инструментов аналитики <a href='http://www.piwik.org'>Piwik</a>."
+#: ../../addon/redred/Mod_Redred.php:51
+msgid "Relay public postings to another Hubzilla channel"
+msgstr "Пересылает общедоступные публикации в другой канал Hubzilla"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:88
-#, php-format
-msgid ""
-"If you do not want that your visits are logged this way you <a href='%s'>can "
-"set a cookie to prevent Piwik from tracking further visits of the site</a> "
-"(opt-out)."
-msgstr "Если вы не хотите, чтобы ваши визиты регистрировались таким образом, вы <a href='%s'>можете отключить cookie с тем, чтобы Piwik не отслеживал дальнейшие посещения сайта</a>."
+#: ../../addon/redred/Mod_Redred.php:63
+msgid "Send public postings to Hubzilla channel by default"
+msgstr "Отправлять общедоступные публикации в канал Hubzilla по умолчанию"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:96
-msgid "Piwik Base URL"
-msgstr "Базовый URL Piwik"
+#: ../../addon/redred/Mod_Redred.php:67
+msgid "Hubzilla API Path"
+msgstr "Путь к Hubzilla API"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:96
-msgid ""
-"Absolute path to your Piwik installation. (without protocol (http/s), with "
-"trailing slash)"
-msgstr "Абсолютный путь к вашей установке Piwik (без типа протокола, с начальным слэшем)"
+#: ../../addon/redred/Mod_Redred.php:71
+msgid "Hubzilla login name"
+msgstr "Имя входа Hubzilla"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:97
-msgid "Site ID"
-msgstr "ID сайта"
+#: ../../addon/redred/Mod_Redred.php:75
+msgid "Hubzilla channel name"
+msgstr "Название канала Hubzilla"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:98
-msgid "Show opt-out cookie link?"
-msgstr "Показывать ссылку на отказ от использования cookies?"
+#: ../../addon/redred/Mod_Redred.php:87
+msgid "Hubzilla Crosspost Connector"
+msgstr "Пересылка публикаций Hubzilla"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:99
-msgid "Asynchronous tracking"
-msgstr "Асинхронное отслеживание"
+#: ../../addon/redred/redred.php:50
+msgid "Post to Hubzilla"
+msgstr "Опубликовать в Hubzilla"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:100
-msgid "Enable frontend JavaScript error tracking"
-msgstr "Включить отслеживание ошибок JavaScript на фронтенде."
+#: ../../addon/logrot/logrot.php:36
+msgid "Logfile archive directory"
+msgstr "Каталог архивирования журнала"
-#: ../../extend/addon/hzaddons/piwik/piwik.php:100
-msgid "This feature requires Piwik >= 2.2.0"
-msgstr "Эта функция требует версию Piwik >= 2.2.0"
+#: ../../addon/logrot/logrot.php:36
+msgid "Directory to store rotated logs"
+msgstr "Каталог для хранения заархивированных журналов"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:148
-msgid "You are now authenticated to pumpio."
-msgstr "Вы аутентифицированы в Pump.io"
+#: ../../addon/logrot/logrot.php:37
+msgid "Logfile size in bytes before rotating"
+msgstr "Размер файла журнала в байтах для архивирования"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:149
-msgid "return to the featured settings page"
-msgstr "Вернутся к странице настроек"
+#: ../../addon/logrot/logrot.php:38
+msgid "Number of logfiles to retain"
+msgstr "Количество сохраняемых файлов журналов"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:163
-msgid "Post to Pump.io"
-msgstr "Опубликовать в Pump.io"
+#: ../../addon/frphotos/frphotos.php:92
+msgid "Friendica Photo Album Import"
+msgstr "Импортировать альбом фотографий Friendica"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:198
-msgid "Pump.io servername"
-msgstr "Имя сервера Pump.io"
+#: ../../addon/frphotos/frphotos.php:93
+msgid "This will import all your Friendica photo albums to this Red channel."
+msgstr "Это позволит импортировать все ваши альбомы фотографий Friendica в этот канал."
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:198
-msgid "Without \"http://\" or \"https://\""
-msgstr "Без \"http://\" или \"https://\""
+#: ../../addon/frphotos/frphotos.php:94
+msgid "Friendica Server base URL"
+msgstr "Базовый URL сервера Friendica"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:202
-msgid "Pump.io username"
-msgstr "Имя пользователя Pump.io"
+#: ../../addon/frphotos/frphotos.php:95
+msgid "Friendica Login Username"
+msgstr "Имя пользователя для входа Friendica"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:202
-msgid "Without the servername"
-msgstr "без имени сервера"
+#: ../../addon/frphotos/frphotos.php:96
+msgid "Friendica Login Password"
+msgstr "Пароль для входа Firendica"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:213
-msgid "You are not authenticated to pumpio"
-msgstr "Вы не аутентифицированы на Pump.io"
+#: ../../addon/hsse/Mod_Hsse.php:15
+msgid "WYSIWYG status editor"
+msgstr "WYSIWYG редактор статуса "
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:215
-msgid "(Re-)Authenticate your pump.io connection"
-msgstr "Аутентифицировать (повторно) ваше соединение с Pump.io"
+#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26
+msgid "WYSIWYG Status App"
+msgstr "Приложение \"WYSIWYG статус\""
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:219
-msgid "Enable pump.io Post Plugin"
-msgstr "Включить плагин публикаций Pump.io"
+#: ../../addon/hsse/Mod_Hsse.php:34
+msgid "WYSIWYG Status"
+msgstr "WYSIWYG статус"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:223
-msgid "Post to pump.io by default"
-msgstr "Публиковать в Pump.io по умолчанию"
+#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285
+msgid "Set your location"
+msgstr "Задать своё местоположение"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:227
-msgid "Should posts be public"
-msgstr "Публикации должны быть общедоступными"
+#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286
+msgid "Clear browser location"
+msgstr "Очистить местоположение из браузера"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:231
-msgid "Mirror all public posts"
-msgstr "Отображать все общедоступные публикации"
+#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302
+msgid "Embed (existing) photo from your photo albums"
+msgstr "Встроить (существующее) фото из вашего фотоальбома"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:237
-msgid "Pump.io Post Settings"
-msgstr "Настройки публикаций в Pump.io"
+#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338
+msgid "Tag term:"
+msgstr "Теги:"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:266
-msgid "PumpIO Settings saved."
-msgstr "Настройки публикаций в Pump.io сохранены."
+#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339
+msgid "Where are you right now?"
+msgstr "Где вы сейчас?"
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:125
-msgid "Nsabait Settings updated."
-msgstr "Настройки Nsabait обновлены"
+#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344
+msgid "Choose a different album..."
+msgstr "Выбрать другой альбом..."
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:157
-msgid "Enable NSAbait Plugin"
-msgstr "Включить плагин NSAbait"
+#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348
+msgid "Comments enabled"
+msgstr "Комментарии включены"
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:161
-msgid "NSAbait Settings"
-msgstr "Настройки Nsabait"
+#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349
+msgid "Comments disabled"
+msgstr "Комментарии отключены"
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:19
-msgid "Send test email"
-msgstr "Отправить тестовый email"
+#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401
+msgid "Page link name"
+msgstr "Название ссылки на страницу "
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:50
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:50
-msgid "No recipients found."
-msgstr "Получателей не найдено."
+#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404
+msgid "Post as"
+msgstr "Опубликовать как"
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:66
-msgid "Mail sent."
-msgstr "Сообщение отправлено"
+#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418
+msgid "Toggle voting"
+msgstr "Подключить голосование"
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:68
-msgid "Sending of mail failed."
-msgstr "Не удалось отправить сообщение."
+#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421
+msgid "Disable comments"
+msgstr "Отключить комментарии"
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:77
-msgid "Mail Test"
-msgstr "Тестовое сообщение"
+#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422
+msgid "Toggle comments"
+msgstr "Переключить комментарии"
-#: ../../extend/addon/hzaddons/mailtest/mailtest.php:96
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:92
-msgid "Message subject"
-msgstr "Тема сообщения"
+#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430
+msgid "Categories (optional, comma-separated list)"
+msgstr "Категории (необязательно, список через запятую)"
-#: ../../extend/addon/hzaddons/randpost/randpost.php:97
-msgid "You're welcome."
-msgstr "Пожалуйста."
+#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453
+msgid "Other networks and post services"
+msgstr "Другие сети и службы публикаций"
-#: ../../extend/addon/hzaddons/randpost/randpost.php:98
-msgid "Ah shucks..."
-msgstr "О, чёрт..."
+#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459
+msgid "Set publish date"
+msgstr "Установить дату публикации"
-#: ../../extend/addon/hzaddons/randpost/randpost.php:99
-msgid "Don't mention it."
-msgstr "Не стоит благодарности."
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25
+msgid "ActivityPub Protocol Settings updated."
+msgstr "Настройки протокола ActivityPub обновлены."
-#: ../../extend/addon/hzaddons/randpost/randpost.php:100
-msgid "&lt;blush&gt;"
-msgstr "&lt;краснею&gt;"
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:34
+msgid ""
+"The activitypub protocol does not support location independence. Connections "
+"you make within that network may be unreachable from alternate channel "
+"locations."
+msgstr "Протокол ActivityPub не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:50
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:128
-msgid "System defaults:"
-msgstr "Системные по умолчанию:"
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40
+msgid "Activitypub Protocol App"
+msgstr "Приложение \"Протокол ActivityPub\""
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:54
-msgid "Preferred Clipart IDs"
-msgstr "Предпочитаемый Clipart ID"
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:48
+msgid "Deliver to ActivityPub recipients in privacy groups"
+msgstr "Доставить получателям ActivityPub в группах безопасности"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:54
-msgid "List of preferred clipart ids. These will be shown first."
-msgstr "Список предпочитаемых Clipart ID. Эти будут показаны первыми."
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:48
+msgid ""
+"May result in a large number of mentions and expose all the members of your "
+"privacy group"
+msgstr "Может привести к большому количеству упоминаний и раскрытию участников группы безопасности"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:55
-msgid "Default Search Term"
-msgstr "Условие поиска по умолчанию"
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:52
+msgid "Send multi-media HTML articles"
+msgstr "Отправить HTML статьи с мультимедиа"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:55
-msgid "The default search term. These will be shown second."
-msgstr "Условие поиска по умолчанию. Показываются во вторую очередь."
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:52
+msgid "Not supported by some microblog services such as Mastodon"
+msgstr "Не поддерживается некоторыми микроблогами, например Mastodon"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:56
-msgid "Return After"
-msgstr "Вернуться после"
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:60
+msgid "Activitypub Protocol"
+msgstr "Протокол ActivityPub"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:56
-msgid "Page to load after image selection."
-msgstr "Страница для загрузки после выбора изображения."
+#: ../../addon/donate/donate.php:21
+msgid "Project Servers and Resources"
+msgstr "Серверы и ресурсы проекта"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:59
-msgid "Profile List"
-msgstr "Список профилей"
+#: ../../addon/donate/donate.php:22
+msgid "Project Creator and Tech Lead"
+msgstr "Создатель проекта и технический руководитель"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:61
-msgid "Order of Preferred"
-msgstr "Порядок предпочтения"
+#: ../../addon/donate/donate.php:49
+msgid ""
+"And the hundreds of other people and organisations who helped make the "
+"Hubzilla possible."
+msgstr "И сотни других людей и организаций которые помогали в создании Hubzilla."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:61
-msgid "Sort order of preferred clipart ids."
-msgstr "Порядок сортировки предпочитаемых Clipart ID. "
+#: ../../addon/donate/donate.php:52
+msgid ""
+"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving "
+"their time and expertise - and often paying out of pocket for services they "
+"share with others."
+msgstr "Проекты Redmatrix / Hubzilla предоставляются, в основном, добровольцами, которые предоставляют свое время и опыт и, часто, оплачивают из своего кармана услуги, которыми они делятся с другими."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:62
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:68
-msgid "Newest first"
-msgstr "Новое первым"
+#: ../../addon/donate/donate.php:53
+msgid ""
+"There is no corporate funding and no ads, and we do not collect and sell "
+"your personal information. (We don't control your personal information - "
+"<strong>you do</strong>.)"
+msgstr "Здесь нет корпоративного финансирования и рекламы, мы не собираем и не продаем вашу личную информацию. (Мы не контролируем вашу личную информацию - <strong>это делаете вы</strong>.)"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:65
-msgid "As entered"
-msgstr "По мере ввода"
+#: ../../addon/donate/donate.php:54
+msgid ""
+"Help support our ground-breaking work in decentralisation, web identity, and "
+"privacy."
+msgstr "Помогите поддержать нашу новаторскую работу в областях децентрализации, веб-идентификации и конфиденциальности."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:67
-msgid "Order of other"
-msgstr "Порядок других"
+#: ../../addon/donate/donate.php:56
+msgid ""
+"Your donations keep servers and services running and also helps us to "
+"provide innovative new features and continued development."
+msgstr "В ваших пожертвованиях поддерживают серверы и службы, а также помогают нам предоставлять новые возможности и продолжать развитие."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:67
-msgid "Sort order of other clipart ids."
-msgstr "Порядок сортировки остальных Clipart ID."
+#: ../../addon/donate/donate.php:59
+msgid "Donate"
+msgstr "Пожертвовать"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:69
-msgid "Most downloaded first"
-msgstr "Самое загружаемое первым"
+#: ../../addon/donate/donate.php:61
+msgid ""
+"Choose a project, developer, or public hub to support with a one-time "
+"donation"
+msgstr "Выберите проект, разработчика или общедоступный узел для поддержки в форме единоразового пожертвования"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:70
-msgid "Most liked first"
-msgstr "Самое нравящееся первым"
+#: ../../addon/donate/donate.php:62
+msgid "Donate Now"
+msgstr "Пожертвовать сейчас"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:72
-msgid "Preferred IDs Message"
-msgstr "Сообщение от предпочитаемых ID"
+#: ../../addon/donate/donate.php:63
+msgid ""
+"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"
+msgstr "<strong><em>или</em></strong> станьте спонсором проекта (только для Hubzilla)"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:72
-msgid "Message to display above preferred results."
-msgstr "Отображаемое сообщение над предпочитаемыми результатами."
+#: ../../addon/donate/donate.php:64
+msgid ""
+"Please indicate if you would like your first name or full name (or nothing) "
+"to appear in our sponsor listing"
+msgstr "Пожалуйста, если желаете, укажите ваше имя для отображения в списке спонсоров."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:78
-msgid "Uploaded by: "
-msgstr "Загружено:"
+#: ../../addon/donate/donate.php:65
+msgid "Sponsor"
+msgstr "Спонсор"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:78
-msgid "Drawn by: "
-msgstr "Нарисовано:"
+#: ../../addon/donate/donate.php:68
+msgid "Special thanks to: "
+msgstr "Особые благодарности:"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:182
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:194
-msgid "Use this image"
-msgstr "Использовать это изображение"
+#: ../../addon/chords/Mod_Chords.php:44
+msgid ""
+"This is a fairly comprehensive and complete guitar chord dictionary which "
+"will list most of the available ways to play a certain chord, starting from "
+"the base of the fingerboard up to a few frets beyond the twelfth fret "
+"(beyond which everything repeats). A couple of non-standard tunings are "
+"provided for the benefit of slide players, etc."
+msgstr ""
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:192
-msgid "Or select from a free OpenClipart.org image:"
-msgstr "Или выберите из бесплатных изображений на OpenClipart.org"
+#: ../../addon/chords/Mod_Chords.php:46
+msgid ""
+"Chord names start with a root note (A-G) and may include sharps (#) and "
+"flats (b). This software will parse most of the standard naming conventions "
+"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."
+msgstr ""
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:195
-msgid "Search Term"
-msgstr "Условие поиска"
+#: ../../addon/chords/Mod_Chords.php:48
+msgid ""
+"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, "
+"E7b13b11 ..."
+msgstr "Примеры действительных включают A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:232
-msgid "Unknown error. Please try again later."
-msgstr "Неизвестная ошибка. Пожалуйста, повторите попытку позже."
+#: ../../addon/chords/Mod_Chords.php:51
+msgid "Guitar Chords"
+msgstr "Гитарные аккорды"
-#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:308
-msgid "Profile photo updated successfully."
-msgstr "Фотография профиля обновлена успешно."
+#: ../../addon/chords/Mod_Chords.php:52
+msgid "The complete online chord dictionary"
+msgstr "Полный онлайн словарь аккордов"
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:79
-msgid "Hubzilla File Storage Import"
-msgstr "Импорт файлового хранилища Hubzilla"
+#: ../../addon/chords/Mod_Chords.php:57
+msgid "Tuning"
+msgstr "Настройка"
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:80
-msgid "This will import all your cloud files from another server."
-msgstr "Это позволит импортировать все ваши файлы с другого сервера."
+#: ../../addon/chords/Mod_Chords.php:58
+msgid "Chord name: example: Em7"
+msgstr "Наименование аккорда - example: Em7"
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:81
-msgid "Hubzilla Server base URL"
-msgstr "Базовый URL сервера Hubzilla"
+#: ../../addon/chords/Mod_Chords.php:59
+msgid "Show for left handed stringing"
+msgstr "Показывать струны для левшей"
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:82
-msgid "Since modified date yyyy-mm-dd"
-msgstr "Начиная с даты изменений yyyy-mm-dd"
+#: ../../addon/chords/chords.php:33
+msgid "Quick Reference"
+msgstr "Быстрая ссылка"
-#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:83
-msgid "Until modified date yyyy-mm-dd"
-msgstr "Заканчивая датой изменений yyyy-mm-dd"
+#: ../../addon/libertree/libertree.php:43
+msgid "Post to Libertree"
+msgstr "Опубликовать в Libertree"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:42
-msgid "Post to Livejournal"
-msgstr "Опубликовать в Livejournal"
+#: ../../addon/libertree/Mod_Libertree.php:25
+msgid "Libertree Crosspost Connector Settings saved."
+msgstr "Настройки пересылки публикаций Libertree сохранены."
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:73
-msgid "Enable Livejournal Post Plugin"
-msgstr "Включить раширение публикаций в Livejournal"
+#: ../../addon/libertree/Mod_Libertree.php:35
+msgid "Libertree Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Libertree\""
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:77
-msgid "Livejournal username"
-msgstr "Имя пользователя Livejournal"
+#: ../../addon/libertree/Mod_Libertree.php:36
+msgid "Relay public posts to Libertree"
+msgstr "Пересылает общедоступные публикации в Libertree"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:81
-msgid "Livejournal password"
-msgstr "Пароль Livejournal"
+#: ../../addon/libertree/Mod_Libertree.php:51
+msgid "Libertree API token"
+msgstr "Токен Libertree API"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:85
-msgid "Post to Livejournal by default"
-msgstr "Публиковать в Livejournal по умолчанию"
+#: ../../addon/libertree/Mod_Libertree.php:55
+msgid "Libertree site URL"
+msgstr "URL сайта Libertree"
+
+#: ../../addon/libertree/Mod_Libertree.php:59
+msgid "Post to Libertree by default"
+msgstr "Публиковать в Libertree по умолчанию"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:89
-msgid "Livejournal Post Settings"
-msgstr "Настройки публикации в Livejournal"
+#: ../../addon/libertree/Mod_Libertree.php:67
+msgid "Libertree Crosspost Connector"
+msgstr "Пересылка публикаций Libertree"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:143
-msgid "Post to GNU social"
-msgstr "Опубликовать в GNU Social"
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41
+msgid "Flattr widget settings updated."
+msgstr "Настройки виджета Flattr обновлены."
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53
+msgid "Flattr Widget App"
+msgstr "Приложение \"Виджет Flattr\""
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54
+msgid "Add a Flattr button to your channel page"
+msgstr "Добавить кнопку Flattr на страницу вашего канала"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65
+msgid "Flattr user"
+msgstr "Пользователь Flattr"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69
+msgid "URL of the Thing to flattr"
+msgstr "URL ccылки на Flattr"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69
+msgid "If empty channel URL is used"
+msgstr "Если пусто, то используется URL канала"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73
+msgid "Title of the Thing to flattr"
+msgstr "Заголовок вещи на Flattr"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73
+msgid "If empty \"channel name on The Hubzilla\" will be used"
+msgstr "Если пусто, то будет использовано \"Название канала Hubzilla\""
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:195
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
+msgid "Static or dynamic flattr button"
+msgstr "Статическая или динамическая кнопка Flattr"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
+msgid "static"
+msgstr "статическая"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
+msgid "dynamic"
+msgstr "динамическая"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
+msgid "Alignment of the widget"
+msgstr "Выравнивание виджета"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
+msgid "left"
+msgstr "слева"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
+msgid "right"
+msgstr "справа"
+
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89
+msgid "Flattr Widget"
+msgstr "Виджет Flattr"
+
+#: ../../addon/flattrwidget/flattrwidget.php:50
+msgid "Flattr this!"
+msgstr "Flattr это!"
+
+#: ../../addon/statusnet/Mod_Statusnet.php:61
msgid ""
"Please contact your site administrator.<br />The provided API URL is not "
"valid."
msgstr "Пожалуйста свяжитесь с администратором сайта. <br />Предоставленный URL API недействителен."
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:232
+#: ../../addon/statusnet/Mod_Statusnet.php:98
msgid "We could not contact the GNU social API with the Path you entered."
msgstr "Нам не удалось установить контакт с GNU Social API по введённому вами пути"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:266
+#: ../../addon/statusnet/Mod_Statusnet.php:130
msgid "GNU social settings updated."
msgstr "Настройки GNU Social обновлены."
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:310
+#: ../../addon/statusnet/Mod_Statusnet.php:147
+msgid ""
+"Relay public postings to a connected GNU social account (formerly StatusNet)"
+msgstr "Пересылает общедоступные публикации на подключённую учётную запись GNU social (бывшая StatusNet)"
+
+#: ../../addon/statusnet/Mod_Statusnet.php:181
msgid "Globally Available GNU social OAuthKeys"
msgstr "Глобально доступные ключи OAuthKeys GNU Social"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:312
+#: ../../addon/statusnet/Mod_Statusnet.php:183
msgid ""
"There are preconfigured OAuth key pairs for some GNU social servers "
"available. If you are using one of them, please use these credentials.<br /"
">If not feel free to connect to any other GNU social instance (see below)."
msgstr "Существуют предварительно настроенные пары ключей OAuth для некоторых доступных серверов GNU social. Если вы используете один из них, используйте эти учетные данные. <br />Если вы не хотите подключаться к какому-либо другому серверу GNU social (см. ниже)."
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:327
+#: ../../addon/statusnet/Mod_Statusnet.php:198
msgid "Provide your own OAuth Credentials"
msgstr "Предоставьте ваши собственные регистрационные данные OAuth"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:329
+#: ../../addon/statusnet/Mod_Statusnet.php:200
msgid ""
"No consumer key pair for GNU social found. Register your Hubzilla Account as "
"an desktop client on your GNU social account, copy the consumer key pair "
@@ -13653,27 +11937,27 @@ msgid ""
"Hubzilla installation at your favourite GNU social installation."
msgstr "Не найдена пользовательская пара ключей для GNU social. Зарегистрируйте свою учетную запись Hubzilla в качестве настольного клиента в своей учетной записи GNU social, скопируйте cюда пару ключей пользователя и введите корневой каталог базы API. <br />Прежде чем регистрировать свою собственную пару ключей OAuth, спросите администратора, если ли уже пара ключей для этой установки Hubzilla в вашем GNU social."
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:333
+#: ../../addon/statusnet/Mod_Statusnet.php:204
msgid "OAuth Consumer Key"
msgstr "Ключ клиента OAuth"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:337
+#: ../../addon/statusnet/Mod_Statusnet.php:208
msgid "OAuth Consumer Secret"
msgstr "Пароль клиента OAuth"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:341
+#: ../../addon/statusnet/Mod_Statusnet.php:212
msgid "Base API Path"
msgstr "Основной путь к API"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:341
+#: ../../addon/statusnet/Mod_Statusnet.php:212
msgid "Remember the trailing /"
msgstr "Запомнить закрывающий /"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:345
+#: ../../addon/statusnet/Mod_Statusnet.php:216
msgid "GNU social application name"
msgstr "Имя приложения GNU social"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:368
+#: ../../addon/statusnet/Mod_Statusnet.php:239
msgid ""
"To connect to your GNU social account click the button below to get a "
"security code from GNU social which you have to copy into the input box "
@@ -13681,27 +11965,32 @@ msgid ""
"posted to GNU social."
msgstr "Чтобы подключиться к вашей учетной записи GNU social нажмите кнопку ниже для получения кода безопасности из GNU social, который вы должны скопировать в поле ввода ниже и отправить форму. Только ваши общедоступные сообщения будут опубликованы в GNU social."
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:370
+#: ../../addon/statusnet/Mod_Statusnet.php:241
msgid "Log in with GNU social"
msgstr "Войти с GNU social"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:373
+#: ../../addon/statusnet/Mod_Statusnet.php:244
msgid "Copy the security code from GNU social here"
msgstr "Скопируйте код безопасности GNU social здесь"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:383
+#: ../../addon/statusnet/Mod_Statusnet.php:254
msgid "Cancel Connection Process"
msgstr "Отменить процесс подключения"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:385
+#: ../../addon/statusnet/Mod_Statusnet.php:256
msgid "Current GNU social API is"
msgstr "Текущий GNU social API"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:389
+#: ../../addon/statusnet/Mod_Statusnet.php:260
msgid "Cancel GNU social Connection"
msgstr "Отменить подключение с GNU social"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:406
+#: ../../addon/statusnet/Mod_Statusnet.php:272
+#: ../../addon/twitter/Mod_Twitter.php:147
+msgid "Currently connected to: "
+msgstr "В настоящее время подключён к:"
+
+#: ../../addon/statusnet/Mod_Statusnet.php:277
msgid ""
"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -13709,1408 +11998,3315 @@ msgid ""
"informing the visitor that the access to your profile has been restricted."
msgstr "<strong>Замечание</strong>: Из-за настроек конфиденциальности (<em>скрыть данные своего профиля от неизвестных зрителей?</em>) cсылка, потенциально включенная в общедоступные публикации, переданные в GNU social, приведет посетителя к пустой странице, информирующей его о том, что доступ к вашему профилю был ограничен."
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:411
-msgid "Allow posting to GNU social"
-msgstr "Разрешить публиковать в GNU social"
-
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:411
-msgid ""
-"If enabled your public postings can be posted to the associated GNU-social "
-"account"
-msgstr "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи GNU social"
-
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:415
+#: ../../addon/statusnet/Mod_Statusnet.php:282
msgid "Post to GNU social by default"
msgstr "Публиковать в GNU social по умолчанию"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:415
+#: ../../addon/statusnet/Mod_Statusnet.php:282
msgid ""
"If enabled your public postings will be posted to the associated GNU-social "
"account by default"
msgstr "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи GNU social по умолчанию"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:432
-msgid "GNU social Post Settings"
-msgstr "Настройки публикаций GNU social"
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:171
+msgid "Clear OAuth configuration"
+msgstr "Очистить конфигурацию OAuth"
+
+#: ../../addon/statusnet/Mod_Statusnet.php:303
+msgid "GNU-Social Crosspost Connector"
+msgstr "Подключение пересылки публикаций GNU Social"
+
+#: ../../addon/statusnet/statusnet.php:145
+msgid "Post to GNU social"
+msgstr "Опубликовать в GNU Social"
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:892
+#: ../../addon/statusnet/statusnet.php:594
msgid "API URL"
msgstr ""
-#: ../../extend/addon/hzaddons/statusnet/statusnet.php:895
+#: ../../addon/statusnet/statusnet.php:597
msgid "Application name"
msgstr "Название приложения"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:101
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:102
-#: ../../extend/addon/hzaddons/cart/myshop.php:141
-#: ../../extend/addon/hzaddons/cart/myshop.php:177
-#: ../../extend/addon/hzaddons/cart/myshop.php:211
-#: ../../extend/addon/hzaddons/cart/myshop.php:259
-#: ../../extend/addon/hzaddons/cart/myshop.php:294
-#: ../../extend/addon/hzaddons/cart/myshop.php:317
-msgid "Access Denied"
-msgstr "Доступ запрещён"
+#: ../../addon/qrator/qrator.php:48
+msgid "QR code"
+msgstr "QR-код"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:109
-msgid "Enable Community Moderation"
-msgstr "Включить модерацию сообщества"
+#: ../../addon/qrator/qrator.php:63
+msgid "QR Generator"
+msgstr "Генератор QR-кодов"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:117
-msgid "Reputation automatically given to new members"
-msgstr "Репутация автоматически предоставляемая новым участникам"
+#: ../../addon/qrator/qrator.php:64
+msgid "Enter some text"
+msgstr "Введите любой текст"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:118
-msgid "Reputation will never fall below this value"
-msgstr "Репутация никогда не упадёт ниже этого значения"
+#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377
+msgid "Invalid game."
+msgstr "Недействительная игра."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:119
-msgid "Minimum reputation before posting is allowed"
-msgstr "Минимальная репутация для разрешения возможности размещать публикации"
+#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417
+msgid "You are not a player in this game."
+msgstr "Вы не играете в эту игру."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:120
-msgid "Minimum reputation before commenting is allowed"
-msgstr "Минимальная репутация для разрешения комментирования"
+#: ../../addon/chess/Mod_Chess.php:242
+msgid "You must be a local channel to create a game."
+msgstr "Ваш канал должен быть локальным чтобы создать игру."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:121
-msgid "Minimum reputation before a member is able to moderate other posts"
-msgstr "Минимальная репутация для возможности модерирования участником чужих публикаций"
+#: ../../addon/chess/Mod_Chess.php:260
+msgid "You must select one opponent that is not yourself."
+msgstr "Вы должны выбрать противника который не является вами."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:122
-msgid ""
-"Max ratio of moderator's reputation that can be added to/deducted from "
-"reputation of person being moderated"
-msgstr "Максимальное соотношение репутации модератора, которое может быть добавлено / вычтено из репутации модерируемого участника"
+#: ../../addon/chess/Mod_Chess.php:271
+msgid "Random color chosen."
+msgstr "Выбран случайный цвет."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:123
-msgid "Reputation \"cost\" to post"
-msgstr "\"Стоимость\" репутации для публикации"
+#: ../../addon/chess/Mod_Chess.php:279
+msgid "Error creating new game."
+msgstr "Ошибка создания новой игры."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:124
-msgid "Reputation \"cost\" to comment"
-msgstr "\"Стоимость\" репутации для комментирования"
+#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1207
+msgid "Requested channel is not available."
+msgstr "Запрошенный канал не доступен."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:125
-msgid ""
-"Reputation automatically recovers at this rate per hour until it reaches "
-"minimum_to_post"
-msgstr "Репутация автоматически восстанавливается с этой скоростью в час пока не достигает значения minimum_to_post"
+#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333
+msgid "Chess not installed."
+msgstr "Шахматы не установлены."
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:126
-msgid ""
-"When minimum_to_moderate > reputation > minimum_to_post reputation recovers "
-"at this rate per hour"
-msgstr "При minimum_to_moderate > репутация > minimum_to_post репутация восстанавливается с этой скоростью в час"
+#: ../../addon/chess/Mod_Chess.php:326
+msgid "You must select a local channel /chess/channelname"
+msgstr "Вы должны выбрать локальный канал /chess/channelname"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:138
-msgid "Community Moderation Settings"
-msgstr "Настройки модерирования сообщества"
+#: ../../addon/chess/chess.php:642
+msgid "Enable notifications"
+msgstr "Включить оповещения"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:359
-msgid "Can moderate reputation on my channel."
-msgstr "Может модерировать репутацию на моём канале"
+#: ../../addon/twitter/Mod_Twitter.php:65
+msgid "Twitter settings updated."
+msgstr "Настройки Twitter обновлены"
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:542
-#: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:545
-msgid "Channel Reputation"
-msgstr "Репутация канала"
+#: ../../addon/twitter/Mod_Twitter.php:78
+msgid "Twitter Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Twitter\""
-#: ../../extend/addon/hzaddons/adultphotoflag/adultphotoflag.php:24
-msgid "Flag Adult Photos"
-msgstr "Пометка фотографий для взрослых"
+#: ../../addon/twitter/Mod_Twitter.php:79
+msgid "Relay public posts to Twitter"
+msgstr "Пересылает общедоступные публикации в Twitter"
-#: ../../extend/addon/hzaddons/adultphotoflag/adultphotoflag.php:25
+#: ../../addon/twitter/Mod_Twitter.php:103
msgid ""
-"Provide photo edit option to hide inappropriate photos from default album "
-"view"
-msgstr "Предоставьте возможность редактирования фотографий, чтобы скрыть неприемлемые фотографии из альбома по умолчанию"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:52
-msgid "First Name"
-msgstr "Имя"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:53
-msgid "Last Name"
-msgstr "Фамилия"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:54
-#: ../../extend/addon/hzaddons/redred/redred.php:111
-msgid "Nickname"
-msgstr "Псевдоним"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:55
-msgid "Full Name"
-msgstr "Полное имя"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:61
-msgid "Profile Photo 16px"
-msgstr "Фотография профиля 16px"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:62
-msgid "Profile Photo 32px"
-msgstr "Фотография профиля 32px"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:63
-msgid "Profile Photo 48px"
-msgstr "Фотография профиля 48px"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:64
-msgid "Profile Photo 64px"
-msgstr "Фотография профиля 64px"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:65
-msgid "Profile Photo 80px"
-msgstr "Фотография профиля 80px"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:66
-msgid "Profile Photo 128px"
-msgstr "Фотография профиля 128px"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:67
-msgid "Timezone"
-msgstr "Часовой пояс"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:70
-msgid "Birth Year"
-msgstr "Год рождения"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:71
-msgid "Birth Month"
-msgstr "Месяц рождения"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:72
-msgid "Birth Day"
-msgstr "День рождения"
-
-#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:73
-msgid "Birthdate"
-msgstr "Дата рождения"
+"No consumer key pair for Twitter found. Please contact your site "
+"administrator."
+msgstr "Не найдено пары ключей для Twitter. Пожалуйста, свяжитесь с администратором сайта."
-#: ../../extend/addon/hzaddons/openid/openid.php:49
+#: ../../addon/twitter/Mod_Twitter.php:125
msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Мы столкнулись с проблемой входа с предоставленным вами OpenID. Пожалуйста, проверьте корректность его написания."
-
-#: ../../extend/addon/hzaddons/openid/openid.php:49
-msgid "The error message was:"
-msgstr "Сообщение об ошибке было:"
-
-#: ../../extend/addon/hzaddons/openid/Mod_Openid.php:30
-msgid "OpenID protocol error. No ID returned."
-msgstr "Ошибка протокола OpenID. Идентификатор не возвращён."
+"At this Hubzilla instance the Twitter plugin was enabled but you have not "
+"yet connected your account to your Twitter account. To do so click the "
+"button below to get a PIN from Twitter which you have to copy into the input "
+"box below and submit the form. Only your <strong>public</strong> posts will "
+"be posted to Twitter."
+msgstr "В этой установке Hubzilla плагин Twitter был включён, однако пока он не подключён к вашему аккаунту в Twitter. Для этого нажмите на кнопку ниже для получения PIN-кода от Twitter который нужно скопировать в поле ввода и отправить форму. Только ваши <strong>общедоступные</strong> публикации будут опубликованы в Twitter."
-#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:51
-msgid "Set a preferred page to load on login from home page"
-msgstr "Установить предпочтительную страницу для загрузки при входе с домашней страницы"
+#: ../../addon/twitter/Mod_Twitter.php:127
+msgid "Log in with Twitter"
+msgstr "Войти в Twitter"
-#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:62
-msgid "Page to load after login"
-msgstr "Страница для загрузки после входа"
+#: ../../addon/twitter/Mod_Twitter.php:130
+msgid "Copy the PIN from Twitter here"
+msgstr "Скопируйте PIN-код из Twitter здесь"
-#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:62
+#: ../../addon/twitter/Mod_Twitter.php:152
msgid ""
-"Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy "
-"collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave "
-"blank for default network page (grid)."
-msgstr "Примеры: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (оставьте пустым для для страницы сети по умолчанию)."
-
-#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:70
-msgid "Startpage"
-msgstr "Стартовая страница"
-
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:94
-msgid "Hubzilla Directory Stats"
-msgstr "Каталог статистики Hubzilla"
-
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:95
-msgid "Total Hubs"
-msgstr "Всего хабов"
-
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:97
-msgid "Hubzilla Hubs"
-msgstr "Хабы Hubzilla"
-
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:99
-msgid "Friendica Hubs"
-msgstr "Хабы Friendica"
+"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
+"details from unknown viewers?</em>) the link potentially included in public "
+"postings relayed to Twitter will lead the visitor to a blank page informing "
+"the visitor that the access to your profile has been restricted."
+msgstr "<strong>Замечание</strong>: Из-за настроек конфиденциальности (<em>скрыть данные своего профиля от неизвестных зрителей?</em>) cсылка, потенциально включенная в общедоступные публикации, переданные в Twitter, приведет посетителя к пустой странице, информирующей его о том, что доступ к вашему профилю был ограничен."
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:101
-msgid "Diaspora Pods"
-msgstr "Стручки Diaspora"
+#: ../../addon/twitter/Mod_Twitter.php:157
+msgid "Twitter post length"
+msgstr "Длина публикации Twitter"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:103
-msgid "Hubzilla Channels"
-msgstr "Каналы Hubzilla"
+#: ../../addon/twitter/Mod_Twitter.php:157
+msgid "Maximum tweet length"
+msgstr "Максимальная длина твита"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:105
-msgid "Friendica Channels"
-msgstr "Каналы Friendica"
+#: ../../addon/twitter/Mod_Twitter.php:162
+msgid "Send public postings to Twitter by default"
+msgstr "Отправлять общедоступные публикации в Twitter по умолчанию"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:107
-msgid "Diaspora Channels"
-msgstr "Каналы Diaspora"
+#: ../../addon/twitter/Mod_Twitter.php:162
+msgid ""
+"If enabled your public postings will be posted to the associated Twitter "
+"account by default"
+msgstr "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи Twitter по умолчанию"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:109
-msgid "Aged 35 and above"
-msgstr "Возраст 35 и выше"
+#: ../../addon/twitter/Mod_Twitter.php:181
+msgid "Twitter Crosspost Connector"
+msgstr "Пересылка публикаций Twitter"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:111
-msgid "Aged 34 and under"
-msgstr "Возраст 34 и ниже"
+#: ../../addon/twitter/twitter.php:107
+msgid "Post to Twitter"
+msgstr "Опубликовать в Twitter"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:113
-msgid "Average Age"
-msgstr "Средний возраст"
+#: ../../addon/smileybutton/Mod_Smileybutton.php:35
+msgid "Smileybutton App"
+msgstr "Приложение \"Кнопка со смайликам\""
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:115
-msgid "Known Chatrooms"
-msgstr "Известные чаты"
+#: ../../addon/smileybutton/Mod_Smileybutton.php:36
+msgid "Adds a smileybutton to the jot editor"
+msgstr "Добавлять кнопку со смайликами в редактор Jot"
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:117
-msgid "Known Tags"
-msgstr "Известные теги"
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
+msgid "Hide the button and show the smilies directly."
+msgstr "Скрыть кнопку и сразу показывать смайлики."
-#: ../../extend/addon/hzaddons/dirstats/dirstats.php:119
-msgid ""
-"Please note Diaspora and Friendica statistics are merely those **this "
-"directory** is aware of, and not all those known in the network. This also "
-"applies to chatrooms,"
-msgstr "Обратите внимание, что статистика Diaspora и Friendica это только те, о которых ** этот каталог ** знает, а не все известные в сети. Это также относится и к чатам."
+#: ../../addon/smileybutton/Mod_Smileybutton.php:52
+msgid "Smileybutton Settings"
+msgstr "Настройки кнопки со смайликами"
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:56
+#: ../../addon/cart/Settings/Cart.php:56
msgid "Enable Test Catalog"
msgstr "Включить тестовый каталог"
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:68
+#: ../../addon/cart/Settings/Cart.php:68
msgid "Enable Manual Payments"
msgstr "Включить ручные платежи"
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:88
+#: ../../addon/cart/Settings/Cart.php:88
msgid "Base Merchant Currency"
msgstr "Основная торговая валюта"
-#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:111
-#: ../../extend/addon/hzaddons/cart/cart.php:1262
+#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263
msgid "Cart Settings"
msgstr "Настройки карточек"
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:151
-msgid "Enable Subscription Management Module"
-msgstr "Включить модуль управления подписками"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:223
-msgid ""
-"Cannot include subscription items with different terms in the same order."
-msgstr "Нельзя включать элементы подписки с разными условиями в том же заказе."
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:372
-msgid "Select Subscription to Edit"
-msgstr "Выбрать подписку для редактирования"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:380
-msgid "Edit Subscriptions"
-msgstr "Редактировать подписки"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:414
-msgid "Subscription SKU"
-msgstr "Код подписки"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:419
-msgid "Catalog Description"
-msgstr "Описание каталога"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:423
-msgid "Subscription available for purchase."
-msgstr "Подписка доступна для покупки."
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:428
-msgid "Maximum active subscriptions to this item per account."
-msgstr "Максимальное количество подписок на аккаунт для этой позиции"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:431
-msgid "Subscription price."
-msgstr "Цена подписки."
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:435
-msgid "Quantity"
-msgstr "Количество"
-
-#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:439
-msgid "Term"
-msgstr "Условия"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:62
-msgid "Enable Hubzilla Services Module"
-msgstr "Включить модуль сервиса Hubzilla"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:160
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:173
-msgid "New Sku"
-msgstr "Новый код"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:195
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:209
-msgid "Cannot save edits to locked item."
-msgstr "Невозможно сохранить изменения заблокированной позиции."
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:243
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:330
-msgid "SKU not found."
-msgstr "Код не найден."
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:296
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:300
-msgid "Invalid Activation Directive."
-msgstr "Недействительная директива активации."
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:371
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:375
-msgid "Invalid Deactivation Directive."
-msgstr "Недействительная директива деактивации"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:561
-msgid "Add to this privacy group"
-msgstr "Добавить в эту группу безопасности"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:577
-msgid "Set user service class"
-msgstr "Установить класс обслуживания пользователя"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:604
-msgid "You must be using a local account to purchase this service."
-msgstr "Вы должны использовать локальную учётноую запись для покупки этого сервиса."
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:644
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:252
-msgid "Changes Locked"
-msgstr "Изменения заблокированы"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:648
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:256
-msgid "Item available for purchase."
-msgstr "Позиция доступна для приобретения."
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:655
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:263
-msgid "Price"
-msgstr "Цена"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:659
-msgid "Add buyer to privacy group"
-msgstr "Добавить покупателя в группу безопасности"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:664
-msgid "Add buyer as connection"
-msgstr "Добавить покупателя как контакт"
-
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:672
-#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:714
-msgid "Set Service Class"
-msgstr "Установить класс обслуживания"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:85
-msgid "Enable Paypal Button Module"
-msgstr "Включить модуль кнопки Paypal"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:93
-msgid "Use Production Key"
-msgstr "Использовать ключ Production"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:100
-msgid "Paypal Sandbox Client Key"
-msgstr "Ключ клиента Paypal Sandbox"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:107
-msgid "Paypal Sandbox Secret Key"
-msgstr "Секретный ключ Paypal Sandbox"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:113
-msgid "Paypal Production Client Key"
-msgstr "Ключ клиента Paypal Production"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:120
-msgid "Paypal Production Secret Key"
-msgstr "Секретный ключ Paypal Production"
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:252
-msgid "Paypal button payments are not enabled."
-msgstr "Кнопка Paypal для платежей не включена."
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:270
-msgid ""
-"Paypal button payments are not properly configured. Please choose another "
-"payment option."
-msgstr "Кнопка Paypal для платежей настроена неправильно. Пожалуйста, используйте другой вариант оплаты."
-
-#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:392
-#: ../../extend/addon/hzaddons/cart/manual_payments.php:68
-#: ../../extend/addon/hzaddons/cart/cart.php:1465
-msgid "Order not found."
-msgstr "Заказ не найден."
-
-#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:61
-msgid "Enable Manual Cart Module"
-msgstr "Включить модуль ручного управления карточками"
-
-#: ../../extend/addon/hzaddons/cart/myshop.php:30
+#: ../../addon/cart/myshop.php:30
msgid "Access Denied."
msgstr "Доступ запрещён."
-#: ../../extend/addon/hzaddons/cart/myshop.php:111
-#: ../../extend/addon/hzaddons/cart/cart.php:1333
+#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334
msgid "Order Not Found"
msgstr "Заказ не найден"
-#: ../../extend/addon/hzaddons/cart/myshop.php:186
-#: ../../extend/addon/hzaddons/cart/myshop.php:220
-#: ../../extend/addon/hzaddons/cart/myshop.php:269
-#: ../../extend/addon/hzaddons/cart/myshop.php:327
+#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220
+#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327
msgid "Invalid Item"
msgstr "Недействительный элемент"
-#: ../../extend/addon/hzaddons/cart/manual_payments.php:7
-msgid "Error: order mismatch. Please try again."
-msgstr "Ошибка: несоответствие заказа. Пожалуйста, попробуйте ещё раз"
-
-#: ../../extend/addon/hzaddons/cart/manual_payments.php:61
-msgid "Manual payments are not enabled."
-msgstr "Ручные платежи не подключены."
-
-#: ../../extend/addon/hzaddons/cart/manual_payments.php:77
-msgid "Finished"
-msgstr "Завершено"
-
-#: ../../extend/addon/hzaddons/cart/cart.php:159
+#: ../../addon/cart/cart.php:159
msgid "DB Cleanup Failure"
msgstr "Сбой очистки базы данных"
-#: ../../extend/addon/hzaddons/cart/cart.php:564
+#: ../../addon/cart/cart.php:565
msgid "[cart] Item Added"
msgstr "[cart] Элемент добавлен"
-#: ../../extend/addon/hzaddons/cart/cart.php:952
+#: ../../addon/cart/cart.php:953
msgid "Order already checked out."
msgstr "Заказ уже проверен."
-#: ../../extend/addon/hzaddons/cart/cart.php:1255
+#: ../../addon/cart/cart.php:1256
msgid "Drop database tables when uninstalling."
msgstr "Сбросить таблицы базы данных при деинсталляции"
-#: ../../extend/addon/hzaddons/cart/cart.php:1274
-#: ../../extend/addon/hzaddons/cart/cart.php:1277
+#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278
msgid "Shop"
msgstr "Магазин"
-#: ../../extend/addon/hzaddons/cart/cart.php:1394
+#: ../../addon/cart/cart.php:1395
msgid "Cart utilities for orders and payments"
msgstr "Утилиты карточек для заказов и платежей"
-#: ../../extend/addon/hzaddons/cart/cart.php:1432
+#: ../../addon/cart/cart.php:1433
msgid "You must be logged into the Grid to shop."
msgstr "Вы должны быть в сети для доступа к магазину"
-#: ../../extend/addon/hzaddons/cart/cart.php:1473
+#: ../../addon/cart/cart.php:1466
+#: ../../addon/cart/submodules/paypalbutton.php:392
+#: ../../addon/cart/manual_payments.php:68
+msgid "Order not found."
+msgstr "Заказ не найден."
+
+#: ../../addon/cart/cart.php:1474
msgid "Access denied."
msgstr "Доступ запрещён."
-#: ../../extend/addon/hzaddons/cart/cart.php:1525
-#: ../../extend/addon/hzaddons/cart/cart.php:1668
+#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669
msgid "No Order Found"
msgstr "Нет найденных заказов"
-#: ../../extend/addon/hzaddons/cart/cart.php:1534
+#: ../../addon/cart/cart.php:1535
msgid "An unknown error has occurred Please start again."
msgstr "Произошла неизвестная ошибка. Пожалуйста, начните снова."
-#: ../../extend/addon/hzaddons/cart/cart.php:1701
+#: ../../addon/cart/cart.php:1702
msgid "Invalid Payment Type. Please start again."
msgstr "Недействительный тип платежа. Пожалуйста, начните снова."
-#: ../../extend/addon/hzaddons/cart/cart.php:1708
+#: ../../addon/cart/cart.php:1709
msgid "Order not found"
msgstr "Заказ не найден"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:42
-msgid "Federate"
-msgstr ""
+#: ../../addon/cart/submodules/paypalbutton.php:85
+msgid "Enable Paypal Button Module"
+msgstr "Включить модуль кнопки Paypal"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:56
-msgid "nofed Settings saved."
-msgstr "Настройки nofed сохранены."
+#: ../../addon/cart/submodules/paypalbutton.php:93
+msgid "Use Production Key"
+msgstr "Использовать ключ Production"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:72
-msgid "Allow Federation Toggle"
-msgstr "Разрешить переключение федерации"
+#: ../../addon/cart/submodules/paypalbutton.php:100
+msgid "Paypal Sandbox Client Key"
+msgstr "Ключ клиента Paypal Sandbox"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:76
-msgid "Federate posts by default"
-msgstr "Разрешить федерацию публикаций по умолчанию"
+#: ../../addon/cart/submodules/paypalbutton.php:107
+msgid "Paypal Sandbox Secret Key"
+msgstr "Секретный ключ Paypal Sandbox"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:80
-msgid "NoFed Settings"
-msgstr "Настройки NoFed"
+#: ../../addon/cart/submodules/paypalbutton.php:113
+msgid "Paypal Production Client Key"
+msgstr "Ключ клиента Paypal Production"
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:43
-msgid "Your channel has been upgraded to the latest $Projectname version."
-msgstr "Ваш канал был обновлён на последнюю версию $Projectname."
+#: ../../addon/cart/submodules/paypalbutton.php:120
+msgid "Paypal Production Secret Key"
+msgstr "Секретный ключ Paypal Production"
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:44
+#: ../../addon/cart/submodules/paypalbutton.php:252
+msgid "Paypal button payments are not enabled."
+msgstr "Кнопка Paypal для платежей не включена."
+
+#: ../../addon/cart/submodules/paypalbutton.php:270
msgid ""
-"To improve usability, we have converted some features into installable stand-"
-"alone apps."
-msgstr "Чтобы улучшить удобство использования, некоторые функции теперь доступны в виде устанавливаемых автономных приложений."
+"Paypal button payments are not properly configured. Please choose another "
+"payment option."
+msgstr "Кнопка Paypal для платежей настроена неправильно. Пожалуйста, используйте другой вариант оплаты."
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:45
-msgid "Please visit the $Projectname"
-msgstr "Пожалуйста, посетите $Projectname"
+#: ../../addon/cart/submodules/manualcat.php:61
+msgid "Enable Manual Cart Module"
+msgstr "Включить модуль ручного управления карточками"
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:46
-msgid "app store"
-msgstr "раздел \"Приложения\""
+#: ../../addon/cart/submodules/manualcat.php:173
+#: ../../addon/cart/submodules/hzservices.php:160
+msgid "New Sku"
+msgstr "Новый код"
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:47
-msgid "and install possibly missing apps."
-msgstr "и установите необходимые вам."
+#: ../../addon/cart/submodules/manualcat.php:209
+#: ../../addon/cart/submodules/hzservices.php:195
+msgid "Cannot save edits to locked item."
+msgstr "Невозможно сохранить изменения заблокированной позиции."
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:52
-msgid "Upgrade Info"
-msgstr "Сведения об обновлении"
+#: ../../addon/cart/submodules/manualcat.php:252
+#: ../../addon/cart/submodules/hzservices.php:644
+msgid "Changes Locked"
+msgstr "Изменения заблокированы"
-#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:56
-msgid "Do not show this again"
-msgstr "Больше не показывать"
+#: ../../addon/cart/submodules/manualcat.php:256
+#: ../../addon/cart/submodules/hzservices.php:648
+msgid "Item available for purchase."
+msgstr "Позиция доступна для приобретения."
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:123
-msgid "generic profile image"
-msgstr "Стандартное изображение профиля"
+#: ../../addon/cart/submodules/manualcat.php:263
+#: ../../addon/cart/submodules/hzservices.php:655
+msgid "Price"
+msgstr "Цена"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:124
-msgid "random geometric pattern"
-msgstr "Случайный геометрический рисунок"
+#: ../../addon/cart/submodules/hzservices.php:62
+msgid "Enable Hubzilla Services Module"
+msgstr "Включить модуль сервиса Hubzilla"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:125
-msgid "monster face"
-msgstr "Лицо чудовища"
+#: ../../addon/cart/submodules/hzservices.php:243
+#: ../../addon/cart/submodules/hzservices.php:330
+msgid "SKU not found."
+msgstr "Код не найден."
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:126
-msgid "computer generated face"
-msgstr "Сгенерированное компьютером лицо"
+#: ../../addon/cart/submodules/hzservices.php:296
+#: ../../addon/cart/submodules/hzservices.php:300
+msgid "Invalid Activation Directive."
+msgstr "Недействительная директива активации."
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:127
-msgid "retro arcade style face"
-msgstr "Лицо в стиле старой аркадной игры"
+#: ../../addon/cart/submodules/hzservices.php:371
+#: ../../addon/cart/submodules/hzservices.php:375
+msgid "Invalid Deactivation Directive."
+msgstr "Недействительная директива деактивации"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:128
-msgid "Hub default profile photo"
-msgstr "Фотография профиля по умолчанию"
+#: ../../addon/cart/submodules/hzservices.php:561
+msgid "Add to this privacy group"
+msgstr "Добавить в эту группу безопасности"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:143
-msgid "Information"
-msgstr "Информация"
+#: ../../addon/cart/submodules/hzservices.php:577
+msgid "Set user service class"
+msgstr "Установить класс обслуживания пользователя"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:143
-msgid ""
-"Libravatar addon is installed, too. Please disable Libravatar addon or this "
-"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if "
-"nothing was found at Libravatar."
-msgstr "Плагин Libravatar также установлен. Пожалуйста, отключите плагин Libravatar или этот плагин Gravatar. Если Плагин Libravatar ничего не найдёт, он вернётся в Gravatar."
+#: ../../addon/cart/submodules/hzservices.php:604
+msgid "You must be using a local account to purchase this service."
+msgstr "Вы должны использовать локальную учётноую запись для покупки этого сервиса."
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:150
-#: ../../extend/addon/hzaddons/msgfooter/msgfooter.php:46
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:91
-msgid "Save Settings"
-msgstr "Сохранить настройки"
+#: ../../addon/cart/submodules/hzservices.php:659
+msgid "Add buyer to privacy group"
+msgstr "Добавить покупателя в группу безопасности"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:151
-msgid "Default avatar image"
-msgstr "Изображение аватара по умолчанию"
+#: ../../addon/cart/submodules/hzservices.php:664
+msgid "Add buyer as connection"
+msgstr "Добавить покупателя как контакт"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:151
-msgid "Select default avatar image if none was found at Gravatar. See README"
-msgstr "Выберите изображения аватар по умолчанию если ничего не было найдено в Gravatar (см. README)."
+#: ../../addon/cart/submodules/hzservices.php:672
+#: ../../addon/cart/submodules/hzservices.php:714
+msgid "Set Service Class"
+msgstr "Установить класс обслуживания"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:152
-msgid "Rating of images"
-msgstr "Оценки изображений"
+#: ../../addon/cart/submodules/subscriptions.php:151
+msgid "Enable Subscription Management Module"
+msgstr "Включить модуль управления подписками"
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:152
-msgid "Select the appropriate avatar rating for your site. See README"
-msgstr "Выберите подходящую оценку аватара для вашего сайта (см. README)."
+#: ../../addon/cart/submodules/subscriptions.php:223
+msgid ""
+"Cannot include subscription items with different terms in the same order."
+msgstr "Нельзя включать элементы подписки с разными условиями в том же заказе."
-#: ../../extend/addon/hzaddons/gravatar/gravatar.php:165
-msgid "Gravatar settings updated."
-msgstr "Настройки Gravatar обновлены."
+#: ../../addon/cart/submodules/subscriptions.php:372
+msgid "Select Subscription to Edit"
+msgstr "Выбрать подписку для редактирования"
-#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:15
-msgid "WYSIWYG status editor"
-msgstr "WYSIWYG редактор статуса "
+#: ../../addon/cart/submodules/subscriptions.php:380
+msgid "Edit Subscriptions"
+msgstr "Редактировать подписки"
-#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:34
-msgid "WYSIWYG Status"
-msgstr "WYSIWYG статус"
+#: ../../addon/cart/submodules/subscriptions.php:414
+msgid "Subscription SKU"
+msgstr "Код подписки"
-#: ../../extend/addon/hzaddons/planets/planets.php:121
-msgid "Planets Settings updated."
-msgstr "Настройки Planets обновлены."
+#: ../../addon/cart/submodules/subscriptions.php:419
+msgid "Catalog Description"
+msgstr "Описание каталога"
-#: ../../extend/addon/hzaddons/planets/planets.php:149
-msgid "Enable Planets Plugin"
-msgstr "Включить плагин Planets"
+#: ../../addon/cart/submodules/subscriptions.php:423
+msgid "Subscription available for purchase."
+msgstr "Подписка доступна для покупки."
-#: ../../extend/addon/hzaddons/planets/planets.php:153
-msgid "Planets Settings"
-msgstr "Настройки Planets"
+#: ../../addon/cart/submodules/subscriptions.php:428
+msgid "Maximum active subscriptions to this item per account."
+msgstr "Максимальное количество подписок на аккаунт для этой позиции"
-#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:15
-msgid "Add some colour to tag clouds"
-msgstr "Добавить немного цвета для облака тегов"
+#: ../../addon/cart/submodules/subscriptions.php:431
+msgid "Subscription price."
+msgstr "Цена подписки."
-#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:34
-msgid "Rainbow Tag"
-msgstr "Радуга тегов"
+#: ../../addon/cart/submodules/subscriptions.php:435
+msgid "Quantity"
+msgstr "Количество"
-#: ../../extend/addon/hzaddons/chess/chess.php:353
-#: ../../extend/addon/hzaddons/chess/chess.php:542
-msgid "Invalid game."
-msgstr "Недействительная игра"
+#: ../../addon/cart/submodules/subscriptions.php:439
+msgid "Term"
+msgstr "Условия"
-#: ../../extend/addon/hzaddons/chess/chess.php:359
-#: ../../extend/addon/hzaddons/chess/chess.php:582
-msgid "You are not a player in this game."
-msgstr "Вы не играете в эту игру."
+#: ../../addon/cart/manual_payments.php:7
+msgid "Error: order mismatch. Please try again."
+msgstr "Ошибка: несоответствие заказа. Пожалуйста, попробуйте ещё раз"
-#: ../../extend/addon/hzaddons/chess/chess.php:415
-msgid "You must be a local channel to create a game."
-msgstr "Ваш канал должен быть локальным чтобы создать игру."
+#: ../../addon/cart/manual_payments.php:61
+msgid "Manual payments are not enabled."
+msgstr "Ручные платежи не подключены."
-#: ../../extend/addon/hzaddons/chess/chess.php:433
-msgid "You must select one opponent that is not yourself."
-msgstr "Вы должны выбрать противника который не является вами."
+#: ../../addon/cart/manual_payments.php:77
+msgid "Finished"
+msgstr "Завершено"
-#: ../../extend/addon/hzaddons/chess/chess.php:444
-msgid "Random color chosen."
-msgstr "Выбран случайный цвет."
+#: ../../addon/piwik/piwik.php:85
+msgid ""
+"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> "
+"analytics tool."
+msgstr "Этот сайт отслеживается с помощью инструментов аналитики <a href='http://www.piwik.org'>Piwik</a>."
-#: ../../extend/addon/hzaddons/chess/chess.php:452
-msgid "Error creating new game."
-msgstr "Ошибка создания новой игры."
+#: ../../addon/piwik/piwik.php:88
+#, php-format
+msgid ""
+"If you do not want that your visits are logged this way you <a href='%s'>can "
+"set a cookie to prevent Piwik from tracking further visits of the site</a> "
+"(opt-out)."
+msgstr "Если вы не хотите, чтобы ваши визиты регистрировались таким образом, вы <a href='%s'>можете отключить cookie с тем, чтобы Piwik не отслеживал дальнейшие посещения сайта</a>."
-#: ../../extend/addon/hzaddons/chess/chess.php:500
-msgid "You must select a local channel /chess/channelname"
-msgstr "Вы должны выбрать локальный канал /chess/channelname"
+#: ../../addon/piwik/piwik.php:96
+msgid "Piwik Base URL"
+msgstr "Базовый URL Piwik"
-#: ../../extend/addon/hzaddons/chess/chess.php:1071
-msgid "Enable notifications"
-msgstr "Включить оповещения"
+#: ../../addon/piwik/piwik.php:96
+msgid ""
+"Absolute path to your Piwik installation. (without protocol (http/s), with "
+"trailing slash)"
+msgstr "Абсолютный путь к вашей установке Piwik (без типа протокола, с начальным слэшем)"
-#: ../../extend/addon/hzaddons/gnusoc/gnusoc.php:451
-msgid "Follow"
-msgstr "Отслеживать"
+#: ../../addon/piwik/piwik.php:97
+msgid "Site ID"
+msgstr "ID сайта"
-#: ../../extend/addon/hzaddons/gnusoc/gnusoc.php:454
-#, php-format
-msgid "%1$s is now following %2$s"
-msgstr "%1$s сейчас отслеживает %2$s"
+#: ../../addon/piwik/piwik.php:98
+msgid "Show opt-out cookie link?"
+msgstr "Показывать ссылку на отказ от использования cookies?"
-#: ../../extend/addon/hzaddons/gnusoc/Mod_Gnusoc.php:16
-msgid ""
-"The GNU-Social protocol does not support location independence. Connections "
-"you make within that network may be unreachable from alternate channel "
-"locations."
-msgstr "Протокол GNU-Social не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала."
+#: ../../addon/piwik/piwik.php:99
+msgid "Asynchronous tracking"
+msgstr "Асинхронное отслеживание"
-#: ../../extend/addon/hzaddons/gnusoc/Mod_Gnusoc.php:34
-msgid "GNU-Social Protocol"
-msgstr "Протокол GNU-Social"
+#: ../../addon/piwik/piwik.php:100
+msgid "Enable frontend JavaScript error tracking"
+msgstr "Включить отслеживание ошибок JavaScript на фронтенде."
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:43
-msgid "Message to display on every page on this server"
-msgstr "Отображаемое сообщение на каждой странице на этом сервере."
+#: ../../addon/piwik/piwik.php:100
+msgid "This feature requires Piwik >= 2.2.0"
+msgstr "Эта функция требует версию Piwik >= 2.2.0"
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:48
-msgid "Pageheader Settings"
-msgstr "Настройки шапки страницы"
+#: ../../addon/tour/tour.php:76
+msgid "Edit your profile and change settings."
+msgstr "Отредактировать ваш профиль и изменить настройки."
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:64
-msgid "pageheader Settings saved."
-msgstr "Настройки шапки страницы сохранены."
+#: ../../addon/tour/tour.php:77
+msgid "Click here to see activity from your connections."
+msgstr "Нажмите сюда для отображения активности ваши контактов."
-#: ../../extend/addon/hzaddons/msgfooter/msgfooter.php:47
-msgid "text to include in all outgoing posts from this site"
-msgstr "текст, который будет добавлен во все исходящие публикации с этого сайта"
+#: ../../addon/tour/tour.php:78
+msgid "Click here to see your channel home."
+msgstr "Нажмите сюда чтобы увидеть главную страницу вашего канала."
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:19
-msgid "Send email to all members"
-msgstr "Отправить email всем участникам"
+#: ../../addon/tour/tour.php:79
+msgid "You can access your private messages from here."
+msgstr "Вы можете получить доступ с личной переписке здесь."
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:73
-#, php-format
-msgid "%1$d of %2$d messages sent."
-msgstr "%1$d из %2$d сообщений отправлено."
+#: ../../addon/tour/tour.php:80
+msgid "Create new events here."
+msgstr "Создать новое событие здесь."
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:81
-msgid "Send email to all hub members."
-msgstr "Отправить email всем участникам узла."
+#: ../../addon/tour/tour.php:81
+msgid ""
+"You can accept new connections and change permissions for existing ones "
+"here. You can also e.g. create groups of contacts."
+msgstr "Вы можете подключать новые контакты и менять разрешения для существующих здесь. Также вы можете создавать их группы."
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:93
-msgid "Sender Email address"
-msgstr "Адрес электронной почты отправителя"
+#: ../../addon/tour/tour.php:82
+msgid "System notifications will arrive here"
+msgstr "Системные оповещения будут показываться здесь"
-#: ../../extend/addon/hzaddons/hubwall/hubwall.php:94
-msgid "Test mode (only send to hub administrator)"
-msgstr "Тестовый режим (отправка только администратору узла)"
+#: ../../addon/tour/tour.php:83
+msgid "Search for content and users"
+msgstr "Поиск пользователей и содержимого"
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:211
-msgid "Deactivate the feature"
-msgstr "Деактивировать функцию"
+#: ../../addon/tour/tour.php:84
+msgid "Browse for new contacts"
+msgstr "Поиск новых контактов"
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:215
-msgid "Hide the button and show the smilies directly."
-msgstr "Скрыть кнопку и сразу показывать смайлики."
+#: ../../addon/tour/tour.php:85
+msgid "Launch installed apps"
+msgstr "Запустить установленные приложения"
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:219
-msgid "Smileybutton Settings"
-msgstr "Настройки кнопки смайликов"
+#: ../../addon/tour/tour.php:86
+msgid "Looking for help? Click here."
+msgstr "Нужна помощь? Нажмите сюда."
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:92
-msgid "Friendica Photo Album Import"
-msgstr "Импортировать альбом фотографий Friendica"
+#: ../../addon/tour/tour.php:87
+msgid ""
+"New events have occurred in your network. Click here to see what has "
+"happened!"
+msgstr "Новые события произошли в вашей сети. Нажмите здесь для того, чтобы знать что случилось!"
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:93
-msgid "This will import all your Friendica photo albums to this Red channel."
-msgstr "Это позволит импортировать все ваши альбомы фотографий Friendica в этот канал."
+#: ../../addon/tour/tour.php:88
+msgid "You have received a new private message. Click here to see from who!"
+msgstr "Вы получили новое личное сообщение. Нажмите чтобы увидеть от кого!"
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:94
-msgid "Friendica Server base URL"
-msgstr "Базовый URL сервера Friendica"
+#: ../../addon/tour/tour.php:89
+msgid "There are events this week. Click here too see which!"
+msgstr "На этой неделе есть события. Нажмите здесь чтобы увидеть какие!"
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:95
-msgid "Friendica Login Username"
-msgstr "Имя пользователя для входа Friendica"
+#: ../../addon/tour/tour.php:90
+msgid "You have received a new introduction. Click here to see who!"
+msgstr "Вы были представлены. Нажмите чтобы увидеть кому!"
-#: ../../extend/addon/hzaddons/frphotos/frphotos.php:96
-msgid "Friendica Login Password"
-msgstr "Пароль для входа Firendica"
+#: ../../addon/tour/tour.php:91
+msgid ""
+"There is a new system notification. Click here to see what has happened!"
+msgstr "Это новое системное уведомление. Нажмите чтобы посмотреть что случилось!"
-#: ../../extend/addon/hzaddons/upload_limits/upload_limits.php:25
-msgid "Show Upload Limits"
-msgstr "Показать ограничения на загрузку"
+#: ../../addon/tour/tour.php:94
+msgid "Click here to share text, images, videos and sound."
+msgstr "Нажмите сюда чтобы поделиться текстом, изображениями, видео или треком."
-#: ../../extend/addon/hzaddons/upload_limits/upload_limits.php:27
-msgid "Hubzilla configured maximum size: "
-msgstr "Максимальный размер настроенный в Hubzilla:"
+#: ../../addon/tour/tour.php:95
+msgid "You can write an optional title for your update (good for long posts)."
+msgstr "Вы можете написать необязательный заголовок для вашей публикации (желательно для больших публикаций)."
-#: ../../extend/addon/hzaddons/upload_limits/upload_limits.php:28
-msgid "PHP upload_max_filesize: "
-msgstr ""
+#: ../../addon/tour/tour.php:96
+msgid "Entering some categories here makes it easier to find your post later."
+msgstr "Введите категории здесь чтобы было проще найти вашу публикацию позднее."
-#: ../../extend/addon/hzaddons/upload_limits/upload_limits.php:29
-msgid "PHP post_max_size (must be larger than upload_max_filesize): "
-msgstr "PHP post_max_size (должен быть больше чем upload_max_filesize): "
+#: ../../addon/tour/tour.php:97
+msgid "Share photos, links, location, etc."
+msgstr "Поделиться фотографией, ссылками, местоположение и т.п."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:45
-msgid "Flattr this!"
-msgstr "Flattr это!"
+#: ../../addon/tour/tour.php:98
+msgid ""
+"Only want to share content for a while? Make it expire at a certain date."
+msgstr "Хотите только поделиться временным содержимым? Установите срок его действия."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:83
-msgid "Flattr widget settings updated."
-msgstr "Настройки виджета Flattr обновлены."
+#: ../../addon/tour/tour.php:99
+msgid "You can password protect content."
+msgstr "Вы можете защитить содержимое паролем."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:100
-msgid "Flattr user"
-msgstr "Пользователь Flattr"
+#: ../../addon/tour/tour.php:100
+msgid "Choose who you share with."
+msgstr "Выбрать с кем поделиться."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:104
-msgid "URL of the Thing to flattr"
-msgstr "URL ccылки на Flattr"
+#: ../../addon/tour/tour.php:102
+msgid "Click here when you are done."
+msgstr "Нажмите здесь когда закончите."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:104
-msgid "If empty channel URL is used"
-msgstr "Если пусто, то используется URL канала"
+#: ../../addon/tour/tour.php:105
+msgid "Adjust from which channels posts should be displayed."
+msgstr "Настройте из каких каналов должны отображаться публикации."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:108
-msgid "Title of the Thing to flattr"
-msgstr "Заголовок вещи на Flattr"
+#: ../../addon/tour/tour.php:106
+msgid "Only show posts from channels in the specified privacy group."
+msgstr "Показывать только публикации из определённой группы безопасности."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:108
-msgid "If empty \"channel name on The Hubzilla\" will be used"
-msgstr "Если пусто, то будет использовано \"Название канала Hubzilla\""
+#: ../../addon/tour/tour.php:110
+msgid ""
+"Easily find posts containing tags (keywords preceded by the \"#\" symbol)."
+msgstr "Лёгкий поиск сообщения, содержащего теги (ключевые слова, которым предшествует символ #)."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:112
-msgid "Static or dynamic flattr button"
-msgstr "Статическая или динамическая кнопка Flattr"
+#: ../../addon/tour/tour.php:111
+msgid "Easily find posts in given category."
+msgstr "Лёгкий поиск публикаций в данной категории."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:112
-msgid "static"
-msgstr "статическая"
+#: ../../addon/tour/tour.php:112
+msgid "Easily find posts by date."
+msgstr "Лёгкий поиск публикаций по дате."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:112
-msgid "dynamic"
-msgstr "динамическая"
+#: ../../addon/tour/tour.php:113
+msgid ""
+"Suggested users who have volounteered to be shown as suggestions, and who we "
+"think you might find interesting."
+msgstr "Рекомендуемые пользователи, которые были представлены в качестве предложений, и которые, по нашему мнению, могут оказаться интересными."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:116
-msgid "Alignment of the widget"
-msgstr "Выравнивание виджета"
+#: ../../addon/tour/tour.php:114
+msgid "Here you see channels you have connected to."
+msgstr "Здесь вы видите каналы, к которым вы подключились."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:116
-msgid "left"
-msgstr "слева"
+#: ../../addon/tour/tour.php:115
+msgid "Save your search so you can repeat it at a later date."
+msgstr "Сохраните ваш поиск с тем, чтобы повторить его позже."
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:116
-msgid "right"
-msgstr "справа"
+#: ../../addon/tour/tour.php:118
+msgid ""
+"If you see this icon you can be sure that the sender is who it say it is. It "
+"is normal that it is not always possible to verify the sender, so the icon "
+"will be missing sometimes. There is usually no need to worry about that."
+msgstr "Если вы видите этот значок, вы можете быть уверены, что отправитель - это тот, кто это говорит. Это нормально, что не всегда можно проверить отправителя, поэтому значок иногда будет отсутствовать. Обычно об этом не нужно беспокоиться."
+
+#: ../../addon/tour/tour.php:119
+msgid ""
+"Danger! It seems someone tried to forge a message! This message is not "
+"necessarily from who it says it is from!"
+msgstr "Опасность! Кажется, кто-то пытался подделать сообщение! Это сообщение не обязательно от того, от кого оно значится!"
+
+#: ../../addon/tour/tour.php:126
+msgid ""
+"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can "
+"pause it at any time and continue where you left off by reloading the page, "
+"or navigting to another page.</p><p>You can also advance by pressing the "
+"return key"
+msgstr "Добро пожаловать в Hubzilla! Желаете получить обзор пользовательского интерфейса?</p> <p>Вы можете его приостановаить и в любое время перезагрузив страницу или перейдя на другую.</p><p>Также вы можете нажать клавишу \"Назад\""
+
+#: ../../addon/sendzid/Mod_Sendzid.php:14
+msgid "Send your identity to all websites"
+msgstr "Отправить ваши данные на все веб-сайты"
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:120
-msgid "Enable Flattr widget"
-msgstr "Включить виджет Flattr"
+#: ../../addon/sendzid/Mod_Sendzid.php:20
+msgid "Sendzid App"
+msgstr "Приложение \"Отправить ZID\""
-#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:124
-msgid "Flattr Widget Settings"
-msgstr "Настройки виджета Flattr"
+#: ../../addon/sendzid/Mod_Sendzid.php:32
+msgid "Send ZID"
+msgstr "Отправить ZID"
-#: ../../extend/addon/hzaddons/tictac/tictac.php:21
+#: ../../addon/tictac/tictac.php:21
msgid "Three Dimensional Tic-Tac-Toe"
msgstr "Tic-Tac-Toe в трёх измерениях"
-#: ../../extend/addon/hzaddons/tictac/tictac.php:54
+#: ../../addon/tictac/tictac.php:54
msgid "3D Tic-Tac-Toe"
msgstr ""
-#: ../../extend/addon/hzaddons/tictac/tictac.php:59
+#: ../../addon/tictac/tictac.php:59
msgid "New game"
msgstr "Новая игра"
-#: ../../extend/addon/hzaddons/tictac/tictac.php:60
+#: ../../addon/tictac/tictac.php:60
msgid "New game with handicap"
msgstr "Новая игра с форой"
-#: ../../extend/addon/hzaddons/tictac/tictac.php:61
+#: ../../addon/tictac/tictac.php:61
msgid ""
"Three dimensional tic-tac-toe is just like the traditional game except that "
"it is played on multiple levels simultaneously. "
msgstr "Трехмерный Tic-Tac-Toe похож на традиционную игру, за исключением того, что игра идёт на нескольких уровнях одновременно."
-#: ../../extend/addon/hzaddons/tictac/tictac.php:62
+#: ../../addon/tictac/tictac.php:62
msgid ""
"In this case there are three levels. You win by getting three in a row on "
"any level, as well as up, down, and diagonally across the different levels."
msgstr "Имеется три уровня. Вы выигрываете, получая три подряд на любом уровне, а также вверх, вниз и по диагонали на разных уровнях."
-#: ../../extend/addon/hzaddons/tictac/tictac.php:64
+#: ../../addon/tictac/tictac.php:64
msgid ""
"The handicap game disables the center position on the middle level because "
"the player claiming this square often has an unfair advantage."
msgstr "Игра с форой отключает центральную позицию на среднем уровне, потому что игрок, претендующий на этот квадрат, часто имеет несправедливое преимущество."
-#: ../../extend/addon/hzaddons/tictac/tictac.php:183
+#: ../../addon/tictac/tictac.php:183
msgid "You go first..."
msgstr "Вы начинаете..."
-#: ../../extend/addon/hzaddons/tictac/tictac.php:188
+#: ../../addon/tictac/tictac.php:188
msgid "I'm going first this time..."
msgstr "На этот раз начинаю я..."
-#: ../../extend/addon/hzaddons/tictac/tictac.php:194
+#: ../../addon/tictac/tictac.php:194
msgid "You won!"
msgstr "Вы выиграли!"
-#: ../../extend/addon/hzaddons/tictac/tictac.php:200
-#: ../../extend/addon/hzaddons/tictac/tictac.php:225
+#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225
msgid "\"Cat\" game!"
msgstr "Ничья!"
-#: ../../extend/addon/hzaddons/tictac/tictac.php:223
+#: ../../addon/tictac/tictac.php:223
msgid "I won!"
msgstr "Я выиграл!"
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:31
-msgid "XMPP settings updated."
-msgstr "Настройки XMPP обновлены."
-
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:53
-msgid "Enable Chat"
-msgstr "Включить чат"
-
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:58
-msgid "Individual credentials"
-msgstr "Индивидуальные разрешения"
+#: ../../addon/pageheader/Mod_Pageheader.php:22
+msgid "pageheader Settings saved."
+msgstr "Настройки шапки страницы сохранены."
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:64
-msgid "Jabber BOSH server"
-msgstr "Сервер Jabber BOSH"
+#: ../../addon/pageheader/Mod_Pageheader.php:34
+msgid "Page Header App"
+msgstr "Приложение \"Заголовок страницы\""
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:69
-msgid "XMPP Settings"
-msgstr "Настройки XMPP"
+#: ../../addon/pageheader/Mod_Pageheader.php:35
+msgid "Inserts a page header"
+msgstr "Вставляет заголовок страницы"
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:92
-msgid "Jabber BOSH host"
-msgstr "Узел Jabber BOSH"
+#: ../../addon/pageheader/Mod_Pageheader.php:43
+msgid "Message to display on every page on this server"
+msgstr "Отображаемое сообщение на каждой странице на этом сервере."
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:93
-msgid "Use central userbase"
-msgstr "Использовать центральную базу данных"
+#: ../../addon/pageheader/Mod_Pageheader.php:51
+msgid "Page Header"
+msgstr "Заголовок страницы"
-#: ../../extend/addon/hzaddons/xmpp/xmpp.php:93
+#: ../../addon/authchoose/Mod_Authchoose.php:22
msgid ""
-"If enabled, members will automatically login to an ejabberd server that has "
-"to be installed on this machine with synchronized credentials via the "
-"\"auth_ejabberd.php\" script."
-msgstr "Если включено, участники автоматически войдут на сервер ejabberd, который должен быть установлен на этом компьютере с синхронизированными учетными данными через скрипт \"auth_ejabberd.php\"."
-
-#: ../../extend/addon/hzaddons/notifyadmin/notifyadmin.php:34
-msgid "New registration"
-msgstr "Новая регистрация"
-
-#: ../../extend/addon/hzaddons/notifyadmin/notifyadmin.php:42
-#, php-format
-msgid "Message sent to %s. New account registration: %s"
-msgstr "Сообщение отправлено в %s. Регистрация нового аккаунта: %s"
-
-#: ../../extend/addon/hzaddons/sendzid/Mod_Sendzid.php:14
-msgid "Send your identity to all websites"
-msgstr "Отправить ваши данные на все веб-сайты"
+"Allow magic authentication only to websites of your immediate connections"
+msgstr "Разрешить волшебную аутентификацию только на сайтах ваших непосредственных соединений"
-#: ../../extend/addon/hzaddons/sendzid/Mod_Sendzid.php:32
-msgid "Send ZID"
-msgstr "Отправить ZID"
+#: ../../addon/authchoose/Mod_Authchoose.php:28
+#: ../../addon/authchoose/Mod_Authchoose.php:33
+msgid "Authchoose App"
+msgstr "Приложение Authchoose"
-#: ../../extend/addon/hzaddons/wholikesme/wholikesme.php:29
-msgid "Who likes me?"
-msgstr "Кому я нравлюсь?"
+#: ../../addon/authchoose/Mod_Authchoose.php:39
+msgid "Authchoose"
+msgstr ""
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:19
+#: ../../addon/moremoods/moremoods.php:19
msgid "lonely"
msgstr "одинокий"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:20
+#: ../../addon/moremoods/moremoods.php:20
msgid "drunk"
msgstr "пьяный"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:21
+#: ../../addon/moremoods/moremoods.php:21
msgid "horny"
msgstr "возбуждённый"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:22
+#: ../../addon/moremoods/moremoods.php:22
msgid "stoned"
msgstr "под кайфом"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:23
+#: ../../addon/moremoods/moremoods.php:23
msgid "fucked up"
msgstr "облажался"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:24
+#: ../../addon/moremoods/moremoods.php:24
msgid "clusterfucked"
msgstr "в полной заднице"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:25
+#: ../../addon/moremoods/moremoods.php:25
msgid "crazy"
msgstr "сумасшедший"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:26
+#: ../../addon/moremoods/moremoods.php:26
msgid "hurt"
msgstr "обиженный"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:27
+#: ../../addon/moremoods/moremoods.php:27
msgid "sleepy"
msgstr "сонный"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:28
+#: ../../addon/moremoods/moremoods.php:28
msgid "grumpy"
msgstr "сердитый"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:29
+#: ../../addon/moremoods/moremoods.php:29
msgid "high"
msgstr "кайфует"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:30
+#: ../../addon/moremoods/moremoods.php:30
msgid "semi-conscious"
msgstr "в полубезсознании"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:31
+#: ../../addon/moremoods/moremoods.php:31
msgid "in love"
msgstr "влюблённый"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:32
+#: ../../addon/moremoods/moremoods.php:32
msgid "in lust"
msgstr "похотливый"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:33
+#: ../../addon/moremoods/moremoods.php:33
msgid "naked"
msgstr "обнажённый"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:34
+#: ../../addon/moremoods/moremoods.php:34
msgid "stinky"
msgstr "вонючий"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:35
+#: ../../addon/moremoods/moremoods.php:35
msgid "sweaty"
msgstr "потный"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:36
+#: ../../addon/moremoods/moremoods.php:36
msgid "bleeding out"
msgstr "истекающий кровью"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:37
+#: ../../addon/moremoods/moremoods.php:37
msgid "victorious"
msgstr "победивший"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:38
+#: ../../addon/moremoods/moremoods.php:38
msgid "defeated"
msgstr "проигравший"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:39
+#: ../../addon/moremoods/moremoods.php:39
msgid "envious"
msgstr "завидует"
-#: ../../extend/addon/hzaddons/moremoods/moremoods.php:40
+#: ../../addon/moremoods/moremoods.php:40
msgid "jealous"
msgstr "ревнует"
-#: ../../extend/addon/hzaddons/visage/visage.php:93
-msgid "Recent Channel/Profile Viewers"
-msgstr "Последние просмотры канала / профиля"
+#: ../../addon/xmpp/Mod_Xmpp.php:23
+msgid "XMPP settings updated."
+msgstr "Настройки XMPP обновлены."
+
+#: ../../addon/xmpp/Mod_Xmpp.php:35
+msgid "XMPP App"
+msgstr "Приложение XMPP"
+
+#: ../../addon/xmpp/Mod_Xmpp.php:36
+msgid "Embedded XMPP (Jabber) client"
+msgstr "Встренный клиент XMPP (Jabber)"
+
+#: ../../addon/xmpp/Mod_Xmpp.php:52
+msgid "Individual credentials"
+msgstr "Индивидуальные разрешения"
+
+#: ../../addon/xmpp/Mod_Xmpp.php:58
+msgid "Jabber BOSH server"
+msgstr "Сервер Jabber BOSH"
+
+#: ../../addon/xmpp/Mod_Xmpp.php:67
+msgid "XMPP Settings"
+msgstr "Настройки XMPP"
+
+#: ../../addon/xmpp/xmpp.php:44
+msgid "Jabber BOSH host"
+msgstr "Узел Jabber BOSH"
+
+#: ../../addon/xmpp/xmpp.php:45
+msgid "Use central userbase"
+msgstr "Использовать центральную базу данных"
+
+#: ../../addon/xmpp/xmpp.php:45
+msgid ""
+"If enabled, members will automatically login to an ejabberd server that has "
+"to be installed on this machine with synchronized credentials via the "
+"\"auth_ejabberd.php\" script."
+msgstr "Если включено, участники автоматически войдут на сервер ejabberd, который должен быть установлен на этом компьютере с синхронизированными учетными данными через скрипт \"auth_ejabberd.php\"."
+
+#: ../../addon/wholikesme/wholikesme.php:29
+msgid "Who likes me?"
+msgstr "Кому я нравлюсь?"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:40
+msgid "Pump.io Settings saved."
+msgstr "Настройки Pump.io сохранены."
+
+#: ../../addon/pumpio/Mod_Pumpio.php:53
+msgid "Pump.io Crosspost Connector App"
+msgstr "Приложение \"Пересылка публикаций Pump.io\""
+
+#: ../../addon/pumpio/Mod_Pumpio.php:54
+msgid "Relay public posts to pump.io"
+msgstr "Пересылает общедоступные публикации в Pump.io"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:73
+msgid "Pump.io servername"
+msgstr "Имя сервера Pump.io"
-#: ../../extend/addon/hzaddons/visage/visage.php:98
-msgid "This plugin/addon has not been configured."
-msgstr "Это расширение не было настроено."
+#: ../../addon/pumpio/Mod_Pumpio.php:73
+msgid "Without \"http://\" or \"https://\""
+msgstr "Без \"http://\" или \"https://\""
+
+#: ../../addon/pumpio/Mod_Pumpio.php:77
+msgid "Pump.io username"
+msgstr "Имя пользователя Pump.io"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:77
+msgid "Without the servername"
+msgstr "без имени сервера"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:88
+msgid "You are not authenticated to pumpio"
+msgstr "Вы не аутентифицированы на Pump.io"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:90
+msgid "(Re-)Authenticate your pump.io connection"
+msgstr "Аутентифицировать (повторно) ваше соединение с Pump.io"
-#: ../../extend/addon/hzaddons/visage/visage.php:99
+#: ../../addon/pumpio/Mod_Pumpio.php:94
+msgid "Post to pump.io by default"
+msgstr "Публиковать в Pump.io по умолчанию"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:98
+msgid "Should posts be public"
+msgstr "Публикации должны быть общедоступными"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:102
+msgid "Mirror all public posts"
+msgstr "Отображать все общедоступные публикации"
+
+#: ../../addon/pumpio/Mod_Pumpio.php:112
+msgid "Pump.io Crosspost Connector"
+msgstr "Пересылка публикаций Pump.io"
+
+#: ../../addon/pumpio/pumpio.php:152
+msgid "You are now authenticated to pumpio."
+msgstr "Вы аутентифицированы в Pump.io"
+
+#: ../../addon/pumpio/pumpio.php:153
+msgid "return to the featured settings page"
+msgstr "Вернутся к странице настроек"
+
+#: ../../addon/pumpio/pumpio.php:168
+msgid "Post to Pump.io"
+msgstr "Опубликовать в Pump.io"
+
+#: ../../addon/ldapauth/ldapauth.php:70
+msgid "An account has been created for you."
+msgstr "Учётная запись, которая была для вас создана."
+
+#: ../../addon/ldapauth/ldapauth.php:77
+msgid "Authentication successful but rejected: account creation is disabled."
+msgstr "Аутентификация выполнена успешно, но отклонена: создание учетной записи отключено."
+
+#: ../../addon/opensearch/opensearch.php:26
#, php-format
-msgid "Please visit the Visage settings on %s"
-msgstr "Пожалуйста, посетите настройки Visage на %s"
+msgctxt "opensearch"
+msgid "Search %1$s (%2$s)"
+msgstr "Искать %1$s (%2$s)"
-#: ../../extend/addon/hzaddons/visage/visage.php:99
-msgid "your feature settings page"
-msgstr "страница ваших установочных параметров"
+#: ../../addon/opensearch/opensearch.php:28
+msgctxt "opensearch"
+msgid "$Projectname"
+msgstr ""
-#: ../../extend/addon/hzaddons/visage/visage.php:112
-msgid "No entries."
-msgstr "Нет записей."
+#: ../../addon/opensearch/opensearch.php:43
+msgid "Search $Projectname"
+msgstr "Поиск $Projectname"
-#: ../../extend/addon/hzaddons/visage/visage.php:166
-msgid "Enable Visage Visitor Logging"
-msgstr "Включить журналирование посетителей Visage"
+#: ../../addon/redfiles/redfiles.php:119
+msgid "Redmatrix File Storage Import"
+msgstr "Импорт файлового хранилища Redmatrix"
-#: ../../extend/addon/hzaddons/visage/visage.php:170
-msgid "Visage Settings"
-msgstr "Настройки Visage"
+#: ../../addon/redfiles/redfiles.php:120
+msgid "This will import all your Redmatrix cloud files to this channel."
+msgstr "Это позволит импортировать все ваши файлы в Redmatrix в этот канал."
-#: ../../extend/addon/hzaddons/irc/irc.php:45
-msgid "Channels to auto connect"
-msgstr "Каналы для автоматического подключения"
+#: ../../addon/redfiles/redfilehelper.php:64
+msgid "file"
+msgstr "файл"
-#: ../../extend/addon/hzaddons/irc/irc.php:45
-#: ../../extend/addon/hzaddons/irc/irc.php:49
-msgid "Comma separated list"
-msgstr "Список, разделённый запятыми"
+#: ../../addon/hubwall/hubwall.php:19
+msgid "Send email to all members"
+msgstr "Отправить email всем участникам"
-#: ../../extend/addon/hzaddons/irc/irc.php:49
-#: ../../extend/addon/hzaddons/irc/irc.php:96
-msgid "Popular Channels"
-msgstr "Популярные каналы"
+#: ../../addon/hubwall/hubwall.php:73
+#, php-format
+msgid "%1$d of %2$d messages sent."
+msgstr "%1$d из %2$d сообщений отправлено."
-#: ../../extend/addon/hzaddons/irc/irc.php:53
-msgid "IRC Settings"
-msgstr "Настройки IRC"
+#: ../../addon/hubwall/hubwall.php:81
+msgid "Send email to all hub members."
+msgstr "Отправить email всем участникам узла."
-#: ../../extend/addon/hzaddons/irc/irc.php:69
-msgid "IRC settings saved."
-msgstr "Настройки IRC сохранены"
+#: ../../addon/hubwall/hubwall.php:93
+msgid "Sender Email address"
+msgstr "Адрес электронной почты отправителя"
-#: ../../extend/addon/hzaddons/irc/irc.php:74
-msgid "IRC Chatroom"
-msgstr "Чат IRC"
+#: ../../addon/hubwall/hubwall.php:94
+msgid "Test mode (only send to hub administrator)"
+msgstr "Тестовый режим (отправка только администратору узла)"
+
+#: ../../include/selectors.php:18
+msgid "Profile to assign new connections"
+msgstr "Назначить профиль для новых контактов"
+
+#: ../../include/selectors.php:41
+msgid "Frequently"
+msgstr "Часто"
+
+#: ../../include/selectors.php:42
+msgid "Hourly"
+msgstr "Ежечасно"
+
+#: ../../include/selectors.php:43
+msgid "Twice daily"
+msgstr "Дважды в день"
+
+#: ../../include/selectors.php:44
+msgid "Daily"
+msgstr "Ежедневно"
+
+#: ../../include/selectors.php:45
+msgid "Weekly"
+msgstr "Еженедельно"
+
+#: ../../include/selectors.php:46
+msgid "Monthly"
+msgstr "Ежемесячно"
+
+#: ../../include/selectors.php:60
+msgid "Currently Male"
+msgstr "В настоящее время мужской"
+
+#: ../../include/selectors.php:60
+msgid "Currently Female"
+msgstr "В настоящее время женский"
+
+#: ../../include/selectors.php:60
+msgid "Mostly Male"
+msgstr "В основном мужской"
+
+#: ../../include/selectors.php:60
+msgid "Mostly Female"
+msgstr "В основном женский"
+
+#: ../../include/selectors.php:60
+msgid "Transgender"
+msgstr "Трансгендер"
+
+#: ../../include/selectors.php:60
+msgid "Intersex"
+msgstr "Интерсексуал"
+
+#: ../../include/selectors.php:60
+msgid "Transsexual"
+msgstr "Транссексуал"
+
+#: ../../include/selectors.php:60
+msgid "Hermaphrodite"
+msgstr "Гермафродит"
+
+#: ../../include/selectors.php:60 ../../include/channel.php:1540
+msgid "Neuter"
+msgstr "Среднего рода"
+
+#: ../../include/selectors.php:60 ../../include/channel.php:1542
+msgid "Non-specific"
+msgstr "Неспецифический"
+
+#: ../../include/selectors.php:60
+msgid "Undecided"
+msgstr "Не решил"
+
+#: ../../include/selectors.php:96 ../../include/selectors.php:115
+msgid "Males"
+msgstr "Мужчины"
+
+#: ../../include/selectors.php:96 ../../include/selectors.php:115
+msgid "Females"
+msgstr "Женщины"
+
+#: ../../include/selectors.php:96
+msgid "Gay"
+msgstr "Гей"
+
+#: ../../include/selectors.php:96
+msgid "Lesbian"
+msgstr "Лесбиянка"
+
+#: ../../include/selectors.php:96
+msgid "No Preference"
+msgstr "Без предпочтений"
+
+#: ../../include/selectors.php:96
+msgid "Bisexual"
+msgstr "Бисексуал"
+
+#: ../../include/selectors.php:96
+msgid "Autosexual"
+msgstr "Автосексуал"
+
+#: ../../include/selectors.php:96
+msgid "Abstinent"
+msgstr "Воздержание"
+
+#: ../../include/selectors.php:96
+msgid "Virgin"
+msgstr "Девственник"
+
+#: ../../include/selectors.php:96
+msgid "Deviant"
+msgstr "Отклоняющийся от нормы"
+
+#: ../../include/selectors.php:96
+msgid "Fetish"
+msgstr "Фетишист"
+
+#: ../../include/selectors.php:96
+msgid "Oodles"
+msgstr "Множественный"
+
+#: ../../include/selectors.php:96
+msgid "Nonsexual"
+msgstr "Асексуал"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Single"
+msgstr "Одиночка"
+
+#: ../../include/selectors.php:134
+msgid "Lonely"
+msgstr "Одинокий"
+
+#: ../../include/selectors.php:134
+msgid "Available"
+msgstr "Свободен"
+
+#: ../../include/selectors.php:134
+msgid "Unavailable"
+msgstr "Занят"
+
+#: ../../include/selectors.php:134
+msgid "Has crush"
+msgstr "Влюблён"
+
+#: ../../include/selectors.php:134
+msgid "Infatuated"
+msgstr "без ума"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Dating"
+msgstr "Встречаюсь"
+
+#: ../../include/selectors.php:134
+msgid "Unfaithful"
+msgstr "Неверный"
+
+#: ../../include/selectors.php:134
+msgid "Sex Addict"
+msgstr "Эротоман"
+
+#: ../../include/selectors.php:134
+msgid "Friends/Benefits"
+msgstr "Друзья / Выгоды"
+
+#: ../../include/selectors.php:134
+msgid "Casual"
+msgstr "Легкомысленный"
+
+#: ../../include/selectors.php:134
+msgid "Engaged"
+msgstr "Помолвлен"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Married"
+msgstr "В браке"
+
+#: ../../include/selectors.php:134
+msgid "Imaginarily married"
+msgstr "В воображаемом браке"
+
+#: ../../include/selectors.php:134
+msgid "Partners"
+msgstr "Партнёрство"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Cohabiting"
+msgstr "Сожительствующие"
+
+#: ../../include/selectors.php:134
+msgid "Common law"
+msgstr "Гражданский брак"
+
+#: ../../include/selectors.php:134
+msgid "Happy"
+msgstr "Счастлив"
+
+#: ../../include/selectors.php:134
+msgid "Not looking"
+msgstr "Не нуждаюсь"
+
+#: ../../include/selectors.php:134
+msgid "Swinger"
+msgstr "Свингер"
+
+#: ../../include/selectors.php:134
+msgid "Betrayed"
+msgstr "Предан"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Separated"
+msgstr "Разделён"
+
+#: ../../include/selectors.php:134
+msgid "Unstable"
+msgstr "Нестабильно"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Divorced"
+msgstr "В разводе"
+
+#: ../../include/selectors.php:134
+msgid "Imaginarily divorced"
+msgstr "В воображаемом разводе"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "Widowed"
+msgstr "Вдовец / вдова"
+
+#: ../../include/selectors.php:134
+msgid "Uncertain"
+msgstr "Неопределенный"
+
+#: ../../include/selectors.php:134 ../../include/selectors.php:151
+msgid "It's complicated"
+msgstr "Это сложно"
+
+#: ../../include/selectors.php:134
+msgid "Don't care"
+msgstr "Всё равно"
+
+#: ../../include/selectors.php:134
+msgid "Ask me"
+msgstr "Спроси меня"
+
+#: ../../include/conversation.php:169
+#, php-format
+msgid "likes %1$s's %2$s"
+msgstr "Нравится %1$s %2$s"
+
+#: ../../include/conversation.php:172
+#, php-format
+msgid "doesn't like %1$s's %2$s"
+msgstr "Не нравится %1$s %2$s"
+
+#: ../../include/conversation.php:212
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s теперь в контакте с %2$s"
+
+#: ../../include/conversation.php:247
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s ткнул %2$s"
+
+#: ../../include/conversation.php:251 ../../include/text.php:1176
+#: ../../include/text.php:1180
+msgid "poked"
+msgstr "ткнут"
+
+#: ../../include/conversation.php:739
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "Просмотреть профиль %s @ %s"
+
+#: ../../include/conversation.php:759
+msgid "Categories:"
+msgstr "Категории:"
+
+#: ../../include/conversation.php:760
+msgid "Filed under:"
+msgstr "Хранить под:"
+
+#: ../../include/conversation.php:785
+msgid "View in context"
+msgstr "Показать в контексте"
+
+#: ../../include/conversation.php:886
+msgid "remove"
+msgstr "удалить"
+
+#: ../../include/conversation.php:890
+msgid "Loading..."
+msgstr "Загрузка..."
+
+#: ../../include/conversation.php:892
+msgid "Delete Selected Items"
+msgstr "Удалить выбранные элементы"
+
+#: ../../include/conversation.php:935
+msgid "View Source"
+msgstr "Просмотреть источник"
+
+#: ../../include/conversation.php:945
+msgid "Follow Thread"
+msgstr "Следить за темой"
+
+#: ../../include/conversation.php:954
+msgid "Unfollow Thread"
+msgstr "Прекратить отслеживать тему"
+
+#: ../../include/conversation.php:1068
+msgid "Edit Connection"
+msgstr "Редактировать контакт"
+
+#: ../../include/conversation.php:1078
+msgid "Message"
+msgstr "Сообщение"
+
+#: ../../include/conversation.php:1212
+#, php-format
+msgid "%s likes this."
+msgstr "%s нравится это."
+
+#: ../../include/conversation.php:1212
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s не нравится это."
+
+#: ../../include/conversation.php:1216
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d человеку</span> это нравится."
+msgstr[1] "<span %1$s>%2$d человекам</span> это нравится."
+msgstr[2] "<span %1$s>%2$d человекам</span> это нравится."
+
+#: ../../include/conversation.php:1218
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d человеку</span> это не нравится."
+msgstr[1] "<span %1$s>%2$d человекам</span> это не нравится."
+msgstr[2] "<span %1$s>%2$d человекам</span> это не нравится."
+
+#: ../../include/conversation.php:1224
+msgid "and"
+msgstr "и"
+
+#: ../../include/conversation.php:1227
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ", и ещё %d человеку"
+msgstr[1] ", и ещё %d человекам"
+msgstr[2] ", и ещё %d человекам"
+
+#: ../../include/conversation.php:1228
+#, php-format
+msgid "%s like this."
+msgstr "%s нравится это."
+
+#: ../../include/conversation.php:1228
+#, php-format
+msgid "%s don't like this."
+msgstr "%s не нравится это."
+
+#: ../../include/conversation.php:1708
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Посетит"
+msgstr[1] "Посетят"
+msgstr[2] "Посетят"
+
+#: ../../include/conversation.php:1711
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Не посетит"
+msgstr[1] "Не посетят"
+msgstr[2] "Не посетят"
+
+#: ../../include/conversation.php:1714
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr "Не решил"
+
+#: ../../include/conversation.php:1717
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "Согласен"
+msgstr[1] "Согласны"
+msgstr[2] "Согласны"
+
+#: ../../include/conversation.php:1720
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Не согласен"
+msgstr[1] "Не согласны"
+msgstr[2] "Не согласны"
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:44
+#: ../../include/conversation.php:1723
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "Воздержался"
+msgstr[1] "Воздержались"
+msgstr[2] "Воздержались"
+
+#: ../../include/bookmarks.php:34
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "Закладки пользователя %1$s"
+
+#: ../../include/import.php:26
+msgid "Unable to import a removed channel."
+msgstr "Невозможно импортировать удалённый канал."
+
+#: ../../include/import.php:52
msgid ""
-"This is a fairly comprehensive and complete guitar chord dictionary which "
-"will list most of the available ways to play a certain chord, starting from "
-"the base of the fingerboard up to a few frets beyond the twelfth fret "
-"(beyond which everything repeats). A couple of non-standard tunings are "
-"provided for the benefit of slide players, etc."
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Не удалось создать дублирующийся идентификатор канала. Импорт невозможен."
+
+#: ../../include/import.php:117
+msgid "Cloned channel not found. Import failed."
+msgstr "Клон канала не найден. Импорт невозможен."
+
+#: ../../include/text.php:501
+msgid "prev"
+msgstr "предыдущий"
+
+#: ../../include/text.php:503
+msgid "first"
+msgstr "первый"
+
+#: ../../include/text.php:532
+msgid "last"
+msgstr "последний"
+
+#: ../../include/text.php:535
+msgid "next"
+msgstr "следующий"
+
+#: ../../include/text.php:553
+msgid "older"
+msgstr "старше"
+
+#: ../../include/text.php:555
+msgid "newer"
+msgstr "новее"
+
+#: ../../include/text.php:979
+msgid "No connections"
+msgstr "Нет контактов"
+
+#: ../../include/text.php:1011
+#, php-format
+msgid "View all %s connections"
+msgstr "Просмотреть все %s контактов"
+
+#: ../../include/text.php:1073
+#, php-format
+msgid "Network: %s"
+msgstr "Сеть: %s"
+
+#: ../../include/text.php:1176 ../../include/text.php:1180
+msgid "poke"
+msgstr "Ткнуть"
+
+#: ../../include/text.php:1181
+msgid "ping"
+msgstr "Пингануть"
+
+#: ../../include/text.php:1181
+msgid "pinged"
+msgstr "Отпингован"
+
+#: ../../include/text.php:1182
+msgid "prod"
+msgstr "Подтолкнуть"
+
+#: ../../include/text.php:1182
+msgid "prodded"
+msgstr "Подтолкнут"
+
+#: ../../include/text.php:1183
+msgid "slap"
+msgstr "Шлёпнуть"
+
+#: ../../include/text.php:1183
+msgid "slapped"
+msgstr "Шлёпнут"
+
+#: ../../include/text.php:1184
+msgid "finger"
+msgstr "Указать"
+
+#: ../../include/text.php:1184
+msgid "fingered"
+msgstr "Указан"
+
+#: ../../include/text.php:1185
+msgid "rebuff"
+msgstr "Дать отпор"
+
+#: ../../include/text.php:1185
+msgid "rebuffed"
+msgstr "Дан отпор"
+
+#: ../../include/text.php:1208
+msgid "happy"
+msgstr "счастливый"
+
+#: ../../include/text.php:1209
+msgid "sad"
+msgstr "грустный"
+
+#: ../../include/text.php:1210
+msgid "mellow"
+msgstr "спокойный"
+
+#: ../../include/text.php:1211
+msgid "tired"
+msgstr "усталый"
+
+#: ../../include/text.php:1212
+msgid "perky"
+msgstr "весёлый"
+
+#: ../../include/text.php:1213
+msgid "angry"
+msgstr "сердитый"
+
+#: ../../include/text.php:1214
+msgid "stupefied"
+msgstr "отупевший"
+
+#: ../../include/text.php:1215
+msgid "puzzled"
+msgstr "недоумевающий"
+
+#: ../../include/text.php:1216
+msgid "interested"
+msgstr "заинтересованный"
+
+#: ../../include/text.php:1217
+msgid "bitter"
+msgstr "едкий"
+
+#: ../../include/text.php:1218
+msgid "cheerful"
+msgstr "бодрый"
+
+#: ../../include/text.php:1219
+msgid "alive"
+msgstr "энергичный"
+
+#: ../../include/text.php:1220
+msgid "annoyed"
+msgstr "раздражённый"
+
+#: ../../include/text.php:1221
+msgid "anxious"
+msgstr "обеспокоенный"
+
+#: ../../include/text.php:1222
+msgid "cranky"
+msgstr "капризный"
+
+#: ../../include/text.php:1223
+msgid "disturbed"
+msgstr "встревоженный"
+
+#: ../../include/text.php:1224
+msgid "frustrated"
+msgstr "разочарованный"
+
+#: ../../include/text.php:1225
+msgid "depressed"
+msgstr "подавленный"
+
+#: ../../include/text.php:1226
+msgid "motivated"
+msgstr "мотивированный"
+
+#: ../../include/text.php:1227
+msgid "relaxed"
+msgstr "расслабленный"
+
+#: ../../include/text.php:1228
+msgid "surprised"
+msgstr "удивленный"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:95
+msgid "Monday"
+msgstr "Понедельник"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:96
+msgid "Tuesday"
+msgstr "Вторник"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:97
+msgid "Wednesday"
+msgstr "Среда"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:98
+msgid "Thursday"
+msgstr "Четверг"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:99
+msgid "Friday"
+msgstr "Пятница"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:100
+msgid "Saturday"
+msgstr "Суббота"
+
+#: ../../include/text.php:1416 ../../include/js_strings.php:94
+msgid "Sunday"
+msgstr "Воскресенье"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:70
+msgid "January"
+msgstr "Январь"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:71
+msgid "February"
+msgstr "Февраль"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:72
+msgid "March"
+msgstr "Март"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:73
+msgid "April"
+msgstr "Апрель"
+
+#: ../../include/text.php:1420
+msgid "May"
+msgstr "Май"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:75
+msgid "June"
+msgstr "Июнь"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:76
+msgid "July"
+msgstr "Июль"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:77
+msgid "August"
+msgstr "Август"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:78
+msgid "September"
+msgstr "Сентябрь"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:79
+msgid "October"
+msgstr "Октябрь"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:80
+msgid "November"
+msgstr "Ноябрь"
+
+#: ../../include/text.php:1420 ../../include/js_strings.php:81
+msgid "December"
+msgstr "Декабрь"
+
+#: ../../include/text.php:1494
+msgid "Unknown Attachment"
+msgstr "Неизвестное вложение"
+
+#: ../../include/text.php:1496 ../../include/feedutils.php:858
+msgid "unknown"
+msgstr "неизвестный"
+
+#: ../../include/text.php:1532
+msgid "remove category"
+msgstr "удалить категорию"
+
+#: ../../include/text.php:1606
+msgid "remove from file"
+msgstr "удалить из файла"
+
+#: ../../include/text.php:1765 ../../include/message.php:13
+msgid "Download binary/encrypted content"
+msgstr "Загрузить двоичное / зашифрованное содержимое"
+
+#: ../../include/text.php:1935 ../../include/language.php:423
+msgid "default"
+msgstr "по умолчанию"
+
+#: ../../include/text.php:1943
+msgid "Page layout"
+msgstr "Шаблон страницы"
+
+#: ../../include/text.php:1943
+msgid "You can create your own with the layouts tool"
+msgstr "Вы можете создать свой собственный с помощью инструмента шаблонов"
+
+#: ../../include/text.php:1954
+msgid "HTML"
+msgstr ""
+
+#: ../../include/text.php:1957
+msgid "Comanche Layout"
+msgstr "Шаблон Comanche"
+
+#: ../../include/text.php:1962
+msgid "PHP"
+msgstr ""
+
+#: ../../include/text.php:1971
+msgid "Page content type"
+msgstr "Тип содержимого страницы"
+
+#: ../../include/text.php:2104
+msgid "activity"
+msgstr "активность"
+
+#: ../../include/text.php:2205
+msgid "a-z, 0-9, -, and _ only"
+msgstr "Только a-z, 0-9, -, и _"
+
+#: ../../include/text.php:2531
+msgid "Design Tools"
+msgstr "Инструменты дизайна"
+
+#: ../../include/text.php:2537
+msgid "Pages"
+msgstr "Страницы"
+
+#: ../../include/text.php:2559
+msgid "Import website..."
+msgstr "Импорт веб-сайта..."
+
+#: ../../include/text.php:2560
+msgid "Select folder to import"
+msgstr "Выбрать каталог для импорта"
+
+#: ../../include/text.php:2561
+msgid "Import from a zipped folder:"
+msgstr "Импортировать из каталога в zip-архиве:"
+
+#: ../../include/text.php:2562
+msgid "Import from cloud files:"
+msgstr "Импортировать из сетевых файлов:"
+
+#: ../../include/text.php:2563
+msgid "/cloud/channel/path/to/folder"
+msgstr ""
+
+#: ../../include/text.php:2564
+msgid "Enter path to website files"
+msgstr "Введите путь к файлам веб-сайта"
+
+#: ../../include/text.php:2565
+msgid "Select folder"
+msgstr "Выбрать каталог"
+
+#: ../../include/text.php:2566
+msgid "Export website..."
+msgstr "Экспорт веб-сайта..."
+
+#: ../../include/text.php:2567
+msgid "Export to a zip file"
+msgstr "Экспортировать в ZIP файл."
+
+#: ../../include/text.php:2568
+msgid "website.zip"
msgstr ""
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:46
+#: ../../include/text.php:2569
+msgid "Enter a name for the zip file."
+msgstr "Введите имя для ZIP файла."
+
+#: ../../include/text.php:2570
+msgid "Export to cloud files"
+msgstr "Эскпортировать в сетевые файлы:"
+
+#: ../../include/text.php:2571
+msgid "/path/to/export/folder"
+msgstr ""
+
+#: ../../include/text.php:2572
+msgid "Enter a path to a cloud files destination."
+msgstr "Введите путь к расположению сетевых файлов."
+
+#: ../../include/text.php:2573
+msgid "Specify folder"
+msgstr "Указать каталог"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "доступно %d приглашение"
+msgstr[1] "доступны %d приглашения"
+msgstr[2] "доступны %d приглашений"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Поиск каналов"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Впишите имя или интерес"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Подключить / отслеживать"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Примеры: Владимир Ильич, Революционер"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Случайный профиль"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Пригласить друзей"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Расширенный пример: name=ivan and country=russia"
+
+#: ../../include/contact_widgets.php:218
+msgid "Common Connections"
+msgstr "Общие контакты"
+
+#: ../../include/contact_widgets.php:222
+#, php-format
+msgid "View all %d common connections"
+msgstr "Просмотреть все %d общих контактов"
+
+#: ../../include/markdown.php:198 ../../include/bbcode.php:347
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s была создана %2$s %3$s"
+
+#: ../../include/follow.php:37
+msgid "Channel is blocked on this site."
+msgstr "Канал блокируется на этом сайте."
+
+#: ../../include/follow.php:42
+msgid "Channel location missing."
+msgstr "Местоположение канала отсутствует."
+
+#: ../../include/follow.php:84
+msgid "Response from remote channel was incomplete."
+msgstr "Ответ удаленного канала неполный."
+
+#: ../../include/follow.php:96
+msgid "Premium channel - please visit:"
+msgstr "Премимум-канал - пожалуйста посетите:"
+
+#: ../../include/follow.php:110
+msgid "Channel was deleted and no longer exists."
+msgstr "Канал удален и больше не существует."
+
+#: ../../include/follow.php:165
+msgid "Remote channel or protocol unavailable."
+msgstr "Удалённый канал или протокол недоступен."
+
+#: ../../include/follow.php:188
+msgid "Channel discovery failed."
+msgstr "Не удалось обнаружить канал."
+
+#: ../../include/follow.php:200
+msgid "Protocol disabled."
+msgstr "Протокол отключен."
+
+#: ../../include/follow.php:211
+msgid "Cannot connect to yourself."
+msgstr "Нельзя подключиться к самому себе."
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Удалить этот элемент?"
+
+#: ../../include/js_strings.php:8
+#, php-format
+msgid "%s show less"
+msgstr "%s показать меньше"
+
+#: ../../include/js_strings.php:9
+#, php-format
+msgid "%s expand"
+msgstr "%s развернуть"
+
+#: ../../include/js_strings.php:10
+#, php-format
+msgid "%s collapse"
+msgstr "%s свернуть"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Пароль слишком короткий"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Пароли не совпадают"
+
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "все"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Тайный пароль"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Подсказка для пароля"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Уведомление: Права доступа изменились, но до сих пор не сохранены."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "закрыть все"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Здесь нет ничего нового"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Оценкa этoго канала (общедоступно)"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Охарактеризовать (необязательно)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Пожалуйста, введите URL ссылки"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Есть несохраненные изменения. Вы уверены, что хотите покинуть эту страницу?"
+
+#: ../../include/js_strings.php:26
+msgid "lovely"
+msgstr "прекрасно"
+
+#: ../../include/js_strings.php:27
+msgid "wonderful"
+msgstr "замечательно"
+
+#: ../../include/js_strings.php:28
+msgid "fantastic"
+msgstr "фантастично"
+
+#: ../../include/js_strings.php:29
+msgid "great"
+msgstr "отлично"
+
+#: ../../include/js_strings.php:30
msgid ""
-"Chord names start with a root note (A-G) and may include sharps (#) and "
-"flats (b). This software will parse most of the standard naming conventions "
-"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."
+"Your chosen nickname was either already taken or not valid. Please use our "
+"suggestion ("
+msgstr "Выбранный вами псевдоним уже используется или недействителен. Попробуйте использовать наше предложение ("
+
+#: ../../include/js_strings.php:31
+msgid ") or enter a new one."
+msgstr ") или введите новый."
+
+#: ../../include/js_strings.php:32
+msgid "Thank you, this nickname is valid."
+msgstr "Спасибо, этот псевдоним может быть использован."
+
+#: ../../include/js_strings.php:33
+msgid "A channel name is required."
+msgstr "Требуется название канала."
+
+#: ../../include/js_strings.php:34
+msgid "This is a "
+msgstr "Это "
+
+#: ../../include/js_strings.php:35
+msgid " channel name"
+msgstr " название канала"
+
+#: ../../include/js_strings.php:41
+#, php-format
+msgid "%d minutes"
+msgid_plural "%d minutes"
+msgstr[0] "%d минуту"
+msgstr[1] "%d минуты"
+msgstr[2] "%d минут"
+
+#: ../../include/js_strings.php:42
+#, php-format
+msgid "about %d hours"
+msgid_plural "about %d hours"
+msgstr[0] "около %d часa"
+msgstr[1] "около %d часов"
+msgstr[2] "около %d часов"
+
+#: ../../include/js_strings.php:43
+#, php-format
+msgid "%d days"
+msgid_plural "%d days"
+msgstr[0] "%d день"
+msgstr[1] "%d дня"
+msgstr[2] "%d дней"
+
+#: ../../include/js_strings.php:44
+#, php-format
+msgid "%d months"
+msgid_plural "%d months"
+msgstr[0] "%d месяц"
+msgstr[1] "%d месяца"
+msgstr[2] "%d месяцев"
+
+#: ../../include/js_strings.php:45
+#, php-format
+msgid "%d years"
+msgid_plural "%d years"
+msgstr[0] "%d год"
+msgstr[1] "%d года"
+msgstr[2] "%d лет"
+
+#: ../../include/js_strings.php:50
+msgid "timeago.prefixAgo"
msgstr ""
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:48
+#: ../../include/js_strings.php:51
+msgid "timeago.prefixFromNow"
+msgstr "через"
+
+#: ../../include/js_strings.php:52
+msgid "timeago.suffixAgo"
+msgstr "назад"
+
+#: ../../include/js_strings.php:53
+msgid "timeago.suffixFromNow"
+msgstr ""
+
+#: ../../include/js_strings.php:56
+msgid "less than a minute"
+msgstr "менее чем одну минуту"
+
+#: ../../include/js_strings.php:57
+msgid "about a minute"
+msgstr "около минуты"
+
+#: ../../include/js_strings.php:59
+msgid "about an hour"
+msgstr "около часа"
+
+#: ../../include/js_strings.php:61
+msgid "a day"
+msgstr "день"
+
+#: ../../include/js_strings.php:63
+msgid "about a month"
+msgstr "около месяца"
+
+#: ../../include/js_strings.php:65
+msgid "about a year"
+msgstr "около года"
+
+#: ../../include/js_strings.php:67
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:68
+msgid "timeago.numbers"
+msgstr ""
+
+#: ../../include/js_strings.php:74
+msgctxt "long"
+msgid "May"
+msgstr "Май"
+
+#: ../../include/js_strings.php:82
+msgid "Jan"
+msgstr "Янв"
+
+#: ../../include/js_strings.php:83
+msgid "Feb"
+msgstr "Фев"
+
+#: ../../include/js_strings.php:84
+msgid "Mar"
+msgstr "Мар"
+
+#: ../../include/js_strings.php:85
+msgid "Apr"
+msgstr "Апр"
+
+#: ../../include/js_strings.php:86
+msgctxt "short"
+msgid "May"
+msgstr "Май"
+
+#: ../../include/js_strings.php:87
+msgid "Jun"
+msgstr "Июн"
+
+#: ../../include/js_strings.php:88
+msgid "Jul"
+msgstr "Июл"
+
+#: ../../include/js_strings.php:89
+msgid "Aug"
+msgstr "Авг"
+
+#: ../../include/js_strings.php:90
+msgid "Sep"
+msgstr "Сен"
+
+#: ../../include/js_strings.php:91
+msgid "Oct"
+msgstr "Окт"
+
+#: ../../include/js_strings.php:92
+msgid "Nov"
+msgstr "Ноя"
+
+#: ../../include/js_strings.php:93
+msgid "Dec"
+msgstr "Дек"
+
+#: ../../include/js_strings.php:101
+msgid "Sun"
+msgstr "Вск"
+
+#: ../../include/js_strings.php:102
+msgid "Mon"
+msgstr "Пон"
+
+#: ../../include/js_strings.php:103
+msgid "Tue"
+msgstr "Вт"
+
+#: ../../include/js_strings.php:104
+msgid "Wed"
+msgstr "Ср"
+
+#: ../../include/js_strings.php:105
+msgid "Thu"
+msgstr "Чет"
+
+#: ../../include/js_strings.php:106
+msgid "Fri"
+msgstr "Пят"
+
+#: ../../include/js_strings.php:107
+msgid "Sat"
+msgstr "Суб"
+
+#: ../../include/js_strings.php:108
+msgctxt "calendar"
+msgid "today"
+msgstr "сегодня"
+
+#: ../../include/js_strings.php:109
+msgctxt "calendar"
+msgid "month"
+msgstr "месяц"
+
+#: ../../include/js_strings.php:110
+msgctxt "calendar"
+msgid "week"
+msgstr "неделя"
+
+#: ../../include/js_strings.php:111
+msgctxt "calendar"
+msgid "day"
+msgstr "день"
+
+#: ../../include/js_strings.php:112
+msgctxt "calendar"
+msgid "All day"
+msgstr "Весь день"
+
+#: ../../include/message.php:41
+msgid "Unable to determine sender."
+msgstr "Невозможно определить отправителя."
+
+#: ../../include/message.php:80
+msgid "No recipient provided."
+msgstr "Получатель не предоставлен."
+
+#: ../../include/message.php:85
+msgid "[no subject]"
+msgstr "[без темы]"
+
+#: ../../include/message.php:215
+msgid "Stored post could not be verified."
+msgstr "Сохранённая публикация не может быть проверена."
+
+#: ../../include/activities.php:42
+msgid " and "
+msgstr " и "
+
+#: ../../include/activities.php:50
+msgid "public profile"
+msgstr "общедоступный профиль"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s изменил %2$s на &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:60
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Посетить %1$s %2$s"
+
+#: ../../include/activities.php:63
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s обновлено %2$s, изменено %3$s."
+
+#: ../../include/attach.php:267 ../../include/attach.php:376
+msgid "Item was not found."
+msgstr "Элемент не найден."
+
+#: ../../include/attach.php:284
+msgid "Unknown error."
+msgstr "Неизвестная ошибка."
+
+#: ../../include/attach.php:569
+msgid "No source file."
+msgstr "Нет исходного файла."
+
+#: ../../include/attach.php:591
+msgid "Cannot locate file to replace"
+msgstr "Не удается найти файл для замены"
+
+#: ../../include/attach.php:610
+msgid "Cannot locate file to revise/update"
+msgstr "Не удается найти файл для пересмотра / обновления"
+
+#: ../../include/attach.php:752
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Файл превышает предельный размер %d"
+
+#: ../../include/attach.php:773
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Вы достигли предела %1$.0f Мбайт для хранения вложений."
+
+#: ../../include/attach.php:955
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Загрузка файла не удалась. Возможно система перегружена или попытка прекращена."
+
+#: ../../include/attach.php:984
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Файл для сохранения не может быть проверен. Загрузка не удалась."
+
+#: ../../include/attach.php:1058 ../../include/attach.php:1074
+msgid "Path not available."
+msgstr "Путь недоступен."
+
+#: ../../include/attach.php:1123 ../../include/attach.php:1288
+msgid "Empty pathname"
+msgstr "Пустое имя пути"
+
+#: ../../include/attach.php:1149
+msgid "duplicate filename or path"
+msgstr "дублирующееся имя файла или пути"
+
+#: ../../include/attach.php:1174
+msgid "Path not found."
+msgstr "Путь не найден."
+
+#: ../../include/attach.php:1242
+msgid "mkdir failed."
+msgstr "mkdir не удался"
+
+#: ../../include/attach.php:1246
+msgid "database storage failed."
+msgstr "ошибка при записи базы данных."
+
+#: ../../include/attach.php:1294
+msgid "Empty path"
+msgstr "Пустое имя пути"
+
+#: ../../include/security.php:541
msgid ""
-"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, "
-"E7b13b11 ..."
-msgstr "Примеры действительных включают A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Не верный токен безопасности для формы. Вероятно, это произошло потому, что форма была открыта слишком долго (> 3-х часов) перед его отправкой."
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:51
-msgid "Guitar Chords"
-msgstr "Гитарные аккорды"
+#: ../../include/items.php:955 ../../include/items.php:1015
+msgid "(Unknown)"
+msgstr "(Неизвестный)"
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:52
-msgid "The complete online chord dictionary"
-msgstr "Полный онлайн словарь аккордов"
+#: ../../include/items.php:1203
+msgid "Visible to anybody on the internet."
+msgstr "Виден всем в интернете."
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:57
-msgid "Tuning"
-msgstr "Настройка"
+#: ../../include/items.php:1205
+msgid "Visible to you only."
+msgstr "Видно только вам."
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:58
-msgid "Chord name: example: Em7"
-msgstr "Наименование аккорда - example: Em7"
+#: ../../include/items.php:1207
+msgid "Visible to anybody in this network."
+msgstr "Видно всем в этой сети."
-#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:59
-msgid "Show for left handed stringing"
-msgstr "Показывать струны для левшей"
+#: ../../include/items.php:1209
+msgid "Visible to anybody authenticated."
+msgstr "Видно всем аутентифицированным."
-#: ../../extend/addon/hzaddons/chords/chords.php:33
-msgid "Quick Reference"
-msgstr "Быстрая ссылка"
+#: ../../include/items.php:1211
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Видно всем в %s."
-#: ../../extend/addon/hzaddons/libertree/libertree.php:38
-msgid "Post to Libertree"
-msgstr "Опубликовать в Libertree"
+#: ../../include/items.php:1213
+msgid "Visible to all connections."
+msgstr "Видно всем контактам."
-#: ../../extend/addon/hzaddons/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
-msgstr "Включить плагин публикаций Libertree"
+#: ../../include/items.php:1215
+msgid "Visible to approved connections."
+msgstr "Видно только одобренным контактам."
-#: ../../extend/addon/hzaddons/libertree/libertree.php:73
-msgid "Libertree API token"
-msgstr "Токен Libertree API"
+#: ../../include/items.php:1217
+msgid "Visible to specific connections."
+msgstr "Видно указанным контактам."
-#: ../../extend/addon/hzaddons/libertree/libertree.php:77
-msgid "Libertree site URL"
-msgstr "URL сайта Libertree"
+#: ../../include/items.php:4291
+msgid "Privacy group is empty."
+msgstr "Группа безопасности пуста"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:81
-msgid "Post to Libertree by default"
-msgstr "Публиковать в Libertree по умолчанию"
+#: ../../include/items.php:4298
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Группа безопасности: %s"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:85
-msgid "Libertree Post Settings"
-msgstr "Настройки публикаций в Libertree"
+#: ../../include/items.php:4310
+msgid "Connection not found."
+msgstr "Контакт не найден."
-#: ../../extend/addon/hzaddons/libertree/libertree.php:99
-msgid "Libertree Settings saved."
-msgstr "Настройки Libertree сохранены."
+#: ../../include/items.php:4659
+msgid "profile photo"
+msgstr "Фотография профиля"
-#: ../../extend/addon/hzaddons/redred/redred.php:45
-msgid "Post to Red"
-msgstr "Опубликовать в Red"
+#: ../../include/items.php:4851
+#, php-format
+msgid "[Edited %s]"
+msgstr "[Отредактировано %s]"
-#: ../../extend/addon/hzaddons/redred/redred.php:60
-msgid "Channel is required."
-msgstr "Необходим канал."
+#: ../../include/items.php:4851
+msgctxt "edit_activity"
+msgid "Post"
+msgstr "Публикация"
-#: ../../extend/addon/hzaddons/redred/redred.php:76
-msgid "redred Settings saved."
-msgstr "Настройки RedRed сохранены."
+#: ../../include/items.php:4851
+msgctxt "edit_activity"
+msgid "Comment"
+msgstr "Комментарий"
-#: ../../extend/addon/hzaddons/redred/redred.php:95
-msgid "Allow posting to another Hubzilla Channel"
-msgstr "Разрешить публиковать в другой канал Hubzilla"
+#: ../../include/channel.php:43
+msgid "Unable to obtain identity information from database"
+msgstr "Невозможно получить идентификационную информацию из базы данных"
-#: ../../extend/addon/hzaddons/redred/redred.php:99
-msgid "Send public postings to Hubzilla channel by default"
-msgstr "Отправлять общедоступные публикации в канал Hubzilla по умолчанию"
+#: ../../include/channel.php:76
+msgid "Empty name"
+msgstr "Пустое имя"
-#: ../../extend/addon/hzaddons/redred/redred.php:103
-msgid "Hubzilla API Path"
-msgstr "Путь к Hubzilla API"
+#: ../../include/channel.php:79
+msgid "Name too long"
+msgstr "Слишком длинное имя"
-#: ../../extend/addon/hzaddons/redred/redred.php:107
-msgid "Hubzilla login name"
-msgstr "Имя входа Hubzilla"
+#: ../../include/channel.php:196
+msgid "No account identifier"
+msgstr "Идентификатор аккаунта отсутствует"
-#: ../../extend/addon/hzaddons/redred/redred.php:111
-msgid "Hubzilla channel name"
-msgstr "Название канала Hubzilla"
+#: ../../include/channel.php:208
+msgid "Nickname is required."
+msgstr "Требуется псевдоним."
-#: ../../extend/addon/hzaddons/redred/redred.php:119
-msgid "Hubzilla Crosspost Settings"
-msgstr "Настройки перекрёстных публикаций Hubzilla"
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Не удается получить созданный идентификатор"
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:25
-msgid "ActivityPub Protocol Settings updated."
-msgstr "Настройки протокола ActivityPub обновлены."
+#: ../../include/channel.php:429
+msgid "Default Profile"
+msgstr "Профиль по умолчанию"
+
+#: ../../include/channel.php:588 ../../include/channel.php:677
+msgid "Unable to retrieve modified identity"
+msgstr "Не удается найти изменённый идентификатор"
+
+#: ../../include/channel.php:1353
+msgid "Create New Profile"
+msgstr "Создать новый профиль"
+
+#: ../../include/channel.php:1374
+msgid "Visible to everybody"
+msgstr "Видно всем"
+
+#: ../../include/channel.php:1451 ../../include/channel.php:1579
+msgid "Gender:"
+msgstr "Пол:"
+
+#: ../../include/channel.php:1453 ../../include/channel.php:1647
+msgid "Homepage:"
+msgstr "Домашняя страница:"
+
+#: ../../include/channel.php:1454
+msgid "Online Now"
+msgstr "Сейчас в сети"
+
+#: ../../include/channel.php:1507
+msgid "Change your profile photo"
+msgstr "Изменить фотографию вашего профиля"
+
+#: ../../include/channel.php:1538
+msgid "Trans"
+msgstr "Трансексуал"
+
+#: ../../include/channel.php:1584
+msgid "Like this channel"
+msgstr "нравится этот канал"
+
+#: ../../include/channel.php:1608
+msgid "j F, Y"
+msgstr ""
+
+#: ../../include/channel.php:1609
+msgid "j F"
+msgstr ""
+
+#: ../../include/channel.php:1616
+msgid "Birthday:"
+msgstr "День рождения:"
+
+#: ../../include/channel.php:1629
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "для %1$d %2$s"
+
+#: ../../include/channel.php:1641
+msgid "Tags:"
+msgstr "Теги:"
+
+#: ../../include/channel.php:1645
+msgid "Sexual Preference:"
+msgstr "Сексуальные предпочтения:"
+
+#: ../../include/channel.php:1651
+msgid "Political Views:"
+msgstr "Политические взгляды:"
+
+#: ../../include/channel.php:1653
+msgid "Religion:"
+msgstr "Религия:"
+
+#: ../../include/channel.php:1657
+msgid "Hobbies/Interests:"
+msgstr "Хобби / интересы:"
+
+#: ../../include/channel.php:1659
+msgid "Likes:"
+msgstr "Что вам нравится:"
+
+#: ../../include/channel.php:1661
+msgid "Dislikes:"
+msgstr "Что вам не нравится:"
+
+#: ../../include/channel.php:1663
+msgid "Contact information and Social Networks:"
+msgstr "Контактная информация и социальные сети:"
+
+#: ../../include/channel.php:1665
+msgid "My other channels:"
+msgstr "Мои другие каналы:"
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:34
+#: ../../include/channel.php:1667
+msgid "Musical interests:"
+msgstr "Музыкальные интересы:"
+
+#: ../../include/channel.php:1669
+msgid "Books, literature:"
+msgstr "Книги, литература:"
+
+#: ../../include/channel.php:1671
+msgid "Television:"
+msgstr "Телевидение:"
+
+#: ../../include/channel.php:1673
+msgid "Film/dance/culture/entertainment:"
+msgstr "Кино / танцы / культура / развлечения:"
+
+#: ../../include/channel.php:1675
+msgid "Love/Romance:"
+msgstr "Любовь / романтика:"
+
+#: ../../include/channel.php:1677
+msgid "Work/employment:"
+msgstr "Работа / занятость:"
+
+#: ../../include/channel.php:1679
+msgid "School/education:"
+msgstr "Школа / образование:"
+
+#: ../../include/channel.php:1702
+msgid "Like this thing"
+msgstr "нравится этo"
+
+#: ../../include/event.php:28 ../../include/event.php:75
+msgid "l F d, Y \\@ g:i A"
+msgstr ""
+
+#: ../../include/event.php:36 ../../include/event.php:79
+msgid "Starts:"
+msgstr "Начало:"
+
+#: ../../include/event.php:46 ../../include/event.php:83
+msgid "Finishes:"
+msgstr "Окончание:"
+
+#: ../../include/event.php:1020
+msgid "This event has been added to your calendar."
+msgstr "Это событие было добавлено в ваш календарь."
+
+#: ../../include/event.php:1239
+msgid "Not specified"
+msgstr "Не указано"
+
+#: ../../include/event.php:1240
+msgid "Needs Action"
+msgstr "Требует действия"
+
+#: ../../include/event.php:1241
+msgid "Completed"
+msgstr "Завершено"
+
+#: ../../include/event.php:1242
+msgid "In Process"
+msgstr "В процессе"
+
+#: ../../include/event.php:1243
+msgid "Cancelled"
+msgstr "Отменено"
+
+#: ../../include/event.php:1322 ../../include/connections.php:698
+msgid "Home, Voice"
+msgstr "Дом, голос"
+
+#: ../../include/event.php:1323 ../../include/connections.php:699
+msgid "Home, Fax"
+msgstr "Дом, факс"
+
+#: ../../include/event.php:1325 ../../include/connections.php:701
+msgid "Work, Voice"
+msgstr "Работа, голос"
+
+#: ../../include/event.php:1326 ../../include/connections.php:702
+msgid "Work, Fax"
+msgstr "Работа, факс"
+
+#: ../../include/network.php:1718
+msgid "GNU-Social"
+msgstr ""
+
+#: ../../include/network.php:1719
+msgid "RSS/Atom"
+msgstr ""
+
+#: ../../include/network.php:1723
+msgid "Facebook"
+msgstr ""
+
+#: ../../include/network.php:1725
+msgid "LinkedIn"
+msgstr ""
+
+#: ../../include/network.php:1726
+msgid "XMPP/IM"
+msgstr ""
+
+#: ../../include/network.php:1727
+msgid "MySpace"
+msgstr ""
+
+#: ../../include/language.php:436
+msgid "Select an alternate language"
+msgstr "Выбор дополнительного языка"
+
+#: ../../include/acl_selectors.php:113
+msgid "Who can see this?"
+msgstr "Кто может это видеть?"
+
+#: ../../include/acl_selectors.php:114
+msgid "Custom selection"
+msgstr "Настраиваемый выбор"
+
+#: ../../include/acl_selectors.php:115
msgid ""
-"The activitypub protocol does not support location independence. Connections "
-"you make within that network may be unreachable from alternate channel "
-"locations."
-msgstr "Протокол ActivityPub не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала."
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit "
+"the scope of \"Show\"."
+msgstr "Нажмите \"Показать\" чтобы разрешить просмотр. \"Не показывать\" позволит вам переопределить и ограничить область показа."
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:48
-msgid "Deliver to ActivityPub recipients in privacy groups"
-msgstr "Доставить получателям ActivityPub в группах безопасности"
+#: ../../include/acl_selectors.php:116
+msgid "Show"
+msgstr "Показать"
+
+#: ../../include/acl_selectors.php:117
+msgid "Don't show"
+msgstr "Не показывать"
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:48
+#: ../../include/acl_selectors.php:150
+#, php-format
msgid ""
-"May result in a large number of mentions and expose all the members of your "
-"privacy group"
-msgstr "Может привести к большому количеству упоминаний и раскрытию участников группы безопасности"
+"Post permissions %s cannot be changed %s after a post is shared.</br />These "
+"permissions set who is allowed to view the post."
+msgstr "Разрешения публикации %s не могут быть изменены %s после того, как ею поделились. Эти разрешения устанавливают кому разрешено просматривать эту публикацию."
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:52
-msgid "Send multi-media HTML articles"
-msgstr "Отправить HTML статьи с мультимедиа"
+#: ../../include/bbcode.php:200 ../../include/bbcode.php:1190
+#: ../../include/bbcode.php:1193 ../../include/bbcode.php:1198
+#: ../../include/bbcode.php:1201 ../../include/bbcode.php:1204
+#: ../../include/bbcode.php:1207 ../../include/bbcode.php:1212
+#: ../../include/bbcode.php:1215 ../../include/bbcode.php:1220
+#: ../../include/bbcode.php:1223 ../../include/bbcode.php:1226
+#: ../../include/bbcode.php:1229
+msgid "Image/photo"
+msgstr "Изображение / фотография"
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:52
-msgid "Not supported by some microblog services such as Mastodon"
-msgstr "Не поддерживается некоторыми микроблогами, например Mastodon"
+#: ../../include/bbcode.php:239 ../../include/bbcode.php:1240
+msgid "Encrypted content"
+msgstr "Зашифрованное содержание"
-#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:60
-msgid "Activitypub Protocol"
-msgstr "Протокол ActivityPub"
+#: ../../include/bbcode.php:255
+#, php-format
+msgid "Install %1$s element %2$s"
+msgstr "Установить %1$s элемент %2$s"
-#: ../../extend/addon/hzaddons/diaspora/import_diaspora.php:18
-msgid "No username found in import file."
-msgstr "Имя пользователя не найдено в файле для импорта."
+#: ../../include/bbcode.php:259
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Эта публикация содержит устанавливаемый %s элемент, однако у вас нет разрешений для его установки на этом сайте."
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:40
-msgid "Diaspora Protocol Settings updated."
-msgstr "Настройки протокола Diaspora обновлены."
+#: ../../include/bbcode.php:339
+msgid "card"
+msgstr "карточка"
+
+#: ../../include/bbcode.php:341
+msgid "article"
+msgstr "статья"
+
+#: ../../include/bbcode.php:424 ../../include/bbcode.php:432
+msgid "Click to open/close"
+msgstr "Нажмите, чтобы открыть/закрыть"
+
+#: ../../include/bbcode.php:432
+msgid "spoiler"
+msgstr "спойлер"
+
+#: ../../include/bbcode.php:445
+msgid "View article"
+msgstr "Просмотр статьи"
+
+#: ../../include/bbcode.php:445
+msgid "View summary"
+msgstr "Просмотр резюме"
+
+#: ../../include/bbcode.php:1178
+msgid "$1 wrote:"
+msgstr "$1 писал:"
+
+#: ../../include/oembed.php:226
+msgid "View PDF"
+msgstr "Просмотреть PDF"
+
+#: ../../include/oembed.php:356
+msgid " by "
+msgstr " по "
+
+#: ../../include/oembed.php:357
+msgid " on "
+msgstr " на "
+
+#: ../../include/oembed.php:386
+msgid "Embedded content"
+msgstr "Встроенное содержимое"
+
+#: ../../include/oembed.php:395
+msgid "Embedding disabled"
+msgstr "Встраивание отключено"
+
+#: ../../include/zid.php:351
+#, php-format
+msgid "OpenWebAuth: %1$s welcomes %2$s"
+msgstr "OpenWebAuth: %1$s приветствует %2$s"
+
+#: ../../include/features.php:86 ../../include/features.php:273
+msgid "Start calendar week on Monday"
+msgstr "Начинать календарную неделю с понедельника"
+
+#: ../../include/features.php:87 ../../include/features.php:274
+msgid "Default is Sunday"
+msgstr "По умолчанию - воскресенье"
+
+#: ../../include/features.php:100
+msgid "Search by Date"
+msgstr "Поиск по дате"
+
+#: ../../include/features.php:101
+msgid "Ability to select posts by date ranges"
+msgstr "Возможность выбора сообщений по диапазонам дат"
+
+#: ../../include/features.php:108
+msgid "Tag Cloud"
+msgstr "Облако тегов"
+
+#: ../../include/features.php:109
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Показывает личное облако тегов на странице канала"
+
+#: ../../include/features.php:116 ../../include/features.php:373
+msgid "Use blog/list mode"
+msgstr "Использовать режим блога / списка"
+
+#: ../../include/features.php:117 ../../include/features.php:374
+msgid "Comments will be displayed separately"
+msgstr "Комментарии будут отображаться отдельно"
+
+#: ../../include/features.php:129
+msgid "Connection Filtering"
+msgstr "Фильтрация контактов"
+
+#: ../../include/features.php:130
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Фильтр входящих сообщений от контактов на основе ключевых слов / контента"
+
+#: ../../include/features.php:138
+msgid "Conversation"
+msgstr "Диалоги"
+
+#: ../../include/features.php:142
+msgid "Community Tagging"
+msgstr "Отметки сообщества"
+
+#: ../../include/features.php:143
+msgid "Ability to tag existing posts"
+msgstr "Возможность помечать тегами существующие публикации"
+
+#: ../../include/features.php:150
+msgid "Emoji Reactions"
+msgstr "Реакции Emoji"
+
+#: ../../include/features.php:151
+msgid "Add emoji reaction ability to posts"
+msgstr "Возможность добавлять реакции Emoji к публикациям"
+
+#: ../../include/features.php:158
+msgid "Dislike Posts"
+msgstr "Не нравящиеся публикации"
+
+#: ../../include/features.php:159
+msgid "Ability to dislike posts/comments"
+msgstr "Возможность отмечать не нравящиеся публикации / комментарии"
+
+#: ../../include/features.php:166
+msgid "Star Posts"
+msgstr "Помечать сообщения"
+
+#: ../../include/features.php:167
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Возможность отметить специальные сообщения индикатором-звёздочкой"
+
+#: ../../include/features.php:180
+msgid "Advanced Directory Search"
+msgstr "Расширенный поиск в каталоге"
+
+#: ../../include/features.php:181
+msgid "Allows creation of complex directory search queries"
+msgstr "Позволяет создание сложных поисковых запросов в каталоге"
+
+#: ../../include/features.php:190
+msgid "Editor"
+msgstr "Редактор"
+
+#: ../../include/features.php:194
+msgid "Post Categories"
+msgstr "Категории публикаций"
+
+#: ../../include/features.php:195
+msgid "Add categories to your posts"
+msgstr "Добавить категории для ваших публикаций"
+
+#: ../../include/features.php:203
+msgid "Large Photos"
+msgstr "Большие фотографии"
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:49
+#: ../../include/features.php:204
msgid ""
-"The diaspora protocol does not support location independence. Connections "
-"you make within that network may be unreachable from alternate channel "
-"locations."
-msgstr "Протокол Diaspora не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала."
+"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
+"(640px) photo thumbnails"
+msgstr "Включить большие (1024px) миниатюры изображений в публикациях. Если не включено, использовать маленькие (640px) миниатюры."
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:74
-msgid "Allow any Diaspora member to comment on your public posts"
-msgstr "Разрешить любому участнику Diaspora комментировать ваши общедоступные публикации"
+#: ../../include/features.php:211
+msgid "Even More Encryption"
+msgstr "Еще больше шифрования"
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:78
-msgid "Prevent your hashtags from being redirected to other sites"
-msgstr "Предотвратить перенаправление тегов на другие сайты"
+#: ../../include/features.php:212
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Разрешить дополнительное end-to-end шифрование содержимого с общим секретным ключом"
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:82
-msgid "Sign and forward posts and comments with no existing Diaspora signature"
-msgstr "Подписывать и отправлять публикации и комментарии с несуществующей подписью Diaspora"
+#: ../../include/features.php:219
+msgid "Enable Voting Tools"
+msgstr "Включить инструменты голосования"
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:87
-msgid "Followed hashtags (comma separated, do not include the #)"
-msgstr "Отслеживаемые теги (через запятую, исключая #)"
+#: ../../include/features.php:220
+msgid "Provide a class of post which others can vote on"
+msgstr "Предоставь класс публикаций с возможностью голосования"
-#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:96
-msgid "Diaspora Protocol"
-msgstr "Протокол Diaspora"
+#: ../../include/features.php:227
+msgid "Disable Comments"
+msgstr "Отключить комментарии"
-#: ../../extend/addon/hzaddons/wppost/wppost.php:46
-msgid "Post to WordPress"
-msgstr "Опубликовать в WordPress"
+#: ../../include/features.php:228
+msgid "Provide the option to disable comments for a post"
+msgstr "Предоставить возможность отключать комментарии для публикаций"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:28
-msgid "Wordpress Settings saved."
-msgstr "Настройки WordPress сохранены."
+#: ../../include/features.php:235
+msgid "Delayed Posting"
+msgstr "Задержанная публикация"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:42
-msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API"
-msgstr "Опубликовать в WordPress или в чём-то ещё, поддерживающем wordpress XMLRPC API"
+#: ../../include/features.php:236
+msgid "Allow posts to be published at a later date"
+msgstr "Разрешить размешать публикации следующими датами"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:65
-msgid "WordPress username"
-msgstr "Имя пользователя WordPress"
+#: ../../include/features.php:243
+msgid "Content Expiration"
+msgstr "Истечение срока действия содержимого"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:69
-msgid "WordPress password"
-msgstr "Пароль WordPress"
+#: ../../include/features.php:244
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Удалять публикации / комментарии и / или личные сообщения"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:73
-msgid "WordPress API URL"
-msgstr "URL API WordPress"
+#: ../../include/features.php:251
+msgid "Suppress Duplicate Posts/Comments"
+msgstr "Подавлять дублирующие публикации / комментарии"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:74
-msgid "Typically https://your-blog.tld/xmlrpc.php"
-msgstr "Обычно https://your-blog.tld/xmlrpc.php"
+#: ../../include/features.php:252
+msgid ""
+"Prevent posts with identical content to be published with less than two "
+"minutes in between submissions."
+msgstr "Предотвращает появление публикаций с одинаковым содержимым если интервал между ними менее 2 минут"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:77
-msgid "WordPress blogid"
-msgstr ""
+#: ../../include/features.php:259
+msgid "Auto-save drafts of posts and comments"
+msgstr "Автоматически сохранять черновики публикаций и комментариев"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:78
-msgid "For multi-user sites such as wordpress.com, otherwise leave blank"
-msgstr "Для многопользовательских сайтов, таких, как wordpress.com. В противном случае оставьте пустым"
+#: ../../include/features.php:260
+msgid ""
+"Automatically saves post and comment drafts in local browser storage to help "
+"prevent accidental loss of compositions"
+msgstr "Автоматически сохраняет черновики публикаций и комментариев в локальном хранилище браузера для предотвращения их случайной утраты"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:82
-msgid "Post to WordPress by default"
-msgstr "Публиковать в WordPress по умолчанию"
+#: ../../include/features.php:281
+msgid "Smart Birthdays"
+msgstr "\"Умные\" Дни рождений"
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:86
-msgid "Forward comments (requires hubzilla_wp plugin)"
-msgstr "Пересылать комментарии (требуется плагин hubzilla_wp)"
+#: ../../include/features.php:282
+msgid ""
+"Make birthday events timezone aware in case your friends are scattered "
+"across the planet."
+msgstr "Сделать уведомления о днях рождения зависимыми от часового пояса в том случае, если ваши друзья разбросаны по планете."
-#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:94
-msgid "Wordpress Post"
-msgstr "Публикация в WordPress"
+#: ../../include/features.php:289
+msgid "Event Timezone Selection"
+msgstr "Выбор часового пояса события"
-#: ../../extend/addon/hzaddons/nsfw/nsfw.php:152
-msgid "Possible adult content"
-msgstr "Возможно содержимое для взрослых"
+#: ../../include/features.php:290
+msgid "Allow event creation in timezones other than your own."
+msgstr "Разрешить создание события в часовой зоне отличной от вашей"
-#: ../../extend/addon/hzaddons/nsfw/nsfw.php:167
-#, php-format
-msgid "%s - view"
-msgstr "%s - просмотр"
+#: ../../include/features.php:299
+msgid "Manage"
+msgstr "Управление"
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:22
-msgid "NSFW Settings saved."
-msgstr "Настройки NSFW сохранены."
+#: ../../include/features.php:303
+msgid "Navigation Channel Select"
+msgstr "Выбор канала навигации"
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:34
-msgid "Collapse content that contains predefined words"
-msgstr "Свернуть содержимое, содержащее предопределенные слова"
+#: ../../include/features.php:304
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Изменить канал напрямую из выпадающего меню"
+
+#: ../../include/features.php:318
+msgid "Save search terms for re-use"
+msgstr "Сохранять результаты поиска для повторного использования"
+
+#: ../../include/features.php:326
+msgid "Ability to file posts under folders"
+msgstr "Возможность размещать публикации в каталогах"
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:44
+#: ../../include/features.php:333
+msgid "Alternate Stream Order"
+msgstr "Отображение потока"
+
+#: ../../include/features.php:334
msgid ""
-"This app looks in posts for the words/text you specify below, and collapses "
-"any content containing those keywords so it is not displayed at "
-"inappropriate times, such as sexual innuendo that may be improper in a work "
-"setting. It is polite and recommended to tag any content containing nudity "
-"with #NSFW. This filter can also match any other word/text you specify, and "
-"can thereby be used as a general purpose content filter."
-msgstr "Это приложение просматривает публикации для слов / текста, которые вы указываете ниже, и сворачивает любой контент, содержащий эти ключевые слова, поэтому он не отображается в неподходящее время, например, сексуальные инсинуации, которые могут быть неправильными в настройке работы. Например, мы рекомендуем отмечать любой контент, содержащий наготу, тегом #NSFW. Этот фильтр также способен реагировать на любое другое указанное вами слово / текст и может использоваться в качестве фильтра содержимого общего назначения."
+"Ability to order the stream by last post date, last comment date or "
+"unthreaded activities"
+msgstr "Возможность показывать поток по дате последнего сообщения, последнего комментария или в порядке поступления"
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:49
-msgid "Comma separated list of keywords to hide"
-msgstr "Список ключевых слов для скрытия, через запятую"
+#: ../../include/features.php:341
+msgid "Contact Filter"
+msgstr "Фильтр контактов"
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:49
-msgid "Word, /regular-expression/, lang=xx, lang!=xx"
-msgstr "слово, /регулярное_выражение/, lang=xx, lang!=xx"
+#: ../../include/features.php:342
+msgid "Ability to display only posts of a selected contact"
+msgstr "Возможность показа публикаций только от выбранных контактов"
-#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:58
-msgid "NSFW"
-msgstr ""
+#: ../../include/features.php:349
+msgid "Forum Filter"
+msgstr "Фильтр по форумам"
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:59
-msgid "Some setting"
-msgstr "Некоторые настройки"
+#: ../../include/features.php:350
+msgid "Ability to display only posts of a specific forum"
+msgstr "Возможность показа публикаций только определённого форума"
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:61
-msgid "A setting"
-msgstr "Настройка"
+#: ../../include/features.php:357
+msgid "Personal Posts Filter"
+msgstr "Персональный фильтр публикаций"
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:64
-msgid "Skeleton Settings"
-msgstr "Настройки скелета"
+#: ../../include/features.php:358
+msgid "Ability to display only posts that you've interacted on"
+msgstr "Возможность показа только тех публикаций с которыми вы взаимодействовали"
+
+#: ../../include/features.php:366
+msgid "Show friend and connection suggestions"
+msgstr "Показать предложения в друзья"
+
+#: ../../include/features.php:387
+msgid "Photo Location"
+msgstr "Местоположение фотографии"
+
+#: ../../include/features.php:388
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Если данные о местоположении доступны на загруженных фотографий, связать их с картой."
+
+#: ../../include/features.php:401
+msgid "Advanced Profiles"
+msgstr "Расширенные профили"
+
+#: ../../include/features.php:402
+msgid "Additional profile sections and selections"
+msgstr "Дополнительные секции и выборы профиля"
+
+#: ../../include/features.php:409
+msgid "Profile Import/Export"
+msgstr "Импорт / экспорт профиля"
+
+#: ../../include/features.php:410
+msgid "Save and load profile details across sites/channels"
+msgstr "Сохранение и загрузка настроек профиля на всех сайтах / каналах"
+
+#: ../../include/features.php:417
+msgid "Multiple Profiles"
+msgstr "Несколько профилей"
+
+#: ../../include/features.php:418
+msgid "Ability to create multiple profiles"
+msgstr "Возможность создания нескольких профилей"
+
+#: ../../include/taxonomy.php:320
+msgid "Trending"
+msgstr "В тренде"
+
+#: ../../include/taxonomy.php:552
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+#: ../../include/taxonomy.php:573
+msgid "have"
+msgstr "иметь"
+
+#: ../../include/taxonomy.php:573
+msgid "has"
+msgstr "есть"
+
+#: ../../include/taxonomy.php:574
+msgid "want"
+msgstr "хотеть"
-#: ../../extend/addon/hzaddons/opensearch/opensearch.php:26
+#: ../../include/taxonomy.php:574
+msgid "wants"
+msgstr "хотеть"
+
+#: ../../include/taxonomy.php:575
+msgid "likes"
+msgstr "нравится"
+
+#: ../../include/taxonomy.php:576
+msgid "dislikes"
+msgstr "не нравится"
+
+#: ../../include/account.php:36
+msgid "Not a valid email address"
+msgstr "Недействительный адрес электронной почты"
+
+#: ../../include/account.php:38
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Домен электронной почты не входит в число тех, которые разрешены на этом сайте"
+
+#: ../../include/account.php:44
+msgid "Your email address is already registered at this site."
+msgstr "Ваш адрес электронной почты уже зарегистрирован на этом сайте."
+
+#: ../../include/account.php:76
+msgid "An invitation is required."
+msgstr "Требуется приглашение."
+
+#: ../../include/account.php:80
+msgid "Invitation could not be verified."
+msgstr "Не удалось проверить приглашение."
+
+#: ../../include/account.php:158
+msgid "Please enter the required information."
+msgstr "Пожалуйста, введите необходимую информацию."
+
+#: ../../include/account.php:225
+msgid "Failed to store account information."
+msgstr "Не удалось сохранить информацию аккаунта."
+
+#: ../../include/account.php:314
#, php-format
-msgctxt "opensearch"
-msgid "Search %1$s (%2$s)"
-msgstr "Искать %1$s (%2$s)"
+msgid "Registration confirmation for %s"
+msgstr "Подтверждение регистрации на %s"
-#: ../../extend/addon/hzaddons/opensearch/opensearch.php:28
-msgctxt "opensearch"
-msgid "$Projectname"
-msgstr ""
+#: ../../include/account.php:385
+#, php-format
+msgid "Registration request at %s"
+msgstr "Запрос регистрации на %s"
-#: ../../extend/addon/hzaddons/opensearch/opensearch.php:43
-msgid "Search $Projectname"
-msgstr "Поиск $Projectname"
+#: ../../include/account.php:407
+msgid "your registration password"
+msgstr "ваш пароль регистрации"
+
+#: ../../include/account.php:413 ../../include/account.php:475
+#, php-format
+msgid "Registration details for %s"
+msgstr "Регистрационные данные для %s"
+
+#: ../../include/account.php:486
+msgid "Account approved."
+msgstr "Аккаунт утвержден."
+
+#: ../../include/account.php:526
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Регистрация отозвана для %s"
+
+#: ../../include/account.php:805 ../../include/account.php:807
+msgid "Click here to upgrade."
+msgstr "Нажмите здесь для обновления."
+
+#: ../../include/account.php:813
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Это действие превышает ограничения, установленные в вашем плане."
+
+#: ../../include/account.php:818
+msgid "This action is not available under your subscription plan."
+msgstr "Это действие невозможно из-за ограничений в вашем плане."
+
+#: ../../include/datetime.php:140
+msgid "Birthday"
+msgstr "День рождения"
+
+#: ../../include/datetime.php:140
+msgid "Age: "
+msgstr "Возраст:"
+
+#: ../../include/datetime.php:140
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "YYYY-MM-DD или MM-DD"
+
+#: ../../include/datetime.php:244
+msgid "less than a second ago"
+msgstr "менее чем одну секунду"
+
+#: ../../include/datetime.php:262
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s назад"
+
+#: ../../include/datetime.php:273
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "год"
+msgstr[1] "года"
+msgstr[2] "лет"
+
+#: ../../include/datetime.php:276
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "месяц"
+msgstr[1] "месяца"
+msgstr[2] "месяцев"
+
+#: ../../include/datetime.php:279
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "неделю"
+msgstr[1] "недели"
+msgstr[2] "недель"
+
+#: ../../include/datetime.php:282
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "день"
+msgstr[1] "дня"
+msgstr[2] "дней"
+
+#: ../../include/datetime.php:285
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "час"
+msgstr[1] "часа"
+msgstr[2] "часов"
+
+#: ../../include/datetime.php:288
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "минуту"
+msgstr[1] "минуты"
+msgstr[2] "минут"
+
+#: ../../include/datetime.php:291
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "секунду"
+msgstr[1] "секунды"
+msgstr[2] "секунд"
+
+#: ../../include/datetime.php:520
+#, php-format
+msgid "%1$s's birthday"
+msgstr "У %1$s День рождения"
+
+#: ../../include/datetime.php:521
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "С Днем рождения %1$s !"
+
+#: ../../include/nav.php:86
+msgid "Remote authentication"
+msgstr "Удаленная аутентификация"
+
+#: ../../include/nav.php:86
+msgid "Click to authenticate to your home hub"
+msgstr "Нажмите, чтобы аутентифицировать себя на домашнем узле"
+
+#: ../../include/nav.php:92
+msgid "Manage your channels"
+msgstr "Управление вашими каналами"
+
+#: ../../include/nav.php:95
+msgid "Manage your privacy groups"
+msgstr "Управление вашим группами безопасности"
+
+#: ../../include/nav.php:97
+msgid "Account/Channel Settings"
+msgstr "Настройки аккаунта / канала"
+
+#: ../../include/nav.php:103 ../../include/nav.php:132
+msgid "End this session"
+msgstr "Закончить эту сессию"
+
+#: ../../include/nav.php:106
+msgid "Your profile page"
+msgstr "Страницa вашего профиля"
+
+#: ../../include/nav.php:109
+msgid "Manage/Edit profiles"
+msgstr "Управление / редактирование профилей"
+
+#: ../../include/nav.php:118 ../../include/nav.php:122
+msgid "Sign in"
+msgstr "Войти"
+
+#: ../../include/nav.php:149
+msgid "Take me home"
+msgstr "Домой"
+
+#: ../../include/nav.php:151
+msgid "Log me out of this site"
+msgstr "Выйти с этого сайта"
+
+#: ../../include/nav.php:156
+msgid "Create an account"
+msgstr "Создать аккаунт"
+
+#: ../../include/nav.php:168
+msgid "Help and documentation"
+msgstr "Справочная информация и документация"
+
+#: ../../include/nav.php:183
+msgid "Search site @name, !forum, #tag, ?docs, content"
+msgstr "Искать на сайте @имя, !форум, #тег, ?документ, содержимое"
+
+#: ../../include/nav.php:189
+msgid "Site Setup and Configuration"
+msgstr "Установка и конфигурация сайта"
+
+#: ../../include/nav.php:329
+msgid "@name, !forum, #tag, ?doc, content"
+msgstr "@имя, !форум, #тег, ?документ, содержимое"
+
+#: ../../include/nav.php:330
+msgid "Please wait..."
+msgstr "Подождите пожалуйста ..."
+
+#: ../../include/nav.php:336
+msgid "Add Apps"
+msgstr "Добавить приложения"
+
+#: ../../include/nav.php:337
+msgid "Arrange Apps"
+msgstr "Упорядочить приложения"
+
+#: ../../include/nav.php:338
+msgid "Toggle System Apps"
+msgstr "Показать системные приложения"
+
+#: ../../include/nav.php:424
+msgid "Status Messages and Posts"
+msgstr "Статусы и публикации"
+
+#: ../../include/nav.php:437
+msgid "Profile Details"
+msgstr "Информация о профиле"
+
+#: ../../include/nav.php:447 ../../include/photos.php:669
+msgid "Photo Albums"
+msgstr "Фотоальбомы"
+
+#: ../../include/nav.php:455
+msgid "Files and Storage"
+msgstr "Файлы и хранилище"
+
+#: ../../include/nav.php:493
+msgid "Saved Bookmarks"
+msgstr "Сохранённые закладки"
+
+#: ../../include/nav.php:504
+msgid "View Cards"
+msgstr "Просмотреть карточки"
+
+#: ../../include/nav.php:515
+msgid "View Articles"
+msgstr "Просмотр статей"
+
+#: ../../include/nav.php:527
+msgid "View Webpages"
+msgstr "Просмотр веб-страниц"
+
+#: ../../include/photos.php:151
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Файл превышает предельный размер для сайта в %lu байт"
+
+#: ../../include/photos.php:162
+msgid "Image file is empty."
+msgstr "Файл изображения пуст."
+
+#: ../../include/photos.php:327
+msgid "Photo storage failed."
+msgstr "Ошибка хранилища фотографий."
+
+#: ../../include/photos.php:376
+msgid "a new photo"
+msgstr "новая фотография"
+
+#: ../../include/photos.php:380
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s опубликовал %2$s в %3$s"
+
+#: ../../include/photos.php:674
+msgid "Upload New Photos"
+msgstr "Загрузить новые фотографии"
+
+#: ../../include/zot.php:775
+msgid "Invalid data packet"
+msgstr "Неверный пакет данных"
+
+#: ../../include/zot.php:4288
+msgid "invalid target signature"
+msgstr "недопустимая целевая подпись"
+
+#: ../../include/connections.php:133
+msgid "New window"
+msgstr "Новое окно"
+
+#: ../../include/connections.php:134
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Открыть выбранное местоположение в другом окне или вкладке браузера"
+
+#: ../../include/auth.php:192
+msgid "Delegation session ended."
+msgstr "Делегированная сессия завершена."
+
+#: ../../include/auth.php:196
+msgid "Logged out."
+msgstr "Вышел из системы."
+
+#: ../../include/auth.php:291
+msgid "Email validation is incomplete. Please check your email."
+msgstr "Проверка email не завершена. Пожалуйста, проверьте вашу почту."
+
+#: ../../include/auth.php:307
+msgid "Failed authentication"
+msgstr "Ошибка аутентификации"
+
+#: ../../include/help.php:80
+msgid "Help:"
+msgstr "Помощь:"
+
+#: ../../include/help.php:129
+msgid "Not Found"
+msgstr "Не найдено"
diff --git a/view/ru/hstrings.php b/view/ru/hstrings.php
index 02c88dde3..79e5e9000 100644
--- a/view/ru/hstrings.php
+++ b/view/ru/hstrings.php
@@ -6,1067 +6,96 @@ function string_plural_select_ru($n){
}}
App::$rtl = 0;
App::$strings["plural_function_code"] = "(n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2))";
-App::$strings["Source channel not found."] = "Канал-источник не найден.";
-App::$strings["Default"] = "По умолчанию";
-App::$strings["Focus (Hubzilla default)"] = "Фокус (по умолчанию Hubzilla)";
-App::$strings["Submit"] = "Отправить";
-App::$strings["Theme settings"] = "Настройки темы";
-App::$strings["Narrow navbar"] = "Узкая панель навигации";
-App::$strings["No"] = "Нет";
-App::$strings["Yes"] = "Да";
-App::$strings["Navigation bar background color"] = "Панель навигации, цвет фона";
-App::$strings["Navigation bar icon color "] = "Панель навигации, цвет значков";
-App::$strings["Navigation bar active icon color "] = "Панель навигации, цвет активного значка";
-App::$strings["Link color"] = "Цвет ссылок";
-App::$strings["Set font-color for banner"] = "Цвет текста в шапке";
-App::$strings["Set the background color"] = "Цвет фона";
-App::$strings["Set the background image"] = "Фоновое изображение";
-App::$strings["Set the background color of items"] = "Цвет фона элементов";
-App::$strings["Set the background color of comments"] = "Цвет фона комментариев";
-App::$strings["Set font-size for the entire application"] = "Установить системный размер шрифта";
-App::$strings["Examples: 1rem, 100%, 16px"] = "Например: 1rem, 100%, 16px";
-App::$strings["Set font-color for posts and comments"] = "Цвет шрифта для постов и комментариев";
-App::$strings["Set radius of corners"] = "Радиус скруглений";
-App::$strings["Example: 4px"] = "Например: 4px";
-App::$strings["Set shadow depth of photos"] = "Глубина теней фотографий";
-App::$strings["Set maximum width of content region in pixel"] = "Максимальная ширина содержания региона (в пикселях)";
-App::$strings["Leave empty for default width"] = "Оставьте пустым для ширины по умолчанию";
-App::$strings["Set size of conversation author photo"] = "Размер фотографии автора беседы";
-App::$strings["Set size of followup author photos"] = "Размер фотографий подписчиков";
-App::$strings["Show advanced settings"] = "Показать расширенные настройки";
-App::$strings["Profile to assign new connections"] = "Назначить профиль для новых контактов";
-App::$strings["Frequently"] = "Часто";
-App::$strings["Hourly"] = "Ежечасно";
-App::$strings["Twice daily"] = "Дважды в день";
-App::$strings["Daily"] = "Ежедневно";
-App::$strings["Weekly"] = "Еженедельно";
-App::$strings["Monthly"] = "Ежемесячно";
-App::$strings["Male"] = "Мужчина";
-App::$strings["Female"] = "Женщина";
-App::$strings["Currently Male"] = "В настоящее время мужской";
-App::$strings["Currently Female"] = "В настоящее время женский";
-App::$strings["Mostly Male"] = "В основном мужской";
-App::$strings["Mostly Female"] = "В основном женский";
-App::$strings["Transgender"] = "Трансгендер";
-App::$strings["Intersex"] = "Интерсексуал";
-App::$strings["Transsexual"] = "Транссексуал";
-App::$strings["Hermaphrodite"] = "Гермафродит";
-App::$strings["Neuter"] = "Среднего рода";
-App::$strings["Non-specific"] = "Неспецифический";
+App::$strings["Can view my channel stream and posts"] = "Может просматривать мой поток и сообщения";
+App::$strings["Can send me their channel stream and posts"] = "Может присылать мне свои потоки и сообщения";
+App::$strings["Can view my default channel profile"] = "Может просматривать мой стандартный профиль канала";
+App::$strings["Can view my connections"] = "Может просматривать мои контакты";
+App::$strings["Can view my file storage and photos"] = "Может просматривать мое хранилище файлов";
+App::$strings["Can upload/modify my file storage and photos"] = "Может загружать/изменять мои файлы и фотографии в хранилище";
+App::$strings["Can view my channel webpages"] = "Может просматривать мои веб-страницы";
+App::$strings["Can view my wiki pages"] = "Может просматривать мои вики-страницы";
+App::$strings["Can create/edit my channel webpages"] = "Может редактировать мои веб-страницы";
+App::$strings["Can write to my wiki pages"] = "Может редактировать мои вики-страницы";
+App::$strings["Can post on my channel (wall) page"] = "Может публиковать на моей странице канала";
+App::$strings["Can comment on or like my posts"] = "Может прокомментировать или отмечать как понравившиеся мои публикации";
+App::$strings["Can send me private mail messages"] = "Может отправлять мне личные сообщения по эл. почте";
+App::$strings["Can like/dislike profiles and profile things"] = "Может комментировать или отмечать как нравится/ненравится мой профиль";
+App::$strings["Can forward to all my channel connections via ! mentions in posts"] = "Может пересылать всем подписчикам моего канала используя ! в публикациях";
+App::$strings["Can chat with me"] = "Может общаться со мной в чате";
+App::$strings["Can source my public posts in derived channels"] = "Может использовать мои публичные сообщения в клонированных лентах сообщений";
+App::$strings["Can administer my channel"] = "Может администрировать мой канал";
+App::$strings["Social Networking"] = "Социальная Сеть";
+App::$strings["Social - Federation"] = "Социальная - Федерация";
+App::$strings["Social - Mostly Public"] = "Социальная - В основном общественный";
+App::$strings["Social - Restricted"] = "Социальная - Ограниченный";
+App::$strings["Social - Private"] = "Социальная - Частный";
+App::$strings["Community Forum"] = "Форум сообщества";
+App::$strings["Forum - Mostly Public"] = "Форум - В основном общественный";
+App::$strings["Forum - Restricted"] = "Форум - Ограниченный";
+App::$strings["Forum - Private"] = "Форум - Частный";
+App::$strings["Feed Republish"] = "Публиковать ленты новостей";
+App::$strings["Feed - Mostly Public"] = "Ленты новостей - В основном общественный";
+App::$strings["Feed - Restricted"] = "Ленты новостей - Ограниченный";
+App::$strings["Special Purpose"] = "Спец. назначение";
+App::$strings["Special - Celebrity/Soapbox"] = "Спец. назначение - Знаменитость/Soapbox";
+App::$strings["Special - Group Repository"] = "Спец. назначение - Групповой репозиторий";
App::$strings["Other"] = "Другой";
-App::$strings["Undecided"] = "Не решил";
-App::$strings["Males"] = "Мужчины";
-App::$strings["Females"] = "Женщины";
-App::$strings["Gay"] = "Гей";
-App::$strings["Lesbian"] = "Лесбиянка";
-App::$strings["No Preference"] = "Без предпочтений";
-App::$strings["Bisexual"] = "Бисексуал";
-App::$strings["Autosexual"] = "Автосексуал";
-App::$strings["Abstinent"] = "Воздержание";
-App::$strings["Virgin"] = "Девственник";
-App::$strings["Deviant"] = "Отклоняющийся от нормы";
-App::$strings["Fetish"] = "Фетишист";
-App::$strings["Oodles"] = "Множественный";
-App::$strings["Nonsexual"] = "Асексуал";
-App::$strings["Single"] = "Одиночка";
-App::$strings["Lonely"] = "Одинокий";
-App::$strings["Available"] = "Свободен";
-App::$strings["Unavailable"] = "Занят";
-App::$strings["Has crush"] = "Влюблён";
-App::$strings["Infatuated"] = "без ума";
-App::$strings["Dating"] = "Встречаюсь";
-App::$strings["Unfaithful"] = "Неверный";
-App::$strings["Sex Addict"] = "Эротоман";
-App::$strings["Friends"] = "Друзья";
-App::$strings["Friends/Benefits"] = "Друзья / Выгоды";
-App::$strings["Casual"] = "Легкомысленный";
-App::$strings["Engaged"] = "Помолвлен";
-App::$strings["Married"] = "В браке";
-App::$strings["Imaginarily married"] = "В воображаемом браке";
-App::$strings["Partners"] = "Партнёрство";
-App::$strings["Cohabiting"] = "Сожительствующие";
-App::$strings["Common law"] = "Гражданский брак";
-App::$strings["Happy"] = "Счастлив";
-App::$strings["Not looking"] = "Не нуждаюсь";
-App::$strings["Swinger"] = "Свингер";
-App::$strings["Betrayed"] = "Предан";
-App::$strings["Separated"] = "Разделён";
-App::$strings["Unstable"] = "Нестабильно";
-App::$strings["Divorced"] = "В разводе";
-App::$strings["Imaginarily divorced"] = "В воображаемом разводе";
-App::$strings["Widowed"] = "Вдовец / вдова";
-App::$strings["Uncertain"] = "Неопределенный";
-App::$strings["It's complicated"] = "Это сложно";
-App::$strings["Don't care"] = "Всё равно";
-App::$strings["Ask me"] = "Спроси меня";
-App::$strings["Permission denied."] = "Доступ запрещен.";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Файл превышает предельный размер для сайта в %lu байт";
-App::$strings["Image file is empty."] = "Файл изображения пуст.";
-App::$strings["Unable to process image"] = "Не удается обработать изображение";
-App::$strings["Photo storage failed."] = "Ошибка хранилища фотографий.";
-App::$strings["a new photo"] = "новая фотография";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s опубликовал %2\$s в %3\$s";
-App::$strings["Photo Albums"] = "Фотоальбомы";
-App::$strings["Recent Photos"] = "Последние фотографии";
-App::$strings["Upload New Photos"] = "Загрузить новые фотографии";
-App::$strings["View PDF"] = "Просмотреть PDF";
-App::$strings[" by "] = " по ";
-App::$strings[" on "] = " на ";
-App::$strings["Embedded content"] = "Встроенное содержимое";
-App::$strings["Embedding disabled"] = "Встраивание отключено";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Не верный токен безопасности для формы. Вероятно, это произошло потому, что форма была открыта слишком долго (> 3-х часов) перед его отправкой.";
-App::$strings["%d invitation available"] = array(
- 0 => "доступно %d приглашение",
- 1 => "доступны %d приглашения",
- 2 => "доступны %d приглашений",
-);
-App::$strings["Advanced"] = "Дополнительно";
-App::$strings["Find Channels"] = "Поиск каналов";
-App::$strings["Enter name or interest"] = "Впишите имя или интерес";
-App::$strings["Connect/Follow"] = "Подключить / отслеживать";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Примеры: Владимир Ильич, Революционер";
-App::$strings["Find"] = "Поиск";
-App::$strings["Channel Suggestions"] = "Рекомендации каналов";
-App::$strings["Random Profile"] = "Случайный профиль";
-App::$strings["Invite Friends"] = "Пригласить друзей";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Расширенный пример: name=ivan and country=russia";
-App::$strings["Saved Folders"] = "Сохранённые каталоги";
-App::$strings["Everything"] = "Всё";
-App::$strings["Categories"] = "Категории";
-App::$strings["Common Connections"] = "Общие контакты";
-App::$strings["View all %d common connections"] = "Просмотреть все %d общих контактов";
-App::$strings["Edit"] = "Изменить";
-App::$strings["Unable to obtain identity information from database"] = "Невозможно получить идентификационную информацию из базы данных";
-App::$strings["Empty name"] = "Пустое имя";
-App::$strings["Name too long"] = "Слишком длинное имя";
-App::$strings["No account identifier"] = "Идентификатор аккаунта отсутствует";
-App::$strings["Nickname is required."] = "Требуется псевдоним.";
-App::$strings["Reserved nickname. Please choose another."] = "Зарезервированый псевдоним. Пожалуйста, выберите другой.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Псевдоним имеет недопустимые символы или уже используется на этом сайте.";
-App::$strings["Unable to retrieve created identity"] = "Не удается получить созданный идентификатор";
-App::$strings["Default Profile"] = "Профиль по умолчанию";
-App::$strings["Unable to retrieve modified identity"] = "Не удается найти изменённый идентификатор";
-App::$strings["Requested channel is not available."] = "Запрошенный канал не доступен.";
+App::$strings["Custom/Expert Mode"] = "Экспертный режим";
App::$strings["Requested profile is not available."] = "Запрашиваемый профиль не доступен.";
-App::$strings["Change profile photo"] = "Изменить фотографию профиля";
-App::$strings["Edit Profiles"] = "Редактирование профилей";
-App::$strings["Create New Profile"] = "Создать новый профиль";
-App::$strings["Edit Profile"] = "Редактировать профиль";
-App::$strings["Profile Image"] = "Изображение профиля";
-App::$strings["Visible to everybody"] = "Видно всем";
-App::$strings["Edit visibility"] = "Редактировать видимость";
-App::$strings["Connect"] = "Подключить";
-App::$strings["Location:"] = "Местоположение:";
-App::$strings["Gender:"] = "Пол:";
-App::$strings["Status:"] = "Статус:";
-App::$strings["Homepage:"] = "Домашняя страница:";
-App::$strings["Online Now"] = "Сейчас в сети";
-App::$strings["Change your profile photo"] = "Изменить фотографию вашего профиля";
-App::$strings["Trans"] = "Трансексуал";
-App::$strings["Full Name:"] = "Полное имя:";
-App::$strings["Like this channel"] = "нравится этот канал";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Нравится",
- 1 => "Нравится",
- 2 => "Нравится",
-);
-App::$strings["j F, Y"] = "";
-App::$strings["j F"] = "";
-App::$strings["Birthday:"] = "День рождения:";
-App::$strings["Age:"] = "Возраст:";
-App::$strings["for %1\$d %2\$s"] = "для %1\$d %2\$s";
-App::$strings["Tags:"] = "Теги:";
-App::$strings["Sexual Preference:"] = "Сексуальные предпочтения:";
-App::$strings["Hometown:"] = "Родной город:";
-App::$strings["Political Views:"] = "Политические взгляды:";
-App::$strings["Religion:"] = "Религия:";
-App::$strings["About:"] = "О себе:";
-App::$strings["Hobbies/Interests:"] = "Хобби / интересы:";
-App::$strings["Likes:"] = "Что вам нравится:";
-App::$strings["Dislikes:"] = "Что вам не нравится:";
-App::$strings["Contact information and Social Networks:"] = "Контактная информация и социальные сети:";
-App::$strings["My other channels:"] = "Мои другие каналы:";
-App::$strings["Musical interests:"] = "Музыкальные интересы:";
-App::$strings["Books, literature:"] = "Книги, литература:";
-App::$strings["Television:"] = "Телевидение:";
-App::$strings["Film/dance/culture/entertainment:"] = "Кино / танцы / культура / развлечения:";
-App::$strings["Love/Romance:"] = "Любовь / романтика:";
-App::$strings["Work/employment:"] = "Работа / занятость:";
-App::$strings["School/education:"] = "Школа / образование:";
-App::$strings["Profile"] = "Профиль";
-App::$strings["Like this thing"] = "нравится этo";
-App::$strings["Export"] = "Экспорт";
-App::$strings["cover photo"] = "фотография обложки";
-App::$strings["Remote Authentication"] = "Удаленная аутентификация";
-App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Введите адрес вашего канала (например: channel@example.com)";
-App::$strings["Authenticate"] = "Проверка подлинности";
-App::$strings["Account '%s' deleted"] = "Аккаунт '%s' удален";
-App::$strings["Download binary/encrypted content"] = "Загрузить двоичное / зашифрованное содержимое";
-App::$strings["Unable to determine sender."] = "Невозможно определить отправителя.";
-App::$strings["No recipient provided."] = "Получатель не предоставлен.";
-App::$strings["[no subject]"] = "[без темы]";
-App::$strings["Stored post could not be verified."] = "Сохранённая публикация не может быть проверена.";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s была создана %2\$s %3\$s";
-App::$strings["post"] = "публикация";
-App::$strings["Permission denied"] = "Доступ запрещен";
-App::$strings["(Unknown)"] = "(Неизвестный)";
-App::$strings["Visible to anybody on the internet."] = "Виден всем в интернете.";
-App::$strings["Visible to you only."] = "Видно только вам.";
-App::$strings["Visible to anybody in this network."] = "Видно всем в этой сети.";
-App::$strings["Visible to anybody authenticated."] = "Видно всем аутентифицированным.";
-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["Item not found."] = "Элемент не найден.";
-App::$strings["Privacy group not found."] = "Группа безопасности не найдена.";
-App::$strings["Privacy group is empty."] = "Группа безопасности пуста";
-App::$strings["Privacy group: %s"] = "Группа безопасности: %s";
-App::$strings["Connection: %s"] = "Контакт: %s";
-App::$strings["Connection not found."] = "Контакт не найден.";
-App::$strings["female"] = "женщина";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s обновила её %2\$s";
-App::$strings["male"] = "мужчина";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s обновил его %2\$s";
-App::$strings["%1\$s updated their %2\$s"] = "%1\$s обновили их %2\$s";
-App::$strings["profile photo"] = "Фотография профиля";
-App::$strings["[Edited %s]"] = "[Отредактировано %s]";
-App::$strings["__ctx:edit_activity__ Post"] = "Публикация";
-App::$strings["__ctx:edit_activity__ Comment"] = "Комментарий";
-App::$strings[" and "] = " и ";
-App::$strings["public profile"] = "общедоступный профиль";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s изменил %2\$s на &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Посетить %1\$s %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s обновлено %2\$s, изменено %3\$s.";
-App::$strings["Off"] = "Выкл.";
-App::$strings["On"] = "Вкл.";
-App::$strings["CalDAV"] = "";
-App::$strings["Start calendar week on Monday"] = "Начинать календарную неделю с понедельника";
-App::$strings["Default is Sunday"] = "По умолчанию - воскресенье";
-App::$strings["Channel Home"] = "Главная канала";
-App::$strings["Search by Date"] = "Поиск по дате";
-App::$strings["Ability to select posts by date ranges"] = "Возможность выбора сообщений по диапазонам дат";
-App::$strings["Tag Cloud"] = "Облако тегов";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Показывает личное облако тегов на странице канала";
-App::$strings["Use blog/list mode"] = "Использовать режим блога / списка";
-App::$strings["Comments will be displayed separately"] = "Комментарии будут отображаться отдельно";
-App::$strings["Connections"] = "Контакты";
-App::$strings["Connection Filtering"] = "Фильтрация контактов";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Фильтр входящих сообщений от контактов на основе ключевых слов / контента";
-App::$strings["Conversation"] = "Диалоги";
-App::$strings["Community Tagging"] = "Отметки сообщества";
-App::$strings["Ability to tag existing posts"] = "Возможность помечать тегами существующие публикации";
-App::$strings["Emoji Reactions"] = "Реакции Emoji";
-App::$strings["Add emoji reaction ability to posts"] = "Возможность добавлять реакции Emoji к публикациям";
-App::$strings["Dislike Posts"] = "Не нравящиеся публикации";
-App::$strings["Ability to dislike posts/comments"] = "Возможность отмечать не нравящиеся публикации / комментарии";
-App::$strings["Star Posts"] = "Помечать сообщения";
-App::$strings["Ability to mark special posts with a star indicator"] = "Возможность отметить специальные сообщения индикатором-звёздочкой";
-App::$strings["Directory"] = "Каталог";
-App::$strings["Advanced Directory Search"] = "Расширенный поиск в каталоге";
-App::$strings["Allows creation of complex directory search queries"] = "Позволяет создание сложных поисковых запросов в каталоге";
-App::$strings["Editor"] = "Редактор";
-App::$strings["Post Categories"] = "Категории публикаций";
-App::$strings["Add categories to your posts"] = "Добавить категории для ваших публикаций";
-App::$strings["Large Photos"] = "Большие фотографии";
-App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Включить большие (1024px) миниатюры изображений в публикациях. Если не включено, использовать маленькие (640px) миниатюры.";
-App::$strings["Even More Encryption"] = "Еще больше шифрования";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Разрешить дополнительное end-to-end шифрование содержимого с общим секретным ключом";
-App::$strings["Enable Voting Tools"] = "Включить инструменты голосования";
-App::$strings["Provide a class of post which others can vote on"] = "Предоставь класс публикаций с возможностью голосования";
-App::$strings["Disable Comments"] = "Отключить комментарии";
-App::$strings["Provide the option to disable comments for a post"] = "Предоставить возможность отключать комментарии для публикаций";
-App::$strings["Delayed Posting"] = "Задержанная публикация";
-App::$strings["Allow posts to be published at a later date"] = "Разрешить размешать публикации следующими датами";
-App::$strings["Content Expiration"] = "Истечение срока действия содержимого";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "Удалять публикации / комментарии и / или личные сообщения";
-App::$strings["Suppress Duplicate Posts/Comments"] = "Подавлять дублирующие публикации / комментарии";
-App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Предотвращает появление публикаций с одинаковым содержимым если интервал между ними менее 2 минут";
-App::$strings["Auto-save drafts of posts and comments"] = "Автоматически сохранять черновики публикаций и комментариев";
-App::$strings["Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions"] = "Автоматически сохраняет черновики публикаций и комментариев в локальном хранилище браузера для предотвращения их случайной утраты";
-App::$strings["Events"] = "События";
-App::$strings["Smart Birthdays"] = "\"Умные\" Дни рождений";
-App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Сделать уведомления о днях рождения зависимыми от часового пояса в том случае, если ваши друзья разбросаны по планете.";
-App::$strings["Event Timezone Selection"] = "Выбор часового пояса события";
-App::$strings["Allow event creation in timezones other than your own."] = "Разрешить создание события в часовой зоне отличной от вашей";
-App::$strings["Manage"] = "Управление";
-App::$strings["Navigation Channel Select"] = "Выбор канала навигации";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Изменить канал напрямую из выпадающего меню";
-App::$strings["Network"] = "Сеть";
-App::$strings["Saved Searches"] = "Сохранённые поиски";
-App::$strings["Save search terms for re-use"] = "Сохранять результаты поиска для повторного использования";
-App::$strings["Ability to file posts under folders"] = "Возможность размещать публикации в каталогах";
-App::$strings["Alternate Stream Order"] = "Отображение потока";
-App::$strings["Ability to order the stream by last post date, last comment date or unthreaded activities"] = "Возможность показывать поток по дате последнего сообщения, последнего комментария или в порядке поступления";
-App::$strings["Contact Filter"] = "Фильтр контактов";
-App::$strings["Ability to display only posts of a selected contact"] = "Возможность показа публикаций только от выбранных контактов";
-App::$strings["Forum Filter"] = "Фильтр по форумам";
-App::$strings["Ability to display only posts of a specific forum"] = "Возможность показа публикаций только определённого форума";
-App::$strings["Personal Posts Filter"] = "Персональный фильтр публикаций";
-App::$strings["Ability to display only posts that you've interacted on"] = "Возможность показа только тех публикаций с которыми вы взаимодействовали";
-App::$strings["Affinity Tool"] = "Инструмент сходства / соответствия";
-App::$strings["Filter stream activity by depth of relationships"] = "Фильтровать потоки активности по глубине отношений";
-App::$strings["Suggest Channels"] = "Предлагаемые каналы";
-App::$strings["Show friend and connection suggestions"] = "Показать предложения в друзья";
-App::$strings["Photos"] = "Фотографии";
-App::$strings["Photo Location"] = "Местоположение фотографии";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Если данные о местоположении доступны на загруженных фотографий, связать их с картой.";
-App::$strings["Profiles"] = "Редактировать профиль";
-App::$strings["Advanced Profiles"] = "Расширенные профили";
-App::$strings["Additional profile sections and selections"] = "Дополнительные секции и выборы профиля";
-App::$strings["Profile Import/Export"] = "Импорт / экспорт профиля";
-App::$strings["Save and load profile details across sites/channels"] = "Сохранение и загрузка настроек профиля на всех сайтах / каналах";
-App::$strings["Multiple Profiles"] = "Несколько профилей";
-App::$strings["Ability to create multiple profiles"] = "Возможность создания нескольких профилей";
-App::$strings["prev"] = "предыдущий";
-App::$strings["first"] = "первый";
-App::$strings["last"] = "последний";
-App::$strings["next"] = "следующий";
-App::$strings["older"] = "старше";
-App::$strings["newer"] = "новее";
-App::$strings["No connections"] = "Нет контактов";
-App::$strings["View all %s connections"] = "Просмотреть все %s контактов";
-App::$strings["Network: %s"] = "Сеть: %s";
-App::$strings["Search"] = "Поиск";
-App::$strings["Save"] = "Запомнить";
-App::$strings["poke"] = "Ткнуть";
-App::$strings["poked"] = "ткнут";
-App::$strings["ping"] = "Пингануть";
-App::$strings["pinged"] = "Отпингован";
-App::$strings["prod"] = "Подтолкнуть";
-App::$strings["prodded"] = "Подтолкнут";
-App::$strings["slap"] = "Шлёпнуть";
-App::$strings["slapped"] = "Шлёпнут";
-App::$strings["finger"] = "Указать";
-App::$strings["fingered"] = "Указан";
-App::$strings["rebuff"] = "Дать отпор";
-App::$strings["rebuffed"] = "Дан отпор";
-App::$strings["happy"] = "счастливый";
-App::$strings["sad"] = "грустный";
-App::$strings["mellow"] = "спокойный";
-App::$strings["tired"] = "усталый";
-App::$strings["perky"] = "весёлый";
-App::$strings["angry"] = "сердитый";
-App::$strings["stupefied"] = "отупевший";
-App::$strings["puzzled"] = "недоумевающий";
-App::$strings["interested"] = "заинтересованный";
-App::$strings["bitter"] = "едкий";
-App::$strings["cheerful"] = "бодрый";
-App::$strings["alive"] = "энергичный";
-App::$strings["annoyed"] = "раздражённый";
-App::$strings["anxious"] = "обеспокоенный";
-App::$strings["cranky"] = "капризный";
-App::$strings["disturbed"] = "встревоженный";
-App::$strings["frustrated"] = "разочарованный";
-App::$strings["depressed"] = "подавленный";
-App::$strings["motivated"] = "мотивированный";
-App::$strings["relaxed"] = "расслабленный";
-App::$strings["surprised"] = "удивленный";
-App::$strings["Monday"] = "Понедельник";
-App::$strings["Tuesday"] = "Вторник";
-App::$strings["Wednesday"] = "Среда";
-App::$strings["Thursday"] = "Четверг";
-App::$strings["Friday"] = "Пятница";
-App::$strings["Saturday"] = "Суббота";
-App::$strings["Sunday"] = "Воскресенье";
-App::$strings["January"] = "Январь";
-App::$strings["February"] = "Февраль";
-App::$strings["March"] = "Март";
-App::$strings["April"] = "Апрель";
-App::$strings["May"] = "Май";
-App::$strings["June"] = "Июнь";
-App::$strings["July"] = "Июль";
-App::$strings["August"] = "Август";
-App::$strings["September"] = "Сентябрь";
-App::$strings["October"] = "Октябрь";
-App::$strings["November"] = "Ноябрь";
-App::$strings["December"] = "Декабрь";
-App::$strings["Unknown Attachment"] = "Неизвестное вложение";
-App::$strings["Size"] = "Размер";
-App::$strings["unknown"] = "неизвестный";
-App::$strings["remove category"] = "удалить категорию";
-App::$strings["remove from file"] = "удалить из файла";
-App::$strings["Link to Source"] = "Ссылка на источник";
-App::$strings["default"] = "по умолчанию";
-App::$strings["Page layout"] = "Шаблон страницы";
-App::$strings["You can create your own with the layouts tool"] = "Вы можете создать свой собственный с помощью инструмента шаблонов";
-App::$strings["BBcode"] = "";
-App::$strings["HTML"] = "";
-App::$strings["Markdown"] = "Разметка Markdown";
-App::$strings["Text"] = "Текст";
-App::$strings["Comanche Layout"] = "Шаблон Comanche";
-App::$strings["PHP"] = "";
-App::$strings["Page content type"] = "Тип содержимого страницы";
-App::$strings["photo"] = "фото";
-App::$strings["event"] = "событие";
-App::$strings["status"] = "статус";
-App::$strings["comment"] = "комментарий";
-App::$strings["activity"] = "активность";
-App::$strings["a-z, 0-9, -, and _ only"] = "Только a-z, 0-9, -, и _";
-App::$strings["Design Tools"] = "Инструменты дизайна";
+App::$strings["Permission denied."] = "Доступ запрещен.";
+App::$strings["Block Name"] = "Название блока";
App::$strings["Blocks"] = "Блокировки";
-App::$strings["Menus"] = "Меню";
-App::$strings["Layouts"] = "Шаблоны";
-App::$strings["Pages"] = "Страницы";
-App::$strings["Import"] = "Импортировать";
-App::$strings["Import website..."] = "Импорт веб-сайта...";
-App::$strings["Select folder to import"] = "Выбрать каталог для импорта";
-App::$strings["Import from a zipped folder:"] = "Импортировать из каталога в zip-архиве:";
-App::$strings["Import from cloud files:"] = "Импортировать из сетевых файлов:";
-App::$strings["/cloud/channel/path/to/folder"] = "";
-App::$strings["Enter path to website files"] = "Введите путь к файлам веб-сайта";
-App::$strings["Select folder"] = "Выбрать каталог";
-App::$strings["Export website..."] = "Экспорт веб-сайта...";
-App::$strings["Export to a zip file"] = "Экспортировать в ZIP файл.";
-App::$strings["website.zip"] = "";
-App::$strings["Enter a name for the zip file."] = "Введите имя для ZIP файла.";
-App::$strings["Export to cloud files"] = "Эскпортировать в сетевые файлы:";
-App::$strings["/path/to/export/folder"] = "";
-App::$strings["Enter a path to a cloud files destination."] = "Введите путь к расположению сетевых файлов.";
-App::$strings["Specify folder"] = "Указать каталог";
-App::$strings["Collection"] = "Коллекция";
-App::$strings["Unable to import a removed channel."] = "Невозможно импортировать удалённый канал.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Не удалось создать дублирующийся идентификатор канала. Импорт невозможен.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Не удалось создать уникальный адрес канала. Импорт не завершен.";
-App::$strings["Cloned channel not found. Import failed."] = "Клон канала не найден. Импорт невозможен.";
-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["edit"] = "редактировать";
-App::$strings["Privacy Groups"] = "Группы безопасности";
-App::$strings["Edit group"] = "Редактировать группу";
-App::$strings["Add privacy group"] = "Добавить группу безопасности";
-App::$strings["Channels not in any privacy group"] = "Каналы не включены ни в одну группу безопасности";
-App::$strings["add"] = "добавить";
-App::$strings["Not a valid email address"] = "Недействительный адрес электронной почты";
-App::$strings["Your email domain is not among those allowed on this site"] = "Домен электронной почты не входит в число тех, которые разрешены на этом сайте";
-App::$strings["Your email address is already registered at this site."] = "Ваш адрес электронной почты уже зарегистрирован на этом сайте.";
-App::$strings["An invitation is required."] = "Требуется приглашение.";
-App::$strings["Invitation could not be verified."] = "Не удалось проверить приглашение.";
-App::$strings["Please enter the required information."] = "Пожалуйста, введите необходимую информацию.";
-App::$strings["Failed to store account information."] = "Не удалось сохранить информацию аккаунта.";
-App::$strings["Registration confirmation for %s"] = "Подтверждение регистрации для %s";
-App::$strings["Registration request at %s"] = "Запрос регистрации на %s";
-App::$strings["your registration password"] = "ваш пароль регистрации";
-App::$strings["Registration details for %s"] = "Регистрационные данные для %s";
-App::$strings["Account approved."] = "Аккаунт утвержден.";
-App::$strings["Registration revoked for %s"] = "Регистрация отозвана для %s";
-App::$strings["Click here to upgrade."] = "Нажмите здесь для обновления.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Это действие превышает ограничения, установленные в вашем плане.";
-App::$strings["This action is not available under your subscription plan."] = "Это действие невозможно из-за ограничений в вашем плане.";
-App::$strings["Invalid data packet"] = "Неверный пакет данных";
-App::$strings["Unable to verify channel signature"] = "Невозможно проверить подпись канала";
-App::$strings["Unable to verify site signature for %s"] = "Невозможно проверить подпись сайта %s";
-App::$strings["invalid target signature"] = "недопустимая целевая подпись";
-App::$strings["Channel is blocked on this site."] = "Канал блокируется на этом сайте.";
-App::$strings["Channel location missing."] = "Местоположение канала отсутствует.";
-App::$strings["Response from remote channel was incomplete."] = "Ответ удаленного канала неполный.";
-App::$strings["Premium channel - please visit:"] = "Премимум-канал - пожалуйста посетите:";
-App::$strings["Channel was deleted and no longer exists."] = "Канал удален и больше не существует.";
-App::$strings["Remote channel or protocol unavailable."] = "Удалённый канал или протокол недоступен.";
-App::$strings["Channel discovery failed."] = "Не удалось обнаружить канал.";
-App::$strings["Protocol disabled."] = "Протокол отключен.";
-App::$strings["Cannot connect to yourself."] = "Нельзя подключиться к самому себе.";
-App::$strings["Help:"] = "Помощь:";
-App::$strings["Help"] = "Помощь";
-App::$strings["Not Found"] = "Не найдено";
-App::$strings["Page not found."] = "Страница не найдена.";
-App::$strings["Image/photo"] = "Изображение / фотография";
-App::$strings["Encrypted content"] = "Зашифрованное содержание";
-App::$strings["Install %1\$s element %2\$s"] = "Установить %1\$s элемент %2\$s";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Эта публикация содержит устанавливаемый %s элемент, однако у вас нет разрешений для его установки на этом сайте.";
-App::$strings["webpage"] = "веб-страница";
-App::$strings["layout"] = "шаблон";
-App::$strings["block"] = "заблокировать";
-App::$strings["menu"] = "меню";
-App::$strings["card"] = "карточка";
-App::$strings["article"] = "статья";
-App::$strings["Click to open/close"] = "Нажмите, чтобы открыть/закрыть";
-App::$strings["spoiler"] = "спойлер";
-App::$strings["View article"] = "Просмотр статьи";
-App::$strings["View summary"] = "Просмотр резюме";
-App::$strings["Different viewers will see this text differently"] = "Различные зрители увидят этот текст по-разному";
-App::$strings["$1 wrote:"] = "$1 писал:";
-App::$strings["channel"] = "канал";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s нравится %3\$s %2\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s не нравится %2\$s %3\$s";
-App::$strings["likes %1\$s's %2\$s"] = "Нравится %1\$s %2\$s";
-App::$strings["doesn't like %1\$s's %2\$s"] = "Не нравится %1\$s %2\$s";
-App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s теперь в контакте с %2\$s";
-App::$strings["%1\$s poked %2\$s"] = "%1\$s ткнул %2\$s";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s в %2\$s";
-App::$strings["This is an unsaved preview"] = "Это несохранённый просмотр";
-App::$strings["__ctx:title__ Likes"] = "Нравится";
-App::$strings["__ctx:title__ Dislikes"] = "Не нравится";
-App::$strings["__ctx:title__ Agree"] = "Согласен";
-App::$strings["__ctx:title__ Disagree"] = "Не согласен";
-App::$strings["__ctx:title__ Abstain"] = "Воздержался";
-App::$strings["__ctx:title__ Attending"] = "Посещаю";
-App::$strings["__ctx:title__ Not attending"] = "Не посещаю";
-App::$strings["__ctx:title__ Might attend"] = "Возможно посещу";
-App::$strings["Select"] = "Выбрать";
-App::$strings["Delete"] = "Удалить";
-App::$strings["Toggle Star Status"] = "Переключить статус пометки";
-App::$strings["Private Message"] = "Личное сообщение";
-App::$strings["Message signature validated"] = "Подпись сообщения проверена";
-App::$strings["Message signature incorrect"] = "Подпись сообщения неверная";
-App::$strings["Approve"] = "Утвердить";
-App::$strings["View %s's profile @ %s"] = "Просмотреть профиль %s @ %s";
-App::$strings["Categories:"] = "Категории:";
-App::$strings["Filed under:"] = "Хранить под:";
-App::$strings["from %s"] = "от %s";
-App::$strings["last edited: %s"] = "последнее редактирование: %s";
-App::$strings["Expires: %s"] = "Срок действия: %s";
-App::$strings["View in context"] = "Показать в контексте";
-App::$strings["Please wait"] = "Подождите пожалуйста";
-App::$strings["remove"] = "удалить";
-App::$strings["Loading..."] = "Загрузка...";
-App::$strings["Conversation Tools"] = "Инструменты общения";
-App::$strings["Delete Selected Items"] = "Удалить выбранные элементы";
-App::$strings["View Source"] = "Просмотреть источник";
-App::$strings["Follow Thread"] = "Следить за темой";
-App::$strings["Unfollow Thread"] = "Прекратить отслеживать тему";
-App::$strings["View Profile"] = "Просмотреть профиль";
-App::$strings["Recent Activity"] = "Последние действия";
-App::$strings["Edit Connection"] = "Редактировать контакт";
-App::$strings["Message"] = "Сообщение";
-App::$strings["Ratings"] = "Оценки";
-App::$strings["Poke"] = "Ткнуть";
-App::$strings["Unknown"] = "Неизвестный";
-App::$strings["%s likes this."] = "%s нравится это.";
-App::$strings["%s doesn't like this."] = "%s не нравится это.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d человеку</span> это нравится.",
- 1 => "<span %1\$s>%2\$d человекам</span> это нравится.",
- 2 => "<span %1\$s>%2\$d человекам</span> это нравится.",
-);
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d человеку</span> это не нравится.",
- 1 => "<span %1\$s>%2\$d человекам</span> это не нравится.",
- 2 => "<span %1\$s>%2\$d человекам</span> это не нравится.",
-);
-App::$strings["and"] = "и";
-App::$strings[", and %d other people"] = array(
- 0 => ", и ещё %d человеку",
- 1 => ", и ещё %d человекам",
- 2 => ", и ещё %d человекам",
-);
-App::$strings["%s like this."] = "%s нравится это.";
-App::$strings["%s don't like this."] = "%s не нравится это.";
-App::$strings["Set your location"] = "Задать своё местоположение";
-App::$strings["Clear browser location"] = "Очистить местоположение из браузера";
-App::$strings["Insert web link"] = "Вставить веб-ссылку";
-App::$strings["Embed (existing) photo from your photo albums"] = "Встроить (существующее) фото из вашего фотоальбома";
-App::$strings["Please enter a link URL:"] = "Пожалуйста введите URL ссылки:";
-App::$strings["Tag term:"] = "Теги:";
-App::$strings["Where are you right now?"] = "Где вы сейчас?";
-App::$strings["Choose images to embed"] = "Выбрать изображения для встраивания";
-App::$strings["Choose an album"] = "Выбрать альбом";
-App::$strings["Choose a different album..."] = "Выбрать другой альбом...";
-App::$strings["Error getting album list"] = "Ошибка получения списка альбомов";
-App::$strings["Error getting photo link"] = "Ошибка получения ссылки на фотографию";
-App::$strings["Error getting album"] = "Ошибка получения альбома";
-App::$strings["Comments enabled"] = "Комментарии включены";
-App::$strings["Comments disabled"] = "Комментарии отключены";
-App::$strings["Preview"] = "Предварительный просмотр";
+App::$strings["Block Title"] = "Заблокировать заголовок";
+App::$strings["Created"] = "Создано";
+App::$strings["Edited"] = "Отредактировано";
+App::$strings["Create"] = "Создать";
+App::$strings["Edit"] = "Изменить";
App::$strings["Share"] = "Поделиться";
-App::$strings["Page link name"] = "Название ссылки на страницу ";
-App::$strings["Post as"] = "Опубликовать как";
-App::$strings["Bold"] = "Жирный";
-App::$strings["Italic"] = "Курсив";
-App::$strings["Underline"] = "Подчеркнутый";
-App::$strings["Quote"] = "Цитата";
-App::$strings["Code"] = "Код";
-App::$strings["Attach/Upload file"] = "Прикрепить/загрузить файл";
-App::$strings["Embed an image from your albums"] = "Встроить изображение из ваших альбомов";
-App::$strings["Cancel"] = "Отменить";
-App::$strings["OK"] = "";
-App::$strings["Toggle voting"] = "Подключить голосование";
-App::$strings["Disable comments"] = "Отключить комментарии";
-App::$strings["Toggle comments"] = "Переключить комментарии";
-App::$strings["Title (optional)"] = "Заголовок (необязательно)";
-App::$strings["Categories (optional, comma-separated list)"] = "Категории (необязательно, список через запятую)";
-App::$strings["Permission settings"] = "Настройки разрешений";
-App::$strings["Other networks and post services"] = "Другие сети и службы публикаций";
-App::$strings["Set expiration date"] = "Установить срок действия";
-App::$strings["Set publish date"] = "Установить дату публикации";
-App::$strings["Encrypt text"] = "Зашифровать текст";
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Не нравится",
- 1 => "Не нравится",
- 2 => "Не нравится",
-);
-App::$strings["__ctx:noun__ Attending"] = array(
- 0 => "Посетит",
- 1 => "Посетят",
- 2 => "Посетят",
-);
-App::$strings["__ctx:noun__ Not Attending"] = array(
- 0 => "Не посетит",
- 1 => "Не посетят",
- 2 => "Не посетят",
-);
-App::$strings["__ctx:noun__ Undecided"] = "Не решил";
-App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "Согласен",
- 1 => "Согласны",
- 2 => "Согласны",
-);
-App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Не согласен",
- 1 => "Не согласны",
- 2 => "Не согласны",
-);
-App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "Воздержался",
- 1 => "Воздержались",
- 2 => "Воздержались",
-);
-App::$strings["Trending"] = "В тренде";
-App::$strings["Tags"] = "Теги";
-App::$strings["Keywords"] = "Ключевые слова";
-App::$strings["have"] = "иметь";
-App::$strings["has"] = "есть";
-App::$strings["want"] = "хотеть";
-App::$strings["wants"] = "хотеть";
-App::$strings["like"] = "нравится";
-App::$strings["likes"] = "нравится";
-App::$strings["dislike"] = "не нравится";
-App::$strings["dislikes"] = "не нравится";
-App::$strings["Select an alternate language"] = "Выбор дополнительного языка";
-App::$strings["Delete this item?"] = "Удалить этот элемент?";
-App::$strings["Comment"] = "Комментарий";
-App::$strings["%s show all"] = "%s показать всё";
-App::$strings["%s show less"] = "%s показать меньше";
-App::$strings["%s expand"] = "%s развернуть";
-App::$strings["%s collapse"] = "%s свернуть";
-App::$strings["Password too short"] = "Пароль слишком короткий";
-App::$strings["Passwords do not match"] = "Пароли не совпадают";
-App::$strings["everybody"] = "все";
-App::$strings["Secret Passphrase"] = "Тайный пароль";
-App::$strings["Passphrase hint"] = "Подсказка для пароля";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Уведомление: Права доступа изменились, но до сих пор не сохранены.";
-App::$strings["close all"] = "закрыть все";
-App::$strings["Nothing new here"] = "Здесь нет ничего нового";
-App::$strings["Rate This Channel (this is public)"] = "Оценкa этoго канала (общедоступно)";
-App::$strings["Rating"] = "Оценка";
-App::$strings["Describe (optional)"] = "Охарактеризовать (необязательно)";
-App::$strings["Please enter a link URL"] = "Пожалуйста, введите URL ссылки";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Есть несохраненные изменения. Вы уверены, что хотите покинуть эту страницу?";
-App::$strings["Location"] = "Место";
-App::$strings["lovely"] = "прекрасно";
-App::$strings["wonderful"] = "замечательно";
-App::$strings["fantastic"] = "фантастично";
-App::$strings["great"] = "отлично";
-App::$strings["Your chosen nickname was either already taken or not valid. Please use our suggestion ("] = "Выбранный вами псевдоним уже используется или недействителен. Попробуйте использовать наше предложение (";
-App::$strings[") or enter a new one."] = ") или введите новый.";
-App::$strings["Thank you, this nickname is valid."] = "Спасибо, этот псевдоним может быть использован.";
-App::$strings["A channel name is required."] = "Требуется название канала.";
-App::$strings["This is a "] = "Это ";
-App::$strings[" channel name"] = " название канала";
-App::$strings["%d minutes"] = array(
- 0 => "%d минуту",
- 1 => "%d минуты",
- 2 => "%d минут",
-);
-App::$strings["about %d hours"] = array(
- 0 => "около %d часa",
- 1 => "около %d часов",
- 2 => "около %d часов",
-);
-App::$strings["%d days"] = array(
- 0 => "%d день",
- 1 => "%d дня",
- 2 => "%d дней",
-);
-App::$strings["%d months"] = array(
- 0 => "%d месяц",
- 1 => "%d месяца",
- 2 => "%d месяцев",
-);
-App::$strings["%d years"] = array(
- 0 => "%d год",
- 1 => "%d года",
- 2 => "%d лет",
-);
-App::$strings["timeago.prefixAgo"] = "";
-App::$strings["timeago.prefixFromNow"] = "через";
-App::$strings["timeago.suffixAgo"] = "назад";
-App::$strings["timeago.suffixFromNow"] = "";
-App::$strings["less than a minute"] = "менее чем одну минуту";
-App::$strings["about a minute"] = "около минуты";
-App::$strings["about an hour"] = "около часа";
-App::$strings["a day"] = "день";
-App::$strings["about a month"] = "около месяца";
-App::$strings["about a year"] = "около года";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "";
-App::$strings["__ctx:long__ May"] = "Май";
-App::$strings["Jan"] = "Янв";
-App::$strings["Feb"] = "Фев";
-App::$strings["Mar"] = "Мар";
-App::$strings["Apr"] = "Апр";
-App::$strings["__ctx:short__ May"] = "Май";
-App::$strings["Jun"] = "Июн";
-App::$strings["Jul"] = "Июл";
-App::$strings["Aug"] = "Авг";
-App::$strings["Sep"] = "Сен";
-App::$strings["Oct"] = "Окт";
-App::$strings["Nov"] = "Ноя";
-App::$strings["Dec"] = "Дек";
-App::$strings["Sun"] = "Вск";
-App::$strings["Mon"] = "Пон";
-App::$strings["Tue"] = "Вт";
-App::$strings["Wed"] = "Ср";
-App::$strings["Thu"] = "Чет";
-App::$strings["Fri"] = "Пят";
-App::$strings["Sat"] = "Суб";
-App::$strings["__ctx:calendar__ today"] = "сегодня";
-App::$strings["__ctx:calendar__ month"] = "месяц";
-App::$strings["__ctx:calendar__ week"] = "неделя";
-App::$strings["__ctx:calendar__ day"] = "день";
-App::$strings["__ctx:calendar__ All day"] = "Весь день";
-App::$strings["Directory Options"] = "Параметры каталога";
-App::$strings["Safe Mode"] = "Безопасный режим";
-App::$strings["Public Forums Only"] = "Только публичные форумы";
-App::$strings["This Website Only"] = "Только этот веб-сайт";
-App::$strings["view full size"] = "посмотреть в полный размер";
-App::$strings["Friendica"] = "";
-App::$strings["OStatus"] = "";
-App::$strings["GNU-Social"] = "";
-App::$strings["RSS/Atom"] = "";
-App::$strings["ActivityPub"] = "";
-App::$strings["Email"] = "Электронная почта";
-App::$strings["Diaspora"] = "";
-App::$strings["Facebook"] = "";
-App::$strings["Zot"] = "";
-App::$strings["LinkedIn"] = "";
-App::$strings["XMPP/IM"] = "";
-App::$strings["MySpace"] = "";
-App::$strings["Miscellaneous"] = "Прочее";
-App::$strings["Birthday"] = "День рождения";
-App::$strings["Age: "] = "Возраст:";
-App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD или MM-DD";
-App::$strings["Required"] = "Требуется";
-App::$strings["never"] = "никогда";
-App::$strings["less than a second ago"] = "менее чем одну секунду";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s назад";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "год",
- 1 => "года",
- 2 => "лет",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "месяц",
- 1 => "месяца",
- 2 => "месяцев",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "неделю",
- 1 => "недели",
- 2 => "недель",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "день",
- 1 => "дня",
- 2 => "дней",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "час",
- 1 => "часа",
- 2 => "часов",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "минуту",
- 1 => "минуты",
- 2 => "минут",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "секунду",
- 1 => "секунды",
- 2 => "секунд",
+App::$strings["Delete"] = "Удалить";
+App::$strings["View"] = "Просмотр";
+App::$strings["Total invitation limit exceeded."] = "Превышено общее количество приглашений.";
+App::$strings["%s : Not a valid email address."] = "%s : Недействительный адрес электронной почты.";
+App::$strings["Please join us on \$Projectname"] = "Присоединятесь к \$Projectname !";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Превышен лимит приглашений. Пожалуйста, свяжитесь с администрацией сайта.";
+App::$strings["%s : Message delivery failed."] = "%s : Доставка сообщения не удалась.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d сообщение отправлено.",
+ 1 => "%d сообщения отправлено.",
+ 2 => "%d сообщений отправлено.",
);
-App::$strings["%1\$s's birthday"] = "У %1\$s День рождения";
-App::$strings["Happy Birthday %1\$s"] = "С Днем рождения %1\$s !";
-App::$strings["Visible to your default audience"] = "Видно вашей аудитории по умолчанию.";
-App::$strings["__ctx:acl__ Profile"] = "Профиль";
-App::$strings["Only me"] = "Только мне";
-App::$strings["Who can see this?"] = "Кто может это видеть?";
-App::$strings["Custom selection"] = "Настраиваемый выбор";
-App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Нажмите \"Показать\" чтобы разрешить просмотр. \"Не показывать\" позволит вам переопределить и ограничить область показа.";
-App::$strings["Show"] = "Показать";
-App::$strings["Don't show"] = "Не показывать";
-App::$strings["Permissions"] = "Разрешения";
-App::$strings["Close"] = "Закрыть";
-App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Разрешения публикации %s не могут быть изменены %s после того, как ею поделились. Эти разрешения устанавливают кому разрешено просматривать эту публикацию.";
-App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s приветствует %2\$s";
-App::$strings["New window"] = "Новое окно";
-App::$strings["Open the selected location in a different window or browser tab"] = "Открыть выбранное местоположение в другом окне или вкладке браузера";
-App::$strings["Mobile"] = "Мобильный";
-App::$strings["Home"] = "Домашний";
-App::$strings["Home, Voice"] = "Дом, голос";
-App::$strings["Home, Fax"] = "Дом, факс";
-App::$strings["Work"] = "Рабочий";
-App::$strings["Work, Voice"] = "Работа, голос";
-App::$strings["Work, Fax"] = "Работа, факс";
-App::$strings["l F d, Y \\@ g:i A"] = "";
-App::$strings["Starts:"] = "Начало:";
-App::$strings["Finishes:"] = "Окончание:";
-App::$strings["This event has been added to your calendar."] = "Это событие было добавлено в ваш календарь.";
-App::$strings["Not specified"] = "Не указано";
-App::$strings["Needs Action"] = "Требует действия";
-App::$strings["Completed"] = "Завершено";
-App::$strings["In Process"] = "В процессе";
-App::$strings["Cancelled"] = "Отменено";
-App::$strings["Delegation session ended."] = "Делегированная сессия завершена.";
-App::$strings["Logged out."] = "Вышел из системы.";
-App::$strings["Email validation is incomplete. Please check your email."] = "Проверка email не завершена. Пожалуйста, проверьте вашу почту.";
-App::$strings["Failed authentication"] = "Ошибка аутентификации";
-App::$strings["Login failed."] = "Не удалось войти.";
-App::$strings["Remote authentication"] = "Удаленная аутентификация";
-App::$strings["Click to authenticate to your home hub"] = "Нажмите, чтобы аутентифицировать себя на домашнем узле";
-App::$strings["Channel Manager"] = "Менеджер каналов";
-App::$strings["Manage your channels"] = "Управление вашими каналами";
-App::$strings["Manage your privacy groups"] = "Управление вашим группами безопасности";
-App::$strings["Settings"] = "Настройки";
-App::$strings["Account/Channel Settings"] = "Настройки аккаунта / канала";
-App::$strings["Logout"] = "Выход";
-App::$strings["End this session"] = "Закончить эту сессию";
-App::$strings["Your profile page"] = "Страницa вашего профиля";
-App::$strings["Manage/Edit profiles"] = "Управление / редактирование профилей";
-App::$strings["Edit your profile"] = "Редактировать профиль";
-App::$strings["Login"] = "Войти";
-App::$strings["Sign in"] = "Войти";
-App::$strings["Take me home"] = "Домой";
-App::$strings["Log me out of this site"] = "Выйти с этого сайта";
-App::$strings["Register"] = "Регистрация";
-App::$strings["Create an account"] = "Создать аккаунт";
-App::$strings["Help and documentation"] = "Справочная информация и документация";
-App::$strings["Search site @name, !forum, #tag, ?docs, content"] = "Искать на сайте @имя, !форум, #тег, ?документ, содержимое";
-App::$strings["Admin"] = "Администрирование";
-App::$strings["Site Setup and Configuration"] = "Установка и конфигурация сайта";
-App::$strings["Loading"] = "Загрузка";
-App::$strings["@name, !forum, #tag, ?doc, content"] = "@имя, !форум, #тег, ?документ, содержимое";
-App::$strings["Please wait..."] = "Подождите пожалуйста ...";
-App::$strings["Add Apps"] = "Добавить приложения";
-App::$strings["Arrange Apps"] = "Упорядочить приложения";
-App::$strings["Toggle System Apps"] = "Показать системные приложения";
-App::$strings["Channel"] = "Канал";
-App::$strings["Status Messages and Posts"] = "Статусы и публикации";
-App::$strings["About"] = "О себе";
-App::$strings["Profile Details"] = "Информация о профиле";
-App::$strings["Files"] = "Файлы";
-App::$strings["Files and Storage"] = "Файлы и хранилище";
-App::$strings["Calendar"] = "Календарь";
-App::$strings["Chatrooms"] = "Чаты";
-App::$strings["Bookmarks"] = "Закладки";
-App::$strings["Saved Bookmarks"] = "Сохранённые закладки";
-App::$strings["Cards"] = "Карточки";
-App::$strings["View Cards"] = "Просмотреть карточки";
-App::$strings["Articles"] = "Статьи";
-App::$strings["View Articles"] = "Просмотр статей";
-App::$strings["Webpages"] = "Веб-страницы";
-App::$strings["View Webpages"] = "Просмотр веб-страниц";
-App::$strings["Wikis"] = "";
-App::$strings["Wiki"] = "";
-App::$strings["%1\$s's bookmarks"] = "Закладки пользователя %1\$s";
-App::$strings["Item was not found."] = "Элемент не найден.";
-App::$strings["Unknown error."] = "Неизвестная ошибка.";
-App::$strings["No source file."] = "Нет исходного файла.";
-App::$strings["Cannot locate file to replace"] = "Не удается найти файл для замены";
-App::$strings["Cannot locate file to revise/update"] = "Не удается найти файл для пересмотра / обновления";
-App::$strings["File exceeds size limit of %d"] = "Файл превышает предельный размер %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Вы достигли предела %1$.0f Мбайт для хранения вложений.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Загрузка файла не удалась. Возможно система перегружена или попытка прекращена.";
-App::$strings["Stored file could not be verified. Upload failed."] = "Файл для сохранения не может быть проверен. Загрузка не удалась.";
-App::$strings["Path not available."] = "Путь недоступен.";
-App::$strings["Empty pathname"] = "Пустое имя пути";
-App::$strings["duplicate filename or path"] = "дублирующееся имя файла или пути";
-App::$strings["Path not found."] = "Путь не найден.";
-App::$strings["mkdir failed."] = "mkdir не удался";
-App::$strings["database storage failed."] = "ошибка при записи базы данных.";
-App::$strings["Empty path"] = "Пустое имя пути";
-App::$strings["Profile Photos"] = "Фотографии профиля";
-App::$strings["Create an account to access services and applications"] = "Создайте аккаунт для доступа к службам и приложениям";
-App::$strings["Login/Email"] = "Пользователь / email";
-App::$strings["Password"] = "Пароль";
-App::$strings["Remember me"] = "Запомнить меня";
-App::$strings["Forgot your password?"] = "Забыли пароль или логин?";
-App::$strings["Password Reset"] = "Сбросить пароль";
-App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Ошибка SSL/TLS веб-сайта для %s";
-App::$strings["Website SSL certificate is not valid. Please correct."] = "SSL/TLS сертификат веб-сайт недействителен. Исправьте это.";
-App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Задания Cron не запущены на %s";
-App::$strings["Cron/Scheduled tasks not running."] = "Задания Cron / планировщика не запущены.";
-App::$strings["parent"] = "источник";
-App::$strings["Principal"] = "Субъект";
-App::$strings["Addressbook"] = "Адресная книга";
-App::$strings["Schedule Inbox"] = "План занятий входящий";
-App::$strings["Schedule Outbox"] = "План занятий исходящий";
-App::$strings["Total"] = "Всего";
-App::$strings["Shared"] = "Общие";
-App::$strings["Create"] = "Создать";
-App::$strings["Add Files"] = "Добавить файлы";
-App::$strings["Admin Delete"] = "Удалено администратором";
-App::$strings["Name"] = "Имя";
-App::$strings["Type"] = "Тип";
-App::$strings["Last Modified"] = "Последнее изменение";
-App::$strings["You are using %1\$s of your available file storage."] = "Вы используете %1\$s из доступного вам хранилища файлов.";
-App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Вы используете %1\$s из %2\$s доступного хранилища файлов (%3\$s&#37;).";
-App::$strings["WARNING:"] = "Предупреждение:";
-App::$strings["Create new folder"] = "Создать новую папку";
-App::$strings["Upload file"] = "Загрузить файл";
-App::$strings["Upload"] = "Загрузка";
-App::$strings["Drop files here to immediately upload"] = "Поместите файлы сюда для немедленной загрузки";
-App::$strings["Show in your contacts shared folder"] = "Показать общий каталог в ваших контактах";
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Удалённая аутентификация заблокирована. Вы вошли на этот сайт локально. Пожалуйста, выйдите и попробуйте ещё раз.";
-App::$strings["Welcome %s. Remote authentication successful."] = "Добро пожаловать %s. Удаленная аутентификация успешно завершена.";
-App::$strings["This site is not a directory server"] = "Этот сайт не является сервером каталога";
-App::$strings["Unable to lookup recipient."] = "Не удалось найти получателя.";
-App::$strings["Unable to communicate with requested channel."] = "Не удалось установить связь с запрашиваемым каналом.";
-App::$strings["Cannot verify requested channel."] = "Не удалось установить подлинность требуемого канала.";
-App::$strings["Selected channel has private message restrictions. Send failed."] = "Выбранный канал ограничивает частные сообщения. Отправка не удалась.";
-App::$strings["Messages"] = "Сообщения";
-App::$strings["message"] = "сообщение";
-App::$strings["Message recalled."] = "Сообщение отозванно.";
-App::$strings["Conversation removed."] = "Беседа удалена.";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Истекает YYYY-MM-DD HH:MM";
-App::$strings["Requested channel is not in this network"] = "Запрашиваемый канал не доступен.";
-App::$strings["Send Private Message"] = "Отправить личное сообщение";
-App::$strings["To:"] = "Кому:";
-App::$strings["Subject:"] = "Тема:";
-App::$strings["Your message:"] = "Сообщение:";
-App::$strings["Attach file"] = "Прикрепить файл";
-App::$strings["Send"] = "Отправить";
-App::$strings["Delete message"] = "Удалить сообщение";
-App::$strings["Delivery report"] = "Отчёт о доставке";
-App::$strings["Recall message"] = "Отозвать сообщение";
-App::$strings["Message has been recalled."] = "Сообщение отозванно";
-App::$strings["Delete Conversation"] = "Удалить беседу";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Безопасная связь недоступна. Вы <strong>можете</strong> попытаться ответить со страницы профиля отправителя.";
-App::$strings["Send Reply"] = "Отправить ответ";
-App::$strings["Your message for %s (%s):"] = "Ваше сообщение для %s (%s):";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Этот параметр требует специальной обработки и редактирования и был заблокирован.";
-App::$strings["Configuration Editor"] = "Редактор конфигурации";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Предупреждение. Изменение некоторых настроек может привести к неработоспособности вашего канала. Пожалуйста, покиньте эту страницу, если вы точно не значете, как правильно использовать эту функцию.";
-App::$strings["Could not access contact record."] = "Не удалось получить доступ к записи контакта.";
-App::$strings["Settings updated."] = "Настройки обновлены.";
-App::$strings["Default Permissions App"] = "Приложение \"Разрешения по умолчанию\"";
+App::$strings["Invite App"] = "Приложение \"Пригласить\"";
App::$strings["Not Installed"] = "не установлено";
-App::$strings["Set custom default permissions for new connections"] = "Настройка пользовательских разрешений по умолчанию для новых подключений ";
-App::$strings["Connection Default Permissions"] = "Разрешения по умолчанию для контакта";
-App::$strings["Apply these permissions automatically"] = "Применить эти разрешения автоматически";
-App::$strings["If enabled, connection requests will be approved without your interaction"] = "Если включено, запросы контактов будут одобрены без вашего участия";
-App::$strings["Permission role"] = "Роль разрешения";
-App::$strings["Add permission role"] = "Добавить роль разрешения";
-App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Разрешения, указанные на этой странице, будут применяться ко всем новым соединениям.";
-App::$strings["Automatic approval settings"] = "Настройки автоматического одобрения";
-App::$strings["inherited"] = "наследуется";
-App::$strings["My Settings"] = "Мои настройки";
-App::$strings["Individual Permissions"] = "Индивидуальные разрешения";
-App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Некоторые индивидуальные разрешения могут быть предустановлены или заблокированы на основании типа вашего канала и настроек приватности.";
-App::$strings["Permission category name is required."] = "Требуется категория разрешений.";
-App::$strings["Permission category saved."] = "Категория разрешения сохранена.";
-App::$strings["Permission Categories App"] = "Приложение \"Категории разрешений\"";
-App::$strings["Create custom connection permission limits"] = "Создать пользовательские ограничения на доступ к подключению";
-App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Используйте эту форму для создания правил разрешений для различных групп людей и контактов.";
-App::$strings["Permission Categories"] = "Категории разрешений";
-App::$strings["Permission category name"] = "Наименование категории разрешений";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Некоторые разрешения могут наследовать из <a href=\"settings\"><strong>настроек приватности</strong></a> ваших каналов которые могут иметь более высокий приоритет чем индивидуальные. Вы <strong>не можете</strong> менять эти настройки здесь.";
-App::$strings["Xchan Lookup"] = "Поиск Xchan";
-App::$strings["Lookup xchan beginning with (or webbie): "] = "Запрос Xchan начинается с (или webbie):";
-App::$strings["Not found."] = "Не найдено.";
-App::$strings["Invalid message"] = "Неверное сообщение";
-App::$strings["no results"] = "Ничего не найдено.";
-App::$strings["channel sync processed"] = "синхронизация канала завершена";
-App::$strings["queued"] = "в очереди";
-App::$strings["posted"] = "опубликовано";
-App::$strings["accepted for delivery"] = "принято к доставке";
-App::$strings["updated"] = "обновлено";
-App::$strings["update ignored"] = "обновление игнорируется";
-App::$strings["permission denied"] = "доступ запрещен";
-App::$strings["recipient not found"] = "получатель не найден";
-App::$strings["mail recalled"] = "почта отозвана";
-App::$strings["duplicate mail received"] = "получено дублирующее сообщение";
-App::$strings["mail delivered"] = "почта доставлен";
-App::$strings["Delivery report for %1\$s"] = "Отчёт о доставке для %1\$s";
-App::$strings["Options"] = "Параметры";
-App::$strings["Redeliver"] = "Доставить повторно";
-App::$strings["No such group"] = "Нет такой группы";
-App::$strings["No such channel"] = "Нет такого канала";
-App::$strings["Search Results For:"] = "Результаты поиска для:";
-App::$strings["Reset form"] = "Очистить форму";
-App::$strings["Privacy group is empty"] = "Группа безопасности пуста";
-App::$strings["Privacy group: "] = "Группа безопасности: ";
-App::$strings["Invalid channel."] = "Недействительный канал.";
-App::$strings["Token verification failed."] = "Не удалось выполнить проверку токена.";
-App::$strings["Email Verification Required"] = "Требуется проверка адреса email";
-App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "Проверочный токен был выслн на ваш адрес электронной почты [%s]. Введите этот токен здесь для завершения этапа проверки учётной записи. Пожалуйста, подождите несколько минут для завершения доставки и проверьте вашу папку \"Спам\" если вы не видите письма.";
-App::$strings["Resend Email"] = "Выслать повторно";
-App::$strings["Validation token"] = "Проверочный токен";
-App::$strings["No channel."] = "Канала нет.";
-App::$strings["No connections in common."] = "Общих контактов нет.";
-App::$strings["View Common Connections"] = "Просмотр общий контактов";
-App::$strings["network"] = "сеть";
-App::$strings["Unable to locate original post."] = "Не удалось найти оригинальную публикацию.";
-App::$strings["Empty post discarded."] = "Пустая публикация отклонена.";
-App::$strings["Duplicate post suppressed."] = "Подавлена дублирующаяся публикация.";
-App::$strings["System error. Post not saved."] = "Системная ошибка. Публикация не сохранена.";
-App::$strings["Your comment is awaiting approval."] = "Ваш комментарий ожидает одобрения.";
-App::$strings["Unable to obtain post information from database."] = "Невозможно получить информацию о публикации из базы данных";
-App::$strings["You have reached your limit of %1$.0f top level posts."] = "Вы достигли вашего ограничения в %1$.0f публикаций высокого уровня.";
-App::$strings["You have reached your limit of %1$.0f webpages."] = "Вы достигли вашего ограничения в %1$.0f страниц.";
-App::$strings["Some blurb about what to do when you're new here"] = "Некоторые предложения о том, что делать, если вы здесь новичок ";
-App::$strings["Public access denied."] = "Публичный доступ запрещен.";
-App::$strings["You must enable javascript for your browser to be able to view this content."] = "Для просмотра этого содержимого в вашем браузере должен быть включён JavaScript";
-App::$strings["Article"] = "Статья";
-App::$strings["Item has been removed."] = "Элемент был удалён.";
-App::$strings["sent you a private message"] = "отправил вам личное сообщение";
-App::$strings["added your channel"] = "добавил ваш канал";
-App::$strings["requires approval"] = "Требуется подтверждение";
-App::$strings["g A l F d"] = "g A l F d";
-App::$strings["[today]"] = "[сегодня]";
-App::$strings["posted an event"] = "событие опубликовано";
-App::$strings["shared a file with you"] = "с вами поделились файлом";
-App::$strings["Private forum"] = "Частный форум";
-App::$strings["Public forum"] = "Публичный форум";
-App::$strings["Poke App"] = "Приложение \"Ткнуть\"";
-App::$strings["Poke somebody in your addressbook"] = "Ткнуть кого-нибудь в вашей адресной книге";
-App::$strings["Poke somebody"] = "Ткнуть кого-нибудь";
-App::$strings["Poke/Prod"] = "Толкнуть / подтолкнуть";
-App::$strings["Poke, prod or do other things to somebody"] = "Толкнуть, подтолкнуть или сделать что-то ещё с кем-то";
-App::$strings["Recipient"] = "Получатель";
-App::$strings["Choose what you wish to do to recipient"] = "Выбрать что вы хотите сделать с получателем";
-App::$strings["Make this post private"] = "Сделать эту публикацию приватной";
-App::$strings["Remote privacy information not available."] = "Удаленная информация о конфиденциальности недоступна.";
-App::$strings["Visible to:"] = "Видимо для:";
-App::$strings["Post not found."] = "Публикация не найдена";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s отметил тегом %2\$s %3\$s с %4\$s";
-App::$strings["No default suggestions were found."] = "Предложений по умолчанию не найдено.";
-App::$strings["%d rating"] = array(
- 0 => "%d оценка",
- 1 => "%d оценки",
- 2 => "%d оценок",
-);
-App::$strings["Gender: "] = "Пол:";
-App::$strings["Status: "] = "Статус:";
-App::$strings["Homepage: "] = "Домашняя страница:";
-App::$strings["Description:"] = "Описание:";
-App::$strings["Public Forum:"] = "Публичный форум:";
-App::$strings["Keywords: "] = "Ключевые слова:";
-App::$strings["Don't suggest"] = "Не предлагать";
-App::$strings["Common connections (estimated):"] = "Общие контакты (оценочно):";
-App::$strings["Global Directory"] = "Глобальный каталог";
-App::$strings["Local Directory"] = "Локальный каталог";
-App::$strings["Finding:"] = "Поиск:";
-App::$strings["next page"] = "следующая страница";
-App::$strings["previous page"] = "предыдущая страница";
-App::$strings["Sort options"] = "Параметры сортировки";
-App::$strings["Alphabetic"] = "По алфавиту";
-App::$strings["Reverse Alphabetic"] = "Против алфавита";
-App::$strings["Newest to Oldest"] = "От новых к старым";
-App::$strings["Oldest to Newest"] = "От старых к новым";
-App::$strings["No entries (some entries may be hidden)."] = "Нет записей (некоторые записи могут быть скрыты).";
+App::$strings["Send email invitations to join this network"] = "Отправить приглашение присоединиться к этой сети по электронной почте";
+App::$strings["You have no more invitations available"] = "У вас больше нет приглашений";
+App::$strings["Send invitations"] = "Отправить приглашение";
+App::$strings["Enter email addresses, one per line:"] = "Введите адреса электронной почты, по одному в строке:";
+App::$strings["Your message:"] = "Сообщение:";
+App::$strings["Please join my community on \$Projectname."] = "Присоединятесь к нашему сообществу \$Projectname !";
+App::$strings["You will need to supply this invitation code:"] = "Вам нужно предоставит этот код приглашения:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Зарегистрируйтесь на любом из серверов \$Projectname";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Введите сетевой адрес \$Projectname в поисковой строке сайта";
+App::$strings["or visit"] = "или посетите";
+App::$strings["3. Click [Connect]"] = "Нажать [Подключиться]";
+App::$strings["Submit"] = "Отправить";
+App::$strings["Articles App"] = "Приложение \"Статьи\"";
+App::$strings["Create interactive articles"] = "Создать интерактивные статьи";
+App::$strings["Add Article"] = "Добавить статью";
+App::$strings["Articles"] = "Статьи";
+App::$strings["Item not found"] = "Элемент не найден";
+App::$strings["Layout Name"] = "Название шаблона";
+App::$strings["Layout Description (Optional)"] = "Описание шаблона (необязательно)";
+App::$strings["Edit Layout"] = "Редактировать шаблон";
+App::$strings["Cancel"] = "Отменить";
+App::$strings["Permission denied"] = "Доступ запрещен";
+App::$strings["Invalid profile identifier."] = "Неверный идентификатор профиля";
+App::$strings["Profile Visibility Editor"] = "Редактор видимости профиля";
+App::$strings["Profile"] = "Профиль";
+App::$strings["Click on a contact to add or remove."] = "Нажмите на контакт, чтобы добавить или удалить.";
+App::$strings["Visible To"] = "Видно";
+App::$strings["All Connections"] = "Все контакты";
App::$strings["INVALID EVENT DISMISSED!"] = "НЕДЕЙСТВИТЕЛЬНОЕ СОБЫТИЕ ОТКЛОНЕНО!";
App::$strings["Summary: "] = "Резюме: ";
+App::$strings["Unknown"] = "Неизвестный";
App::$strings["Date: "] = "Дата: ";
App::$strings["Reason: "] = "Причина: ";
App::$strings["INVALID CARD DISMISSED!"] = "НЕДЕЙСТВИТЕЛЬНАЯ КАРТОЧКА ОТКЛОНЕНА!";
@@ -1080,6 +109,7 @@ App::$strings["Start date and time"] = "Дата и время начала";
App::$strings["Example: YYYY-MM-DD HH:mm"] = "Пример: YYYY-MM-DD HH:mm";
App::$strings["End date and time"] = "Дата и время окончания";
App::$strings["Description"] = "Описание";
+App::$strings["Location"] = "Место";
App::$strings["Previous"] = "Предыдущая";
App::$strings["Next"] = "Следующая";
App::$strings["Today"] = "Сегодня";
@@ -1094,13 +124,18 @@ App::$strings["Less"] = "Меньше";
App::$strings["Select calendar"] = "Выбрать календарь";
App::$strings["Delete all"] = "Удалить всё";
App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "Простите, но редактирование повторяющихся событий пока не реализовано.";
+App::$strings["Name"] = "Имя";
App::$strings["Organisation"] = "Организация";
App::$strings["Title"] = "Наименование";
App::$strings["Phone"] = "Телефон";
+App::$strings["Email"] = "Электронная почта";
App::$strings["Instant messenger"] = "Мессенджер";
App::$strings["Website"] = "Веб-сайт";
App::$strings["Address"] = "Адрес";
App::$strings["Note"] = "Заметка";
+App::$strings["Mobile"] = "Мобильный";
+App::$strings["Home"] = "Домашний";
+App::$strings["Work"] = "Рабочий";
App::$strings["Add Contact"] = "Добавить контакт";
App::$strings["Add Field"] = "Добавить поле";
App::$strings["Update"] = "Обновить";
@@ -1113,213 +148,105 @@ App::$strings["ZIP Code"] = "Индекс";
App::$strings["Country"] = "Страна";
App::$strings["Default Calendar"] = "Календарь по умолчанию";
App::$strings["Default Addressbook"] = "Адресная книга по умолчанию";
+App::$strings["This site is not a directory server"] = "Этот сайт не является сервером каталога";
+App::$strings["Permission category name is required."] = "Требуется категория разрешений.";
+App::$strings["Permission category saved."] = "Категория разрешения сохранена.";
+App::$strings["Permission Categories App"] = "Приложение \"Категории разрешений\"";
+App::$strings["Create custom connection permission limits"] = "Создать пользовательские ограничения на доступ к подключению";
+App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Используйте эту форму для создания правил разрешений для различных групп людей и контактов.";
+App::$strings["Permission Categories"] = "Категории разрешений";
+App::$strings["Permission category name"] = "Наименование категории разрешений";
+App::$strings["My Settings"] = "Мои настройки";
+App::$strings["inherited"] = "наследуется";
+App::$strings["Individual Permissions"] = "Индивидуальные разрешения";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Некоторые разрешения могут наследовать из <a href=\"settings\"><strong>настроек приватности</strong></a> ваших каналов которые могут иметь более высокий приоритет чем индивидуальные. Вы <strong>не можете</strong> менять эти настройки здесь.";
+App::$strings["You must be logged in to see this page."] = "Вы должны авторизоваться, чтобы увидеть эту страницу.";
App::$strings["Posts and comments"] = "Публикации и комментарии";
App::$strings["Only posts"] = "Только публикации";
-App::$strings["vcard"] = "vCard";
-App::$strings["You must be logged in to see this page."] = "Вы должны авторизоваться, чтобы увидеть эту страницу.";
-App::$strings["No more system notifications."] = "Нет новых оповещений системы.";
-App::$strings["System Notifications"] = "Системные оповещения ";
-App::$strings["%s element installed"] = "%s элемент установлен";
-App::$strings["%s element installation failed"] = "%sустановка элемента неудачна.";
-App::$strings["App installed."] = "Приложение установлено.";
-App::$strings["Malformed app."] = "Неработающее приложение.";
-App::$strings["Embed code"] = "Встроить код";
-App::$strings["Edit App"] = "Редактировать приложение";
-App::$strings["Create App"] = "Создать приложение";
-App::$strings["Name of app"] = "Наименование приложения";
-App::$strings["Location (URL) of app"] = "Местоположение (URL) приложения";
-App::$strings["Photo icon URL"] = "URL пиктограммы";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 пикселей - необязательно";
-App::$strings["Categories (optional, comma separated list)"] = "Категории (необязательно, список через запятую)";
-App::$strings["Version ID"] = "ID версии";
-App::$strings["Price of app"] = "Цена приложения";
-App::$strings["Location (URL) to purchase app"] = "Ссылка (URL) для покупки приложения";
-App::$strings["Invalid profile identifier."] = "Неверный идентификатор профиля";
-App::$strings["Profile Visibility Editor"] = "Редактор видимости профиля";
-App::$strings["Click on a contact to add or remove."] = "Нажмите на контакт, чтобы добавить или удалить.";
-App::$strings["Visible To"] = "Видно";
-App::$strings["All Connections"] = "Все контакты";
-App::$strings["Channel name changes are not allowed within 48 hours of changing the account password."] = "Изменение названия канала не разрешается в течении 48 часов после смены пароля у аккаунта.";
-App::$strings["Change channel nickname/address"] = "Изменить псевдоним / адрес канала";
-App::$strings["WARNING: "] = "ПРЕДУПРЕЖДЕНИЕ: ";
-App::$strings["Any/all connections on other networks will be lost!"] = "Любые / все контакты в других сетях будут утеряны!";
-App::$strings["Please enter your password for verification:"] = "Пожалуйста, введите ваш пароль для проверки:";
-App::$strings["New channel address"] = "Новый адрес канала";
-App::$strings["Rename Channel"] = "Переименовать канал";
-App::$strings["Accounts"] = "Учётные записи";
-App::$strings["Blocked accounts"] = "Заблокированные аккаунты";
-App::$strings["Expired accounts"] = "Просроченные аккаунты";
-App::$strings["Expiring accounts"] = "Близкие к просрочке аккаунты";
-App::$strings["Channels"] = "Каналы";
-App::$strings["Message queues"] = "Очередь сообщений";
-App::$strings["Your software should be updated"] = "Ваше программное обеспечение должно быть обновлено";
-App::$strings["Administration"] = "Администрирование";
-App::$strings["Summary"] = "Резюме";
-App::$strings["Registered accounts"] = "Зарегистрированные аккаунты";
-App::$strings["Pending registrations"] = "Ждут утверждения";
-App::$strings["Registered channels"] = "Зарегистрированные каналы";
-App::$strings["Active addons"] = "Активные расширения";
-App::$strings["Version"] = "Версия системы";
-App::$strings["Repository version (master)"] = "Версия репозитория (master)";
-App::$strings["Repository version (dev)"] = "Версия репозитория (dev)";
-App::$strings["Profile not found."] = "Профиль не найден.";
-App::$strings["Profile deleted."] = "Профиль удален.";
-App::$strings["Profile-"] = "Профиль -";
-App::$strings["New profile created."] = "Новый профиль создан.";
-App::$strings["Profile unavailable to clone."] = "Профиль недоступен для клонирования.";
-App::$strings["Profile unavailable to export."] = "Профиль недоступен для экспорта.";
-App::$strings["Profile Name is required."] = "Требуется имя профиля.";
-App::$strings["Marital Status"] = "Семейное положение";
-App::$strings["Romantic Partner"] = "Романтический партнер";
-App::$strings["Likes"] = "Нравится";
-App::$strings["Dislikes"] = "Не нравится";
-App::$strings["Work/Employment"] = "Работа / Занятость";
-App::$strings["Religion"] = "Религия";
-App::$strings["Political Views"] = "Политические взгляды";
-App::$strings["Gender"] = "Гендер";
-App::$strings["Sexual Preference"] = "Сексуальная ориентация";
-App::$strings["Homepage"] = "Домашняя страница";
-App::$strings["Interests"] = "Интересы";
-App::$strings["Profile updated."] = "Профиль обновлен.";
-App::$strings["Hide your connections list from viewers of this profile"] = "Скрывать от просмотра ваш список контактов в этом профиле";
-App::$strings["Edit Profile Details"] = "Редактирование профиля";
-App::$strings["View this profile"] = "Посмотреть этот профиль";
-App::$strings["Profile Tools"] = "Инструменты профиля";
-App::$strings["Change cover photo"] = "Изменить фотографию обложки";
-App::$strings["Create a new profile using these settings"] = "Создать новый профиль с теми же настройками";
-App::$strings["Clone this profile"] = "Клонировать этот профиль";
-App::$strings["Delete this profile"] = "Удалить этот профиль";
-App::$strings["Add profile things"] = "Добавить в профиль";
-App::$strings["Personal"] = "Личное";
-App::$strings["Relationship"] = "Отношения";
-App::$strings["Import profile from file"] = "Импортировать профиль из файла";
-App::$strings["Export profile to file"] = "Экспортировать профиль в файл";
-App::$strings["Your gender"] = "Ваш пол";
-App::$strings["Marital status"] = "Семейное положение";
-App::$strings["Sexual preference"] = "Сексуальная ориентация";
-App::$strings["Profile name"] = "Имя профиля";
-App::$strings["This is your default profile."] = "Это ваш профиль по умолчанию.";
-App::$strings["Your full name"] = "Ваше полное имя";
-App::$strings["Title/Description"] = "Заголовок / описание";
-App::$strings["Street address"] = "Улица, дом, квартира";
-App::$strings["Locality/City"] = "Населенный пункт / город";
-App::$strings["Region/State"] = "Регион / Область";
-App::$strings["Postal/Zip code"] = "Почтовый индекс";
-App::$strings["Who (if applicable)"] = "Кто (если применимо)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Примеры: ivan1990, Ivan Petrov, ivan@example.com";
-App::$strings["Since (date)"] = "С (дата)";
-App::$strings["Tell us about yourself"] = "Расскажите нам о себе";
-App::$strings["Homepage URL"] = "URL домашней страницы";
-App::$strings["Hometown"] = "Родной город";
-App::$strings["Political views"] = "Политические взгляды";
-App::$strings["Religious views"] = "Религиозные взгляды";
-App::$strings["Keywords used in directory listings"] = "Ключевые слова для участия в каталоге";
-App::$strings["Example: fishing photography software"] = "Например: fishing photography software";
-App::$strings["Musical interests"] = "Музыкальные интересы";
-App::$strings["Books, literature"] = "Книги, литература";
-App::$strings["Television"] = "Телевидение";
-App::$strings["Film/Dance/Culture/Entertainment"] = "Кино / танцы / культура / развлечения";
-App::$strings["Hobbies/Interests"] = "Хобби / интересы";
-App::$strings["Love/Romance"] = "Любовь / романтические отношения";
-App::$strings["School/Education"] = "Школа / образование";
-App::$strings["Contact information and social networks"] = "Информация и социальные сети для связи";
-App::$strings["My other channels"] = "Мои другие контакты";
-App::$strings["Communications"] = "Связи";
-App::$strings["Create New"] = "Создать новый";
-App::$strings["Page owner information could not be retrieved."] = "Информация о владельце страницы не может быть получена.";
-App::$strings["Album not found."] = "Альбом не найден.";
-App::$strings["Delete Album"] = "Удалить альбом";
-App::$strings["Delete Photo"] = "Удалить фотографию";
-App::$strings["No photos selected"] = "Никакие фотографии не выбраны";
-App::$strings["Access to this item is restricted."] = "Доступ к этому элементу ограничен.";
-App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Вы использовали %1$.2f мегабайт из %2$.2f для хранения фото.";
-App::$strings["%1$.2f MB photo storage used."] = "Вы использовали %1$.2f мегабайт для хранения фото.";
-App::$strings["Upload Photos"] = "Загрузить фотографии";
-App::$strings["Enter an album name"] = "Введите название альбома";
-App::$strings["or select an existing album (doubleclick)"] = "или выберите существующий альбом (двойной щелчок)";
-App::$strings["Create a status post for this upload"] = "Сделать публикацию о статусе для этой загрузки";
-App::$strings["Description (optional)"] = "Описание (необязательно)";
-App::$strings["Show Newest First"] = "Показать новые первыми";
-App::$strings["Show Oldest First"] = "Показать старые первыми";
-App::$strings["View Photo"] = "Посмотреть фотографию";
-App::$strings["Edit Album"] = "Редактировать Фотоальбом";
-App::$strings["Add Photos"] = "Добавить фотографии";
-App::$strings["Permission denied. Access to this item may be restricted."] = "Доступ запрещен. Доступ к этому элементу может быть ограничен.";
-App::$strings["Photo not available"] = "Фотография не доступна";
-App::$strings["Use as profile photo"] = "Использовать в качестве фотографии профиля";
-App::$strings["Use as cover photo"] = "Использовать в качестве фотографии обложки";
-App::$strings["Private Photo"] = "Личная фотография";
-App::$strings["View Full Size"] = "Посмотреть в полный размер";
-App::$strings["Remove"] = "Удалить";
-App::$strings["Edit photo"] = "Редактировать фотографию";
-App::$strings["Rotate CW (right)"] = "Повернуть CW (направо)";
-App::$strings["Rotate CCW (left)"] = "Повернуть CCW (налево)";
-App::$strings["Move photo to album"] = "Переместить фотографию в альбом";
-App::$strings["Enter a new album name"] = "Введите новое название альбома";
-App::$strings["or select an existing one (doubleclick)"] = "или выбрать существующую (двойной щелчок)";
-App::$strings["Add a Tag"] = "Добавить тег";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Пример: @bob, @Barbara_Jensen, @jim@example.com";
-App::$strings["Flag as adult in album view"] = "Пометить как альбом \"для взрослых\"";
-App::$strings["I like this (toggle)"] = "мне это нравится (переключение)";
-App::$strings["I don't like this (toggle)"] = "мне это не нравится (переключение)";
-App::$strings["This is you"] = "Это вы";
-App::$strings["View all"] = "Просмотреть все";
-App::$strings["Photo Tools"] = "Фото-Инструменты";
-App::$strings["In This Photo:"] = "На этой фотографии:";
-App::$strings["Map"] = "Карта";
-App::$strings["__ctx:noun__ Likes"] = "Нравится";
-App::$strings["__ctx:noun__ Dislikes"] = "Не нравится";
-App::$strings["Tag removed"] = "Тег удалён";
-App::$strings["Remove Item Tag"] = "Удалить тег элемента";
-App::$strings["Select a tag to remove: "] = "Выбрать тег для удаления:";
-App::$strings["Channel not found."] = "Канал не найден.";
-App::$strings["toggle full screen mode"] = "переключение полноэкранного режима";
-App::$strings["Invalid item."] = "Недействительный элемент.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "";
-App::$strings["Authorize application connection"] = "Авторизовать подключение приложения";
-App::$strings["Return to your app and insert this Security Code:"] = "Вернитесь к своему приложению и вставьте этот код безопасности:";
-App::$strings["Please login to continue."] = "Пожалуйста, войдите, чтобы продолжить.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Вы хотите авторизовать это приложение для доступа к вашим публикациям и контактам и / или созданию новых публикаций?";
-App::$strings["No valid account found."] = "Действительный аккаунт не найден.";
-App::$strings["Password reset request issued. Check your email."] = "Запрос на сброс пароля отправлен. Проверьте вашу электронную почту.";
-App::$strings["Site Member (%s)"] = "Участник сайта (%s)";
-App::$strings["Password reset requested at %s"] = "Запрошен сброс пароля на %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Запрос не может быть проверен. (Вы могли отправить его раньше). Сброс пароля не возможен.";
-App::$strings["Your password has been reset as requested."] = "Ваш пароль в соответствии с просьбой сброшен.";
-App::$strings["Your new password is"] = "Ваш новый пароль";
-App::$strings["Save or copy your new password - and then"] = "Сохраните ваш новый пароль и затем";
-App::$strings["click here to login"] = "нажмите здесь чтобы войти";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ваш пароль может быть изменён на странице <em>Настройки</em> после успешного входа.";
-App::$strings["Your password has changed at %s"] = "Пароль был изменен на %s";
-App::$strings["Forgot your Password?"] = "Забыли ваш пароль?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Введите ваш адрес электронной почты и нажмите отправить чтобы сбросить пароль. Затем проверьте ваш почтовый ящик для дальнейших инструкций. ";
-App::$strings["Email Address"] = "Адрес электронной почты";
-App::$strings["Reset"] = "Сбросить";
-App::$strings["Name is required"] = "Необходимо имя";
-App::$strings["Key and Secret are required"] = "Требуются ключ и код";
-App::$strings["OAuth Apps Manager App"] = "Приложение \"Менеджер Oauth\"";
-App::$strings["OAuth authentication tokens for mobile and remote apps"] = "Токены аутентификации OAuth для мобильный и удалённых приложений";
-App::$strings["Add application"] = "Добавить приложение";
-App::$strings["Name of application"] = "Название приложения";
-App::$strings["Consumer Key"] = "Ключ клиента";
-App::$strings["Automatically generated - change if desired. Max length 20"] = "Сгенерирован автоматические - измените если требуется. Макс. длина 20";
-App::$strings["Consumer Secret"] = "Код клиента";
-App::$strings["Redirect"] = "Перенаправление";
-App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI перенаправления - оставьте пустыми до тех пока ваше приложение не требует этого";
-App::$strings["Icon url"] = "URL значка";
-App::$strings["Optional"] = "Необязательно";
-App::$strings["Application not found."] = "Приложение не найдено.";
-App::$strings["Connected OAuth Apps"] = "Подключенные приложения OAuth";
-App::$strings["Client key starts with"] = "Ключ клиента начинается с";
-App::$strings["No name"] = "Без названия";
-App::$strings["Remove authorization"] = "Удалить разрешение";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "Недостаточно прав. Запрос перенаправлен на страницу профиля.";
+App::$strings["Search Results For:"] = "Результаты поиска для:";
+App::$strings["Reset form"] = "Очистить форму";
+App::$strings["You must enable javascript for your browser to be able to view this content."] = "Для просмотра этого содержимого в вашем браузере должен быть включён JavaScript";
+App::$strings["Language App"] = "Приложение \"Язык\"";
+App::$strings["Change UI language"] = "Изменить язык интерфейса";
+App::$strings["Channel Export App"] = "Приложение \"Экспорт канала\"";
+App::$strings["Export your channel"] = "Экспортировать ваш канал";
+App::$strings["Export Channel"] = "Экспорт канала";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Экспортировать основную информацию из канала в файл. Служит в качестве резервной копии ваших контактов, основных данных и профиля, однако не включает содержимое. Может быть использовано для импорта ваши данных на новый сервер.";
+App::$strings["Export Content"] = "Экспортировать содержимое";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Экспортировать информацию из вашего канала и его содержимое в резервную копию в формате JSON которая может быть использована для восстановления или импорта на другом сервере. Сохраняет все ваши контакты, разрешения, данные профиля и публикации за несколько месяцев. Файл может иметь очень большой размер. Пожалуйста, будьте терпеливы и подождите несколько минут пока не начнётся загрузка.";
+App::$strings["Export your posts from a given year."] = "Экспортировать ваши публикации за данный год.";
+App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "Вы также можете экспортировать ваши публикации и беседы за определённый месяц или год. Выберите дату в панели местоположения в браузере. Если экспорт будет неудачным (это возможно, например, из-за исчерпания памяти на сервере), повторите попытку, выбрав меньший диапазон дат.";
+App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Для выбора всех публикаций заданного года, например текущего, посетите <a href=\"%1\$s\">%2\$s</a>";
+App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Для выбора всех публикаций заданного месяца, например за январь сего года, посетите <a href=\"%1\$s\">%2\$s</a>";
+App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Данные файлы с содержимым могут быть импортированы и восстановлены на любом содержащем ваш канал сайте. Посетите <a href=\"%1\$s\">%2\$s</a>. Для лучших результатов пожалуйста производите импорт и восстановление в порядке датировки (старые сначала).";
+App::$strings["Welcome to Hubzilla!"] = "Добро пожаловать в Hubzilla!";
+App::$strings["You have got no unseen posts..."] = "У вас нет видимых публикаций...";
+App::$strings["Public access denied."] = "Публичный доступ запрещен.";
+App::$strings["Search"] = "Поиск";
+App::$strings["Items tagged with: %s"] = "Объекты помечены как: %s";
+App::$strings["Search results for: %s"] = "Результаты поиска для: %s";
+App::$strings["Public Stream App"] = "Приложение \"Публичный поток\"";
+App::$strings["The unmoderated public stream of this hub"] = "Немодерируемый публичный поток с этого хаба";
+App::$strings["Public Stream"] = "Публичный поток";
+App::$strings["Location not found."] = "Местоположение не найдено";
+App::$strings["Location lookup failed."] = "Поиск местоположения не удался";
+App::$strings["Please select another location to become primary before removing the primary location."] = "Пожалуйста, выберите другое местоположение в качестве основного прежде чем удалить предыдущее";
+App::$strings["Syncing locations"] = "Синхронизировать местоположение";
+App::$strings["No locations found."] = "Местоположений не найдено";
+App::$strings["Manage Channel Locations"] = "Управление местоположением канала";
+App::$strings["Primary"] = "Основной";
+App::$strings["Drop"] = "Удалить";
+App::$strings["Sync Now"] = "Синхронизировать";
+App::$strings["Please wait several minutes between consecutive operations."] = "Пожалуйста, подождите несколько минут между последовательными операциями.";
+App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "По возможности, очистите местоположение, войдя на этот веб-сайт / хаб и удалив свой канал.";
+App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Используйте эту форму, чтобы удалить местоположение, если хаб больше не функционирует.";
+App::$strings["Change Order of Pinned Navbar Apps"] = "Изменить порядок приложений на панели навигации";
+App::$strings["Change Order of App Tray Apps"] = "Изменить порядок приложений в лотке";
+App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Используйте стрелки для перемещения приложения влево (вверх) или вправо (вниз) в панели навигации";
+App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Используйте стрелки для перемещения приложения вверх или вниз в лотке";
+App::$strings["Menu not found."] = "Меню не найдено";
+App::$strings["Unable to create element."] = "Невозможно создать элемент.";
+App::$strings["Unable to update menu element."] = "Невозможно обновить элемент меню.";
+App::$strings["Unable to add menu element."] = "Невозможно добавить элемент меню.";
+App::$strings["Not found."] = "Не найдено.";
+App::$strings["Menu Item Permissions"] = "Разрешения на пункт меню";
+App::$strings["(click to open/close)"] = "(нажмите чтобы открыть/закрыть)";
+App::$strings["Link Name"] = "Имя ссылки";
+App::$strings["Link or Submenu Target"] = "Ссылка или цель подменю";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Введите URL ссылки или выберите имя меню для создания подменю";
+App::$strings["Use magic-auth if available"] = "Использовать magic-auth если возможно";
+App::$strings["No"] = "Нет";
+App::$strings["Yes"] = "Да";
+App::$strings["Open link in new window"] = "Открыть ссылку в новом окне";
+App::$strings["Order in list"] = "Порядок в списке";
+App::$strings["Higher numbers will sink to bottom of listing"] = "Большие значения в конце списка";
+App::$strings["Submit and finish"] = "Отправить и завершить";
+App::$strings["Submit and continue"] = "Отправить и продолжить";
+App::$strings["Menu:"] = "Меню:";
+App::$strings["Link Target"] = "Цель ссылки";
+App::$strings["Edit menu"] = "Редактировать меню";
+App::$strings["Edit element"] = "Редактировать элемент";
+App::$strings["Drop element"] = "Удалить элемент";
+App::$strings["New element"] = "Новый элемент";
+App::$strings["Edit this menu container"] = "Редактировать контейнер меню";
+App::$strings["Add menu element"] = "Добавить элемент меню";
+App::$strings["Delete this menu item"] = "Удалить этот элемент меню";
+App::$strings["Edit this menu item"] = "Редактировать этот элемент меню";
+App::$strings["Menu item not found."] = "Элемент меню не найден.";
+App::$strings["Menu item deleted."] = "Элемент меню удалён.";
+App::$strings["Menu item could not be deleted."] = "Невозможно удалить элемент меню.";
+App::$strings["Edit Menu Element"] = "Редактировать элемент меню";
+App::$strings["Link text"] = "Текст ссылки";
App::$strings["Calendar entries imported."] = "События календаря импортированы.";
App::$strings["No calendar entries found."] = "Не найдено событий в календаре.";
App::$strings["Event can not end before it has started."] = "Событие не может завершиться до его начала.";
App::$strings["Unable to generate preview."] = "Невозможно создать предварительный просмотр.";
App::$strings["Event title and start time are required."] = "Требуются наименование события и время начала.";
App::$strings["Event not found."] = "Событие не найдено.";
+App::$strings["event"] = "событие";
App::$strings["Edit event title"] = "Редактировать наименование события";
+App::$strings["Required"] = "Требуется";
App::$strings["Categories (comma-separated list)"] = "Категории (список через запятую)";
App::$strings["Edit Category"] = "Редактировать категорию";
App::$strings["Category"] = "Категория";
@@ -1331,26 +258,53 @@ App::$strings["Adjust for viewer timezone"] = "Настройте просмот
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Важно для событий, которые происходят в определённом месте. Не подходит для всеобщих праздников.";
App::$strings["Edit Description"] = "Редактировать описание";
App::$strings["Edit Location"] = "Редактировать местоположение";
+App::$strings["Preview"] = "Предварительный просмотр";
+App::$strings["Permission settings"] = "Настройки разрешений";
App::$strings["Timezone:"] = "Часовой пояс:";
App::$strings["Advanced Options"] = "Дополнительные настройки";
App::$strings["l, F j"] = "";
App::$strings["Edit event"] = "Редактировать событие";
App::$strings["Delete event"] = "Удалить событие";
+App::$strings["Link to Source"] = "Ссылка на источник";
App::$strings["calendar"] = "календарь";
App::$strings["Edit Event"] = "Редактировать событие";
App::$strings["Create Event"] = "Создать событие";
-App::$strings["View"] = "Просмотр";
+App::$strings["Export"] = "Экспорт";
App::$strings["Event removed"] = "Событие удалено";
App::$strings["Failed to remove event"] = "Не удалось удалить событие";
-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["Deny"] = "Запретить";
-App::$strings["Public Stream App"] = "Приложение \"Публичный поток\"";
-App::$strings["The unmoderated public stream of this hub"] = "Немодерируемый публичный поток с этого хаба";
-App::$strings["Public Stream"] = "Публичный поток";
+App::$strings["App installed."] = "Приложение установлено.";
+App::$strings["Malformed app."] = "Неработающее приложение.";
+App::$strings["Embed code"] = "Встроить код";
+App::$strings["Edit App"] = "Редактировать приложение";
+App::$strings["Create App"] = "Создать приложение";
+App::$strings["Name of app"] = "Наименование приложения";
+App::$strings["Location (URL) of app"] = "Местоположение (URL) приложения";
+App::$strings["Photo icon URL"] = "URL пиктограммы";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 пикселей - необязательно";
+App::$strings["Categories (optional, comma separated list)"] = "Категории (необязательно, список через запятую)";
+App::$strings["Version ID"] = "ID версии";
+App::$strings["Price of app"] = "Цена приложения";
+App::$strings["Location (URL) to purchase app"] = "Ссылка (URL) для покупки приложения";
+App::$strings["Please login."] = "Пожалуйста, войдите.";
+App::$strings["Hub not found."] = "Узел не найден.";
+App::$strings["photo"] = "фото";
+App::$strings["status"] = "статус";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s отслеживает %2\$s's %3\$s";
+App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s прекратил отслеживать %2\$s's %3\$s";
+App::$strings["Channel not found."] = "Канал не найден.";
+App::$strings["Insert web link"] = "Вставить веб-ссылку";
+App::$strings["Title (optional)"] = "Заголовок (необязательно)";
+App::$strings["Edit Article"] = "Редактировать статью";
+App::$strings["Nothing to import."] = "Ничего импортировать.";
+App::$strings["Unable to download data from old server"] = "Невозможно загрузить данные со старого сервера";
+App::$strings["Imported file is empty."] = "Импортированный файл пуст.";
+App::$strings["Warning: Database versions differ by %1\$d updates."] = "Предупреждение: Версия базы данных отличается от %1\$d обновления.";
+App::$strings["Import completed"] = "Импорт завершён.";
+App::$strings["Import Items"] = "Импортировать объекты";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Используйте эту форму для импорта существующих публикаций и содержимого из файла.";
+App::$strings["File to Upload"] = "Файл для загрузки";
App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Вы создали %1$.0f из %2$.0f возможных каналов.";
+App::$strings["Loading"] = "Загрузка";
App::$strings["Your real name is recommended."] = "Рекомендуется использовать ваше настоящее имя.";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Примеры: \"Иван Иванов\", \"Оксана и кони\", \"Футбол\", \"Тимур и его команда\"";
App::$strings["This will be used to create a unique network address (like an email address)."] = "Это будет использовано для создания уникального сетевого адреса (наподобие email).";
@@ -1364,392 +318,21 @@ App::$strings["Create a Channel"] = "Создать канал";
App::$strings["A channel is a unique network identity. It can represent a person (social network profile), a forum (group), a business or celebrity page, a newsfeed, and many other things."] = "Канал это уникальная сетевая идентичность. Он может представлять человека (профиль в социальной сети), форум или группу, бизнес или страницу знаменитости, новостную ленту и многие другие вещи.";
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "или <a href=\"import\">импортировать существующий канал</a> из другого места.";
App::$strings["Validate"] = "Проверить";
-App::$strings["Image uploaded but image cropping failed."] = "Изображение загружено но обрезка не удалась.";
-App::$strings["Cover Photos"] = "Фотографии обложки";
-App::$strings["Image resize failed."] = "Не удалось изменить размер изображения.";
-App::$strings["Image upload failed."] = "Загрузка изображения не удалась.";
-App::$strings["Unable to process image."] = "Невозможно обработать изображение.";
-App::$strings["Photo not available."] = "Фотография недоступна.";
-App::$strings["Your cover photo may be visible to anybody on the internet"] = "Фотография вашей обложки может быть видна всем в Интернете";
-App::$strings["Upload File:"] = "Загрузить файл:";
-App::$strings["Select a profile:"] = "Выбрать профиль:";
-App::$strings["Change Cover Photo"] = "Изменить фотографию обложки";
-App::$strings["Use a photo from your albums"] = "Использовать фотографию из ваших альбомов";
-App::$strings["Choose a different album"] = "Выбрать другой альбом";
-App::$strings["Select existing photo"] = "Выбрать существующую фотографию";
-App::$strings["Crop Image"] = "Обрезать изображение";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Пожалуйста настройте обрезку изображения для оптимального просмотра.";
-App::$strings["Done Editing"] = "Закончить редактирование";
-App::$strings["Files: shared with me"] = "Файлы: поделились со мной";
-App::$strings["NEW"] = "НОВОЕ";
-App::$strings["Remove all files"] = "Удалить все файлы";
-App::$strings["Remove this file"] = "Удалить этот файл";
-App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Превышено максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра.";
-App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Пожалуйста, подтвердите согласие с \"Условиями обслуживания\". Регистрация не удалась.";
-App::$strings["Passwords do not match."] = "Пароли не совпадают.";
-App::$strings["Registration successful. Continue to create your first channel..."] = "Регистрация завершена успешно. Для продолжения создайте свой первый канал...";
-App::$strings["Registration successful. Please check your email for validation instructions."] = "Регистрация завершена успешно. Пожалуйста проверьте вашу электронную почту для подтверждения.";
-App::$strings["Your registration is pending approval by the site owner."] = "Ваша регистрация ожидает одобрения администрации сайта.";
-App::$strings["Your registration can not be processed."] = "Ваша регистрация не может быть обработана.";
-App::$strings["Registration on this hub is disabled."] = "Регистрация на этом хабе отключена.";
-App::$strings["Registration on this hub is by approval only."] = "Регистрация на этом хабе только по утверждению.";
-App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Зарегистрироваться на другом хабе.</a>";
-App::$strings["Registration on this hub is by invitation only."] = "Регистрация на этом хабе доступна только по приглашениям.";
-App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Этот сайт превысил максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра. ";
-App::$strings["Terms of Service"] = "Условия предоставления услуг";
-App::$strings["I accept the %s for this website"] = "Я принимаю %s для этого веб-сайта.";
-App::$strings["I am over %s years of age and accept the %s for this website"] = "Мой возраст превышает %s лет и я принимаю %s для этого веб-сайта.";
-App::$strings["Your email address"] = "Ваш адрес электронной почты";
-App::$strings["Choose a password"] = "Выберите пароль";
-App::$strings["Please re-enter your password"] = "Пожалуйста, введите пароль еще раз";
-App::$strings["Please enter your invitation code"] = "Пожалуйста, введите Ваш код приглашения";
-App::$strings["Your Name"] = "Ваше имя";
-App::$strings["Real names are preferred."] = "Предпочтительны реальные имена.";
-App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Ваш псевдоним будет использован для создания легко запоминаемого адреса канала, напр. nickname %s";
-App::$strings["Select a channel permission role for your usage needs and privacy requirements."] = "Выберите разрешения для канала в зависимости от ваших потребностей и требований приватности.";
-App::$strings["no"] = "нет";
-App::$strings["yes"] = "да";
-App::$strings["Registration"] = "Регистрация";
-App::$strings["This site requires email verification. After completing this form, please check your email for further instructions."] = "Этот сайт требует проверку адреса электронной почты. После заполнения этой формы, пожалуйста, проверьте ваш почтовый ящик для дальнейших инструкций.";
-App::$strings["Change Order of Pinned Navbar Apps"] = "Изменить порядок приложений на панели навигации";
-App::$strings["Change Order of App Tray Apps"] = "Изменить порядок приложений в лотке";
-App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Используйте стрелки для перемещения приложения влево (вверх) или вправо (вниз) в панели навигации";
-App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Используйте стрелки для перемещения приложения вверх или вниз в лотке";
-App::$strings["Documentation Search"] = "Поиск документации";
-App::$strings["Members"] = "Участники";
-App::$strings["Administrators"] = "Администраторы";
-App::$strings["Developers"] = "Разработчики";
-App::$strings["Tutorials"] = "Руководства";
-App::$strings["\$Projectname Documentation"] = "\$Projectname Документация";
-App::$strings["Contents"] = "Содержимое";
-App::$strings["No connections."] = "Контактов нет.";
-App::$strings["Visit %s's profile [%s]"] = "Посетить %s ​​профиль [%s]";
-App::$strings["View Connections"] = "Просмотр контактов";
-App::$strings["Website:"] = "Веб-сайт:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Удалённый канал [%s] (пока неизвестен на этом сайте)";
-App::$strings["Rating (this information is public)"] = "Оценка (эта информация общедоступна)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Объясните свою оценку (необязательно; эта информация общедоступна)";
-App::$strings["Please login."] = "Пожалуйста, войдите.";
-App::$strings["Location not found."] = "Местоположение не найдено";
-App::$strings["Location lookup failed."] = "Поиск местоположения не удался";
-App::$strings["Please select another location to become primary before removing the primary location."] = "Пожалуйста, выберите другое местоположение в качестве основного прежде чем удалить предыдущее";
-App::$strings["Syncing locations"] = "Синхронизировать местоположение";
-App::$strings["No locations found."] = "Местоположений не найдено";
-App::$strings["Manage Channel Locations"] = "Управление местоположением канала";
-App::$strings["Primary"] = "Основной";
-App::$strings["Drop"] = "Удалить";
-App::$strings["Sync Now"] = "Синхронизировать";
-App::$strings["Please wait several minutes between consecutive operations."] = "Пожалуйста, подождите несколько минут между последовательными операциями.";
-App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "По возможности, очистите местоположение, войдя на этот веб-сайт / хаб и удалив свой канал.";
-App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Используйте эту форму, чтобы удалить местоположение, если хаб больше не функционирует.";
-App::$strings["Failed to create source. No channel selected."] = "Не удалось создать источник. Канал не выбран.";
-App::$strings["Source created."] = "Источник создан.";
-App::$strings["Source updated."] = "Источник обновлен.";
-App::$strings["Sources App"] = "Приложение \"Источники канала\"";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Автоматический импорт контента из других каналов или лент";
-App::$strings["*"] = "";
-App::$strings["Channel Sources"] = "Источники канала";
-App::$strings["Manage remote sources of content for your channel."] = "Управление удалённым источниками содержимого для вашего канала";
-App::$strings["New Source"] = "Новый источник";
-App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Импортировать всё или выбранное содержимое из следующего канала в этот канал и распределить его в соответствии с вашими настройками.";
-App::$strings["Only import content with these words (one per line)"] = "Импортировать содержимое только с этим текстом (построчно)";
-App::$strings["Leave blank to import all public content"] = "Оставьте пустым для импорта всего общедоступного содержимого";
-App::$strings["Channel Name"] = "Название канала";
-App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Добавить следующие категории к импортированным публикациям из этого источника (через запятые)";
-App::$strings["Resend posts with this channel as author"] = "Отправить публикации в этот канал повторно как автор";
-App::$strings["Copyrights may apply"] = "Могут применяться авторские права";
-App::$strings["Source not found."] = "Источник не найден.";
-App::$strings["Edit Source"] = "Редактировать источник";
-App::$strings["Delete Source"] = "Удалить источник";
-App::$strings["Source removed"] = "Источник удален";
-App::$strings["Unable to remove source."] = "Невозможно удалить источник.";
-App::$strings["Chatrooms App"] = "Приложение \"Мои чаты\"";
-App::$strings["Access Controlled Chatrooms"] = "Получить доступ к контролируемым чатам";
-App::$strings["Room not found"] = "Комната не найдена";
-App::$strings["Leave Room"] = "Покинуть комнату";
-App::$strings["Delete Room"] = "Удалить комнату";
-App::$strings["I am away right now"] = "Я сейчас отошёл";
-App::$strings["I am online"] = "Я на связи";
-App::$strings["Bookmark this room"] = "Запомнить эту комнату";
-App::$strings["New Chatroom"] = "Новый чат";
-App::$strings["Chatroom name"] = "Название чата";
-App::$strings["Expiration of chats (minutes)"] = "Завершение чатов (минут)";
-App::$strings["%1\$s's Chatrooms"] = "Чаты пользователя %1\$s";
-App::$strings["No chatrooms available"] = "Нет доступных чатов";
-App::$strings["Expiration"] = "Срок действия";
-App::$strings["min"] = "мин.";
-App::$strings["Name and Secret are required"] = "Требуются имя и код";
-App::$strings["OAuth2 Apps Manager App"] = "Приложение \"Менеджер Oauth2\"";
-App::$strings["OAuth2 authenticatication tokens for mobile and remote apps"] = "Аутентификация OAuth2 для мобильных и удаленных приложений";
-App::$strings["Add OAuth2 application"] = "Добавить приложение OAuth2";
-App::$strings["Grant Types"] = "Разрешить типы";
-App::$strings["leave blank unless your application sepcifically requires this"] = "оставьте пустыми до тех пока ваше приложение не требует этого";
-App::$strings["Authorization scope"] = "Область полномочий";
-App::$strings["OAuth2 Application not found."] = "Приложение OAuth2 не найдено.";
-App::$strings["leave blank unless your application specifically requires this"] = "оставьте поле пустым, если ваше приложение не требует этого";
-App::$strings["Connected OAuth2 Apps"] = "Подключённые приложения OAuth2";
-App::$strings["Channel Manager Settings"] = "Настройки менеджера канала";
-App::$strings["CalDAV Settings"] = "Настройки CalDAV";
-App::$strings["Not valid email."] = "Не действительный адрес email.";
-App::$strings["Protected email address. Cannot change to that email."] = "Защищенный адрес электронной почты. Нельзя изменить.";
-App::$strings["System failure storing new email. Please try again."] = "Системная ошибка сохранения email. Пожалуйста попробуйте ещё раз.";
-App::$strings["Password verification failed."] = "Не удалось выполнить проверку пароля.";
-App::$strings["Passwords do not match. Password unchanged."] = "Пароли не совпадают. Пароль не изменён.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Пустые пароли не допускаются. Пароль не изменён.";
-App::$strings["Password changed."] = "Пароль изменен.";
-App::$strings["Password update failed. Please try again."] = "Изменение пароля не удалось. Пожалуйста, попробуйте ещё раз.";
-App::$strings["Account Settings"] = "Настройки аккаунта";
-App::$strings["Current Password"] = "Текущий пароль";
-App::$strings["Enter New Password"] = "Введите новый пароль:";
-App::$strings["Confirm New Password"] = "Подтвердите новый пароль:";
-App::$strings["Leave password fields blank unless changing"] = "Оставьте поля пустыми до измнения";
-App::$strings["Email Address:"] = "Адрес email:";
-App::$strings["Remove Account"] = "Удалить аккаунт";
-App::$strings["Remove this account including all its channels"] = "Удалить этот аккаунт включая все каналы";
-App::$strings["Settings saved."] = "Настройки сохранены.";
-App::$strings["Settings saved. Reload page please."] = "Настройки сохранены. Пожалуйста, перезагрузите страницу.";
-App::$strings["Conversation Settings"] = "Настройки бесед";
-App::$strings["Editor Settings"] = "Настройки редактора";
-App::$strings["%s - (Incompatible)"] = "%s - (несовместимо)";
-App::$strings["%s - (Experimental)"] = "%s - (экспериментальный)";
-App::$strings["Display Settings"] = "Настройки отображения";
-App::$strings["Theme Settings"] = "Настройки темы";
-App::$strings["Custom Theme Settings"] = "Дополнительные настройки темы";
-App::$strings["Content Settings"] = "Настройки содержимого";
-App::$strings["Display Theme:"] = "Тема отображения:";
-App::$strings["Select scheme"] = "Выбрать схему";
-App::$strings["Preload images before rendering the page"] = "Предзагрузка изображений перед обработкой страницы";
-App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "Субъективное время загрузки страницы будет длиннее, но страница будет готова при отображении";
-App::$strings["Enable user zoom on mobile devices"] = "Включить масштабирование на мобильных устройствах";
-App::$strings["Update browser every xx seconds"] = "Обновление браузера каждые N секунд";
-App::$strings["Minimum of 10 seconds, no maximum"] = "Минимум 10 секунд, без максимума";
-App::$strings["Maximum number of conversations to load at any time:"] = "Максимальное количество бесед для загрузки одновременно:";
-App::$strings["Maximum of 100 items"] = "Максимум 100 элементов";
-App::$strings["Show emoticons (smilies) as images"] = "Показывать эмотиконы (смайлики) как изображения";
-App::$strings["Provide channel menu in navigation bar"] = "Показывать меню канала в панели навигации";
-App::$strings["Default: channel menu located in app menu"] = "По умолчанию каналы расположены в меню приложения";
-App::$strings["Manual conversation updates"] = "Обновление бесед вручную";
-App::$strings["Default is on, turning this off may increase screen jumping"] = "Включено по умолчанию, выключение может привести к рывкам в отображении";
-App::$strings["Link post titles to source"] = "Ссылки на источник заголовков публикаций";
-App::$strings["New Member Links"] = "Ссылки для новичков";
-App::$strings["Display new member quick links menu"] = "Показать меню быстрых ссылок для новых участников";
-App::$strings["Additional Features"] = "Дополнительные функции";
-App::$strings["Max height of content (in pixels)"] = "Максимальная высота содержимого (в пикселях)";
-App::$strings["Click to expand content exceeding this height"] = "Нажмите чтобы развернуть содержимое превышающее эту высоту";
-App::$strings["Stream Settings"] = "Настройки потока";
-App::$strings["Events Settings"] = "Настройки событий";
-App::$strings["Personal menu to display in your channel pages"] = "Персональное меню для отображения на странице вашего канала";
-App::$strings["Channel Home Settings"] = "Настройки главной страницы канала";
-App::$strings["Directory Settings"] = "Настройки каталога";
-App::$strings["Photos Settings"] = "Настройки фотографий";
-App::$strings["Profiles Settings"] = "Настройки профилей";
-App::$strings["Affinity Slider settings updated."] = "Обновлены настройки слайдера cходства.";
-App::$strings["No feature settings configured"] = "Параметры функций не настроены";
-App::$strings["Default maximum affinity level"] = "Максимальный уровень сходства по умолчанию.";
-App::$strings["0-99 default 99"] = "0-99 (по умолчанию 99)";
-App::$strings["Default minimum affinity level"] = "Минимальный уровень сходства по умолчанию.";
-App::$strings["0-99 - default 0"] = "0-99 (по умолчанию 0)";
-App::$strings["Affinity Slider Settings"] = "Настройки слайдера сходства";
-App::$strings["Addon Settings"] = "Настройки расширений";
-App::$strings["Please save/submit changes to any panel before opening another."] = "Пожалуйста сохраните / отправьте изменения на панели прежде чем открывать другую.";
-App::$strings["Connections Settings"] = "Настройки контактов";
-App::$strings["Nobody except yourself"] = "Никто кроме вас";
-App::$strings["Only those you specifically allow"] = "Только персонально разрешённые";
-App::$strings["Approved connections"] = "Одобренные контакты";
-App::$strings["Any connections"] = "Любые контакты";
-App::$strings["Anybody on this website"] = "Любой на этом сайте";
-App::$strings["Anybody in this network"] = "Любой в этой сети";
-App::$strings["Anybody authenticated"] = "Любой аутентифицированный";
-App::$strings["Anybody on the internet"] = "Любой в интернете";
-App::$strings["Publish your default profile in the network directory"] = "Публиковать ваш профиль по умолчанию в сетевом каталоге";
-App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Разрешить предлагать вас как потенциального друга для новых пользователей?";
-App::$strings["or"] = "или";
-App::$strings["Your channel address is"] = "Адрес вашего канала";
-App::$strings["Your files/photos are accessible via WebDAV at"] = "Ваши файлы / фотографии доступны через WebDAV по";
-App::$strings["Automatic membership approval"] = "Членство одобрено автоматически";
-App::$strings["Channel Settings"] = "Настройки канала";
-App::$strings["Basic Settings"] = "Основные настройки";
-App::$strings["Your Timezone:"] = "Часовой пояс:";
-App::$strings["Default Post Location:"] = "Расположение по умолчанию:";
-App::$strings["Geographical location to display on your posts"] = "Показывать географическое положение в ваших публикациях";
-App::$strings["Use Browser Location:"] = "Определять расположение из браузера";
-App::$strings["Adult Content"] = "Содержимое для взрослых";
-App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Этот канал часто или регулярно публикует содержимое для взрослых. Пожалуйста, помечайте любой такой материал тегом #NSFW";
-App::$strings["Security and Privacy Settings"] = "Безопасность и настройки приватности";
-App::$strings["Your permissions are already configured. Click to view/adjust"] = "Ваши разрешения уже настроены. Нажмите чтобы просмотреть или изменить";
-App::$strings["Hide my online presence"] = "Скрывать моё присутствие онлайн";
-App::$strings["Prevents displaying in your profile that you are online"] = "Предотвращает отображения статуса \"в сети\" в вашем профиле";
-App::$strings["Simple Privacy Settings:"] = "Простые настройки безопасности:";
-App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Полностью открытый - <em>сверхлиберальный (должен использоваться с осторожностью)</em>";
-App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Обычный - <em>открытый по умолчанию, приватность по желанию (как в социальных сетях, но с улучшенными настройками)</em>";
-App::$strings["Private - <em>default private, never open or public</em>"] = "Частный - <em>частный по умочанию, не открытый и не публичный</em>";
-App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Закрытый - <em>заблокированный по умолчанию от / для всех</em>";
-App::$strings["Allow others to tag your posts"] = "Разрешить другим отмечать ваши публикации";
-App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Часто используется сообществом для маркировки неподобающего содержания";
-App::$strings["Channel Permission Limits"] = "Ограничения разрешений канала";
-App::$strings["Expire other channel content after this many days"] = "Храненить содержимое других каналов, дней";
-App::$strings["0 or blank to use the website limit."] = "0 или пусто - использовать настройки сайта.";
-App::$strings["This website expires after %d days."] = "Срок хранения содержимого этого сайта истекает через %d дней";
-App::$strings["This website does not expire imported content."] = "Срок хранения импортированного содержимого этого сайта не ограничен.";
-App::$strings["The website limit takes precedence if lower than your limit."] = "Ограничение сайта имеет приоритет если ниже вашего значения.";
-App::$strings["Maximum Friend Requests/Day:"] = "Запросов в друзья в день:";
-App::$strings["May reduce spam activity"] = "Может ограничить спам активность";
-App::$strings["Default Privacy Group"] = "Группа конфиденциальности по умолчанию";
-App::$strings["(click to open/close)"] = "(нажмите чтобы открыть/закрыть)";
-App::$strings["Use my default audience setting for the type of object published"] = "Использовать настройки аудитории по умолчанию для типа опубликованного объекта";
-App::$strings["Default permissions category"] = "Категория разрешений по умолчанию";
-App::$strings["Maximum private messages per day from unknown people:"] = "Максимально количество сообщений от незнакомых людей, в день:";
-App::$strings["Useful to reduce spamming"] = "Полезно для сокращения количества спама";
-App::$strings["Notification Settings"] = "Настройки уведомлений";
-App::$strings["By default post a status message when:"] = "По умолчанию публиковать новый статус при:";
-App::$strings["accepting a friend request"] = "одобрении запроса в друзья";
-App::$strings["joining a forum/community"] = "вступлении в сообщество / форум";
-App::$strings["making an <em>interesting</em> profile change"] = "<em>интересном</em> изменении профиля";
-App::$strings["Send a notification email when:"] = "Отправить уведомление по email когда:";
-App::$strings["You receive a connection request"] = "вы получили новый запрос контакта";
-App::$strings["Your connections are confirmed"] = "Ваш запрос контакта был одобрен";
-App::$strings["Someone writes on your profile wall"] = "Кто-то написал на стене вашего профиля";
-App::$strings["Someone writes a followup comment"] = "Кто-то пишет комментарий";
-App::$strings["You receive a private message"] = "Вы получили личное сообщение";
-App::$strings["You receive a friend suggestion"] = "Вы получили предложение друзей";
-App::$strings["You are tagged in a post"] = "Вы были отмечены в публикации";
-App::$strings["You are poked/prodded/etc. in a post"] = "Вас толкнули, подтолкнули и т.п. в публикации";
-App::$strings["Someone likes your post/comment"] = "Кому-то нравится ваша публикация / комментарий";
-App::$strings["Show visual notifications including:"] = "Показывать визуальные оповещения включая:";
-App::$strings["Unseen stream activity"] = "Невидимая активность в потоке";
-App::$strings["Unseen channel activity"] = "Невидимая активность в канале";
-App::$strings["Unseen private messages"] = "Невидимые личные сообщения";
-App::$strings["Recommended"] = "Рекомендовано";
-App::$strings["Upcoming events"] = "Грядущие события";
-App::$strings["Events today"] = "События сегодня";
-App::$strings["Upcoming birthdays"] = "Грядущие дни рождения";
-App::$strings["Not available in all themes"] = "Не доступно во всех темах";
-App::$strings["System (personal) notifications"] = "Системные (личные) уведомления";
-App::$strings["System info messages"] = "Сообщения с системной информацией";
-App::$strings["System critical alerts"] = "Критические уведомления системы";
-App::$strings["New connections"] = "Новые контакты";
-App::$strings["System Registrations"] = "Системные регистрации";
-App::$strings["Unseen shared files"] = "Невидимые общие файлы";
-App::$strings["Unseen public stream activity"] = "Невидимая активность в публичном потоке";
-App::$strings["Unseen likes and dislikes"] = "Невидимые лайки и дислайки";
-App::$strings["Unseen forum posts"] = "Невидимые публикации на форуме";
-App::$strings["Email notification hub (hostname)"] = "Центр уведомлений по email (имя хоста)";
-App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Если ваш канал зеркалируется в нескольких местах, это ваше предпочтительное местоположение. Это должно предотвратить дублировать уведомлений по email. Например: %s";
-App::$strings["Show new wall posts, private messages and connections under Notices"] = "Показать новые сообщения на стене, личные сообщения и контакты в \"Уведомлениях\"";
-App::$strings["Notify me of events this many days in advance"] = "Уведомлять меня о событиях заранее, дней";
-App::$strings["Must be greater than 0"] = "Должно быть больше 0";
-App::$strings["Advanced Account/Page Type Settings"] = "Дополнительные настройки учётной записи / страницы";
-App::$strings["Change the behaviour of this account for special situations"] = "Изменить поведение этого аккаунта в особых ситуациях";
-App::$strings["Miscellaneous Settings"] = "Дополнительные настройки";
-App::$strings["Default photo upload folder"] = "Каталог загрузки фотографий по умолчанию";
-App::$strings["%Y - current year, %m - current month"] = "%Y - текущий год, %y - текущий месяц";
-App::$strings["Default file upload folder"] = "Каталог загрузки файлов по умолчанию";
-App::$strings["Remove Channel"] = "Удаление канала";
-App::$strings["Remove this channel."] = "Удалить этот канал.";
-App::$strings["This directory server requires an access token"] = "Для доступа к этому серверу каталогов требуется токен";
-App::$strings["Item not found"] = "Элемент не найден";
-App::$strings["Layout Name"] = "Название шаблона";
-App::$strings["Layout Description (Optional)"] = "Описание шаблона (необязательно)";
-App::$strings["Edit Layout"] = "Редактировать шаблон";
-App::$strings["Available Apps"] = "Доступные приложения";
-App::$strings["Installed Apps"] = "Установленные приложения";
-App::$strings["Manage Apps"] = "Управление приложениями";
-App::$strings["Create Custom App"] = "Создать пользовательское приложение";
-App::$strings["Permission Denied."] = "Доступ запрещен.";
-App::$strings["File not found."] = "Файл не найден.";
-App::$strings["Edit file permissions"] = "Редактировать разрешения файла";
-App::$strings["Set/edit permissions"] = "Редактировать разрешения";
-App::$strings["Include all files and sub folders"] = "Включить все файлы и подкаталоги";
-App::$strings["Return to file list"] = "Вернутся к списку файлов";
-App::$strings["Copy/paste this code to attach file to a post"] = "Копировать / вставить этот код для прикрепления файла к публикации";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Копировать / вставить эту URL для ссылки на файл со страницы";
-App::$strings["Share this file"] = "Поделиться этим файлом";
-App::$strings["Show URL to this file"] = "Показать URL этого файла";
-App::$strings["Block Name"] = "Название блока";
-App::$strings["Edit Block"] = "Редактировать блок";
-App::$strings["No service class restrictions found."] = "Ограничений класса обслуживание не найдено.";
-App::$strings["Insufficient permissions. Request redirected to profile page."] = "Недостаточно прав. Запрос перенаправлен на страницу профиля.";
-App::$strings["Channel Export App"] = "Приложение \"Экспорт канала\"";
-App::$strings["Export your channel"] = "Экспортировать ваш канал";
-App::$strings["Export Channel"] = "Экспорт канала";
-App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Экспортировать основную информацию из канала в файл. Служит в качестве резервной копии ваших контактов, основных данных и профиля, однако не включает содержимое. Может быть использовано для импорта ваши данных на новый сервер.";
-App::$strings["Export Content"] = "Экспортировать содержимое";
-App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Экспортировать информацию из вашего канала и его содержимое в резервную копию в формате JSON которая может быть использована для восстановления или импорта на другом сервере. Сохраняет все ваши контакты, разрешения, данные профиля и публикации за несколько месяцев. Файл может иметь очень большой размер. Пожалуйста, будьте терпеливы и подождите несколько минут пока не начнётся загрузка.";
-App::$strings["Export your posts from a given year."] = "Экспортировать ваши публикации за данный год.";
-App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "Вы также можете экспортировать ваши публикации и беседы за определённый месяц или год. Выберите дату в панели местоположения в браузере. Если экспорт будет неудачным (это возможно, например, из-за исчерпания памяти на сервере), повторите попытку, выбрав меньший диапазон дат.";
-App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Для выбора всех публикаций заданного года, например текущего, посетите <a href=\"%1\$s\">%2\$s</a>";
-App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Для выбора всех публикаций заданного месяца, например за январь сего года, посетите <a href=\"%1\$s\">%2\$s</a>";
-App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Данные файлы с содержимым могут быть импортированы и восстановлены на любом содержащем ваш канал сайте. Посетите <a href=\"%1\$s\">%2\$s</a>. Для лучших результатов пожалуйста производите импорт и восстановление в порядке датировки (старые сначала).";
-App::$strings["Away"] = "Нет на месте";
-App::$strings["Online"] = "В сети";
-App::$strings["Like/Dislike"] = "Нравится / не нравится";
-App::$strings["This action is restricted to members."] = "Это действие доступно только участникам.";
-App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Пожалуйста, для продолжения <a href=\"rmagic\"> войдите с вашим \$Projectname ID</a> или <a href=\"register\">зарегистрируйтесь как новый участник \$Projectname</a>.";
-App::$strings["Invalid request."] = "Неверный запрос.";
-App::$strings["thing"] = "предмет";
-App::$strings["Channel unavailable."] = "Канал недоступен.";
-App::$strings["Previous action reversed."] = "Предыдущее действие отменено.";
-App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s согласен с %2\$s %3\$s";
-App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s не согласен с %2\$s %3\$s";
-App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s воздерживается от решения по %2\$s%3\$s";
-App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s посещает %2\$s%3\$s";
-App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s не посещает %2\$s%3\$s";
-App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s может посетить %2\$s%3\$s";
-App::$strings["Action completed."] = "Действие завершено.";
-App::$strings["Thank you."] = "Спасибо.";
-App::$strings["Bookmark added"] = "Закладка добавлена";
-App::$strings["Bookmarks App"] = "Приложение \"Закладки\"";
-App::$strings["Bookmark links from posts and manage them"] = "Поместить ссылки из публикации в закладки и управлять ими";
-App::$strings["My Bookmarks"] = "Мои закладки";
-App::$strings["My Connections Bookmarks"] = "Закладки моих контактов";
-App::$strings["Item not available."] = "Элемент недоступен.";
-App::$strings["Remote Diagnostics App"] = "Приложение \"Удалённая диагностика\"";
-App::$strings["Perform diagnostics on remote channels"] = "Производит диагностику удалённых каналов";
-App::$strings["item"] = "пункт";
-App::$strings["Permissions denied."] = "Доступ запрещен.";
App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Удаление канала не разрешается в течении 48 часов после смены пароля у аккаунта.";
App::$strings["Remove This Channel"] = "Удалить этот канал";
+App::$strings["WARNING: "] = "ПРЕДУПРЕЖДЕНИЕ: ";
App::$strings["This channel will be completely removed from the network. "] = "Этот канал будет полностью удалён из сети. ";
App::$strings["This action is permanent and can not be undone!"] = "Это действие необратимо и не может быть отменено!";
+App::$strings["Please enter your password for verification:"] = "Пожалуйста, введите ваш пароль для проверки:";
App::$strings["Remove this channel and all its clones from the network"] = "Удалить этот канал и все его клоны из сети";
App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "По умолчанию только представление канала расположенное на данном хабе будет удалено из сети";
-App::$strings["Unable to update menu."] = "Невозможно обновить меню.";
-App::$strings["Unable to create menu."] = "Невозможно создать меню.";
-App::$strings["Menu Name"] = "Название меню";
-App::$strings["Unique name (not visible on webpage) - required"] = "Уникальное название (не видимо на странице) - требуется";
-App::$strings["Menu Title"] = "Заголовок меню";
-App::$strings["Visible on webpage - leave empty for no title"] = "Видимость на странице - оставьте пустым если не хотите иметь заголовок";
-App::$strings["Allow Bookmarks"] = "Разрешить закладки";
-App::$strings["Menu may be used to store saved bookmarks"] = "Меню может использоваться, чтобы сохранить закладки";
-App::$strings["Submit and proceed"] = "Отправить и обработать";
-App::$strings["Created"] = "Создано";
-App::$strings["Edited"] = "Отредактировано";
-App::$strings["New"] = "Новые";
-App::$strings["Bookmarks allowed"] = "Закладки разрешены";
-App::$strings["Delete this menu"] = "Удалить это меню";
-App::$strings["Edit menu contents"] = "Редактировать содержание меню";
-App::$strings["Edit this menu"] = "Редактировать это меню";
-App::$strings["Menu could not be deleted."] = "Меню не может быть удалено.";
-App::$strings["Menu not found."] = "Меню не найдено";
-App::$strings["Edit Menu"] = "Редактировать меню";
-App::$strings["Add or remove entries to this menu"] = "Добавить или удалить пункты этого меню";
-App::$strings["Menu name"] = "Название меню";
-App::$strings["Must be unique, only seen by you"] = "Должно быть уникальным (видно только вам)";
-App::$strings["Menu title"] = "Заголовок меню";
-App::$strings["Menu title as seen by others"] = "Видимый другими заголовок меню";
-App::$strings["Allow bookmarks"] = "Разрешить закладки";
-App::$strings["No ratings"] = "Оценок нет";
-App::$strings["Rating: "] = "Оценкa:";
-App::$strings["Website: "] = "Веб-сайт:";
-App::$strings["Description: "] = "Описание:";
-App::$strings["Public Hubs"] = "Публичные хабы";
-App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Указанные хабы разрешают публичную регистрацию для сети \$Projectname. Все хабы в сети взаимосвязаны, поэтому членство в любом из них передает членство во всю сеть. Некоторым хабам может потребоваться подписка или предоставление многоуровневых планов обслуживания. Сам хаб <strong>может</strong> предоставить дополнительные сведения.";
-App::$strings["Hub URL"] = "URL сервера";
-App::$strings["Access Type"] = "Тип доступа";
-App::$strings["Registration Policy"] = "Политика регистрации";
-App::$strings["Stats"] = "Статистика";
-App::$strings["Software"] = "Программное обеспечение";
-App::$strings["Rate"] = "Оценка";
+App::$strings["Remove Channel"] = "Удаление канала";
+App::$strings["Files: shared with me"] = "Файлы: поделились со мной";
+App::$strings["NEW"] = "НОВОЕ";
+App::$strings["Size"] = "Размер";
+App::$strings["Last Modified"] = "Последнее изменение";
+App::$strings["Remove all files"] = "Удалить все файлы";
+App::$strings["Remove this file"] = "Удалить этот файл";
App::$strings["\$Projectname Server - Setup"] = "\$Projectname сервер - Установка";
App::$strings["Could not connect to database."] = "Не удалось подключиться к серверу баз данных.";
App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Не удалось подключиться к указанному URL. Вероятно проблема с SSL сертификатом или DNS.";
@@ -1788,6 +371,7 @@ App::$strings["Unable to check command line PHP, as shell_exec() is disabled. Th
App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "В консольной версии PHP в вашей системе отключена опция \"register_argc_argv\".";
App::$strings["This is required for message delivery to work."] = "Это необходимо для функционирования доставки сообщений.";
App::$strings["PHP register_argc_argv"] = "";
+App::$strings["This is not sufficient to upload larger images or files. You should be able to upload at least 4 MB at once."] = "Этого недостаточно для загрузки больших изображений или файлов. Вы должны иметь возможность загрузить как минимум 4 Мб за раз.";
App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Максимально разрешённый общий размер загрузок установлен в %s. Максимальный размер одной загрузки установлен в %s. Вам разрешено загружать до %d файлов за один приём.";
App::$strings["You can adjust these settings in the server php.ini file."] = "Вы можете изменить эти настройки в файле php.ini на сервере.";
App::$strings["PHP upload limits"] = "Максимальный размер загрузки в PHP";
@@ -1840,36 +424,69 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr
App::$strings["Errors encountered creating database tables."] = "При создании базы данных возникли ошибки.";
App::$strings["<h1>What next?</h1>"] = "<h1>Что дальше? </h1>";
App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "Вам понадобится [вручную] настроить запланированную задачу для опрашивателя.";
-App::$strings["Unable to create element."] = "Невозможно создать элемент.";
-App::$strings["Unable to update menu element."] = "Невозможно обновить элемент меню.";
-App::$strings["Unable to add menu element."] = "Невозможно добавить элемент меню.";
-App::$strings["Menu Item Permissions"] = "Разрешения на пункт меню";
-App::$strings["Link Name"] = "Имя ссылки";
-App::$strings["Link or Submenu Target"] = "Ссылка или цель подменю";
-App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Введите URL ссылки или выберите имя меню для создания подменю";
-App::$strings["Use magic-auth if available"] = "Использовать magic-auth если возможно";
-App::$strings["Open link in new window"] = "Открыть ссылку в новом окне";
-App::$strings["Order in list"] = "Порядок в списке";
-App::$strings["Higher numbers will sink to bottom of listing"] = "Большие значения в конце списка";
-App::$strings["Submit and finish"] = "Отправить и завершить";
-App::$strings["Submit and continue"] = "Отправить и продолжить";
-App::$strings["Menu:"] = "Меню:";
-App::$strings["Link Target"] = "Цель ссылки";
-App::$strings["Edit menu"] = "Редактировать меню";
-App::$strings["Edit element"] = "Редактировать элемент";
-App::$strings["Drop element"] = "Удалить элемент";
-App::$strings["New element"] = "Новый элемент";
-App::$strings["Edit this menu container"] = "Редактировать контейнер меню";
-App::$strings["Add menu element"] = "Добавить элемент меню";
-App::$strings["Delete this menu item"] = "Удалить этот элемент меню";
-App::$strings["Edit this menu item"] = "Редактировать этот элемент меню";
-App::$strings["Menu item not found."] = "Элемент меню не найден.";
-App::$strings["Menu item deleted."] = "Элемент меню удалён.";
-App::$strings["Menu item could not be deleted."] = "Невозможно удалить элемент меню.";
-App::$strings["Edit Menu Element"] = "Редактировать элемент меню";
-App::$strings["Link text"] = "Текст ссылки";
+App::$strings["Continue"] = "Продолжить";
+App::$strings["Premium Channel App"] = "Приложение \"Премиальный канал\"";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Позволяет установить ограничения и условия для подключающихся к вашему каналу";
+App::$strings["Premium Channel Setup"] = "Установка премиального канала";
+App::$strings["Enable premium channel connection restrictions"] = "Включить ограничения для премиального канала";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Пожалуйста введите ваши ограничения или условия, такие, как оплата PayPal, правила использования и т.п.";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Этот канал до подключения может требовать дополнительных шагов или подтверждений следующих условий:";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "Потенциальные соединения будут видеть следующий предварительный текст:";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Продолжая, я подтверждаю что я выполнил все условия представленные на данной странице.";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Владельцем канала не было представлено никаких специальных инструкций.)";
+App::$strings["Restricted or Premium Channel"] = "Ограниченный или премиальный канал";
+App::$strings["Queue Statistics"] = "Статистика очереди";
+App::$strings["Total Entries"] = "Всего записей";
+App::$strings["Priority"] = "Приоритет";
+App::$strings["Destination URL"] = "Конечный URL-адрес";
+App::$strings["Mark hub permanently offline"] = "Пометить хаб как постоянно отключенный";
+App::$strings["Empty queue for this hub"] = "Освободить очередь для этого хаба";
+App::$strings["Last known contact"] = "Последний известный контакт";
+App::$strings["Off"] = "Выкл.";
+App::$strings["On"] = "Вкл.";
App::$strings["Lock feature %s"] = "Заблокировать функцию \"%s\"";
App::$strings["Manage Additional Features"] = "Управление дополнительными функциями";
+App::$strings["Update has been marked successful"] = "Обновление было помечено как успешное";
+App::$strings["Executing %s failed. Check system logs."] = "Выполнение %s неудачно. Проверьте системный журнал.";
+App::$strings["Update %s was successfully applied."] = "Обновление %sбыло успешно применено.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Обновление %s не вернуло статус. Неизвестно было ли оно успешным.";
+App::$strings["Update function %s could not be found."] = "Функция обновления %sне может быть найдена.";
+App::$strings["Failed Updates"] = "Обновления с ошибками";
+App::$strings["Mark success (if update was manually applied)"] = "Пометить успешным (если обновление было применено вручную)";
+App::$strings["Attempt to execute this update step automatically"] = "Попытаться применить это обновление автоматически";
+App::$strings["No failed updates."] = "Ошибок обновлений нет.";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "%s аккаунт блокирован/разблокирован",
+ 1 => "%s аккаунта блокированы/разблокированы",
+ 2 => "%s аккаунтов блокированы/разблокированы",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "%s аккаунт удалён",
+ 1 => "%s аккаунта удалёны",
+ 2 => "%s аккаунтов удалёны",
+);
+App::$strings["Account not found"] = "Аккаунт не найден";
+App::$strings["Account '%s' deleted"] = "Аккаунт '%s' удален";
+App::$strings["Account '%s' blocked"] = "Аккаунт '%s' заблокирован";
+App::$strings["Account '%s' unblocked"] = "Аккаунт '%s' разблокирован";
+App::$strings["Administration"] = "Администрирование";
+App::$strings["Accounts"] = "Учётные записи";
+App::$strings["select all"] = "выбрать все";
+App::$strings["Registrations waiting for confirm"] = "Регистрации ждут подтверждения";
+App::$strings["Request date"] = "Дата запроса";
+App::$strings["No registrations."] = "Нет новых регистраций.";
+App::$strings["Approve"] = "Утвердить";
+App::$strings["Deny"] = "Запретить";
+App::$strings["Block"] = "Блокировать";
+App::$strings["Unblock"] = "Разблокировать";
+App::$strings["ID"] = "";
+App::$strings["All Channels"] = "Все каналы";
+App::$strings["Register date"] = "Дата регистрации";
+App::$strings["Last login"] = "Последний вход";
+App::$strings["Expires"] = "Срок действия";
+App::$strings["Service Class"] = "Класс обслуживания";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Выбранные учётные записи будут удалены!\n\nВсё что было ими опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Этот аккаунт {0} будет удалён!\n\nВсё что им было опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?";
App::$strings["Log settings updated."] = "Настройки журнала обновлены.";
App::$strings["Logs"] = "Журналы";
App::$strings["Clear"] = "Очистить";
@@ -1898,66 +515,31 @@ App::$strings["Channel '%s' censored"] = "Канал '%s' цензурирует
App::$strings["Channel '%s' uncensored"] = "Канал '%s' нецензурируется";
App::$strings["Channel '%s' code allowed"] = "Код в канале '%s' разрешён";
App::$strings["Channel '%s' code disallowed"] = "Код в канале '%s' запрещён";
-App::$strings["select all"] = "выбрать все";
+App::$strings["Channels"] = "Каналы";
App::$strings["Censor"] = "Цензурировать";
App::$strings["Uncensor"] = "Нецензурировать";
App::$strings["Allow Code"] = "Разрешить код";
App::$strings["Disallow Code"] = "Запретить код";
+App::$strings["Channel"] = "Канал";
App::$strings["UID"] = "";
App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Этот аккаунт {0} будет удалён!\n\nВсё что им было опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?";
App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Канал {0} будет удалён!\n\nВсё что было опубликовано в этом канале на этом сайте будет удалено навсегда!\n\nВы уверены?";
-App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "По умолчанию, HTML без фильтрации доступен во встраиваемых медиа. Это небезопасно.";
-App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "Рекомендуется настроить разрешения использовать HTML без фильтрации только для следующих сайтов:";
-App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "";
-App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "се остальные встроенные материалы будут отфильтрованы, <strong>если </strong> встроенное содержимое с этого сайта явно заблокировано.";
-App::$strings["Security"] = "Безопасность";
-App::$strings["Block public"] = "Блокировать публичный доступ";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Установите флажок для блокировки публичного доступа ко всем другим общедоступным страницам на этом сайте, если вы в настоящее время не аутентифицированы.";
-App::$strings["Provide a cloud root directory"] = "Предоставить корневой каталог в облаке";
-App::$strings["The cloud root directory lists all channel names which provide public files"] = "В корневом каталоге облака показываются все имена каналов, которые предоставляют общедоступные файлы";
-App::$strings["Show total disk space available to cloud uploads"] = "Показывать общее доступное для загрузок место в хранилище";
-App::$strings["Set \"Transport Security\" HTTP header"] = "Установить HTTP-заголовок \"Transport Security\"";
-App::$strings["Set \"Content Security Policy\" HTTP header"] = "Установить HTTP-заголовок \"Content Security Policy\"";
-App::$strings["Allowed email domains"] = "Разрешённые домены email";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Список разделённых запятыми доменов для которых разрешена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены.";
-App::$strings["Not allowed email domains"] = "Запрещённые домены email";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Список разделённых запятыми доменов для которых запрещена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены до тех пор, пока разрешённые домены не будут указаны.";
-App::$strings["Allow communications only from these sites"] = "Разрешить связь только с этими сайтами";
-App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Один сайт на строку. Оставьте пустым для разрешения взаимодействия без ограничений (по умочанию).";
-App::$strings["Block communications from these sites"] = "Блокировать связь с этими сайтами";
-App::$strings["Allow communications only from these channels"] = "Разрешить связь только для этих каналов";
-App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Один канал (или его хэш) на строку. Оставьте пустым для разрешения взаимодействия с любым каналом (по умолчанию).";
-App::$strings["Block communications from these channels"] = "Блокировать связь с этими каналами";
-App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Разрешать встраивание только для безопасных (SSL/TLS) сайтов и ссылок.";
-App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Разрешить встраивать нефильтруемое HTML-содержимое только для этих доменов";
-App::$strings["One site per line. By default embedded content is filtered."] = "Один сайт на строку. По умолчанию встраиваемое содержимое фильтруется.";
-App::$strings["Block embedded HTML from these domains"] = "Блокировать встраивание HTML-содержимого для этих доменов";
-App::$strings["Plugin %s disabled."] = "Плагин %s отключен.";
-App::$strings["Plugin %s enabled."] = "Плагин %s включен.";
+App::$strings["Theme settings updated."] = "Настройки темы обновленны.";
+App::$strings["No themes found."] = "Темы не найдены.";
+App::$strings["Item not found."] = "Элемент не найден.";
App::$strings["Disable"] = "Запретить";
App::$strings["Enable"] = "Разрешить";
-App::$strings["Addons"] = "Расширения";
+App::$strings["Screenshot"] = "Снимок экрана";
+App::$strings["Themes"] = "Темы";
App::$strings["Toggle"] = "Переключить";
+App::$strings["Settings"] = "Настройки";
App::$strings["Author: "] = "Автор: ";
App::$strings["Maintainer: "] = "Сопровождающий:";
-App::$strings["Minimum project version: "] = "Минимальная версия проекта: ";
-App::$strings["Maximum project version: "] = "Максимальная версия проекта: ";
-App::$strings["Minimum PHP version: "] = "Минимальная версия PHP: ";
-App::$strings["Compatible Server Roles: "] = "Совместимые роли сервера: ";
-App::$strings["Requires: "] = "Необходимо:";
-App::$strings["Disabled - version incompatibility"] = "Отключено - несовместимость версий";
-App::$strings["Enter the public git repository URL of the addon repo."] = "Введите URL публичного репозитория расширений git";
-App::$strings["Addon repo git URL"] = "URL репозитория расширений git";
-App::$strings["Custom repo name"] = "Пользовательское имя репозитория";
-App::$strings["(optional)"] = "(необязательно)";
-App::$strings["Download Addon Repo"] = "Загрузить репозиторий расширений";
-App::$strings["Install new repo"] = "Установить новый репозиторий";
-App::$strings["Install"] = "Установить";
-App::$strings["Manage Repos"] = "Управление репозиториями";
-App::$strings["Installed Addon Repositories"] = "Установленные репозитории расширений";
-App::$strings["Install a New Addon Repository"] = "Установить новый репозиторий расширений";
-App::$strings["Switch branch"] = "Переключить ветку";
+App::$strings["[Experimental]"] = "[экспериментальный]";
+App::$strings["[Unsupported]"] = "[неподдерживаемый]";
App::$strings["Site settings updated."] = "Настройки сайта обновлены.";
+App::$strings["Default"] = "По умолчанию";
+App::$strings["%s - (Incompatible)"] = "%s - (несовместимо)";
App::$strings["mobile"] = "мобильный";
App::$strings["experimental"] = "экспериментальный";
App::$strings["unsupported"] = "неподдерживаемый";
@@ -1969,8 +551,10 @@ App::$strings["My site offers free accounts with optional paid upgrades"] = "Н
App::$strings["Default permission role for new accounts"] = "Разрешения по умолчанию для новых аккаунтов";
App::$strings["This role will be used for the first channel created after registration."] = "Эта роль будет использоваться для первого канала, созданного после регистрации.";
App::$strings["Site"] = "Сайт";
+App::$strings["Registration"] = "Регистрация";
App::$strings["File upload"] = "Загрузка файла";
App::$strings["Policies"] = "Правила";
+App::$strings["Advanced"] = "Дополнительно";
App::$strings["Site name"] = "Название сайта";
App::$strings["Banner/Logo"] = "Баннер / логотип";
App::$strings["Unfiltered HTML/CSS/JS is allowed"] = "Разрешён нефильтруемый HTML/CSS/JS";
@@ -2051,6 +635,27 @@ App::$strings["Page to display after creating a new channel"] = "Страниц
App::$strings["Default: profiles"] = "По умолчанию: profiles";
App::$strings["Optional: site location"] = "Необязательно: место размещения сайта";
App::$strings["Region or country"] = "Регион или страна";
+App::$strings["Plugin %s disabled."] = "Плагин %s отключен.";
+App::$strings["Plugin %s enabled."] = "Плагин %s включен.";
+App::$strings["Addons"] = "Расширения";
+App::$strings["Minimum project version: "] = "Минимальная версия проекта: ";
+App::$strings["Maximum project version: "] = "Максимальная версия проекта: ";
+App::$strings["Minimum PHP version: "] = "Минимальная версия PHP: ";
+App::$strings["Compatible Server Roles: "] = "Совместимые роли сервера: ";
+App::$strings["Requires: "] = "Необходимо:";
+App::$strings["Disabled - version incompatibility"] = "Отключено - несовместимость версий";
+App::$strings["Enter the public git repository URL of the addon repo."] = "Введите URL публичного репозитория расширений git";
+App::$strings["Addon repo git URL"] = "URL репозитория расширений git";
+App::$strings["Custom repo name"] = "Пользовательское имя репозитория";
+App::$strings["(optional)"] = "(необязательно)";
+App::$strings["Download Addon Repo"] = "Загрузить репозиторий расширений";
+App::$strings["Install new repo"] = "Установить новый репозиторий";
+App::$strings["Install"] = "Установить";
+App::$strings["Manage Repos"] = "Управление репозиториями";
+App::$strings["Installed Addon Repositories"] = "Установленные репозитории расширений";
+App::$strings["Install a New Addon Repository"] = "Установить новый репозиторий расширений";
+App::$strings["Switch branch"] = "Переключить ветку";
+App::$strings["Remove"] = "Удалить";
App::$strings["New Profile Field"] = "Поле нового профиля";
App::$strings["Field nickname"] = "Псевдоним поля";
App::$strings["System name of field"] = "Системное имя поля";
@@ -2059,6 +664,7 @@ App::$strings["Field Name"] = "Имя поля";
App::$strings["Label on profile pages"] = "Метка на странице профиля";
App::$strings["Help text"] = "Текст подсказки";
App::$strings["Additional info (optional)"] = "Дополнительная информация (необязательно)";
+App::$strings["Save"] = "Запомнить";
App::$strings["Field definition not found"] = "Определения поля не найдено";
App::$strings["Edit Profile Field"] = "Редактировать поле профиля";
App::$strings["Profile Fields"] = "Поля профиля";
@@ -2068,54 +674,6 @@ App::$strings["(In addition to basic fields)"] = "(к основым полям)
App::$strings["All available fields"] = "Все доступные поля";
App::$strings["Custom Fields"] = "Настраиваемые поля";
App::$strings["Create Custom Field"] = "Создать настраиваемое поле";
-App::$strings["Queue Statistics"] = "Статистика очереди";
-App::$strings["Total Entries"] = "Всего записей";
-App::$strings["Priority"] = "Приоритет";
-App::$strings["Destination URL"] = "Конечный URL-адрес";
-App::$strings["Mark hub permanently offline"] = "Пометить хаб как постоянно отключенный";
-App::$strings["Empty queue for this hub"] = "Освободить очередь для этого хаба";
-App::$strings["Last known contact"] = "Последний известный контакт";
-App::$strings["Theme settings updated."] = "Настройки темы обновленны.";
-App::$strings["No themes found."] = "Темы не найдены.";
-App::$strings["Screenshot"] = "Снимок экрана";
-App::$strings["Themes"] = "Темы";
-App::$strings["[Experimental]"] = "[экспериментальный]";
-App::$strings["[Unsupported]"] = "[неподдерживаемый]";
-App::$strings["%s account blocked/unblocked"] = array(
- 0 => "%s аккаунт блокирован/разблокирован",
- 1 => "%s аккаунта блокированы/разблокированы",
- 2 => "%s аккаунтов блокированы/разблокированы",
-);
-App::$strings["%s account deleted"] = array(
- 0 => "%s аккаунт удалён",
- 1 => "%s аккаунта удалёны",
- 2 => "%s аккаунтов удалёны",
-);
-App::$strings["Account not found"] = "Аккаунт не найден";
-App::$strings["Account '%s' blocked"] = "Аккаунт '%s' заблокирован";
-App::$strings["Account '%s' unblocked"] = "Аккаунт '%s' разблокирован";
-App::$strings["Registrations waiting for confirm"] = "Регистрации ждут подтверждения";
-App::$strings["Request date"] = "Дата запроса";
-App::$strings["No registrations."] = "Нет новых регистраций.";
-App::$strings["Block"] = "Блокировать";
-App::$strings["Unblock"] = "Разблокировать";
-App::$strings["ID"] = "";
-App::$strings["All Channels"] = "Все каналы";
-App::$strings["Register date"] = "Дата регистрации";
-App::$strings["Last login"] = "Последний вход";
-App::$strings["Expires"] = "Срок действия";
-App::$strings["Service Class"] = "Класс обслуживания";
-App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Выбранные учётные записи будут удалены!\n\nВсё что было ими опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?";
-App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Этот аккаунт {0} будет удалён!\n\nВсё что им было опубликовано на этом сайте будет удалено навсегда!\n\nВы уверены?";
-App::$strings["Update has been marked successful"] = "Обновление было помечено как успешное";
-App::$strings["Executing %s failed. Check system logs."] = "Выполнение %s неудачно. Проверьте системный журнал.";
-App::$strings["Update %s was successfully applied."] = "Обновление %sбыло успешно применено.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Обновление %s не вернуло статус. Неизвестно было ли оно успешным.";
-App::$strings["Update function %s could not be found."] = "Функция обновления %sне может быть найдена.";
-App::$strings["Failed Updates"] = "Обновления с ошибками";
-App::$strings["Mark success (if update was manually applied)"] = "Пометить успешным (если обновление было применено вручную)";
-App::$strings["Attempt to execute this update step automatically"] = "Попытаться применить это обновление автоматически";
-App::$strings["No failed updates."] = "Ошибок обновлений нет.";
App::$strings["Password changed for account %d."] = "Пароль для аккаунта %d изменён.";
App::$strings["Account settings updated."] = "Настройки аккаунта обновлены.";
App::$strings["Account not found."] = "Учётная запись не найдена.";
@@ -2124,6 +682,193 @@ App::$strings["New Password"] = "Новый пароль";
App::$strings["New Password again"] = "Повторите новый пароль";
App::$strings["Account language (for emails)"] = "Язык сообщения для email";
App::$strings["Service class"] = "Класс обслуживания";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "По умолчанию, HTML без фильтрации доступен во встраиваемых медиа. Это небезопасно.";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "Рекомендуется настроить разрешения использовать HTML без фильтрации только для следующих сайтов:";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "се остальные встроенные материалы будут отфильтрованы, <strong>если </strong> встроенное содержимое с этого сайта явно заблокировано.";
+App::$strings["Security"] = "Безопасность";
+App::$strings["Block public"] = "Блокировать публичный доступ";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Установите флажок для блокировки публичного доступа ко всем другим общедоступным страницам на этом сайте, если вы в настоящее время не аутентифицированы.";
+App::$strings["Provide a cloud root directory"] = "Предоставить корневой каталог в облаке";
+App::$strings["The cloud root directory lists all channel names which provide public files"] = "В корневом каталоге облака показываются все имена каналов, которые предоставляют общедоступные файлы";
+App::$strings["Show total disk space available to cloud uploads"] = "Показывать общее доступное для загрузок место в хранилище";
+App::$strings["Set \"Transport Security\" HTTP header"] = "Установить HTTP-заголовок \"Transport Security\"";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "Установить HTTP-заголовок \"Content Security Policy\"";
+App::$strings["Allowed email domains"] = "Разрешённые домены email";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Список разделённых запятыми доменов для которых разрешена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены.";
+App::$strings["Not allowed email domains"] = "Запрещённые домены email";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Список разделённых запятыми доменов для которых запрещена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены до тех пор, пока разрешённые домены не будут указаны.";
+App::$strings["Allow communications only from these sites"] = "Разрешить связь только с этими сайтами";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Один сайт на строку. Оставьте пустым для разрешения взаимодействия без ограничений (по умочанию).";
+App::$strings["Block communications from these sites"] = "Блокировать связь с этими сайтами";
+App::$strings["Allow communications only from these channels"] = "Разрешить связь только для этих каналов";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Один канал (или его хэш) на строку. Оставьте пустым для разрешения взаимодействия с любым каналом (по умолчанию).";
+App::$strings["Block communications from these channels"] = "Блокировать связь с этими каналами";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Разрешать встраивание только для безопасных (SSL/TLS) сайтов и ссылок.";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Разрешить встраивать нефильтруемое HTML-содержимое только для этих доменов";
+App::$strings["One site per line. By default embedded content is filtered."] = "Один сайт на строку. По умолчанию встраиваемое содержимое фильтруется.";
+App::$strings["Block embedded HTML from these domains"] = "Блокировать встраивание HTML-содержимого для этих доменов";
+App::$strings["Remote privacy information not available."] = "Удаленная информация о конфиденциальности недоступна.";
+App::$strings["Visible to:"] = "Видимо для:";
+App::$strings["__ctx:acl__ Profile"] = "Профиль";
+App::$strings["Comment approved"] = "Комментарий одобрен";
+App::$strings["Comment deleted"] = "Комментарий удалён";
+App::$strings["Friends"] = "Друзья";
+App::$strings["Settings updated."] = "Настройки обновлены.";
+App::$strings["Nobody except yourself"] = "Никто кроме вас";
+App::$strings["Only those you specifically allow"] = "Только персонально разрешённые";
+App::$strings["Approved connections"] = "Одобренные контакты";
+App::$strings["Any connections"] = "Любые контакты";
+App::$strings["Anybody on this website"] = "Любой на этом сайте";
+App::$strings["Anybody in this network"] = "Любой в этой сети";
+App::$strings["Anybody authenticated"] = "Любой аутентифицированный";
+App::$strings["Anybody on the internet"] = "Любой в интернете";
+App::$strings["Publish your default profile in the network directory"] = "Публиковать ваш профиль по умолчанию в сетевом каталоге";
+App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Разрешить предлагать вас как потенциального друга для новых пользователей?";
+App::$strings["or"] = "или";
+App::$strings["Your channel address is"] = "Адрес вашего канала";
+App::$strings["Your files/photos are accessible via WebDAV at"] = "Ваши файлы / фотографии доступны через WebDAV по";
+App::$strings["Automatic membership approval"] = "Членство одобрено автоматически";
+App::$strings["If enabled, connection requests will be approved without your interaction"] = "Если включено, запросы контактов будут одобрены без вашего участия";
+App::$strings["Channel Settings"] = "Настройки канала";
+App::$strings["Basic Settings"] = "Основные настройки";
+App::$strings["Full Name:"] = "Полное имя:";
+App::$strings["Email Address:"] = "Адрес email:";
+App::$strings["Your Timezone:"] = "Часовой пояс:";
+App::$strings["Default Post Location:"] = "Расположение по умолчанию:";
+App::$strings["Geographical location to display on your posts"] = "Показывать географическое положение в ваших публикациях";
+App::$strings["Use Browser Location:"] = "Определять расположение из браузера";
+App::$strings["Adult Content"] = "Содержимое для взрослых";
+App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Этот канал часто или регулярно публикует содержимое для взрослых. Пожалуйста, помечайте любой такой материал тегом #NSFW";
+App::$strings["Security and Privacy Settings"] = "Безопасность и настройки приватности";
+App::$strings["Your permissions are already configured. Click to view/adjust"] = "Ваши разрешения уже настроены. Нажмите чтобы просмотреть или изменить";
+App::$strings["Hide my online presence"] = "Скрывать моё присутствие онлайн";
+App::$strings["Prevents displaying in your profile that you are online"] = "Предотвращает отображения статуса \"в сети\" в вашем профиле";
+App::$strings["Simple Privacy Settings:"] = "Простые настройки безопасности:";
+App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Полностью открытый - <em>сверхлиберальный (должен использоваться с осторожностью)</em>";
+App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Обычный - <em>открытый по умолчанию, приватность по желанию (как в социальных сетях, но с улучшенными настройками)</em>";
+App::$strings["Private - <em>default private, never open or public</em>"] = "Частный - <em>частный по умочанию, не открытый и не публичный</em>";
+App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Закрытый - <em>заблокированный по умолчанию от / для всех</em>";
+App::$strings["Allow others to tag your posts"] = "Разрешить другим отмечать ваши публикации";
+App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Часто используется сообществом для маркировки неподобающего содержания";
+App::$strings["Channel Permission Limits"] = "Ограничения разрешений канала";
+App::$strings["Expire other channel content after this many days"] = "Храненить содержимое других каналов, дней";
+App::$strings["0 or blank to use the website limit."] = "0 или пусто - использовать настройки сайта.";
+App::$strings["This website expires after %d days."] = "Срок хранения содержимого этого сайта истекает через %d дней";
+App::$strings["This website does not expire imported content."] = "Срок хранения импортированного содержимого этого сайта не ограничен.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "Ограничение сайта имеет приоритет если ниже вашего значения.";
+App::$strings["Maximum Friend Requests/Day:"] = "Запросов в друзья в день:";
+App::$strings["May reduce spam activity"] = "Может ограничить спам активность";
+App::$strings["Default Privacy Group"] = "Группа конфиденциальности по умолчанию";
+App::$strings["Use my default audience setting for the type of object published"] = "Использовать настройки аудитории по умолчанию для типа опубликованного объекта";
+App::$strings["Default permissions category"] = "Категория разрешений по умолчанию";
+App::$strings["Maximum private messages per day from unknown people:"] = "Максимально количество сообщений от незнакомых людей, в день:";
+App::$strings["Useful to reduce spamming"] = "Полезно для сокращения количества спама";
+App::$strings["Notification Settings"] = "Настройки уведомлений";
+App::$strings["By default post a status message when:"] = "По умолчанию публиковать новый статус при:";
+App::$strings["accepting a friend request"] = "одобрении запроса в друзья";
+App::$strings["joining a forum/community"] = "вступлении в сообщество / форум";
+App::$strings["making an <em>interesting</em> profile change"] = "<em>интересном</em> изменении профиля";
+App::$strings["Send a notification email when:"] = "Отправить уведомление по email когда:";
+App::$strings["You receive a connection request"] = "вы получили новый запрос контакта";
+App::$strings["Your connections are confirmed"] = "Ваш запрос контакта был одобрен";
+App::$strings["Someone writes on your profile wall"] = "Кто-то написал на стене вашего профиля";
+App::$strings["Someone writes a followup comment"] = "Кто-то пишет комментарий";
+App::$strings["You receive a private message"] = "Вы получили личное сообщение";
+App::$strings["You receive a friend suggestion"] = "Вы получили предложение друзей";
+App::$strings["You are tagged in a post"] = "Вы были отмечены в публикации";
+App::$strings["You are poked/prodded/etc. in a post"] = "Вас толкнули, подтолкнули и т.п. в публикации";
+App::$strings["Someone likes your post/comment"] = "Кому-то нравится ваша публикация / комментарий";
+App::$strings["Show visual notifications including:"] = "Показывать визуальные оповещения включая:";
+App::$strings["Unseen stream activity"] = "Невидимая активность в потоке";
+App::$strings["Unseen channel activity"] = "Невидимая активность в канале";
+App::$strings["Unseen private messages"] = "Невидимые личные сообщения";
+App::$strings["Recommended"] = "Рекомендовано";
+App::$strings["Upcoming events"] = "Грядущие события";
+App::$strings["Events today"] = "События сегодня";
+App::$strings["Upcoming birthdays"] = "Грядущие дни рождения";
+App::$strings["Not available in all themes"] = "Не доступно во всех темах";
+App::$strings["System (personal) notifications"] = "Системные (личные) уведомления";
+App::$strings["System info messages"] = "Сообщения с системной информацией";
+App::$strings["System critical alerts"] = "Критические уведомления системы";
+App::$strings["New connections"] = "Новые контакты";
+App::$strings["System Registrations"] = "Системные регистрации";
+App::$strings["Unseen shared files"] = "Невидимые общие файлы";
+App::$strings["Unseen public stream activity"] = "Невидимая активность в публичном потоке";
+App::$strings["Unseen likes and dislikes"] = "Невидимые лайки и дислайки";
+App::$strings["Unseen forum posts"] = "Невидимые публикации на форуме";
+App::$strings["Email notification hub (hostname)"] = "Центр уведомлений по email (имя хоста)";
+App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Если ваш канал зеркалируется в нескольких местах, это ваше предпочтительное местоположение. Это должно предотвратить дублировать уведомлений по email. Например: %s";
+App::$strings["Show new wall posts, private messages and connections under Notices"] = "Показать новые сообщения на стене, личные сообщения и контакты в \"Уведомлениях\"";
+App::$strings["Notify me of events this many days in advance"] = "Уведомлять меня о событиях заранее, дней";
+App::$strings["Must be greater than 0"] = "Должно быть больше 0";
+App::$strings["Advanced Account/Page Type Settings"] = "Дополнительные настройки учётной записи / страницы";
+App::$strings["Change the behaviour of this account for special situations"] = "Изменить поведение этого аккаунта в особых ситуациях";
+App::$strings["Miscellaneous Settings"] = "Дополнительные настройки";
+App::$strings["Default photo upload folder"] = "Каталог загрузки фотографий по умолчанию";
+App::$strings["%Y - current year, %m - current month"] = "%Y - текущий год, %y - текущий месяц";
+App::$strings["Default file upload folder"] = "Каталог загрузки файлов по умолчанию";
+App::$strings["Remove this channel."] = "Удалить этот канал.";
+App::$strings["Additional Features"] = "Дополнительные функции";
+App::$strings["Events Settings"] = "Настройки событий";
+App::$strings["CalDAV Settings"] = "Настройки CalDAV";
+App::$strings["Settings saved."] = "Настройки сохранены.";
+App::$strings["Settings saved. Reload page please."] = "Настройки сохранены. Пожалуйста, перезагрузите страницу.";
+App::$strings["Conversation Settings"] = "Настройки бесед";
+App::$strings["Connections Settings"] = "Настройки контактов";
+App::$strings["Photos Settings"] = "Настройки фотографий";
+App::$strings["Not valid email."] = "Не действительный адрес email.";
+App::$strings["Protected email address. Cannot change to that email."] = "Защищенный адрес электронной почты. Нельзя изменить.";
+App::$strings["System failure storing new email. Please try again."] = "Системная ошибка сохранения email. Пожалуйста попробуйте ещё раз.";
+App::$strings["Password verification failed."] = "Не удалось выполнить проверку пароля.";
+App::$strings["Passwords do not match. Password unchanged."] = "Пароли не совпадают. Пароль не изменён.";
+App::$strings["Empty passwords are not allowed. Password unchanged."] = "Пустые пароли не допускаются. Пароль не изменён.";
+App::$strings["Password changed."] = "Пароль изменен.";
+App::$strings["Password update failed. Please try again."] = "Изменение пароля не удалось. Пожалуйста, попробуйте ещё раз.";
+App::$strings["Account Settings"] = "Настройки аккаунта";
+App::$strings["Current Password"] = "Текущий пароль";
+App::$strings["Enter New Password"] = "Введите новый пароль:";
+App::$strings["Confirm New Password"] = "Подтвердите новый пароль:";
+App::$strings["Leave password fields blank unless changing"] = "Оставьте поля пустыми до измнения";
+App::$strings["Remove Account"] = "Удалить аккаунт";
+App::$strings["Remove this account including all its channels"] = "Удалить этот аккаунт включая все каналы";
+App::$strings["Profiles Settings"] = "Настройки профилей";
+App::$strings["Channel Manager Settings"] = "Настройки менеджера канала";
+App::$strings["No feature settings configured"] = "Параметры функций не настроены";
+App::$strings["Addon Settings"] = "Настройки расширений";
+App::$strings["Please save/submit changes to any panel before opening another."] = "Пожалуйста сохраните / отправьте изменения на панели прежде чем открывать другую.";
+App::$strings["Max height of content (in pixels)"] = "Максимальная высота содержимого (в пикселях)";
+App::$strings["Click to expand content exceeding this height"] = "Нажмите чтобы развернуть содержимое превышающее эту высоту";
+App::$strings["Personal menu to display in your channel pages"] = "Персональное меню для отображения на странице вашего канала";
+App::$strings["Channel Home Settings"] = "Настройки главной страницы канала";
+App::$strings["Directory Settings"] = "Настройки каталога";
+App::$strings["Editor Settings"] = "Настройки редактора";
+App::$strings["%s - (Experimental)"] = "%s - (экспериментальный)";
+App::$strings["Display Settings"] = "Настройки отображения";
+App::$strings["Theme Settings"] = "Настройки темы";
+App::$strings["Custom Theme Settings"] = "Дополнительные настройки темы";
+App::$strings["Content Settings"] = "Настройки содержимого";
+App::$strings["Display Theme:"] = "Тема отображения:";
+App::$strings["Select scheme"] = "Выбрать схему";
+App::$strings["Preload images before rendering the page"] = "Предзагрузка изображений перед обработкой страницы";
+App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "Субъективное время загрузки страницы будет длиннее, но страница будет готова при отображении";
+App::$strings["Enable user zoom on mobile devices"] = "Включить масштабирование на мобильных устройствах";
+App::$strings["Update browser every xx seconds"] = "Обновление браузера каждые N секунд";
+App::$strings["Minimum of 10 seconds, no maximum"] = "Минимум 10 секунд, без максимума";
+App::$strings["Maximum number of conversations to load at any time:"] = "Максимальное количество бесед для загрузки одновременно:";
+App::$strings["Maximum of 100 items"] = "Максимум 100 элементов";
+App::$strings["Show emoticons (smilies) as images"] = "Показывать эмотиконы (смайлики) как изображения";
+App::$strings["Provide channel menu in navigation bar"] = "Показывать меню канала в панели навигации";
+App::$strings["Default: channel menu located in app menu"] = "По умолчанию каналы расположены в меню приложения";
+App::$strings["Manual conversation updates"] = "Обновление бесед вручную";
+App::$strings["Default is on, turning this off may increase screen jumping"] = "Включено по умолчанию, выключение может привести к рывкам в отображении";
+App::$strings["Link post titles to source"] = "Ссылки на источник заголовков публикаций";
+App::$strings["New Member Links"] = "Ссылки для новичков";
+App::$strings["Display new member quick links menu"] = "Показать меню быстрых ссылок для новых участников";
+App::$strings["Stream Settings"] = "Настройки потока";
+App::$strings["View Photo"] = "Посмотреть фотографию";
+App::$strings["Edit Album"] = "Редактировать Фотоальбом";
+App::$strings["Upload"] = "Загрузка";
App::$strings["This channel is limited to %d tokens"] = "Этот канал ограничен %d токенами";
App::$strings["Name and Password are required."] = "Требуются имя и пароль.";
App::$strings["Token saved."] = "Токен сохранён.";
@@ -2136,12 +881,7 @@ App::$strings["Login Name"] = "Имя";
App::$strings["Login Password"] = "Пароль";
App::$strings["Expires (yyyy-mm-dd)"] = "Срок действия (yyyy-mm-dd)";
App::$strings["Their Settings"] = "Их настройки";
-App::$strings["Mark all seen"] = "Отметить как просмотренное";
-App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s отслеживает %2\$s's %3\$s";
-App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s прекратил отслеживать %2\$s's %3\$s";
-App::$strings["Edit post"] = "Редактировать сообщение";
-App::$strings["Page link"] = "Ссылка страницы";
-App::$strings["Edit Webpage"] = "Редактировать веб-страницу";
+App::$strings["Some blurb about what to do when you're new here"] = "Некоторые предложения о том, что делать, если вы здесь новичок ";
App::$strings["Thing updated"] = "Обновлено";
App::$strings["Object store: failed"] = "Хранлищие объектов: неудача";
App::$strings["Thing added"] = "Добавлено";
@@ -2155,43 +895,296 @@ App::$strings["Only sends to viewers of the applicable profile"] = "Отправ
App::$strings["Name of thing e.g. something"] = "Наименование, например \"нечто\"";
App::$strings["URL of thing (optional)"] = "URL (необязательно)";
App::$strings["URL for photo of thing (optional)"] = "URL для фотографии (необязательно)";
+App::$strings["Permissions"] = "Разрешения";
App::$strings["Add Thing to your Profile"] = "Добавить к вашему профилю";
-App::$strings["Welcome to Hubzilla!"] = "Добро пожаловать в Hubzilla!";
-App::$strings["You have got no unseen posts..."] = "У вас нет видимых публикаций...";
-App::$strings["Items tagged with: %s"] = "Объекты помечены как: %s";
-App::$strings["Search results for: %s"] = "Результаты поиска для: %s";
-App::$strings["Notes App"] = "Приложение \"Заметки\"";
-App::$strings["A simple notes app with a widget (note: notes are not encrypted)"] = "Простое приложение для заметок с виджетом (примечание: заметки не зашифрованы)";
-App::$strings["Comment approved"] = "Комментарий одобрен";
-App::$strings["Comment deleted"] = "Комментарий удалён";
-App::$strings["Webpages App"] = "Приложение \"Веб-страницы\"";
-App::$strings["Provide managed web pages on your channel"] = "Предоставлять управляемые веб-страницы на Вашем канале";
-App::$strings["Import Webpage Elements"] = "Импортировать части веб-страницы";
-App::$strings["Import selected"] = "Импортировать выбранное";
-App::$strings["Export Webpage Elements"] = "Экспортировать часть веб-страницы";
-App::$strings["Export selected"] = "Экспортировать выбранное";
-App::$strings["Actions"] = "Действия";
-App::$strings["Page Link"] = "Ссылка страницы";
-App::$strings["Page Title"] = "Заголовок страницы";
-App::$strings["Invalid file type."] = "Неверный тип файла.";
-App::$strings["Error opening zip file"] = "Ошибка открытия ZIP файла";
-App::$strings["Invalid folder path."] = "Неверный путь к каталогу.";
-App::$strings["No webpage elements detected."] = "Не обнаружено частей веб-страницы.";
-App::$strings["Import complete."] = "Импорт завершен.";
-App::$strings["\$Projectname"] = "";
-App::$strings["Welcome to %s"] = "Добро пожаловать в %s";
+App::$strings["No more system notifications."] = "Нет новых оповещений системы.";
+App::$strings["System Notifications"] = "Системные оповещения ";
+App::$strings["Connection added."] = "Контакт добавлен.";
+App::$strings["Your service plan only allows %d channels."] = "Ваш класс обслуживания разрешает только %d каналов.";
+App::$strings["No channel. Import failed."] = "Канала нет. Импорт невозможен.";
+App::$strings["Import completed."] = "Импорт завершен.";
+App::$strings["You must be logged in to use this feature."] = "Вы должны войти в систему, чтобы использовать эту функцию.";
+App::$strings["Import Channel"] = "Импортировать канал";
+App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Используйте эту форм для импорта существующего канала с другого сервера / хаба. Вы можете получить идентификационные данные канала со старого сервера / хаба через сеть или предоставить файл экспорта.";
+App::$strings["Or provide the old server/hub details"] = "или предоставьте данные старого сервера";
+App::$strings["Your old identity address (xyz@example.com)"] = "Ваш старый адрес идентичности (xyz@example.com)";
+App::$strings["Your old login email address"] = "Ваш старый адрес электронной почты";
+App::$strings["Your old login password"] = "Ваш старый пароль";
+App::$strings["Import a few months of posts if possible (limited by available memory"] = "Импортировать несколько месяцев публикаций если возможно (ограничено доступной памятью)";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Для любого варианта, пожалуйста, выберите, следует ли сделать этот хаб вашим новым основным адресом, или ваше прежнее местоположение должно продолжить выполнять эту роль. Вы сможете отправлять сообщения из любого местоположения, но только одно может быть помечено как основное место для файлов, фотографий и мультимедиа.";
+App::$strings["Make this hub my primary location"] = "Сделать этот хаб главным";
+App::$strings["Move this channel (disable all previous locations)"] = "Переместить это канал (отключить все предыдущие месторасположения)";
+App::$strings["Use this channel nickname instead of the one provided"] = "Использовать псевдоним этого канала вместо предоставленного";
+App::$strings["Leave blank to keep your existing channel nickname. You will be randomly assigned a similar nickname if either name is already allocated on this site."] = "Оставьте пустым для сохранения существующего псевдонима канала. Вам будет случайным образом назначен похожий псевдоним если такое имя уже выделено на этом сайте.";
+App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Процесс может занять несколько минут. Пожалуйста, отправьте форму только один раз и оставьте эту страницу открытой до завершения.";
+App::$strings["Authentication failed."] = "Ошибка аутентификации.";
+App::$strings["Remote Authentication"] = "Удаленная аутентификация";
+App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Введите адрес вашего канала (например: channel@example.com)";
+App::$strings["Authenticate"] = "Проверка подлинности";
+App::$strings["Name and Secret are required"] = "Требуются имя и код";
+App::$strings["OAuth2 Apps Manager App"] = "Приложение \"Менеджер Oauth2\"";
+App::$strings["OAuth2 authenticatication tokens for mobile and remote apps"] = "Аутентификация OAuth2 для мобильных и удаленных приложений";
+App::$strings["Add OAuth2 application"] = "Добавить приложение OAuth2";
+App::$strings["Name of application"] = "Название приложения";
+App::$strings["Consumer Secret"] = "Код клиента";
+App::$strings["Automatically generated - change if desired. Max length 20"] = "Сгенерирован автоматические - измените если требуется. Макс. длина 20";
+App::$strings["Redirect"] = "Перенаправление";
+App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI перенаправления - оставьте пустыми до тех пока ваше приложение не требует этого";
+App::$strings["Grant Types"] = "Разрешить типы";
+App::$strings["leave blank unless your application sepcifically requires this"] = "оставьте пустыми до тех пока ваше приложение не требует этого";
+App::$strings["Authorization scope"] = "Область полномочий";
+App::$strings["OAuth2 Application not found."] = "Приложение OAuth2 не найдено.";
+App::$strings["Add application"] = "Добавить приложение";
+App::$strings["leave blank unless your application specifically requires this"] = "оставьте поле пустым, если ваше приложение не требует этого";
+App::$strings["Connected OAuth2 Apps"] = "Подключённые приложения OAuth2";
+App::$strings["Client key starts with"] = "Ключ клиента начинается с";
+App::$strings["No name"] = "Без названия";
+App::$strings["Remove authorization"] = "Удалить разрешение";
+App::$strings["Permissions denied."] = "Доступ запрещен.";
+App::$strings["Import"] = "Импортировать";
+App::$strings["Authorize application connection"] = "Авторизовать подключение приложения";
+App::$strings["Return to your app and insert this Security Code:"] = "Вернитесь к своему приложению и вставьте этот код безопасности:";
+App::$strings["Please login to continue."] = "Пожалуйста, войдите, чтобы продолжить.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Вы хотите авторизовать это приложение для доступа к вашим публикациям и контактам и / или созданию новых публикаций?";
+App::$strings["Item not available."] = "Элемент недоступен.";
+App::$strings["Random Channel App"] = "Приложение \"Случайный канал\"";
+App::$strings["Visit a random channel in the \$Projectname network"] = "Посещение случайного канала в сети \$Projectname";
+App::$strings["Edit Block"] = "Редактировать блок";
+App::$strings["vcard"] = "vCard";
+App::$strings["Available Apps"] = "Доступные приложения";
+App::$strings["Installed Apps"] = "Установленные приложения";
+App::$strings["Manage Apps"] = "Управление приложениями";
+App::$strings["Create Custom App"] = "Создать пользовательское приложение";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s в %2\$s";
+App::$strings["Mood App"] = "Приложение \"Настроение\"";
+App::$strings["Set your current mood and tell your friends"] = "Установить текущее настроение и рассказать друзьям";
+App::$strings["Mood"] = "Настроение";
+App::$strings["Active"] = "Активен";
+App::$strings["Blocked"] = "Заблокирован";
+App::$strings["Ignored"] = "Игнорируется";
+App::$strings["Hidden"] = "Скрыт";
+App::$strings["Archived/Unreachable"] = "Заархивировано / недоступно";
+App::$strings["New"] = "Новые";
+App::$strings["All"] = "Все";
+App::$strings["Active Connections"] = "Активные контакты";
+App::$strings["Show active connections"] = "Показать активные контакты";
+App::$strings["New Connections"] = "Новые контакты";
+App::$strings["Show pending (new) connections"] = "Просмотр (новых) ожидающих контактов";
+App::$strings["Only show blocked connections"] = "Показать только заблокированные контакты";
+App::$strings["Only show ignored connections"] = "Показать только проигнорированные контакты";
+App::$strings["Only show archived/unreachable connections"] = "Показать только заархивированные / недоступные контакты";
+App::$strings["Only show hidden connections"] = "Показать только скрытые контакты";
+App::$strings["Show all connections"] = "Просмотр всех контактов";
+App::$strings["Pending approval"] = "Ожидающие подтверждения";
+App::$strings["Archived"] = "Зархивирован";
+App::$strings["Not connected at this location"] = "Не подключено в этом месте";
+App::$strings["%1\$s [%2\$s]"] = "";
+App::$strings["Edit connection"] = "Редактировать контакт";
+App::$strings["Delete connection"] = "Удалить контакт";
+App::$strings["Channel address"] = "Адрес канала";
+App::$strings["Network"] = "Сеть";
+App::$strings["Call"] = "Вызов";
+App::$strings["Status"] = "Статус";
+App::$strings["Connected"] = "Подключено";
+App::$strings["Approve connection"] = "Утвердить контакт";
+App::$strings["Ignore connection"] = "Игнорировать контакт";
+App::$strings["Ignore"] = "Игнорировать";
+App::$strings["Recent activity"] = "Последние действия";
+App::$strings["Connections"] = "Контакты";
+App::$strings["Search your connections"] = "Поиск ваших контактов";
+App::$strings["Connections search"] = "Поиск контаков";
+App::$strings["Find"] = "Поиск";
+App::$strings["item"] = "пункт";
+App::$strings["Bookmark added"] = "Закладка добавлена";
+App::$strings["Bookmarks App"] = "Приложение \"Закладки\"";
+App::$strings["Bookmark links from posts and manage them"] = "Поместить ссылки из публикации в закладки и управлять ими";
+App::$strings["My Bookmarks"] = "Мои закладки";
+App::$strings["My Connections Bookmarks"] = "Закладки моих контактов";
+App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Удаление канала не разрешается в течении 48 часов после смены пароля у аккаунта.";
+App::$strings["Remove This Account"] = "Удалить этот аккаунт";
+App::$strings["This account and all its channels will be completely removed from the network. "] = "Этот аккаунт и все его каналы будут полностью удалены из сети.";
+App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Удалить этот аккаунт, все его каналы и их клоны из сети.";
+App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "По умолчанию только представление канала расположенное на данном хабе будет удалено из сети";
+App::$strings["Page owner information could not be retrieved."] = "Информация о владельце страницы не может быть получена.";
+App::$strings["Album not found."] = "Альбом не найден.";
+App::$strings["Delete Album"] = "Удалить альбом";
+App::$strings["Delete Photo"] = "Удалить фотографию";
+App::$strings["No photos selected"] = "Никакие фотографии не выбраны";
+App::$strings["Access to this item is restricted."] = "Доступ к этому элементу ограничен.";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Вы использовали %1$.2f мегабайт из %2$.2f для хранения фото.";
+App::$strings["%1$.2f MB photo storage used."] = "Вы использовали %1$.2f мегабайт для хранения фото.";
+App::$strings["Upload Photos"] = "Загрузить фотографии";
+App::$strings["Enter an album name"] = "Введите название альбома";
+App::$strings["or select an existing album (doubleclick)"] = "или выберите существующий альбом (двойной щелчок)";
+App::$strings["Create a status post for this upload"] = "Сделать публикацию о статусе для этой загрузки";
+App::$strings["Description (optional)"] = "Описание (необязательно)";
+App::$strings["Show Newest First"] = "Показать новые первыми";
+App::$strings["Show Oldest First"] = "Показать старые первыми";
+App::$strings["Add Photos"] = "Добавить фотографии";
+App::$strings["Permission denied. Access to this item may be restricted."] = "Доступ запрещен. Доступ к этому элементу может быть ограничен.";
+App::$strings["Photo not available"] = "Фотография не доступна";
+App::$strings["Use as profile photo"] = "Использовать в качестве фотографии профиля";
+App::$strings["Use as cover photo"] = "Использовать в качестве фотографии обложки";
+App::$strings["Private Photo"] = "Личная фотография";
+App::$strings["View Full Size"] = "Посмотреть в полный размер";
+App::$strings["Edit photo"] = "Редактировать фотографию";
+App::$strings["Rotate CW (right)"] = "Повернуть CW (направо)";
+App::$strings["Rotate CCW (left)"] = "Повернуть CCW (налево)";
+App::$strings["Move photo to album"] = "Переместить фотографию в альбом";
+App::$strings["Enter a new album name"] = "Введите новое название альбома";
+App::$strings["or select an existing one (doubleclick)"] = "или выбрать существующую (двойной щелчок)";
+App::$strings["Add a Tag"] = "Добавить тег";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Пример: @bob, @Barbara_Jensen, @jim@example.com";
+App::$strings["Flag as adult in album view"] = "Пометить как альбом \"для взрослых\"";
+App::$strings["I like this (toggle)"] = "мне это нравится (переключение)";
+App::$strings["I don't like this (toggle)"] = "мне это не нравится (переключение)";
+App::$strings["Please wait"] = "Подождите пожалуйста";
+App::$strings["This is you"] = "Это вы";
+App::$strings["Comment"] = "Комментарий";
+App::$strings["__ctx:title__ Likes"] = "Нравится";
+App::$strings["__ctx:title__ Dislikes"] = "Не нравится";
+App::$strings["__ctx:title__ Agree"] = "Согласен";
+App::$strings["__ctx:title__ Disagree"] = "Не согласен";
+App::$strings["__ctx:title__ Abstain"] = "Воздержался";
+App::$strings["__ctx:title__ Attending"] = "Посещаю";
+App::$strings["__ctx:title__ Not attending"] = "Не посещаю";
+App::$strings["__ctx:title__ Might attend"] = "Возможно посещу";
+App::$strings["View all"] = "Просмотреть все";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "Нравится",
+ 1 => "Нравится",
+ 2 => "Нравится",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Не нравится",
+ 1 => "Не нравится",
+ 2 => "Не нравится",
+);
+App::$strings["Photo Tools"] = "Фото-Инструменты";
+App::$strings["In This Photo:"] = "На этой фотографии:";
+App::$strings["Map"] = "Карта";
+App::$strings["__ctx:noun__ Likes"] = "Нравится";
+App::$strings["__ctx:noun__ Dislikes"] = "Не нравится";
+App::$strings["Close"] = "Закрыть";
+App::$strings["Recent Photos"] = "Последние фотографии";
+App::$strings["Profile Unavailable."] = "Профиль недоступен.";
+App::$strings["Wiki App"] = "Приложение \"Wiki\"";
+App::$strings["Provide a wiki for your channel"] = "Предоставьте Wiki для вашего канала";
+App::$strings["Invalid channel"] = "Недействительный канал";
+App::$strings["Error retrieving wiki"] = "Ошибка при получении Wiki";
+App::$strings["Error creating zip file export folder"] = "Ошибка при создании zip-файла при экспорте каталога";
+App::$strings["Error downloading wiki: "] = "Ошибка загрузки Wiki:";
+App::$strings["Wikis"] = "";
+App::$strings["Download"] = "Загрузить";
+App::$strings["Create New"] = "Создать новый";
+App::$strings["Wiki name"] = "Название Wiki";
+App::$strings["Content type"] = "Тип содержимого";
+App::$strings["Markdown"] = "Разметка Markdown";
+App::$strings["BBcode"] = "";
+App::$strings["Text"] = "Текст";
+App::$strings["Type"] = "Тип";
+App::$strings["Any&nbsp;type"] = "Любой&nbsp;тип";
+App::$strings["Lock content type"] = "Зафиксировать тип содержимого";
+App::$strings["Create a status post for this wiki"] = "Создать публикацию о статусе этой Wiki";
+App::$strings["Edit Wiki Name"] = "Редактировать наименование Wiki";
+App::$strings["Wiki not found"] = "Wiki не найдена";
+App::$strings["Rename page"] = "Переименовать страницу";
+App::$strings["Error retrieving page content"] = "Ошибка при получении содержимого страницы";
+App::$strings["New page"] = "Новая страница";
+App::$strings["Revision Comparison"] = "Сравнение ревизий";
+App::$strings["Revert"] = "Отменить";
+App::$strings["Short description of your changes (optional)"] = "Краткое описание ваших изменений (необязательно)";
+App::$strings["Source"] = "Источник";
+App::$strings["New page name"] = "Новое имя страницы";
+App::$strings["Embed image from photo albums"] = "Встроить изображение из фотоальбома";
+App::$strings["Embed an image from your albums"] = "Встроить изображение из ваших альбомов";
+App::$strings["OK"] = "";
+App::$strings["Choose images to embed"] = "Выбрать изображения для встраивания";
+App::$strings["Choose an album"] = "Выбрать альбом";
+App::$strings["Choose a different album"] = "Выбрать другой альбом";
+App::$strings["Error getting album list"] = "Ошибка получения списка альбомов";
+App::$strings["Error getting photo link"] = "Ошибка получения ссылки на фотографию";
+App::$strings["Error getting album"] = "Ошибка получения альбома";
+App::$strings["History"] = "История";
+App::$strings["Error creating wiki. Invalid name."] = "Ошибка создания Wiki. Неверное имя.";
+App::$strings["A wiki with this name already exists."] = "Wiki с таким именем уже существует.";
+App::$strings["Wiki created, but error creating Home page."] = "Wiki создана, но возникла ошибка при создании домашней страницы";
+App::$strings["Error creating wiki"] = "Ошибка при создании Wiki";
+App::$strings["Error updating wiki. Invalid name."] = "Ошибка при обновлении Wiki. Неверное имя.";
+App::$strings["Error updating wiki"] = "Ошибка при обновлении Wiki";
+App::$strings["Wiki delete permission denied."] = "Нет прав на удаление Wiki.";
+App::$strings["Error deleting wiki"] = "Ошибка удаления Wiki";
+App::$strings["New page created"] = "Создана новая страница";
+App::$strings["Cannot delete Home"] = "Невозможно удалить домашнюю страницу";
+App::$strings["Current Revision"] = "Текущая ревизия";
+App::$strings["Selected Revision"] = "Выбранная ревизия";
+App::$strings["You must be authenticated."] = "Вы должны быть аутентифицированы.";
+App::$strings["&#x1f501; Repeated %1\$s's %2\$s"] = "&#x1f501; Повторил %1\$s %2\$s";
+App::$strings["Post repeated"] = "Публикация повторяется";
+App::$strings["toggle full screen mode"] = "переключение полноэкранного режима";
+App::$strings["Layout updated."] = "Шаблон обновлен.";
+App::$strings["PDL Editor App"] = "Приложение \"Редактор PDL\"";
+App::$strings["Provides the ability to edit system page layouts"] = "Предоставляет возможность редактировать макеты системных страниц";
+App::$strings["Edit System Page Description"] = "Редактировать описание системной страницы";
+App::$strings["(modified)"] = "(изменено)";
+App::$strings["Reset"] = "Сбросить";
+App::$strings["Layout not found."] = "Шаблон не найден.";
+App::$strings["Module Name:"] = "Имя модуля:";
+App::$strings["Layout Help"] = "Помощь к шаблону";
+App::$strings["Edit another layout"] = "Редактировать другой шаблон";
+App::$strings["System layout"] = "Системный шаблон";
+App::$strings["Poke App"] = "Приложение \"Ткнуть\"";
+App::$strings["Poke somebody in your addressbook"] = "Ткнуть кого-нибудь в вашей адресной книге";
+App::$strings["Poke"] = "Ткнуть";
+App::$strings["Poke somebody"] = "Ткнуть кого-нибудь";
+App::$strings["Poke/Prod"] = "Толкнуть / подтолкнуть";
+App::$strings["Poke, prod or do other things to somebody"] = "Толкнуть, подтолкнуть или сделать что-то ещё с кем-то";
+App::$strings["Recipient"] = "Получатель";
+App::$strings["Choose what you wish to do to recipient"] = "Выбрать что вы хотите сделать с получателем";
+App::$strings["Make this post private"] = "Сделать эту публикацию приватной";
+App::$strings["Image uploaded but image cropping failed."] = "Изображение загружено но обрезка не удалась.";
+App::$strings["Profile Photos"] = "Фотографии профиля";
+App::$strings["Image resize failed."] = "Не удалось изменить размер изображения.";
App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Если новая фотография не отображается немедленно то нажмите Shift + \"Обновить\" для очистки кэша браузера";
+App::$strings["Unable to process image"] = "Не удается обработать изображение";
+App::$strings["Image upload failed."] = "Загрузка изображения не удалась.";
+App::$strings["Unable to process image."] = "Невозможно обработать изображение.";
+App::$strings["Photo not available."] = "Фотография недоступна.";
App::$strings["Your default profile photo is visible to anybody on the internet. Profile photos for alternate profiles will inherit the permissions of the profile"] = "Фотография вашего профиля по умолчанию видна всем в Интернете. Фотографияпрофиля для альтернативных профилей наследуют разрешения текущего профиля";
App::$strings["Your profile photo is visible to anybody on the internet and may be distributed to other websites."] = "Фотография вашего профиля видна всем в Интернете и может быть отправлена на другие сайты.";
+App::$strings["Upload File:"] = "Загрузить файл:";
+App::$strings["Select a profile:"] = "Выбрать профиль:";
App::$strings["Use Photo for Profile"] = "Использовать фотографию для профиля";
App::$strings["Change Profile Photo"] = "Изменить фотографию профиля";
App::$strings["Use"] = "Использовать";
-App::$strings["Select a bookmark folder"] = "Выбрать каталог для закладок";
-App::$strings["Save Bookmark"] = "Сохранить закладку";
-App::$strings["URL of bookmark"] = "URL закладки";
-App::$strings["Or enter new bookmark folder name"] = "или введите новое имя каталога закладок";
-App::$strings["Connection added."] = "Контакт добавлен.";
-App::$strings["Item is not editable"] = "Элемент нельзя редактировать";
+App::$strings["Use a photo from your albums"] = "Использовать фотографию из ваших альбомов";
+App::$strings["Select existing photo"] = "Выбрать существующую фотографию";
+App::$strings["Crop Image"] = "Обрезать изображение";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Пожалуйста настройте обрезку изображения для оптимального просмотра.";
+App::$strings["Done Editing"] = "Закончить редактирование";
+App::$strings["Away"] = "Нет на месте";
+App::$strings["Online"] = "В сети";
+App::$strings["Unable to locate original post."] = "Не удалось найти оригинальную публикацию.";
+App::$strings["Empty post discarded."] = "Пустая публикация отклонена.";
+App::$strings["Duplicate post suppressed."] = "Подавлена дублирующаяся публикация.";
+App::$strings["System error. Post not saved."] = "Системная ошибка. Публикация не сохранена.";
+App::$strings["Your comment is awaiting approval."] = "Ваш комментарий ожидает одобрения.";
+App::$strings["Unable to obtain post information from database."] = "Невозможно получить информацию о публикации из базы данных";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "Вы достигли вашего ограничения в %1$.0f публикаций высокого уровня.";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "Вы достигли вашего ограничения в %1$.0f страниц.";
+App::$strings["sent you a private message"] = "отправил вам личное сообщение";
+App::$strings["added your channel"] = "добавил ваш канал";
+App::$strings["requires approval"] = "Требуется подтверждение";
+App::$strings["g A l F d"] = "g A l F d";
+App::$strings["[today]"] = "[сегодня]";
+App::$strings["posted an event"] = "событие опубликовано";
+App::$strings["shared a file with you"] = "с вами поделились файлом";
+App::$strings["Private forum"] = "Частный форум";
+App::$strings["Public forum"] = "Публичный форум";
+App::$strings["Invalid item."] = "Недействительный элемент.";
+App::$strings["Page not found."] = "Страница не найдена.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "";
+App::$strings["Could not access contact record."] = "Не удалось получить доступ к записи контакта.";
App::$strings["Could not locate selected profile."] = "Не удалось обнаружить выбранный профиль.";
App::$strings["Connection updated."] = "Контакты обновлены.";
App::$strings["Failed to update connection record."] = "Не удалось обновить запись контакта.";
@@ -2200,16 +1193,17 @@ App::$strings["Could not access address book record."] = "Не удалось п
App::$strings["Refresh failed - channel is currently unavailable."] = "Обновление невозможно - в настоящее время канал недоступен.";
App::$strings["Unable to set address book parameters."] = "Не удалось получить доступ к параметрам адресной книги.";
App::$strings["Connection has been removed."] = "Контакт был удалён.";
+App::$strings["View Profile"] = "Просмотреть профиль";
App::$strings["View %s's profile"] = "Просмотр %s профиля";
App::$strings["Refresh Permissions"] = "Обновить разрешения";
App::$strings["Fetch updated permissions"] = "Получить обновлённые разрешения";
App::$strings["Refresh Photo"] = "Обновить фотографию";
App::$strings["Fetch updated photo"] = "Получить обновлённую фотографию";
+App::$strings["Recent Activity"] = "Последние действия";
App::$strings["View recent posts and comments"] = "Просмотреть последние публикации и комментарии";
App::$strings["Block (or Unblock) all communications with this connection"] = "Блокировать (или разблокировать) связи с этим контактом";
App::$strings["This connection is blocked!"] = "Этот контакт заблокирован!";
App::$strings["Unignore"] = "Не игнорировать";
-App::$strings["Ignore"] = "Игнорировать";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Игнорировать (или не игнорировать) все связи для этого контакта";
App::$strings["This connection is ignored!"] = "Этот контакт игнорируется!";
App::$strings["Unarchive"] = "Разархивировать";
@@ -2229,7 +1223,6 @@ App::$strings["Open Set Affinity section by default"] = "Открыть секц
App::$strings["Me"] = "Я";
App::$strings["Family"] = "Семья";
App::$strings["Acquaintances"] = "Знакомые";
-App::$strings["All"] = "Все";
App::$strings["Filter"] = "Фильтр";
App::$strings["Open Custom Filter section by default"] = "Открывать секцию \"Настраиваемый фильтр\" по умолчанию";
App::$strings["Approve this connection"] = "Утвердить этот контакт";
@@ -2241,11 +1234,18 @@ App::$strings["This connection is unreachable from this location."] = "Этот
App::$strings["This connection may be unreachable from other channel locations."] = "Этот контакт может быть недоступен из других мест размещения канала";
App::$strings["Location independence is not supported by their network."] = "Независимое местоположение не поддерживается их сетью.";
App::$strings["This connection is unreachable from this location. Location independence is not supported by their network."] = "Этот контакт недоступен из данного местоположения. Независимое местоположение не поддерживается их сетью.";
+App::$strings["Connection Default Permissions"] = "Разрешения по умолчанию для контакта";
+App::$strings["Connection: %s"] = "Контакт: %s";
+App::$strings["Apply these permissions automatically"] = "Применить эти разрешения автоматически";
App::$strings["Connection requests will be approved without your interaction"] = "Запросы контактов будут одобрены без вашего участия";
+App::$strings["Permission role"] = "Роль разрешения";
+App::$strings["Add permission role"] = "Добавить роль разрешения";
App::$strings["This connection's primary address is"] = "Главный адрес это контакта";
App::$strings["Available locations:"] = "Доступные расположения:";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Разрешения, указанные на этой странице, будут применяться ко всем новым соединениям.";
App::$strings["Connection Tools"] = "Инструменты контактов";
App::$strings["Slide to adjust your degree of friendship"] = "Прокрутить для настройки степени дружбы";
+App::$strings["Rating"] = "Оценка";
App::$strings["Slide to adjust your rating"] = "Прокрутить для настройки оценки";
App::$strings["Optionally explain your rating"] = "Объясните свою оценку (не обязательно)";
App::$strings["Custom Filter"] = "Настраиваемый фильтр";
@@ -2257,14 +1257,99 @@ App::$strings["Please choose the profile you would like to display to %s when vi
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Некоторые разрешения могут быть унаследованы из <a href=\"settings\"><strong>настроек приватности</strong></a> вашего канала, которые могут иметь более высокий приоритет чем индивидуальные. Вы можете изменить эти настройки, однако они не будут применены до изменения переданных по наследству настроек.";
App::$strings["Last update:"] = "Последнее обновление:";
App::$strings["Details"] = "Сведения";
+App::$strings["Chatrooms App"] = "Приложение \"Мои чаты\"";
+App::$strings["Access Controlled Chatrooms"] = "Получить доступ к контролируемым чатам";
+App::$strings["Room not found"] = "Комната не найдена";
+App::$strings["Leave Room"] = "Покинуть комнату";
+App::$strings["Delete Room"] = "Удалить комнату";
+App::$strings["I am away right now"] = "Я сейчас отошёл";
+App::$strings["I am online"] = "Я на связи";
+App::$strings["Bookmark this room"] = "Запомнить эту комнату";
+App::$strings["Please enter a link URL:"] = "Пожалуйста введите URL ссылки:";
+App::$strings["Encrypt text"] = "Зашифровать текст";
+App::$strings["New Chatroom"] = "Новый чат";
+App::$strings["Chatroom name"] = "Название чата";
+App::$strings["Expiration of chats (minutes)"] = "Завершение чатов (минут)";
+App::$strings["%1\$s's Chatrooms"] = "Чаты пользователя %1\$s";
+App::$strings["No chatrooms available"] = "Нет доступных чатов";
+App::$strings["Expiration"] = "Срок действия";
+App::$strings["min"] = "мин.";
+App::$strings["Photos"] = "Фотографии";
+App::$strings["Files"] = "Файлы";
+App::$strings["Unable to update menu."] = "Невозможно обновить меню.";
+App::$strings["Unable to create menu."] = "Невозможно создать меню.";
+App::$strings["Menu Name"] = "Название меню";
+App::$strings["Unique name (not visible on webpage) - required"] = "Уникальное название (не видимо на странице) - требуется";
+App::$strings["Menu Title"] = "Заголовок меню";
+App::$strings["Visible on webpage - leave empty for no title"] = "Видимость на странице - оставьте пустым если не хотите иметь заголовок";
+App::$strings["Allow Bookmarks"] = "Разрешить закладки";
+App::$strings["Menu may be used to store saved bookmarks"] = "Меню может использоваться, чтобы сохранить закладки";
+App::$strings["Submit and proceed"] = "Отправить и обработать";
+App::$strings["Menus"] = "Меню";
+App::$strings["Bookmarks allowed"] = "Закладки разрешены";
+App::$strings["Delete this menu"] = "Удалить это меню";
+App::$strings["Edit menu contents"] = "Редактировать содержание меню";
+App::$strings["Edit this menu"] = "Редактировать это меню";
+App::$strings["Menu could not be deleted."] = "Меню не может быть удалено.";
+App::$strings["Edit Menu"] = "Редактировать меню";
+App::$strings["Add or remove entries to this menu"] = "Добавить или удалить пункты этого меню";
+App::$strings["Menu name"] = "Название меню";
+App::$strings["Must be unique, only seen by you"] = "Должно быть уникальным (видно только вам)";
+App::$strings["Menu title"] = "Заголовок меню";
+App::$strings["Menu title as seen by others"] = "Видимый другими заголовок меню";
+App::$strings["Allow bookmarks"] = "Разрешить закладки";
+App::$strings["Layouts"] = "Шаблоны";
+App::$strings["Help"] = "Помощь";
+App::$strings["Comanche page description language help"] = "Помощь по языку описания страниц Comanche ";
+App::$strings["Layout Description"] = "Описание шаблона";
+App::$strings["Download PDL file"] = "Загрузить PDL файл";
+App::$strings["Notes App"] = "Приложение \"Заметки\"";
+App::$strings["A simple notes app with a widget (note: notes are not encrypted)"] = "Простое приложение для заметок с виджетом (примечание: заметки не зашифрованы)";
+App::$strings["Not found"] = "Не найдено.";
+App::$strings["Please refresh page"] = "Пожалуйста обновите страницу";
+App::$strings["Unknown error"] = "Неизвестная ошибка";
+App::$strings["Token verification failed."] = "Не удалось выполнить проверку токена.";
+App::$strings["Email Verification Required"] = "Требуется проверка адреса email";
+App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "Проверочный токен был отправлен на ваш адрес электронной почты [%s]. Введите этот токен здесь для завершения этапа проверки учётной записи. Пожалуйста, подождите несколько минут для завершения доставки и проверьте вашу папку \"Спам\" если вы не видите письма.";
+App::$strings["Resend Email"] = "Выслать повторно";
+App::$strings["Validation token"] = "Проверочный токен";
+App::$strings["Post not found."] = "Публикация не найдена";
+App::$strings["post"] = "публикация";
+App::$strings["comment"] = "комментарий";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s отметил тегом %2\$s %3\$s с %4\$s";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Этот параметр требует специальной обработки и редактирования и был заблокирован.";
+App::$strings["Configuration Editor"] = "Редактор конфигурации";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Предупреждение. Изменение некоторых настроек может привести к неработоспособности вашего канала. Пожалуйста, покиньте эту страницу, если вы точно не значете, как правильно использовать эту функцию.";
+App::$strings["Affinity Tool settings updated."] = "Настройки степени сходства обновлены.";
+App::$strings["This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream."] = "Это приложение представляет управление ползунком на странице контактов и сетевом потоке, который позволяет выбирать вашу степень дружбы (сходства). Это позволяет вам увеличивать или уменьшать масштаб и отображать разговоры только от ваших самых близких друзей или всех в вашем потоке.";
+App::$strings["Affinity Tool App"] = "Приложение \"Степень сходства\"";
+App::$strings["The numbers below represent the minimum and maximum slider default positions for your network/stream page as a percentage."] = "Числа ниже представляют минимальное и максимальное значение по умолчанию для вашей сети / потока в процентах.";
+App::$strings["Default maximum affinity level"] = "Максимальная степень сходства по умолчанию.";
+App::$strings["0-99 default 99"] = "0-99 (по умолчанию 99)";
+App::$strings["Default minimum affinity level"] = "Максимальная степень сходства по умолчанию.";
+App::$strings["0-99 - default 0"] = "0-99 (по умолчанию 0)";
+App::$strings["Persistent affinity levels"] = "Устоявшиеся степени сходства";
+App::$strings["If disabled the max and min levels will be reset to default after page reload"] = "Если этот параметр отключен, максимальный и минимальный уровни будут сброшены к значениям по умолчанию после перезагрузки страницы";
+App::$strings["Affinity Tool Settings"] = "Настройки степени сходства";
+App::$strings["Default Permissions App"] = "Приложение \"Разрешения по умолчанию\"";
+App::$strings["Set custom default permissions for new connections"] = "Настройка пользовательских разрешений по умолчанию для новых подключений ";
+App::$strings["Automatic approval settings"] = "Настройки автоматического одобрения";
+App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Некоторые индивидуальные разрешения могут быть предустановлены или заблокированы на основании типа вашего канала и настроек приватности.";
+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["Add Group"] = "Добавить группу";
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";
@@ -2273,137 +1358,93 @@ App::$strings["Delete Group"] = "Удалить группу";
App::$strings["Group members"] = "Члены группы";
App::$strings["Not in this group"] = "Не в этой группе";
App::$strings["Click a channel to toggle membership"] = "Нажмите на канал для просмотра членства";
-App::$strings["Active"] = "Активен";
-App::$strings["Blocked"] = "Заблокирован";
-App::$strings["Ignored"] = "Игнорируется";
-App::$strings["Hidden"] = "Скрыт";
-App::$strings["Archived/Unreachable"] = "Заархивировано / недоступно";
-App::$strings["Active Connections"] = "Активные контакты";
-App::$strings["Show active connections"] = "Показать активные контакты";
-App::$strings["New Connections"] = "Новые контакты";
-App::$strings["Show pending (new) connections"] = "Просмотр (новых) ожидающих контактов";
-App::$strings["Only show blocked connections"] = "Показать только заблокированные контакты";
-App::$strings["Only show ignored connections"] = "Показать только проигнорированные контакты";
-App::$strings["Only show archived/unreachable connections"] = "Показать только заархивированные / недоступные контакты";
-App::$strings["Only show hidden connections"] = "Показать только скрытые контакты";
-App::$strings["Show all connections"] = "Просмотр всех контактов";
-App::$strings["Pending approval"] = "Ожидающие подтверждения";
-App::$strings["Archived"] = "Зархивирован";
-App::$strings["Not connected at this location"] = "Не подключено в этом месте";
-App::$strings["%1\$s [%2\$s]"] = "";
-App::$strings["Edit connection"] = "Редактировать контакт";
-App::$strings["Delete connection"] = "Удалить контакт";
-App::$strings["Channel address"] = "Адрес канала";
-App::$strings["Call"] = "Вызов";
-App::$strings["Status"] = "Статус";
-App::$strings["Connected"] = "Подключено";
-App::$strings["Approve connection"] = "Утвердить контакт";
-App::$strings["Ignore connection"] = "Игнорировать контакт";
-App::$strings["Recent activity"] = "Последние действия";
-App::$strings["Search your connections"] = "Поиск ваших контактов";
-App::$strings["Connections search"] = "Поиск контаков";
-App::$strings["Mood App"] = "Приложение \"Настроение\"";
-App::$strings["Set your current mood and tell your friends"] = "Установить текущее настроение и рассказать друзьям";
-App::$strings["Mood"] = "Настроение";
-App::$strings["Edit Card"] = "Редактировать карточку";
-App::$strings["Edit Article"] = "Редактировать статью";
-App::$strings["Language App"] = "Приложение \"Язык\"";
-App::$strings["Change UI language"] = "Изменить язык интерфейса";
-App::$strings["Block Title"] = "Заблокировать заголовок";
-App::$strings["Random Channel App"] = "Приложение \"Случайный канал\"";
-App::$strings["Visit a random channel in the \$Projectname network"] = "Посещение случайного канала в сети \$Projectname";
-App::$strings["Total invitation limit exceeded."] = "Превышено общее количество приглашений.";
-App::$strings["%s : Not a valid email address."] = "%s : Недействительный адрес электронной почты.";
-App::$strings["Please join us on \$Projectname"] = "Присоединятесь к \$Projectname !";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Превышен лимит приглашений. Пожалуйста, свяжитесь с администрацией сайта.";
-App::$strings["%s : Message delivery failed."] = "%s : Доставка сообщения не удалась.";
-App::$strings["%d message sent."] = array(
- 0 => "%d сообщение отправлено.",
- 1 => "%d сообщения отправлено.",
- 2 => "%d сообщений отправлено.",
-);
-App::$strings["Invite App"] = "Приложение \"Пригласить\"";
-App::$strings["Send email invitations to join this network"] = "Отправить приглашение присоединиться к этой сети по электронной почте";
-App::$strings["You have no more invitations available"] = "У вас больше нет приглашений";
-App::$strings["Send invitations"] = "Отправить приглашение";
-App::$strings["Enter email addresses, one per line:"] = "Введите адреса электронной почты, по одному в строке:";
-App::$strings["Please join my community on \$Projectname."] = "Присоединятесь к нашему сообществу \$Projectname !";
-App::$strings["You will need to supply this invitation code:"] = "Вам нужно предоставит этот код приглашения:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Зарегистрируйтесь на любом из серверов \$Projectname";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Введите сетевой адрес \$Projectname в поисковой строке сайта";
-App::$strings["or visit"] = "или посетите";
-App::$strings["3. Click [Connect]"] = "Нажать [Подключиться]";
-App::$strings["Articles App"] = "Приложение \"Статьи\"";
-App::$strings["Create interactive articles"] = "Создать интерактивные статьи";
-App::$strings["Add Article"] = "Добавить статью";
-App::$strings["Continue"] = "Продолжить";
-App::$strings["Premium Channel App"] = "Приложение \"Премиальный канал\"";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Позволяет установить ограничения и условия для подключающихся к вашему каналу";
-App::$strings["Premium Channel Setup"] = "Установка премиального канала";
-App::$strings["Enable premium channel connection restrictions"] = "Включить ограничения для премиального канала";
-App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Пожалуйста введите ваши ограничения или условия, такие, как оплата PayPal, правила использования и т.п.";
-App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Этот канал до подключения может требовать дополнительных шагов или подтверждений следующих условий:";
-App::$strings["Potential connections will then see the following text before proceeding:"] = "Потенциальные соединения будут видеть следующий предварительный текст:";
-App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Продолжая, я подтверждаю что я выполнил все условия представленные на данной странице.";
-App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Владельцем канала не было представлено никаких специальных инструкций.)";
-App::$strings["Restricted or Premium Channel"] = "Ограниченный или премиальный канал";
-App::$strings["Not found"] = "Не найдено.";
-App::$strings["Please refresh page"] = "Пожалуйста обновите страницу";
-App::$strings["Unknown error"] = "Неизвестная ошибка";
-App::$strings["Layout updated."] = "Шаблон обновлен.";
-App::$strings["PDL Editor App"] = "Приложение \"Редактор PDL\"";
-App::$strings["Provides the ability to edit system page layouts"] = "Предоставляет возможность редактировать макеты системных страниц";
-App::$strings["Edit System Page Description"] = "Редактировать описание системной страницы";
-App::$strings["(modified)"] = "(изменено)";
-App::$strings["Layout not found."] = "Шаблон не найден.";
-App::$strings["Module Name:"] = "Имя модуля:";
-App::$strings["Layout Help"] = "Помощь к шаблону";
-App::$strings["Edit another layout"] = "Редактировать другой шаблон";
-App::$strings["System layout"] = "Системный шаблон";
-App::$strings["Profile Unavailable."] = "Профиль недоступен.";
-App::$strings["Wiki App"] = "Приложение \"Wiki\"";
-App::$strings["Provide a wiki for your channel"] = "Предоставьте Wiki для вашего канала";
-App::$strings["Invalid channel"] = "Недействительный канал";
-App::$strings["Error retrieving wiki"] = "Ошибка при получении Wiki";
-App::$strings["Error creating zip file export folder"] = "Ошибка при создании zip-файла при экспорте каталога";
-App::$strings["Error downloading wiki: "] = "Ошибка загрузки Wiki:";
-App::$strings["Download"] = "Загрузить";
-App::$strings["Wiki name"] = "Название Wiki";
-App::$strings["Content type"] = "Тип содержимого";
-App::$strings["Any&nbsp;type"] = "Любой&nbsp;тип";
-App::$strings["Lock content type"] = "Зафиксировать тип содержимого";
-App::$strings["Create a status post for this wiki"] = "Создать публикацию о статусе этой Wiki";
-App::$strings["Edit Wiki Name"] = "Редактировать наименование Wiki";
-App::$strings["Wiki not found"] = "Wiki не найдена";
-App::$strings["Rename page"] = "Переименовать страницу";
-App::$strings["Error retrieving page content"] = "Ошибка при получении содержимого страницы";
-App::$strings["New page"] = "Новая страница";
-App::$strings["Revision Comparison"] = "Сравнение ревизий";
-App::$strings["Revert"] = "Отменить";
-App::$strings["Short description of your changes (optional)"] = "Краткое описание ваших изменений (необязательно)";
-App::$strings["Source"] = "Источник";
-App::$strings["New page name"] = "Новое имя страницы";
-App::$strings["Embed image from photo albums"] = "Встроить изображение из фотоальбома";
-App::$strings["History"] = "История";
-App::$strings["Error creating wiki. Invalid name."] = "Ошибка создания Wiki. Неверное имя.";
-App::$strings["A wiki with this name already exists."] = "Wiki с таким именем уже существует.";
-App::$strings["Wiki created, but error creating Home page."] = "Wiki создана, но возникла ошибка при создании домашней страницы";
-App::$strings["Error creating wiki"] = "Ошибка при создании Wiki";
-App::$strings["Error updating wiki. Invalid name."] = "Ошибка при обновлении Wiki. Неверное имя.";
-App::$strings["Error updating wiki"] = "Ошибка при обновлении Wiki";
-App::$strings["Wiki delete permission denied."] = "Нет прав на удаление Wiki.";
-App::$strings["Error deleting wiki"] = "Ошибка удаления Wiki";
-App::$strings["New page created"] = "Создана новая страница";
-App::$strings["Cannot delete Home"] = "Невозможно удалить домашнюю страницу";
-App::$strings["Current Revision"] = "Текущая ревизия";
-App::$strings["Selected Revision"] = "Выбранная ревизия";
-App::$strings["You must be authenticated."] = "Вы должны быть аутентифицированы.";
-App::$strings["Email verification resent"] = "Сообщение для проверки email отправлено повторно";
-App::$strings["Unable to resend email verification message."] = "Невозможно повторно отправить сообщение для проверки email";
-App::$strings["Enter a folder name"] = "Введите название каталога";
-App::$strings["or select an existing folder (doubleclick)"] = "или выберите существующий каталог (двойной щелчок)";
-App::$strings["Save to Folder"] = "Сохранить в каталог";
+App::$strings["Profile not found."] = "Профиль не найден.";
+App::$strings["Profile deleted."] = "Профиль удален.";
+App::$strings["Profile-"] = "Профиль -";
+App::$strings["New profile created."] = "Новый профиль создан.";
+App::$strings["Profile unavailable to clone."] = "Профиль недоступен для клонирования.";
+App::$strings["Profile unavailable to export."] = "Профиль недоступен для экспорта.";
+App::$strings["Profile Name is required."] = "Требуется имя профиля.";
+App::$strings["Marital Status"] = "Семейное положение";
+App::$strings["Romantic Partner"] = "Романтический партнер";
+App::$strings["Likes"] = "Нравится";
+App::$strings["Dislikes"] = "Не нравится";
+App::$strings["Work/Employment"] = "Работа / Занятость";
+App::$strings["Religion"] = "Религия";
+App::$strings["Political Views"] = "Политические взгляды";
+App::$strings["Gender"] = "Гендер";
+App::$strings["Sexual Preference"] = "Сексуальная ориентация";
+App::$strings["Homepage"] = "Домашняя страница";
+App::$strings["Interests"] = "Интересы";
+App::$strings["Profile updated."] = "Профиль обновлен.";
+App::$strings["Hide your connections list from viewers of this profile"] = "Скрывать от просмотра ваш список контактов в этом профиле";
+App::$strings["Edit Profile Details"] = "Редактирование профиля";
+App::$strings["View this profile"] = "Посмотреть этот профиль";
+App::$strings["Edit visibility"] = "Редактировать видимость";
+App::$strings["Profile Tools"] = "Инструменты профиля";
+App::$strings["Change cover photo"] = "Изменить фотографию обложки";
+App::$strings["Change profile photo"] = "Изменить фотографию профиля";
+App::$strings["Create a new profile using these settings"] = "Создать новый профиль с теми же настройками";
+App::$strings["Clone this profile"] = "Клонировать этот профиль";
+App::$strings["Delete this profile"] = "Удалить этот профиль";
+App::$strings["Add profile things"] = "Добавить в профиль";
+App::$strings["Personal"] = "Личное";
+App::$strings["Relationship"] = "Отношения";
+App::$strings["Miscellaneous"] = "Прочее";
+App::$strings["Import profile from file"] = "Импортировать профиль из файла";
+App::$strings["Export profile to file"] = "Экспортировать профиль в файл";
+App::$strings["Your gender"] = "Ваш пол";
+App::$strings["Marital status"] = "Семейное положение";
+App::$strings["Sexual preference"] = "Сексуальная ориентация";
+App::$strings["Profile name"] = "Имя профиля";
+App::$strings["This is your default profile."] = "Это ваш профиль по умолчанию.";
+App::$strings["Your full name"] = "Ваше полное имя";
+App::$strings["Title/Description"] = "Заголовок / описание";
+App::$strings["Street address"] = "Улица, дом, квартира";
+App::$strings["Locality/City"] = "Населенный пункт / город";
+App::$strings["Region/State"] = "Регион / Область";
+App::$strings["Postal/Zip code"] = "Почтовый индекс";
+App::$strings["Who (if applicable)"] = "Кто (если применимо)";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Примеры: ivan1990, Ivan Petrov, ivan@example.com";
+App::$strings["Since (date)"] = "С (дата)";
+App::$strings["Tell us about yourself"] = "Расскажите нам о себе";
+App::$strings["Homepage URL"] = "URL домашней страницы";
+App::$strings["Hometown"] = "Родной город";
+App::$strings["Political views"] = "Политические взгляды";
+App::$strings["Religious views"] = "Религиозные взгляды";
+App::$strings["Keywords used in directory listings"] = "Ключевые слова для участия в каталоге";
+App::$strings["Example: fishing photography software"] = "Например: fishing photography software";
+App::$strings["Musical interests"] = "Музыкальные интересы";
+App::$strings["Books, literature"] = "Книги, литература";
+App::$strings["Television"] = "Телевидение";
+App::$strings["Film/Dance/Culture/Entertainment"] = "Кино / танцы / культура / развлечения";
+App::$strings["Hobbies/Interests"] = "Хобби / интересы";
+App::$strings["Love/Romance"] = "Любовь / романтические отношения";
+App::$strings["School/Education"] = "Школа / образование";
+App::$strings["Contact information and social networks"] = "Информация и социальные сети для связи";
+App::$strings["My other channels"] = "Мои другие контакты";
+App::$strings["Communications"] = "Связи";
+App::$strings["Profile Image"] = "Изображение профиля";
+App::$strings["Edit Profiles"] = "Редактирование профилей";
+App::$strings["This page is available only to site members"] = "Эта страница доступна только для подписчиков сайта";
+App::$strings["Welcome"] = "Добро пожаловать";
+App::$strings["What would you like to do?"] = "Что бы вы хотели сделать?";
+App::$strings["Please bookmark this page if you would like to return to it in the future"] = "Пожалуйста, запомните эту страницу если вы хотите вернуться на неё в будущем";
+App::$strings["Upload a profile photo"] = "Загрузить фотографию профиля";
+App::$strings["Upload a cover photo"] = "Загрузить фотографию обложки";
+App::$strings["Edit your default profile"] = "Редактировать ваш профиль по умолчанию";
+App::$strings["View friend suggestions"] = "Просмотр рекомендуемых друзей";
+App::$strings["View the channel directory"] = "Просмотр каталога каналов";
+App::$strings["View/edit your channel settings"] = "Просмотреть / редактировать настройки вашего канала";
+App::$strings["View the site or project documentation"] = "Просмотр документации сайта / проекта";
+App::$strings["Visit your channel homepage"] = "Посетить страницу вашего канала";
+App::$strings["View your connections and/or add somebody whose address you already know"] = "Просмотреть ваши контакты и / или добавить кого-то чей адрес в уже знаете";
+App::$strings["View your personal stream (this may be empty until you add some connections)"] = "Ваш персональный поток (может быть пуст пока вы не добавите контакты)";
+App::$strings["View the public stream. Warning: this content is not moderated"] = "Просмотр публичного потока. Предупреждение: этот контент не модерируется";
+App::$strings["Page link"] = "Ссылка страницы";
+App::$strings["Edit Webpage"] = "Редактировать веб-страницу";
App::$strings["Create a new channel"] = "Создать новый канал";
+App::$strings["Channel Manager"] = "Менеджер каналов";
App::$strings["Current Channel"] = "Текущий канал";
App::$strings["Switch to one of your channels by selecting it."] = "Выбрать и переключиться на один из ваших каналов";
App::$strings["Default Channel"] = "Основной канал";
@@ -2411,39 +1452,15 @@ App::$strings["Make Default"] = "Сделать основным";
App::$strings["%d new messages"] = "%d новых сообщений";
App::$strings["%d new introductions"] = "%d новых представлений";
App::$strings["Delegated Channel"] = "Делегированный канал";
-App::$strings["Suggest Channels App"] = "Приложение \"Рекомендуемые каналы\"";
-App::$strings["Suggestions for channels in the \$Projectname network you might be interested in"] = "Предложения по рекомендуемым каналам в сети \$Projectname которые могут вас заинтересовать";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Нет предложений. Если это новый сайт, повторите попытку через 24 часа.";
-App::$strings["Ignore/Hide"] = "Игнорировать / cкрыть";
-App::$strings["Nothing to import."] = "Ничего импортировать.";
-App::$strings["Unable to download data from old server"] = "Невозможно загрузить данные со старого сервера";
-App::$strings["Imported file is empty."] = "Импортированный файл пуст.";
-App::$strings["Your service plan only allows %d channels."] = "Ваш класс обслуживания разрешает только %d каналов.";
-App::$strings["No channel. Import failed."] = "Канала нет. Импорт невозможен.";
-App::$strings["Import completed."] = "Импорт завершен.";
-App::$strings["You must be logged in to use this feature."] = "Вы должны войти в систему, чтобы использовать эту функцию.";
-App::$strings["Import Channel"] = "Импортировать канал";
-App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Используйте эту форм для импорта существующего канала с другого сервера / хаба. Вы можете получить идентификационные данные канала со старого сервера / хаба через сеть или предоставить файл экспорта.";
-App::$strings["File to Upload"] = "Файл для загрузки";
-App::$strings["Or provide the old server/hub details"] = "или предоставьте данные старого сервера";
-App::$strings["Your old identity address (xyz@example.com)"] = "Ваш старый адрес идентичности (xyz@example.com)";
-App::$strings["Your old login email address"] = "Ваш старый адрес электронной почты";
-App::$strings["Your old login password"] = "Ваш старый пароль";
-App::$strings["Import a few months of posts if possible (limited by available memory"] = "Импортировать несколько месяцев публикаций если возможно (ограничено доступной памятью)";
-App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Для любого варианта, пожалуйста, выберите, следует ли сделать этот хаб вашим новым основным адресом, или ваше прежнее местоположение должно продолжить выполнять эту роль. Вы сможете отправлять сообщения из любого местоположения, но только одно может быть помечено как основное место для файлов, фотографий и мультимедиа.";
-App::$strings["Make this hub my primary location"] = "Сделать этот хаб главным";
-App::$strings["Move this channel (disable all previous locations)"] = "Переместить это канал (отключить все предыдущие месторасположения)";
-App::$strings["Use this channel nickname instead of the one provided"] = "Использовать псевдоним этого канала вместо предоставленного";
-App::$strings["Leave blank to keep your existing channel nickname. You will be randomly assigned a similar nickname if either name is already allocated on this site."] = "Оставьте пустым для сохранения существующего псевдонима канала. Вам будет случайным образом назначен похожий псевдоним если такое имя уже выделено на этом сайте.";
-App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Процесс может занять несколько минут. Пожалуйста, отправьте форму только один раз и оставьте эту страницу открытой до завершения.";
-App::$strings["Hub not found."] = "Узел не найден.";
-App::$strings["Warning: Database versions differ by %1\$d updates."] = "Предупреждение: Версия базы данных отличается от %1\$d обновления.";
-App::$strings["Import completed"] = "Импорт завершён.";
-App::$strings["Import Items"] = "Импортировать объекты";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Используйте эту форму для импорта существующих публикаций и содержимого из файла.";
+App::$strings["Cards App"] = "Приложение \"Карточки\"";
+App::$strings["Create personal planning cards"] = "Создать личные карточки планирования";
+App::$strings["Add Card"] = "Добавить карточку";
+App::$strings["Cards"] = "Карточки";
+App::$strings["This directory server requires an access token"] = "Для доступа к этому серверу каталогов требуется токен";
App::$strings["About this site"] = "Об этом сайте";
App::$strings["Site Name"] = "Название сайта";
App::$strings["Administrator"] = "Администратор";
+App::$strings["Terms of Service"] = "Условия предоставления услуг";
App::$strings["Software and Project information"] = "Информация о программном обеспечении и проекте";
App::$strings["This site is powered by \$Projectname"] = "Этот сайт работает на \$Projectname";
App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Объединенные и децентрализованные сети и службы идентификациии обеспечиваются Zot";
@@ -2451,209 +1468,402 @@ App::$strings["Additional federated transport protocols:"] = "Дополните
App::$strings["Version %s"] = "Версия %s";
App::$strings["Project homepage"] = "Домашняя страница проекта";
App::$strings["Developer homepage"] = "Домашняя страница разработчика";
-App::$strings["Cards App"] = "Приложение \"Карточки\"";
-App::$strings["Create personal planning cards"] = "Создать личные карточки планирования";
-App::$strings["Add Card"] = "Добавить карточку";
-App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Удаление канала не разрешается в течении 48 часов после смены пароля у аккаунта.";
-App::$strings["Remove This Account"] = "Удалить этот аккаунт";
-App::$strings["This account and all its channels will be completely removed from the network. "] = "Этот аккаунт и все его каналы будут полностью удалены из сети.";
-App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Удалить этот аккаунт, все его каналы и их клоны из сети.";
-App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "По умолчанию только представление канала расположенное на данном хабе будет удалено из сети";
+App::$strings["No ratings"] = "Оценок нет";
+App::$strings["Ratings"] = "Оценки";
+App::$strings["Rating: "] = "Оценкa:";
+App::$strings["Website: "] = "Веб-сайт:";
+App::$strings["Description: "] = "Описание:";
+App::$strings["Webpages App"] = "Приложение \"Веб-страницы\"";
+App::$strings["Provide managed web pages on your channel"] = "Предоставлять управляемые веб-страницы на Вашем канале";
+App::$strings["Import Webpage Elements"] = "Импортировать части веб-страницы";
+App::$strings["Import selected"] = "Импортировать выбранное";
+App::$strings["Export Webpage Elements"] = "Экспортировать часть веб-страницы";
+App::$strings["Export selected"] = "Экспортировать выбранное";
+App::$strings["Webpages"] = "Веб-страницы";
+App::$strings["Actions"] = "Действия";
+App::$strings["Page Link"] = "Ссылка страницы";
+App::$strings["Page Title"] = "Заголовок страницы";
+App::$strings["Invalid file type."] = "Неверный тип файла.";
+App::$strings["Error opening zip file"] = "Ошибка открытия ZIP файла";
+App::$strings["Invalid folder path."] = "Неверный путь к каталогу.";
+App::$strings["No webpage elements detected."] = "Не обнаружено частей веб-страницы.";
+App::$strings["Import complete."] = "Импорт завершен.";
+App::$strings["Channel name changes are not allowed within 48 hours of changing the account password."] = "Изменение названия канала не разрешается в течении 48 часов после смены пароля у аккаунта.";
+App::$strings["Reserved nickname. Please choose another."] = "Зарезервированый псевдоним. Пожалуйста, выберите другой.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Псевдоним имеет недопустимые символы или уже используется на этом сайте.";
+App::$strings["Change channel nickname/address"] = "Изменить псевдоним / адрес канала";
+App::$strings["Any/all connections on other networks will be lost!"] = "Любые / все контакты в других сетях будут утеряны!";
+App::$strings["New channel address"] = "Новый адрес канала";
+App::$strings["Rename Channel"] = "Переименовать канал";
+App::$strings["Item is not editable"] = "Элемент нельзя редактировать";
+App::$strings["Edit post"] = "Редактировать сообщение";
+App::$strings["Invalid message"] = "Неверное сообщение";
+App::$strings["no results"] = "Ничего не найдено.";
+App::$strings["channel sync processed"] = "синхронизация канала завершена";
+App::$strings["queued"] = "в очереди";
+App::$strings["posted"] = "опубликовано";
+App::$strings["accepted for delivery"] = "принято к доставке";
+App::$strings["updated"] = "обновлено";
+App::$strings["update ignored"] = "обновление игнорируется";
+App::$strings["permission denied"] = "доступ запрещен";
+App::$strings["recipient not found"] = "получатель не найден";
+App::$strings["mail recalled"] = "почта отозвана";
+App::$strings["duplicate mail received"] = "получено дублирующее сообщение";
+App::$strings["mail delivered"] = "почта доставлен";
+App::$strings["Delivery report for %1\$s"] = "Отчёт о доставке для %1\$s";
+App::$strings["Options"] = "Параметры";
+App::$strings["Redeliver"] = "Доставить повторно";
+App::$strings["Failed to create source. No channel selected."] = "Не удалось создать источник. Канал не выбран.";
+App::$strings["Source created."] = "Источник создан.";
+App::$strings["Source updated."] = "Источник обновлен.";
+App::$strings["Sources App"] = "Приложение \"Источники канала\"";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Автоматический импорт контента из других каналов или лент";
+App::$strings["*"] = "";
+App::$strings["Channel Sources"] = "Источники канала";
+App::$strings["Manage remote sources of content for your channel."] = "Управление удалённым источниками содержимого для вашего канала";
+App::$strings["New Source"] = "Новый источник";
+App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Импортировать всё или выбранное содержимое из следующего канала в этот канал и распределить его в соответствии с вашими настройками.";
+App::$strings["Only import content with these words (one per line)"] = "Импортировать содержимое только с этим текстом (построчно)";
+App::$strings["Leave blank to import all public content"] = "Оставьте пустым для импорта всего общедоступного содержимого";
+App::$strings["Channel Name"] = "Название канала";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Добавить следующие категории к импортированным публикациям из этого источника (через запятые)";
+App::$strings["Optional"] = "Необязательно";
+App::$strings["Resend posts with this channel as author"] = "Отправить публикации в этот канал повторно как автор";
+App::$strings["Copyrights may apply"] = "Могут применяться авторские права";
+App::$strings["Source not found."] = "Источник не найден.";
+App::$strings["Edit Source"] = "Редактировать источник";
+App::$strings["Delete Source"] = "Удалить источник";
+App::$strings["Source removed"] = "Источник удален";
+App::$strings["Unable to remove source."] = "Невозможно удалить источник.";
+App::$strings["Like/Dislike"] = "Нравится / не нравится";
+App::$strings["This action is restricted to members."] = "Это действие доступно только участникам.";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Пожалуйста, для продолжения <a href=\"rmagic\"> войдите с вашим \$Projectname ID</a> или <a href=\"register\">зарегистрируйтесь как новый участник \$Projectname</a>.";
+App::$strings["Invalid request."] = "Неверный запрос.";
+App::$strings["channel"] = "канал";
+App::$strings["thing"] = "предмет";
+App::$strings["Channel unavailable."] = "Канал недоступен.";
+App::$strings["Previous action reversed."] = "Предыдущее действие отменено.";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s нравится %3\$s %2\$s";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s не нравится %2\$s %3\$s";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s согласен с %2\$s %3\$s";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s не согласен с %2\$s %3\$s";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s воздерживается от решения по %2\$s%3\$s";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s посещает %2\$s%3\$s";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s не посещает %2\$s%3\$s";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s может посетить %2\$s%3\$s";
+App::$strings["Action completed."] = "Действие завершено.";
+App::$strings["Thank you."] = "Спасибо.";
+App::$strings["No default suggestions were found."] = "Предложений по умолчанию не найдено.";
+App::$strings["%d rating"] = array(
+ 0 => "%d оценка",
+ 1 => "%d оценки",
+ 2 => "%d оценок",
+);
+App::$strings["Gender: "] = "Пол:";
+App::$strings["Status: "] = "Статус:";
+App::$strings["Homepage: "] = "Домашняя страница:";
+App::$strings["Age:"] = "Возраст:";
+App::$strings["Location:"] = "Местоположение:";
+App::$strings["Description:"] = "Описание:";
+App::$strings["Hometown:"] = "Родной город:";
+App::$strings["About:"] = "О себе:";
+App::$strings["Connect"] = "Подключить";
+App::$strings["Public Forum:"] = "Публичный форум:";
+App::$strings["Keywords: "] = "Ключевые слова:";
+App::$strings["Don't suggest"] = "Не предлагать";
+App::$strings["Common connections (estimated):"] = "Общие контакты (оценочно):";
+App::$strings["Global Directory"] = "Глобальный каталог";
+App::$strings["Local Directory"] = "Локальный каталог";
+App::$strings["Finding:"] = "Поиск:";
+App::$strings["Channel Suggestions"] = "Рекомендации каналов";
+App::$strings["next page"] = "следующая страница";
+App::$strings["previous page"] = "предыдущая страница";
+App::$strings["Sort options"] = "Параметры сортировки";
+App::$strings["Alphabetic"] = "По алфавиту";
+App::$strings["Reverse Alphabetic"] = "Против алфавита";
+App::$strings["Newest to Oldest"] = "От новых к старым";
+App::$strings["Oldest to Newest"] = "От старых к новым";
+App::$strings["No entries (some entries may be hidden)."] = "Нет записей (некоторые записи могут быть скрыты).";
+App::$strings["Xchan Lookup"] = "Поиск Xchan";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "Запрос Xchan начинается с (или webbie):";
+App::$strings["Suggest Channels App"] = "Приложение \"Рекомендуемые каналы\"";
+App::$strings["Suggestions for channels in the \$Projectname network you might be interested in"] = "Предложения по рекомендуемым каналам в сети \$Projectname которые могут вас заинтересовать";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Нет предложений. Если это новый сайт, повторите попытку через 24 часа.";
+App::$strings["Ignore/Hide"] = "Игнорировать / cкрыть";
App::$strings["Unable to find your hub."] = "Невозможно найти ваш сервер";
App::$strings["Post successful."] = "Успешно опубликовано.";
-App::$strings["Authentication failed."] = "Ошибка аутентификации.";
-App::$strings["Comanche page description language help"] = "Помощь по языку описания страниц Comanche ";
-App::$strings["Layout Description"] = "Описание шаблона";
-App::$strings["Download PDL file"] = "Загрузить PDL файл";
-App::$strings["This page is available only to site members"] = "Эта страница доступна только для подписчиков сайта";
-App::$strings["Welcome"] = "Добро пожаловать";
-App::$strings["What would you like to do?"] = "Что бы вы хотели сделать?";
-App::$strings["Please bookmark this page if you would like to return to it in the future"] = "Пожалуйста, запомните эту страницу если вы хотите вернуться на неё в будущем";
-App::$strings["Upload a profile photo"] = "Загрузить фотографию профиля";
-App::$strings["Upload a cover photo"] = "Загрузить фотографию обложки";
-App::$strings["Edit your default profile"] = "Редактировать ваш профиль по умолчанию";
-App::$strings["View friend suggestions"] = "Просмотр рекомендуемых друзей";
-App::$strings["View the channel directory"] = "Просмотр каталога каналов";
-App::$strings["View/edit your channel settings"] = "Просмотреть / редактировать настройки вашего канала";
-App::$strings["View the site or project documentation"] = "Просмотр документации сайта / проекта";
-App::$strings["Visit your channel homepage"] = "Посетить страницу вашего канала";
-App::$strings["View your connections and/or add somebody whose address you already know"] = "Просмотреть ваши контакты и / или добавить кого-то чей адрес в уже знаете";
-App::$strings["View your personal stream (this may be empty until you add some connections)"] = "Ваш персональный поток (может быть пуст пока вы не добавите контакты)";
-App::$strings["View the public stream. Warning: this content is not moderated"] = "Просмотр публичного потока. Предупреждение: этот контент не модерируется";
-App::$strings["Forums"] = "Форумы";
-App::$strings["Notes"] = "Заметки";
-App::$strings["Suggestions"] = "Рекомендации";
-App::$strings["See more..."] = "Просмотреть больше...";
-App::$strings["New Network Activity"] = "Новая сетевая активность";
-App::$strings["New Network Activity Notifications"] = "Новые уведомления о сетевой активности";
-App::$strings["View your network activity"] = "Просмотреть вашу сетевую активность";
-App::$strings["Mark all notifications read"] = "Пометить уведомления как прочитанные";
-App::$strings["Show new posts only"] = "Показывать только новые публикации";
-App::$strings["Filter by name"] = "Отфильтровать по имени";
-App::$strings["New Home Activity"] = "Новая локальная активность";
-App::$strings["New Home Activity Notifications"] = "Новые уведомления локальной активности";
-App::$strings["View your home activity"] = "Просмотреть локальную активность";
-App::$strings["Mark all notifications seen"] = "Пометить уведомления как просмотренные";
-App::$strings["New Mails"] = "Новая переписка";
-App::$strings["New Mails Notifications"] = "Уведомления о новой переписке";
-App::$strings["View your private mails"] = "Просмотреть вашу личную переписку";
-App::$strings["Mark all messages seen"] = "Пометить сообщения как просмотренные";
-App::$strings["New Events"] = "Новые события";
-App::$strings["New Events Notifications"] = "Уведомления о новых событиях";
-App::$strings["View events"] = "Просмотреть события";
-App::$strings["Mark all events seen"] = "Пометить все события как просмотренные";
-App::$strings["New Connections Notifications"] = "Уведомления о новых контактах";
-App::$strings["View all connections"] = "Просмотр всех контактов";
-App::$strings["New Files"] = "Новые файлы";
-App::$strings["New Files Notifications"] = "Уведомления о новых файлах";
-App::$strings["Notices"] = "Оповещения";
-App::$strings["View all notices"] = "Просмотреть все оповещения";
-App::$strings["Mark all notices seen"] = "Пометить все оповещения как просмотренные";
-App::$strings["New Registrations"] = "Новые регистрации";
-App::$strings["New Registrations Notifications"] = "Уведомления о новых регистрациях";
-App::$strings["Public Stream Notifications"] = "Уведомления публичного потока";
-App::$strings["View the public stream"] = "Просмотреть публичный поток";
-App::$strings["Sorry, you have got no notifications at the moment"] = "Извините, но сейчас у вас нет уведомлений";
-App::$strings["Tasks"] = "Задачи";
-App::$strings["photo/image"] = "фотография / изображение";
-App::$strings["Select Channel"] = "Выбрать канал";
-App::$strings["Read-write"] = "Чтение-запись";
-App::$strings["Read-only"] = "Только чтение";
-App::$strings["My Calendars"] = "Мои календари";
-App::$strings["Shared Calendars"] = "Общие календари";
-App::$strings["Share this calendar"] = "Поделиться этим календарём";
-App::$strings["Calendar name and color"] = "Имя и цвет календаря";
-App::$strings["Create new calendar"] = "Создать новый календарь";
-App::$strings["Calendar Name"] = "Имя календаря";
-App::$strings["Calendar Tools"] = "Инструменты календаря";
-App::$strings["Import calendar"] = "Импортировать календарь";
-App::$strings["Select a calendar to import to"] = "Выбрать календарь для импорта в";
-App::$strings["Addressbooks"] = "Адресные книги";
-App::$strings["Addressbook name"] = "Имя адресной книги";
-App::$strings["Create new addressbook"] = "Создать новую адресную книгу";
-App::$strings["Addressbook Name"] = "Имя адресной книги";
-App::$strings["Addressbook Tools"] = "Инструменты адресной книги";
-App::$strings["Import addressbook"] = "Импортировать адресную книгу";
-App::$strings["Select an addressbook to import to"] = "Выбрать адресную книгу для импорта в";
-App::$strings["__ctx:widget__ Activity"] = "Активность";
-App::$strings["HQ Control Panel"] = "Панель управления HQ";
-App::$strings["Create a new post"] = "Создать новую публикацию";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "У вас есть %1$.0f из %2$.0f разрешенных контактов.";
-App::$strings["Add New Connection"] = "Добавить новый контакт";
-App::$strings["Enter channel address"] = "Введите адрес канала";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Пример: ivan@example.com, http://example.com/ivan";
-App::$strings["Archives"] = "Архивы";
-App::$strings["Suggested Chatrooms"] = "Рекомендуемые чаты";
-App::$strings["Rating Tools"] = "Инструменты оценки";
-App::$strings["Rate Me"] = "Оценить меня";
-App::$strings["View Ratings"] = "Просмотр оценок";
-App::$strings["Profile Creation"] = "Создание профиля";
-App::$strings["Upload profile photo"] = "Загрузить фотографию профиля";
-App::$strings["Upload cover photo"] = "Загрузить фотографию обложки";
-App::$strings["Find and Connect with others"] = "Найти и вступить в контакт";
-App::$strings["View the directory"] = "Просмотреть каталог";
-App::$strings["Manage your connections"] = "Управление вашими контактами";
-App::$strings["Communicate"] = "Связаться";
-App::$strings["View your channel homepage"] = "Домашняя страница канала";
-App::$strings["View your network stream"] = "Просмотреть ваш сетевой поток";
-App::$strings["Documentation"] = "Документация";
-App::$strings["Missing Features?"] = "Отсутствует функция?";
-App::$strings["Pin apps to navigation bar"] = "Прикрепить приложение к панели";
-App::$strings["Install more apps"] = "Установить больше приложений";
-App::$strings["View public stream"] = "Просмотреть публичный поток";
-App::$strings["Private Mail Menu"] = "Меню личной переписки";
-App::$strings["Combined View"] = "Комбинированный вид";
-App::$strings["Inbox"] = "Входящие";
-App::$strings["Outbox"] = "Исходящие";
-App::$strings["New Message"] = "Новое сообщение";
-App::$strings["Add new page"] = "Добавить новую страницу";
-App::$strings["Wiki Pages"] = "Wiki страницы";
-App::$strings["Page name"] = "Название страницы";
-App::$strings["Events Tools"] = "Инструменты для событий";
-App::$strings["Export Calendar"] = "Экспортировать календарь";
-App::$strings["Import Calendar"] = "Импортировать календарь";
-App::$strings["Overview"] = "Обзор";
-App::$strings["Account settings"] = "Настройки аккаунта";
-App::$strings["Channel settings"] = "Настройки канала";
-App::$strings["Display settings"] = "Настройки отображения";
-App::$strings["Addon settings"] = "Настройки расширений";
-App::$strings["Manage locations"] = "Управление местоположением";
-App::$strings["Member registrations waiting for confirmation"] = "Регистрации участников, ожидающие подверждения";
+App::$strings["Unable to lookup recipient."] = "Не удалось найти получателя.";
+App::$strings["Unable to communicate with requested channel."] = "Не удалось установить связь с запрашиваемым каналом.";
+App::$strings["Cannot verify requested channel."] = "Не удалось установить подлинность требуемого канала.";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "Выбранный канал ограничивает частные сообщения. Отправка не удалась.";
+App::$strings["Messages"] = "Сообщения";
+App::$strings["message"] = "сообщение";
+App::$strings["Message recalled."] = "Сообщение отозванно.";
+App::$strings["Conversation removed."] = "Беседа удалена.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Истекает YYYY-MM-DD HH:MM";
+App::$strings["Requested channel is not in this network"] = "Запрашиваемый канал не доступен.";
+App::$strings["Send Private Message"] = "Отправить личное сообщение";
+App::$strings["To:"] = "Кому:";
+App::$strings["Subject:"] = "Тема:";
+App::$strings["Attach file"] = "Прикрепить файл";
+App::$strings["Send"] = "Отправить";
+App::$strings["Set expiration date"] = "Установить срок действия";
+App::$strings["Delete message"] = "Удалить сообщение";
+App::$strings["Delivery report"] = "Отчёт о доставке";
+App::$strings["Recall message"] = "Отозвать сообщение";
+App::$strings["Message has been recalled."] = "Сообщение отозванно";
+App::$strings["Delete Conversation"] = "Удалить беседу";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Безопасная связь недоступна. Вы <strong>можете</strong> попытаться ответить со страницы профиля отправителя.";
+App::$strings["Send Reply"] = "Отправить ответ";
+App::$strings["Your message for %s (%s):"] = "Ваше сообщение для %s (%s):";
+App::$strings["Public Hubs"] = "Публичные хабы";
+App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Указанные хабы разрешают публичную регистрацию для сети \$Projectname. Все хабы в сети взаимосвязаны, поэтому членство в любом из них передает членство во всю сеть. Некоторым хабам может потребоваться подписка или предоставление многоуровневых планов обслуживания. Сам хаб <strong>может</strong> предоставить дополнительные сведения.";
+App::$strings["Hub URL"] = "URL сервера";
+App::$strings["Access Type"] = "Тип доступа";
+App::$strings["Registration Policy"] = "Политика регистрации";
+App::$strings["Stats"] = "Статистика";
+App::$strings["Software"] = "Программное обеспечение";
+App::$strings["Rate"] = "Оценка";
+App::$strings["webpage"] = "веб-страница";
+App::$strings["block"] = "заблокировать";
+App::$strings["layout"] = "шаблон";
+App::$strings["menu"] = "меню";
+App::$strings["%s element installed"] = "%s элемент установлен";
+App::$strings["%s element installation failed"] = "%sустановка элемента неудачна.";
+App::$strings["Select a bookmark folder"] = "Выбрать каталог для закладок";
+App::$strings["Save Bookmark"] = "Сохранить закладку";
+App::$strings["URL of bookmark"] = "URL закладки";
+App::$strings["Or enter new bookmark folder name"] = "или введите новое имя каталога закладок";
+App::$strings["Enter a folder name"] = "Введите название каталога";
+App::$strings["or select an existing folder (doubleclick)"] = "или выберите существующий каталог (двойной щелчок)";
+App::$strings["Save to Folder"] = "Сохранить в каталог";
+App::$strings["Remote Diagnostics App"] = "Приложение \"Удалённая диагностика\"";
+App::$strings["Perform diagnostics on remote channels"] = "Производит диагностику удалённых каналов";
+App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Превышено максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра.";
+App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Пожалуйста, подтвердите согласие с \"Условиями обслуживания\". Регистрация не удалась.";
+App::$strings["Passwords do not match."] = "Пароли не совпадают.";
+App::$strings["Registration successful. Continue to create your first channel..."] = "Регистрация завершена успешно. Для продолжения создайте свой первый канал...";
+App::$strings["Registration successful. Please check your email for validation instructions."] = "Регистрация завершена успешно. Пожалуйста проверьте вашу электронную почту для подтверждения.";
+App::$strings["Your registration is pending approval by the site owner."] = "Ваша регистрация ожидает одобрения администрации сайта.";
+App::$strings["Your registration can not be processed."] = "Ваша регистрация не может быть обработана.";
+App::$strings["Registration on this hub is disabled."] = "Регистрация на этом хабе отключена.";
+App::$strings["Registration on this hub is by approval only."] = "Регистрация на этом хабе только по утверждению.";
+App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Зарегистрироваться на другом хабе.</a>";
+App::$strings["Registration on this hub is by invitation only."] = "Регистрация на этом хабе доступна только по приглашениям.";
+App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Этот сайт превысил максимальное количество регистраций на сегодня. Пожалуйста, попробуйте снова завтра. ";
+App::$strings["I accept the %s for this website"] = "Я принимаю %s для этого веб-сайта.";
+App::$strings["I am over %s years of age and accept the %s for this website"] = "Мой возраст превышает %s лет и я принимаю %s для этого веб-сайта.";
+App::$strings["Your email address"] = "Ваш адрес электронной почты";
+App::$strings["Choose a password"] = "Выберите пароль";
+App::$strings["Please re-enter your password"] = "Пожалуйста, введите пароль еще раз";
+App::$strings["Please enter your invitation code"] = "Пожалуйста, введите Ваш код приглашения";
+App::$strings["Your Name"] = "Ваше имя";
+App::$strings["Real names are preferred."] = "Предпочтительны реальные имена.";
+App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Ваш псевдоним будет использован для создания легко запоминаемого адреса канала, напр. nickname %s";
+App::$strings["Select a channel permission role for your usage needs and privacy requirements."] = "Выберите разрешения для канала в зависимости от ваших потребностей и требований приватности.";
+App::$strings["no"] = "нет";
+App::$strings["yes"] = "да";
+App::$strings["Register"] = "Регистрация";
+App::$strings["This site requires email verification. After completing this form, please check your email for further instructions."] = "Этот сайт требует проверку адреса электронной почты. После заполнения этой формы, пожалуйста, проверьте ваш почтовый ящик для дальнейших инструкций.";
+App::$strings["Cover Photos"] = "Фотографии обложки";
+App::$strings["female"] = "женщина";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s обновила её %2\$s";
+App::$strings["male"] = "мужчина";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s обновил его %2\$s";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s обновили их %2\$s";
+App::$strings["cover photo"] = "фотография обложки";
+App::$strings["Your cover photo may be visible to anybody on the internet"] = "Фотография вашей обложки может быть видна всем в Интернете";
+App::$strings["Change Cover Photo"] = "Изменить фотографию обложки";
+App::$strings["Documentation Search"] = "Поиск документации";
+App::$strings["About"] = "О себе";
+App::$strings["Administrators"] = "Администраторы";
+App::$strings["Developers"] = "Разработчики";
+App::$strings["Tutorials"] = "Руководства";
+App::$strings["\$Projectname Documentation"] = "\$Projectname Документация";
+App::$strings["Contents"] = "Содержимое";
+App::$strings["Article"] = "Статья";
+App::$strings["Item has been removed."] = "Элемент был удалён.";
+App::$strings["Tag removed"] = "Тег удалён";
+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["Invalid channel."] = "Недействительный канал.";
+App::$strings["network"] = "сеть";
+App::$strings["\$Projectname"] = "";
+App::$strings["Welcome to %s"] = "Добро пожаловать в %s";
+App::$strings["Permission Denied."] = "Доступ запрещен.";
+App::$strings["File not found."] = "Файл не найден.";
+App::$strings["Edit file permissions"] = "Редактировать разрешения файла";
+App::$strings["Set/edit permissions"] = "Редактировать разрешения";
+App::$strings["Include all files and sub folders"] = "Включить все файлы и подкаталоги";
+App::$strings["Return to file list"] = "Вернутся к списку файлов";
+App::$strings["Copy/paste this code to attach file to a post"] = "Копировать / вставить этот код для прикрепления файла к публикации";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Копировать / вставить эту URL для ссылки на файл со страницы";
+App::$strings["Share this file"] = "Поделиться этим файлом";
+App::$strings["Show URL to this file"] = "Показать URL этого файла";
+App::$strings["Show in your contacts shared folder"] = "Показать общий каталог в ваших контактах";
+App::$strings["No channel."] = "Канала нет.";
+App::$strings["No connections in common."] = "Общих контактов нет.";
+App::$strings["View Common Connections"] = "Просмотр общий контактов";
+App::$strings["Email verification resent"] = "Сообщение для проверки email отправлено повторно";
+App::$strings["Unable to resend email verification message."] = "Невозможно повторно отправить сообщение для проверки email";
+App::$strings["No connections."] = "Контактов нет.";
+App::$strings["Visit %s's profile [%s]"] = "Посетить %s ​​профиль [%s]";
+App::$strings["View Connections"] = "Просмотр контактов";
+App::$strings["Blocked accounts"] = "Заблокированные аккаунты";
+App::$strings["Expired accounts"] = "Просроченные аккаунты";
+App::$strings["Expiring accounts"] = "Близкие к просрочке аккаунты";
+App::$strings["Message queues"] = "Очередь сообщений";
+App::$strings["Your software should be updated"] = "Ваше программное обеспечение должно быть обновлено";
+App::$strings["Summary"] = "Резюме";
+App::$strings["Registered accounts"] = "Зарегистрированные аккаунты";
+App::$strings["Pending registrations"] = "Ждут утверждения";
+App::$strings["Registered channels"] = "Зарегистрированные каналы";
+App::$strings["Active addons"] = "Активные расширения";
+App::$strings["Version"] = "Версия системы";
+App::$strings["Repository version (master)"] = "Версия репозитория (master)";
+App::$strings["Repository version (dev)"] = "Версия репозитория (dev)";
+App::$strings["No service class restrictions found."] = "Ограничений класса обслуживание не найдено.";
+App::$strings["Website:"] = "Веб-сайт:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Удалённый канал [%s] (пока неизвестен на этом сайте)";
+App::$strings["Rating (this information is public)"] = "Оценка (эта информация общедоступна)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Объясните свою оценку (необязательно; эта информация общедоступна)";
+App::$strings["Edit Card"] = "Редактировать карточку";
+App::$strings["No valid account found."] = "Действительный аккаунт не найден.";
+App::$strings["Password reset request issued. Check your email."] = "Запрос на сброс пароля отправлен. Проверьте вашу электронную почту.";
+App::$strings["Site Member (%s)"] = "Участник сайта (%s)";
+App::$strings["Password reset requested at %s"] = "Запрошен сброс пароля на %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Запрос не может быть проверен. (Вы могли отправить его раньше). Сброс пароля не возможен.";
+App::$strings["Password Reset"] = "Сбросить пароль";
+App::$strings["Your password has been reset as requested."] = "Ваш пароль в соответствии с просьбой сброшен.";
+App::$strings["Your new password is"] = "Ваш новый пароль";
+App::$strings["Save or copy your new password - and then"] = "Сохраните ваш новый пароль и затем";
+App::$strings["click here to login"] = "нажмите здесь чтобы войти";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ваш пароль может быть изменён на странице <em>Настройки</em> после успешного входа.";
+App::$strings["Your password has changed at %s"] = "Пароль был изменен на %s";
+App::$strings["Forgot your Password?"] = "Забыли ваш пароль?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Введите ваш адрес электронной почты и нажмите отправить чтобы сбросить пароль. Затем проверьте ваш почтовый ящик для дальнейших инструкций. ";
+App::$strings["Email Address"] = "Адрес электронной почты";
+App::$strings["Name is required"] = "Необходимо имя";
+App::$strings["Key and Secret are required"] = "Требуются ключ и код";
+App::$strings["OAuth Apps Manager App"] = "Приложение \"Менеджер Oauth\"";
+App::$strings["OAuth authentication tokens for mobile and remote apps"] = "Токены аутентификации OAuth для мобильный и удалённых приложений";
+App::$strings["Consumer Key"] = "Ключ клиента";
+App::$strings["Icon url"] = "URL значка";
+App::$strings["Application not found."] = "Приложение не найдено.";
+App::$strings["Connected OAuth Apps"] = "Подключенные приложения OAuth";
+App::$strings["Mark all seen"] = "Отметить как просмотренное";
+App::$strings["Likes %1\$s's %2\$s"] = "Нравится %1\$s %2\$s";
+App::$strings["Doesn't like %1\$s's %2\$s"] = "Не нравится %1\$s %2\$s";
+App::$strings["Will attend %1\$s's %2\$s"] = "Примет участие %1\$s %2\$s";
+App::$strings["Will not attend %1\$s's %2\$s"] = "Не примет участие %1\$s %2\$s";
+App::$strings["May attend %1\$s's %2\$s"] = "Возможно примет участие %1\$s %2\$s";
+App::$strings["ActivityPub"] = "";
+App::$strings["0. Beginner/Basic"] = "Начинающий / Базовый";
+App::$strings["1. Novice - not skilled but willing to learn"] = "1. Новичок - не опытный, но желающий учиться";
+App::$strings["2. Intermediate - somewhat comfortable"] = "2. Промежуточный - более удобный";
+App::$strings["3. Advanced - very comfortable"] = "3. Продвинутый - очень удобный";
+App::$strings["4. Expert - I can write computer code"] = "4. Эксперт - я умею программировать";
+App::$strings["5. Wizard - I probably know more than you do"] = "5. Волшебник - возможно я знаю больше чем ты";
+App::$strings["Unable to verify channel signature"] = "Невозможно проверить подпись канала";
+App::$strings["Apps"] = "Приложения";
+App::$strings["Affinity Tool"] = "Степень сходства";
+App::$strings["Site Admin"] = "Администратор сайта";
+App::$strings["Report Bug"] = "Сообщить об ошибке";
+App::$strings["Bookmarks"] = "Закладки";
+App::$strings["Chatrooms"] = "Чаты";
+App::$strings["Remote Diagnostics"] = "Удалённая диагностика";
+App::$strings["Suggest Channels"] = "Предлагаемые каналы";
+App::$strings["Login"] = "Войти";
+App::$strings["Stream"] = "Поток";
+App::$strings["Wiki"] = "";
+App::$strings["Channel Home"] = "Главная канала";
+App::$strings["Events"] = "События";
+App::$strings["Directory"] = "Каталог";
+App::$strings["Mail"] = "Переписка";
+App::$strings["Chat"] = "Чат";
+App::$strings["Probe"] = "Проба";
+App::$strings["Suggest"] = "Предложить";
+App::$strings["Random Channel"] = "Случайный канал";
+App::$strings["Invite"] = "Пригласить";
App::$strings["Features"] = "Функции";
-App::$strings["Inspect queue"] = "Просмотр очереди";
-App::$strings["DB updates"] = "Обновление базы данных";
-App::$strings["Addon Features"] = "Настройки расширений";
-App::$strings["App Collections"] = "Коллекции приложений";
-App::$strings["Installed apps"] = "Установленные приложения";
-App::$strings["Remove term"] = "Удалить термин";
-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"] = "Отмеченные публикации";
-App::$strings["Show posts that I have starred"] = "Показывать публикации которые я отметил";
-App::$strings["Personal Posts"] = "Личные публикации";
-App::$strings["Show posts that mention or involve me"] = "Показывать публикации где вы были упомянуты или привлечены";
-App::$strings["Show posts that I have filed to %s"] = "Показывать публикации которые я добавил в %s";
-App::$strings["Show filed post categories"] = "Показывать категории добавленных публикаций";
-App::$strings["Panel search"] = "Панель поиска";
-App::$strings["Remove active filter"] = "Удалить активный фильтр";
-App::$strings["Stream Filters"] = "Фильтры потока";
-App::$strings["Chat Members"] = "Участники чата";
-App::$strings["Click to show more"] = "Нажмите чтобы показать больше";
-App::$strings["Refresh"] = "Обновить";
-App::$strings["Commented Date"] = "По комментариям";
-App::$strings["Order by last commented date"] = "Сортировка по дате последнего комментария";
-App::$strings["Posted Date"] = "По публикациям";
-App::$strings["Order by last posted date"] = "Сортировка по дате последней публикации";
-App::$strings["Date Unthreaded"] = "По порядку";
-App::$strings["Order unthreaded by date"] = "Сортировка в порядке поступления";
-App::$strings["Stream Order"] = "Упорядочить поток";
-App::$strings["Bookmarked Chatrooms"] = "Закладки чатов";
-App::$strings["Received Messages"] = "Полученные сообщения";
-App::$strings["Sent Messages"] = "Отправленные сообщения";
-App::$strings["Conversations"] = "Беседы";
-App::$strings["No messages."] = "Сообщений нет.";
-App::$strings["Delete conversation"] = "Удалить беседу";
+App::$strings["Language"] = "Язык";
+App::$strings["Post"] = "Публикация";
+App::$strings["Profile Photo"] = "Фотография профиля";
+App::$strings["Profiles"] = "Редактировать профиль";
+App::$strings["Notifications"] = "Оповещения";
+App::$strings["Order Apps"] = "Порядок приложений";
+App::$strings["CalDAV"] = "";
+App::$strings["CardDAV"] = "";
+App::$strings["Guest Access"] = "Гостевой доступ";
+App::$strings["Notes"] = "Заметки";
+App::$strings["OAuth Apps Manager"] = "Менеджер OAuth";
+App::$strings["OAuth2 Apps Manager"] = "Менеджер OAuth2";
+App::$strings["PDL Editor"] = "Редактор PDL";
+App::$strings["Premium Channel"] = "Премиальный канал";
+App::$strings["My Chatrooms"] = "Мои чаты";
+App::$strings["Channel Export"] = "Экспорт канала";
+App::$strings["Purchase"] = "Купить";
+App::$strings["Undelete"] = "Восстановить";
+App::$strings["Add to app-tray"] = "Добавить в app-tray";
+App::$strings["Remove from app-tray"] = "Удалить из app-tray";
+App::$strings["Pin to navbar"] = "Добавить на панель навигации";
+App::$strings["Unpin from navbar"] = "Удалить с панели навигации";
+App::$strings["__ctx:permcat__ default"] = "по умолчанию";
+App::$strings["__ctx:permcat__ follower"] = "поклонник";
+App::$strings["__ctx:permcat__ contributor"] = "участник";
+App::$strings["__ctx:permcat__ publisher"] = "издатель";
+App::$strings["(No Title)"] = "(нет заголовка)";
+App::$strings["Wiki page create failed."] = "Не удалось создать страницу Wiki.";
+App::$strings["Wiki not found."] = "Wiki не найдена.";
+App::$strings["Destination name already exists"] = "Имя назначения уже существует";
+App::$strings["Page not found"] = "Страница не найдена.";
+App::$strings["Error reading page content"] = "Ошибка чтения содержимого страницы";
+App::$strings["Error reading wiki"] = "Ошибка чтения Wiki";
+App::$strings["Page update failed."] = "Не удалось обновить страницу.";
+App::$strings["Nothing deleted"] = "Ничего не удалено";
+App::$strings["Compare: object not found."] = "Сравнение: объект не найден.";
+App::$strings["Page updated"] = "Страница обновлена";
+App::$strings["Untitled"] = "Не озаглавлено";
+App::$strings["Wiki resource_id required for git commit"] = "Требуется resource_id Wiki для отправки в Git";
App::$strings["__ctx:wiki_history__ Message"] = "Сообщение";
App::$strings["Date"] = "Дата";
App::$strings["Compare"] = "Сравнить";
-App::$strings["Can view my channel stream and posts"] = "Может просматривать мой поток и сообщения";
-App::$strings["Can send me their channel stream and posts"] = "Может присылать мне свои потоки и сообщения";
-App::$strings["Can view my default channel profile"] = "Может просматривать мой стандартный профиль канала";
-App::$strings["Can view my connections"] = "Может просматривать мои контакты";
-App::$strings["Can view my file storage and photos"] = "Может просматривать мое хранилище файлов";
-App::$strings["Can upload/modify my file storage and photos"] = "Может загружать/изменять мои файлы и фотографии в хранилище";
-App::$strings["Can view my channel webpages"] = "Может просматривать мои веб-страницы";
-App::$strings["Can view my wiki pages"] = "Может просматривать мои вики-страницы";
-App::$strings["Can create/edit my channel webpages"] = "Может редактировать мои веб-страницы";
-App::$strings["Can write to my wiki pages"] = "Может редактировать мои вики-страницы";
-App::$strings["Can post on my channel (wall) page"] = "Может публиковать на моей странице канала";
-App::$strings["Can comment on or like my posts"] = "Может прокомментировать или отмечать как понравившиеся мои посты";
-App::$strings["Can send me private mail messages"] = "Может отправлять мне личные сообщения по эл. почте";
-App::$strings["Can like/dislike profiles and profile things"] = "Может комментировать или отмечать как нравится/ненравится мой профиль";
-App::$strings["Can forward to all my channel connections via ! mentions in posts"] = "Может пересылать всем подписчикам моего канала используя ! в публикациях";
-App::$strings["Can chat with me"] = "Может общаться со мной в чате";
-App::$strings["Can source my public posts in derived channels"] = "Может использовать мои публичные сообщения в клонированных лентах сообщений";
-App::$strings["Can administer my channel"] = "Может администрировать мой канал";
-App::$strings["Social Networking"] = "Социальная Сеть";
-App::$strings["Social - Federation"] = "Социальная - Федерация";
-App::$strings["Social - Mostly Public"] = "Социальная - В основном общественный";
-App::$strings["Social - Restricted"] = "Социальная - Ограниченный";
-App::$strings["Social - Private"] = "Социальная - Частный";
-App::$strings["Community Forum"] = "Форум сообщества";
-App::$strings["Forum - Mostly Public"] = "Форум - В основном общественный";
-App::$strings["Forum - Restricted"] = "Форум - Ограниченный";
-App::$strings["Forum - Private"] = "Форум - Частный";
-App::$strings["Feed Republish"] = "Публиковать ленты новостей";
-App::$strings["Feed - Mostly Public"] = "Ленты новостей - В основном общественный";
-App::$strings["Feed - Restricted"] = "Ленты новостей - Ограниченный";
-App::$strings["Special Purpose"] = "Спец. назначение";
-App::$strings["Special - Celebrity/Soapbox"] = "Спец. назначение - Знаменитость/Soapbox";
-App::$strings["Special - Group Repository"] = "Спец. назначение - Групповой репозиторий";
-App::$strings["Custom/Expert Mode"] = "Экспертный режим";
-App::$strings["Update Error at %s"] = "Ошибка обновления на %s";
-App::$strings["Update %s failed. See error logs."] = "Выполнение %s неудачно. Проверьте системный журнал.";
+App::$strings["Different viewers will see this text differently"] = "Различные зрители увидят этот текст по-разному";
+App::$strings["Visible to your default audience"] = "Видно вашей аудитории по умолчанию.";
+App::$strings["Only me"] = "Только мне";
+App::$strings["Public"] = "Общедоступно";
+App::$strings["Anybody in the \$Projectname network"] = "Любому в сети \$Projectname";
+App::$strings["Any account on %s"] = "Любой аккаунт в %s";
+App::$strings["Any of my connections"] = "Любой из моих контактов";
+App::$strings["Only connections I specifically allow"] = "Только те контакты, кому я дам разрешение";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Любой аутентифицированный (может включать посетителей их других сетей)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Любые контакты включая те, которые вы ещё не одобрили";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Это настройка по умолчанию для аудитории ваших обычных потоков и публикаций";
+App::$strings["This is your default setting for who can view your default channel profile"] = "Это настройка по умолчанию для тех, кто может просматривать профиль вашего основного канала";
+App::$strings["This is your default setting for who can view your connections"] = "Это настройка по умолчанию для тех, кто может просматривать ваши контакты";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "Это настройка по умолчанию для тех, кто может просматривать ваше хранилище файлов и фотографий";
+App::$strings["This is your default setting for the audience of your webpages"] = "Это настройка по умолчанию для аудитории ваших веб-страниц";
+App::$strings["Directory Options"] = "Параметры каталога";
+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["edit"] = "редактировать";
+App::$strings["Edit 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"] = "Название комнаты дублируется";
+App::$strings["Invalid room specifier."] = "Неверный указатель комнаты.";
+App::$strings["Room not found."] = "Комната не найдена.";
+App::$strings["Room is full"] = "Комната переполнена";
+App::$strings["Unable to verify site signature for %s"] = "Невозможно проверить подпись сайта %s";
App::$strings["\$Projectname Notification"] = "Оповещение \$Projectname ";
App::$strings["\$projectname"] = "";
App::$strings["Thank You,"] = "Спасибо,";
@@ -2709,60 +1919,27 @@ App::$strings["created a new post"] = "создал новую публикац
App::$strings["commented on %s's post"] = "прокомментировал публикацию %s";
App::$strings["edited a post dated %s"] = "отредактировал публикацию датированную %s";
App::$strings["edited a comment dated %s"] = "отредактировал комментарий датированный %s";
-App::$strings["(No Title)"] = "(нет заголовка)";
-App::$strings["Wiki page create failed."] = "Не удалось создать страницу Wiki.";
-App::$strings["Wiki not found."] = "Wiki не найдена.";
-App::$strings["Destination name already exists"] = "Имя назначения уже существует";
-App::$strings["Page not found"] = "Страница не найдена.";
-App::$strings["Error reading page content"] = "Ошибка чтения содержимого страницы";
-App::$strings["Error reading wiki"] = "Ошибка чтения Wiki";
-App::$strings["Page update failed."] = "Не удалось обновить страницу.";
-App::$strings["Nothing deleted"] = "Ничего не удалено";
-App::$strings["Compare: object not found."] = "Сравнение: объект не найден.";
-App::$strings["Page updated"] = "Страница обновлена";
-App::$strings["Untitled"] = "Не озаглавлено";
-App::$strings["Wiki resource_id required for git commit"] = "Требуется resource_id Wiki для отправки в Git";
-App::$strings["__ctx:permcat__ default"] = "по умолчанию";
-App::$strings["__ctx:permcat__ follower"] = "поклонник";
-App::$strings["__ctx:permcat__ contributor"] = "участник";
-App::$strings["__ctx:permcat__ publisher"] = "издатель";
-App::$strings["Apps"] = "Приложения";
-App::$strings["Site Admin"] = "Администратор сайта";
-App::$strings["Report Bug"] = "Сообщить об ошибке";
-App::$strings["Remote Diagnostics"] = "Удалённая диагностика";
-App::$strings["Stream"] = "Поток";
-App::$strings["Mail"] = "Переписка";
-App::$strings["Chat"] = "Чат";
-App::$strings["Probe"] = "Проба";
-App::$strings["Suggest"] = "Предложить";
-App::$strings["Random Channel"] = "Случайный канал";
-App::$strings["Invite"] = "Пригласить";
-App::$strings["Language"] = "Язык";
-App::$strings["Post"] = "Публикация";
-App::$strings["Profile Photo"] = "Фотография профиля";
-App::$strings["Notifications"] = "Оповещения";
-App::$strings["Order Apps"] = "Порядок приложений";
-App::$strings["CardDAV"] = "";
-App::$strings["Guest Access"] = "Гостевой доступ";
-App::$strings["OAuth Apps Manager"] = "Менеджер OAuth";
-App::$strings["OAuth2 Apps Manager"] = "Менеджер OAuth2";
-App::$strings["PDL Editor"] = "Редактор PDL";
-App::$strings["Premium Channel"] = "Премиальный канал";
-App::$strings["My Chatrooms"] = "Мои чаты";
-App::$strings["Channel Export"] = "Экспорт канала";
-App::$strings["Purchase"] = "Купить";
-App::$strings["Undelete"] = "Восстановить";
-App::$strings["Add to app-tray"] = "Добавить в app-tray";
-App::$strings["Remove from app-tray"] = "Удалить из app-tray";
-App::$strings["Pin to navbar"] = "Добавить на панель навигации";
-App::$strings["Unpin from navbar"] = "Удалить с панели навигации";
-App::$strings["I will attend"] = "Я буду присутствовать";
-App::$strings["I will not attend"] = "Я не буду присутствовать";
+App::$strings["Wiki updated successfully"] = "Wiki успешно обновлена";
+App::$strings["Wiki files deleted successfully"] = "Wiki успешно удалена";
+App::$strings["Update Error at %s"] = "Ошибка обновления на %s";
+App::$strings["Update %s failed. See error logs."] = "Выполнение %s неудачно. Проверьте системный журнал.";
+App::$strings["Private Message"] = "Личное сообщение";
+App::$strings["Privacy conflict. Discretion advised."] = "Конфиликт настроек конфиденциальности.";
+App::$strings["Admin Delete"] = "Удалено администратором";
+App::$strings["Select"] = "Выбрать";
+App::$strings["I will attend"] = "Я буду участвовать";
+App::$strings["I will not attend"] = "Я не буду участвовать";
App::$strings["I might attend"] = "Я возможно буду присутствовать";
App::$strings["I agree"] = "Я согласен";
App::$strings["I disagree"] = "Я не согласен";
App::$strings["I abstain"] = "Я воздержался";
+App::$strings["Toggle Star Status"] = "Переключить статус пометки";
+App::$strings["Message signature validated"] = "Подпись сообщения проверена";
+App::$strings["Message signature incorrect"] = "Подпись сообщения неверная";
App::$strings["Add Tag"] = "Добавить тег";
+App::$strings["Conversation Tools"] = "Инструменты общения";
+App::$strings["like"] = "нравится";
+App::$strings["dislike"] = "не нравится";
App::$strings["Share This"] = "Поделиться этим";
App::$strings["share"] = "поделиться";
App::$strings["Delivery Report"] = "Отчёт о доставке";
@@ -2776,72 +1953,377 @@ App::$strings["to"] = "к";
App::$strings["via"] = "через";
App::$strings["Wall-to-Wall"] = "Стена-к-Стене";
App::$strings["via Wall-To-Wall:"] = "через Стена-к-Стене:";
+App::$strings["from %s"] = "от %s";
+App::$strings["last edited: %s"] = "последнее редактирование: %s";
+App::$strings["Expires: %s"] = "Срок действия: %s";
App::$strings["Attend"] = "Посетить";
App::$strings["Attendance Options"] = "Параметры посещаемости";
App::$strings["Vote"] = "Голосовать";
App::$strings["Voting Options"] = "Параметры голосования";
App::$strings["Save Bookmarks"] = "Сохранить закладки";
App::$strings["Add to Calendar"] = "Добавить в календарь";
+App::$strings["This is an unsaved preview"] = "Это несохранённый просмотр";
+App::$strings["%s show all"] = "%s показать всё";
+App::$strings["Bold"] = "Жирный";
+App::$strings["Italic"] = "Курсив";
+App::$strings["Underline"] = "Подчеркнутый";
+App::$strings["Quote"] = "Цитата";
+App::$strings["Code"] = "Код";
App::$strings["Image"] = "Изображение";
+App::$strings["Attach/Upload file"] = "Прикрепить/загрузить файл";
App::$strings["Insert Link"] = "Вставить ссылку";
App::$strings["Video"] = "Видео";
App::$strings["Your full name (required)"] = "Ваше полное имя (требуется)";
App::$strings["Your email address (required)"] = "Ваш адрес электронной почты (требуется)";
App::$strings["Your website URL (optional)"] = "URL вашего вебсайта (необязательно)";
-App::$strings["Missing room name"] = "Отсутствует название комнаты";
-App::$strings["Duplicate room name"] = "Название комнаты дублируется";
-App::$strings["Invalid room specifier."] = "Неверный указатель комнаты.";
-App::$strings["Room not found."] = "Комната не найдена.";
-App::$strings["Room is full"] = "Комната переполнена";
-App::$strings["Public"] = "Общедоступно";
-App::$strings["Anybody in the \$Projectname network"] = "Любому в сети \$Projectname";
-App::$strings["Any account on %s"] = "Любой аккаунт в %s";
-App::$strings["Any of my connections"] = "Любой из моих контактов";
-App::$strings["Only connections I specifically allow"] = "Только те контакты, кому я дам разрешение";
-App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Любой аутентифицированный (может включать посетителей их других сетей)";
-App::$strings["Any connections including those who haven't yet been approved"] = "Любые контакты включая те, которые вы ещё не одобрили";
-App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Это настройка по умолчанию для аудитории ваших обычных потоков и публикаций";
-App::$strings["This is your default setting for who can view your default channel profile"] = "Это настройка по умолчанию для тех, кто может просматривать профиль вашего основного канала";
-App::$strings["This is your default setting for who can view your connections"] = "Это настройка по умолчанию для тех, кто может просматривать ваши контакты";
-App::$strings["This is your default setting for who can view your file storage and photos"] = "Это настройка по умолчанию для тех, кто может просматривать ваше хранилище файлов и фотографий";
-App::$strings["This is your default setting for the audience of your webpages"] = "Это настройка по умолчанию для аудитории ваших веб-страниц";
-App::$strings["0. Beginner/Basic"] = "Начинающий / Базовый";
-App::$strings["1. Novice - not skilled but willing to learn"] = "1. Новичок - не опытный, но желающий учиться";
-App::$strings["2. Intermediate - somewhat comfortable"] = "2. Промежуточный - более удобный";
-App::$strings["3. Advanced - very comfortable"] = "3. Продвинутый - очень удобный";
-App::$strings["4. Expert - I can write computer code"] = "4. Эксперт - я умею программировать";
-App::$strings["5. Wizard - I probably know more than you do"] = "5. Волшебник - возможно я знаю больше чем ты";
-App::$strings["Wiki updated successfully"] = "Wiki успешно обновлена";
-App::$strings["Wiki files deleted successfully"] = "Wiki успешно удалена";
-App::$strings["Use markdown for editing posts"] = "Использовать язык разметки Markdown для редактирования публикаций";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Удалённая аутентификация заблокирована. Вы вошли на этот сайт локально. Пожалуйста, выйдите и попробуйте ещё раз.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Добро пожаловать %s. Удаленная аутентификация успешно завершена.";
+App::$strings["parent"] = "источник";
+App::$strings["Collection"] = "Коллекция";
+App::$strings["Principal"] = "Субъект";
+App::$strings["Addressbook"] = "Адресная книга";
+App::$strings["Calendar"] = "Календарь";
+App::$strings["Schedule Inbox"] = "План занятий входящий";
+App::$strings["Schedule Outbox"] = "План занятий исходящий";
+App::$strings["Total"] = "Всего";
+App::$strings["Shared"] = "Общие";
+App::$strings["Add Files"] = "Добавить файлы";
+App::$strings["You are using %1\$s of your available file storage."] = "Вы используете %1\$s из доступного вам хранилища файлов.";
+App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Вы используете %1\$s из %2\$s доступного хранилища файлов (%3\$s&#37;).";
+App::$strings["WARNING:"] = "Предупреждение:";
+App::$strings["Create new folder"] = "Создать новую папку";
+App::$strings["Upload file"] = "Загрузить файл";
+App::$strings["Drop files here to immediately upload"] = "Поместите файлы сюда для немедленной загрузки";
+App::$strings["Forums"] = "Форумы";
+App::$strings["Select Channel"] = "Выбрать канал";
+App::$strings["Read-write"] = "Чтение-запись";
+App::$strings["Read-only"] = "Только чтение";
+App::$strings["My Calendars"] = "Мои календари";
+App::$strings["Shared Calendars"] = "Общие календари";
+App::$strings["Share this calendar"] = "Поделиться этим календарём";
+App::$strings["Calendar name and color"] = "Имя и цвет календаря";
+App::$strings["Create new calendar"] = "Создать новый календарь";
+App::$strings["Calendar Name"] = "Имя календаря";
+App::$strings["Calendar Tools"] = "Инструменты календаря";
+App::$strings["Import calendar"] = "Импортировать календарь";
+App::$strings["Select a calendar to import to"] = "Выбрать календарь для импорта в";
+App::$strings["Addressbooks"] = "Адресные книги";
+App::$strings["Addressbook name"] = "Имя адресной книги";
+App::$strings["Create new addressbook"] = "Создать новую адресную книгу";
+App::$strings["Addressbook Name"] = "Имя адресной книги";
+App::$strings["Addressbook Tools"] = "Инструменты адресной книги";
+App::$strings["Import addressbook"] = "Импортировать адресную книгу";
+App::$strings["Select an addressbook to import to"] = "Выбрать адресную книгу для импорта в";
+App::$strings["Categories"] = "Категории";
+App::$strings["Everything"] = "Всё";
+App::$strings["Events Tools"] = "Инструменты для событий";
+App::$strings["Export Calendar"] = "Экспортировать календарь";
+App::$strings["Import Calendar"] = "Импортировать календарь";
+App::$strings["Suggested Chatrooms"] = "Рекомендуемые чаты";
+App::$strings["HQ Control Panel"] = "Панель управления HQ";
+App::$strings["Create a new post"] = "Создать новую публикацию";
+App::$strings["Private Mail Menu"] = "Меню личной переписки";
+App::$strings["Combined View"] = "Комбинированный вид";
+App::$strings["Inbox"] = "Входящие";
+App::$strings["Outbox"] = "Исходящие";
+App::$strings["New Message"] = "Новое сообщение";
+App::$strings["Overview"] = "Обзор";
+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 to this forum"] = "Показывать публикации этого форума";
+App::$strings["Show forums"] = "Показывать форумы";
+App::$strings["Starred Posts"] = "Отмеченные публикации";
+App::$strings["Show posts that I have starred"] = "Показывать публикации которые я отметил";
+App::$strings["Personal Posts"] = "Личные публикации";
+App::$strings["Show posts that mention or involve me"] = "Показывать публикации где вы были упомянуты или привлечены";
+App::$strings["Show posts that I have filed to %s"] = "Показывать публикации которые я добавил в %s";
+App::$strings["Saved Folders"] = "Сохранённые каталоги";
+App::$strings["Show filed post categories"] = "Показывать категории добавленных публикаций";
+App::$strings["Panel search"] = "Панель поиска";
+App::$strings["Filter by name"] = "Отфильтровать по имени";
+App::$strings["Remove active filter"] = "Удалить активный фильтр";
+App::$strings["Stream Filters"] = "Фильтры потока";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "У вас есть %1$.0f из %2$.0f разрешенных контактов.";
+App::$strings["Add New Connection"] = "Добавить новый контакт";
+App::$strings["Enter channel address"] = "Введите адрес канала";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Пример: ivan@example.com, http://example.com/ivan";
+App::$strings["Archives"] = "Архивы";
+App::$strings["Received Messages"] = "Полученные сообщения";
+App::$strings["Sent Messages"] = "Отправленные сообщения";
+App::$strings["Conversations"] = "Беседы";
+App::$strings["No messages."] = "Сообщений нет.";
+App::$strings["Delete conversation"] = "Удалить беседу";
+App::$strings["Chat Members"] = "Участники чата";
+App::$strings["photo/image"] = "фотография / изображение";
+App::$strings["Remove term"] = "Удалить термин";
+App::$strings["Saved Searches"] = "Сохранённые поиски";
+App::$strings["Add new page"] = "Добавить новую страницу";
+App::$strings["Wiki Pages"] = "Wiki страницы";
+App::$strings["Page name"] = "Название страницы";
+App::$strings["Refresh"] = "Обновить";
+App::$strings["Tasks"] = "Задачи";
+App::$strings["Suggestions"] = "Рекомендации";
+App::$strings["See more..."] = "Просмотреть больше...";
+App::$strings["Commented Date"] = "По комментариям";
+App::$strings["Order by last commented date"] = "Сортировка по дате последнего комментария";
+App::$strings["Posted Date"] = "По публикациям";
+App::$strings["Order by last posted date"] = "Сортировка по дате последней публикации";
+App::$strings["Date Unthreaded"] = "По порядку";
+App::$strings["Order unthreaded by date"] = "Сортировка в порядке поступления";
+App::$strings["Stream Order"] = "Упорядочить поток";
+App::$strings["Click to show more"] = "Нажмите чтобы показать больше";
+App::$strings["Tags"] = "Теги";
+App::$strings["App Collections"] = "Коллекции приложений";
+App::$strings["Installed apps"] = "Установленные приложения";
+App::$strings["Profile Creation"] = "Создание профиля";
+App::$strings["Upload profile photo"] = "Загрузить фотографию профиля";
+App::$strings["Upload cover photo"] = "Загрузить фотографию обложки";
+App::$strings["Edit your profile"] = "Редактировать профиль";
+App::$strings["Find and Connect with others"] = "Найти и вступить в контакт";
+App::$strings["View the directory"] = "Просмотреть каталог";
+App::$strings["Manage your connections"] = "Управление вашими контактами";
+App::$strings["Communicate"] = "Связаться";
+App::$strings["View your channel homepage"] = "Домашняя страница канала";
+App::$strings["View your network stream"] = "Просмотреть ваш сетевой поток";
+App::$strings["Documentation"] = "Документация";
+App::$strings["Missing Features?"] = "Отсутствует функция?";
+App::$strings["Pin apps to navigation bar"] = "Прикрепить приложение к панели";
+App::$strings["Install more apps"] = "Установить больше приложений";
+App::$strings["View public stream"] = "Просмотреть публичный поток";
+App::$strings["Member registrations waiting for confirmation"] = "Регистрации участников, ожидающие подверждения";
+App::$strings["Inspect queue"] = "Просмотр очереди";
+App::$strings["DB updates"] = "Обновление базы данных";
+App::$strings["Admin"] = "Администрирование";
+App::$strings["Addon Features"] = "Настройки расширений";
+App::$strings["Account settings"] = "Настройки аккаунта";
+App::$strings["Channel settings"] = "Настройки канала";
+App::$strings["Display settings"] = "Настройки отображения";
+App::$strings["Manage locations"] = "Управление местоположением";
+App::$strings["Bookmarked Chatrooms"] = "Закладки чатов";
+App::$strings["New Network Activity"] = "Новая сетевая активность";
+App::$strings["New Network Activity Notifications"] = "Новые уведомления о сетевой активности";
+App::$strings["View your network activity"] = "Просмотреть вашу сетевую активность";
+App::$strings["Mark all notifications read"] = "Пометить уведомления как прочитанные";
+App::$strings["Show new posts only"] = "Показывать только новые публикации";
+App::$strings["Filter by name or address"] = "Фильтровать по имени или адресу";
+App::$strings["New Home Activity"] = "Новая локальная активность";
+App::$strings["New Home Activity Notifications"] = "Новые уведомления локальной активности";
+App::$strings["View your home activity"] = "Просмотреть локальную активность";
+App::$strings["Mark all notifications seen"] = "Пометить уведомления как просмотренные";
+App::$strings["New Mails"] = "Новая переписка";
+App::$strings["New Mails Notifications"] = "Уведомления о новой переписке";
+App::$strings["View your private mails"] = "Просмотреть вашу личную переписку";
+App::$strings["Mark all messages seen"] = "Пометить сообщения как просмотренные";
+App::$strings["New Events"] = "Новые события";
+App::$strings["New Events Notifications"] = "Уведомления о новых событиях";
+App::$strings["View events"] = "Просмотреть события";
+App::$strings["Mark all events seen"] = "Пометить все события как просмотренные";
+App::$strings["New Connections Notifications"] = "Уведомления о новых контактах";
+App::$strings["View all connections"] = "Просмотр всех контактов";
+App::$strings["New Files"] = "Новые файлы";
+App::$strings["New Files Notifications"] = "Уведомления о новых файлах";
+App::$strings["Notices"] = "Оповещения";
+App::$strings["View all notices"] = "Просмотреть все оповещения";
+App::$strings["Mark all notices seen"] = "Пометить все оповещения как просмотренные";
+App::$strings["New Registrations"] = "Новые регистрации";
+App::$strings["New Registrations Notifications"] = "Уведомления о новых регистрациях";
+App::$strings["Public Stream Notifications"] = "Уведомления публичного потока";
+App::$strings["View the public stream"] = "Просмотреть публичный поток";
+App::$strings["Sorry, you have got no notifications at the moment"] = "Извините, но сейчас у вас нет уведомлений";
+App::$strings["Source channel not found."] = "Канал-источник не найден.";
+App::$strings["Network/Protocol"] = "Сеть / протокол";
+App::$strings["Zot"] = "";
+App::$strings["Diaspora"] = "";
+App::$strings["Friendica"] = "";
+App::$strings["OStatus"] = "";
+App::$strings["Create an account to access services and applications"] = "Создайте аккаунт для доступа к службам и приложениям";
+App::$strings["Logout"] = "Выход";
+App::$strings["Login/Email"] = "Пользователь / email";
+App::$strings["Password"] = "Пароль";
+App::$strings["Remember me"] = "Запомнить меня";
+App::$strings["Forgot your password?"] = "Забыли пароль или логин?";
+App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Ошибка SSL/TLS веб-сайта для %s";
+App::$strings["Website SSL certificate is not valid. Please correct."] = "SSL/TLS сертификат веб-сайт недействителен. Исправьте это.";
+App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Задания Cron не запущены на %s";
+App::$strings["Cron/Scheduled tasks not running."] = "Задания Cron / планировщика не запущены.";
+App::$strings["never"] = "никогда";
+App::$strings["Focus (Hubzilla default)"] = "Фокус (по умолчанию Hubzilla)";
+App::$strings["Theme settings"] = "Настройки темы";
+App::$strings["Narrow navbar"] = "Узкая панель навигации";
+App::$strings["Navigation bar background color"] = "Панель навигации, цвет фона";
+App::$strings["Navigation bar icon color "] = "Панель навигации, цвет значков";
+App::$strings["Navigation bar active icon color "] = "Панель навигации, цвет активного значка";
+App::$strings["Link color"] = "Цвет ссылок";
+App::$strings["Set font-color for banner"] = "Цвет текста в шапке";
+App::$strings["Set the background color"] = "Цвет фона";
+App::$strings["Set the background image"] = "Фоновое изображение";
+App::$strings["Set the background color of items"] = "Цвет фона элементов";
+App::$strings["Set the background color of comments"] = "Цвет фона комментариев";
+App::$strings["Set font-size for the entire application"] = "Установить системный размер шрифта";
+App::$strings["Examples: 1rem, 100%, 16px"] = "Например: 1rem, 100%, 16px";
+App::$strings["Set font-color for posts and comments"] = "Цвет шрифта для публикаций и комментариев";
+App::$strings["Set radius of corners"] = "Радиус скруглений";
+App::$strings["Example: 4px"] = "Например: 4px";
+App::$strings["Set shadow depth of photos"] = "Глубина теней фотографий";
+App::$strings["Set maximum width of content region in pixel"] = "Максимальная ширина содержания региона (в пикселях)";
+App::$strings["Leave empty for default width"] = "Оставьте пустым для ширины по умолчанию";
+App::$strings["Left align page content"] = "Выровнять содержимое страницы по левому краю";
+App::$strings["Set size of conversation author photo"] = "Размер фотографии автора беседы";
+App::$strings["Set size of followup author photos"] = "Размер фотографий подписчиков";
+App::$strings["Show advanced settings"] = "Показать расширенные настройки";
+App::$strings["Errors encountered deleting database table "] = "Возникшие при удалении таблицы базы данных ошибки";
+App::$strings["Submit Settings"] = "Отправить настройки";
+App::$strings["Drop tables when uninstalling?"] = "Удалить таблицы при деинсталляции?";
+App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Если включено, то таблицы базы данных Rendezvous будут удалены при удалении плагина.";
+App::$strings["Mapbox Access Token"] = "Токен доступа к Mapbox";
+App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Если вы введете токен доступа к Mapbox, он будет использоваться для извлечения фрагментов карты из Mapbox вместо стандартного сервера OpenStreetMap.";
+App::$strings["Rendezvous"] = "";
+App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Этот идентификатор был удалён другим участником из-за неактивности. Пожалуйста нажмите кнопку \"Новый идентификатор\" для обновления страницы и получения нового идентификатора. Вы можете использовать то же имя.";
+App::$strings["Welcome to Rendezvous!"] = "Добро пожаловать в Rendezvous!";
+App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Введите ваше имя для вступления в это Rendezvous. Для того, чтобы делиться вашим положением с другими участниками, нажмите \"GPS control\". Когда ваше местоположение определно, красная точка появится и остальные смогут увидеть вас на карте.";
+App::$strings["Let's meet here"] = "Давайте встретимся здесь";
+App::$strings["New marker"] = "Новый маркер";
+App::$strings["Edit marker"] = "Редактировать маркер";
+App::$strings["New identity"] = "Новый идентификатор";
+App::$strings["Delete marker"] = "Удалить маркер";
+App::$strings["Delete member"] = "Удалить участника";
+App::$strings["Edit proximity alert"] = "Изменить оповещение о близости";
+App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Оповещение о близости будет произведено, если этот участник находится на определённом расстоянии от вас. <br><br>Введите радиус в метрах (0 для отключения):";
+App::$strings["distance"] = "расстояние";
+App::$strings["Proximity alert distance (meters)"] = "Расстояние для уведомления о близости (метров)";
+App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Оповещение о близости будет произведено, если вы находитесь на определённом расстоянии местоположения маркера. <br><br>Введите радиус в метрах (0 для отключения):";
+App::$strings["Marker proximity alert"] = "Маркер уведомления о близости";
+App::$strings["Reminder note"] = "Напоминание";
+App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Введите сообщение для отображения когда вы находитесь рядом";
+App::$strings["Add new rendezvous"] = "Добавить новое Rendezvous.";
+App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Создайте новое Rendezvous и поделитесь ссылкой доступа с теми, кого вы хотите пригласить в группу. Тот, кто откроет эту ссылку, станет её участником. Участники могут видеть местоположение, добавлять маркеры на карту или делится своим собственным местоположением с группой.";
+App::$strings["You have no rendezvous. Press the button above to create a rendezvous!"] = "У вас нет Rendezvous. Нажмите на кнопку ниже чтобы создать его!";
+App::$strings["Skeleton App"] = "Приложение \"Скелет\"";
+App::$strings["A skeleton for addons, you can copy/paste"] = "Скелет для приложений. Вы можете использовать copy/paste";
+App::$strings["Some setting"] = "Некоторые настройки";
+App::$strings["A setting"] = "Настройка";
+App::$strings["Skeleton Settings"] = "Настройки скелета";
+App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Протокол GNU-Social не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала.";
+App::$strings["GNU-Social Protocol App"] = "Приложение \"Протокол GNU-Social\"";
+App::$strings["GNU-Social Protocol"] = "Протокол GNU-Social";
+App::$strings["Follow"] = "Отслеживать";
+App::$strings["%1\$s is now following %2\$s"] = "%1\$s сейчас отслеживает %2\$s";
+App::$strings["Random Planet App"] = "Приложение \"Случайная планета\"";
+App::$strings["Installed"] = "Установлено";
+App::$strings["Set a random planet from the Star Wars Empire as your location when posting"] = "Установить случайную планету из Империи Звездных Войн в качестве вашего местоположения при публикации";
+App::$strings["System defaults:"] = "Системные по умолчанию:";
+App::$strings["Preferred Clipart IDs"] = "Предпочитаемый Clipart ID";
+App::$strings["List of preferred clipart ids. These will be shown first."] = "Список предпочитаемых Clipart ID. Эти будут показаны первыми.";
+App::$strings["Default Search Term"] = "Условие поиска по умолчанию";
+App::$strings["The default search term. These will be shown second."] = "Условие поиска по умолчанию. Показываются во вторую очередь.";
+App::$strings["Return After"] = "Вернуться после";
+App::$strings["Page to load after image selection."] = "Страница для загрузки после выбора изображения.";
+App::$strings["Edit Profile"] = "Редактировать профиль";
+App::$strings["Profile List"] = "Список профилей";
+App::$strings["Order of Preferred"] = "Порядок предпочтения";
+App::$strings["Sort order of preferred clipart ids."] = "Порядок сортировки предпочитаемых Clipart ID. ";
+App::$strings["Newest first"] = "Новое первым";
+App::$strings["As entered"] = "По мере ввода";
+App::$strings["Order of other"] = "Порядок других";
+App::$strings["Sort order of other clipart ids."] = "Порядок сортировки остальных Clipart ID.";
+App::$strings["Most downloaded first"] = "Самое загружаемое первым";
+App::$strings["Most liked first"] = "Самое нравящееся первым";
+App::$strings["Preferred IDs Message"] = "Сообщение от предпочитаемых ID";
+App::$strings["Message to display above preferred results."] = "Отображаемое сообщение над предпочитаемыми результатами.";
+App::$strings["Uploaded by: "] = "Загружено:";
+App::$strings["Drawn by: "] = "Нарисовано:";
+App::$strings["Use this image"] = "Использовать это изображение";
+App::$strings["Or select from a free OpenClipart.org image:"] = "Или выберите из бесплатных изображений на OpenClipart.org";
+App::$strings["Search Term"] = "Условие поиска";
+App::$strings["Unknown error. Please try again later."] = "Неизвестная ошибка. Пожалуйста, повторите попытку позже.";
+App::$strings["Profile photo updated successfully."] = "Фотография профиля обновлена успешно.";
+App::$strings["Flag Adult Photos"] = "Пометка фотографий для взрослых";
+App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Предоставьте возможность редактирования фотографий, чтобы скрыть неприемлемые фотографии из альбома по умолчанию";
+App::$strings["You haven't set a TOTP secret yet.\nPlease click the button below to generate one and register this site\nwith your preferred authenticator app."] = "Вы еще не установили секретный код TOTP. Пожалуйста, нажмите на кнопку ниже, чтобы сгенерировать его и зарегистрировать этот сайт в предпочитаемом вами приложении для аутентификации.";
+App::$strings["Your TOTP secret is"] = "Ваш секретный код TOTP";
+App::$strings["Be sure to save it somewhere in case you lose or replace your mobile device.\nUse your mobile device to scan the QR code below to register this site\nwith your preferred authenticator app."] = "Обязательно сохраните его где-нибудь на случай потери или замены мобильного устройства. С помощью мобильного устройства отсканируйте приведенный ниже QR-код, чтобы зарегистрировать этот сайт в предпочитаемом вами приложении для аутентификации.";
+App::$strings["Test"] = "Тест";
+App::$strings["Generate New Secret"] = "Сгенерировать новый секретный код";
+App::$strings["Go"] = "Вперёд";
+App::$strings["Enter your password"] = "Введите ваш пароль";
+App::$strings["enter TOTP code from your device"] = "введите код TOTP из вашего устройства";
+App::$strings["Pass!"] = "Принято!";
+App::$strings["Fail"] = "Отказано";
+App::$strings["Incorrect password, try again."] = "Неверный пароль, попробуйте снова.";
+App::$strings["Record your new TOTP secret and rescan the QR code above."] = "Запишите ваш секретный код TOTP и повторно отсканируйте приведенный ниже QR-код.";
+App::$strings["TOTP Settings"] = "Настройки TOTP";
+App::$strings["TOTP Two-Step Verification"] = "Двухэтапная верификация TOTP";
+App::$strings["Enter the 2-step verification generated by your authenticator app:"] = "Введите код проверки, созданный вашим приложением для аутентификации";
+App::$strings["Success!"] = "Успех!";
+App::$strings["Invalid code, please try again."] = "Неверный код. Пожалуйста, попробуйте ещё раз.";
+App::$strings["Too many invalid codes..."] = "Слишком много неверных кодов...";
+App::$strings["Verify"] = "Проверить";
+App::$strings["Wordpress Settings saved."] = "Настройки WordPress сохранены.";
+App::$strings["Wordpress Post App"] = "Приложение \"Публикация в Wordpress\"";
+App::$strings["Post to WordPress or anything else which uses the wordpress XMLRPC API"] = "Опубликовать в WordPress или в чём-то ещё, поддерживающем wordpress XMLRPC API";
+App::$strings["WordPress username"] = "Имя пользователя WordPress";
+App::$strings["WordPress password"] = "Пароль WordPress";
+App::$strings["WordPress API URL"] = "URL API WordPress";
+App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Обычно https://your-blog.tld/xmlrpc.php";
+App::$strings["WordPress blogid"] = "";
+App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Для многопользовательских сайтов, таких, как wordpress.com. В противном случае оставьте пустым";
+App::$strings["Post to WordPress by default"] = "Публиковать в WordPress по умолчанию";
+App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Пересылать комментарии (требуется плагин hubzilla_wp)";
+App::$strings["Wordpress Post"] = "Публикация в WordPress";
+App::$strings["Post to WordPress"] = "Опубликовать в WordPress";
+App::$strings["Possible adult content"] = "Возможно содержимое для взрослых";
+App::$strings["%s - view"] = "%s - просмотр";
+App::$strings["NSFW Settings saved."] = "Настройки NSFW сохранены.";
+App::$strings["NSFW App"] = "Приложение NSFW";
+App::$strings["Collapse content that contains predefined words"] = "Свернуть содержимое, содержащее предопределенные слова";
+App::$strings["This app looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Это приложение просматривает публикации для слов / текста, которые вы указываете ниже, и сворачивает любой контент, содержащий эти ключевые слова, поэтому он не отображается в неподходящее время, например, сексуальные инсинуации, которые могут быть неправильными в настройке работы. Например, мы рекомендуем отмечать любой контент, содержащий наготу, тегом #NSFW. Этот фильтр также способен реагировать на любое другое указанное вами слово / текст и может использоваться в качестве фильтра содержимого общего назначения.";
+App::$strings["Comma separated list of keywords to hide"] = "Список ключевых слов для скрытия, через запятую";
+App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "слово, /регулярное_выражение/, lang=xx, lang!=xx";
+App::$strings["NSFW"] = "";
+App::$strings["Max queueworker threads"] = "Макс. количество обработчиков очереди";
+App::$strings["Assume workers dead after ___ seconds"] = "Считать обработчики неактивными через секунд";
+App::$strings["Queueworker Settings"] = "Настройки обработчика очереди";
+App::$strings["Insane Journal Crosspost Connector Settings saved."] = "Настройки пересылки публикаций Insane Journal сохранены.";
+App::$strings["Insane Journal Crosspost Connector App"] = "Приложение \"Пересылка публикаций Insane Journal\"";
+App::$strings["Relay public postings to Insane Journal"] = "Пересылает общедоступные публикации в Insane Journal";
+App::$strings["InsaneJournal username"] = "Имя пользователя Insane Journal";
+App::$strings["InsaneJournal password"] = "Пароль Insane Journal";
+App::$strings["Post to InsaneJournal by default"] = "Публиковать в Insane Journal по умолчанию";
+App::$strings["Insane Journal Crosspost Connector"] = "Пересылка публикаций Insane Journal";
+App::$strings["Post to Insane Journal"] = "Опубликовать в Insane Journal";
App::$strings["Post to Dreamwidth"] = "Публиковать в Dreamwidth";
-App::$strings["Enable Dreamwidth Post Plugin"] = "Включить плагин публикаций Dreamwidth";
+App::$strings["Dreamwidth Crosspost Connector Settings saved."] = "Настройки пересылки публикаций Dreamwidth сохранены.";
+App::$strings["Dreamwidth Crosspost Connector App"] = "Приложение \"Пересылка публикаций Dreamwidth\"";
+App::$strings["Relay public postings to Dreamwidth"] = "Пересылает общедоступные публикации в Dreamwidth";
App::$strings["Dreamwidth username"] = "Имя пользователя Dreamwidth";
App::$strings["Dreamwidth password"] = "Пароль Dreamwidth";
App::$strings["Post to Dreamwidth by default"] = "Публиковать в Dreamwidth по умолчанию";
-App::$strings["Dreamwidth Post Settings"] = "Настройки публикаций в Dreamwidth";
-App::$strings["Project Servers and Resources"] = "Серверы и ресурсы проекта";
-App::$strings["Project Creator and Tech Lead"] = "Создатель проекта и технический руководитель";
-App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "И сотни других людей и организаций которые помогали в создании Hubzilla.";
-App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Проекты Redmatrix / Hubzilla предоставляются, в основном, добровольцами, которые предоставляют свое время и опыт и, часто, оплачивают из своего кармана услуги, которыми они делятся с другими.";
-App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "Здесь нет корпоративного финансирования и рекламы, мы не собираем и не продаем вашу личную информацию. (Мы не контролируем вашу личную информацию - <strong>это делаете вы</strong>.)";
-App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Помогите поддержать нашу новаторскую работу в областях децентрализации, веб-идентификации и конфиденциальности.";
-App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "В ваших пожертвованиях поддерживают серверы и службы, а также помогают нам предоставлять новые возможности и продолжать развитие.";
-App::$strings["Donate"] = "Пожертвовать";
-App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Выберите проект, разработчика или общедоступный узел для поддержки в форме единоразового пожертвования";
-App::$strings["Donate Now"] = "Пожертвовать сейчас";
-App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>или</em></strong> станьте спонсором проекта (только для Hubzilla)";
-App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Пожалуйста, если желаете, укажите ваше имя для отображения в списке спонсоров.";
-App::$strings["Sponsor"] = "Спонсор";
-App::$strings["Special thanks to: "] = "Особые благодарности:";
-App::$strings["Fuzzloc Settings updated."] = "Настройки Fuzzloc обновлены.";
-App::$strings["Fuzzloc allows you to blur your precise location if your channel uses browser location mapping."] = "Fuzzloc позволяет размыть ваше точное местоположение, если ваш канал использует сопоставление местоположений браузера.";
-App::$strings["Enable Fuzzloc Plugin"] = "Включить плагин Fuzzloc";
-App::$strings["Minimum offset in meters"] = "Минимальное смещение в метрах";
-App::$strings["Maximum offset in meters"] = "Максимальное смещение в метрах";
-App::$strings["Fuzzloc Settings"] = "Настройки Fuzzloc";
-App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Разрешить волшебную аутентификацию только на сайтах ваших непосредственных соединений";
-App::$strings["Authchoose"] = "";
+App::$strings["Dreamwidth Crosspost Connector"] = "Пересылка публикаций Dreamwidth";
+App::$strings["New registration"] = "Новая регистрация";
+App::$strings["Message sent to %s. New account registration: %s"] = "Сообщение отправлено в %s. Регистрация нового аккаунта: %s";
+App::$strings["Hubzilla Directory Stats"] = "Каталог статистики Hubzilla";
+App::$strings["Total Hubs"] = "Всего хабов";
+App::$strings["Hubzilla Hubs"] = "Хабы Hubzilla";
+App::$strings["Friendica Hubs"] = "Хабы Friendica";
+App::$strings["Diaspora Pods"] = "Стручки Diaspora";
+App::$strings["Hubzilla Channels"] = "Каналы Hubzilla";
+App::$strings["Friendica Channels"] = "Каналы Friendica";
+App::$strings["Diaspora Channels"] = "Каналы Diaspora";
+App::$strings["Aged 35 and above"] = "Возраст 35 и выше";
+App::$strings["Aged 34 and under"] = "Возраст 34 и ниже";
+App::$strings["Average Age"] = "Средний возраст";
+App::$strings["Known Chatrooms"] = "Известные чаты";
+App::$strings["Known Tags"] = "Известные теги";
+App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Обратите внимание, что статистика Diaspora и Friendica это только те, о которых ** этот каталог ** знает, а не все известные в сети. Это также относится и к чатам.";
+App::$strings["Your Webbie:"] = "Ваш Webbie:";
+App::$strings["Fontsize (px):"] = "Размер шрифта (px):";
+App::$strings["Link:"] = "Ссылка:";
+App::$strings["Like us on Hubzilla"] = "Нравится на Hubzilla";
+App::$strings["Embed:"] = "Встроить:";
App::$strings["Photos imported"] = "Фотографии импортированы";
App::$strings["Redmatrix Photo Album Import"] = "Импортировать альбом фотографий Redmatrix";
App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Это позволит импортировать все ваши альбомы фотографий Redmatrix в этот канал.";
@@ -2852,89 +2334,53 @@ App::$strings["Import just this album"] = "Импортировать тольк
App::$strings["Leave blank to import all albums"] = "Оставьте пустым для импорта всех альбомов";
App::$strings["Maximum count to import"] = "Максимальное количество для импорта";
App::$strings["0 or blank to import all available"] = "0 или пусто для импорта всех доступных";
-App::$strings["A simple gallery for your photo albums"] = "Простая галлерея для ваших фотоальбомов";
+App::$strings["Popular Channels"] = "Популярные каналы";
+App::$strings["Channels to auto connect"] = "Каналы для автоматического подключения";
+App::$strings["Comma separated list"] = "Список, разделённый запятыми";
+App::$strings["IRC Settings"] = "Настройки IRC";
+App::$strings["IRC settings saved."] = "Настройки IRC сохранены";
+App::$strings["IRC Chatroom"] = "Чат IRC";
App::$strings["Gallery"] = "Галерея";
App::$strings["Photo Gallery"] = "Фотогалерея";
-App::$strings["Post to Friendica"] = "Опубликовать в Friendica";
-App::$strings["rtof Settings saved."] = "Настройки rtof сохранены.";
-App::$strings["Allow posting to Friendica"] = "Разрешить публиковать в Friendica";
-App::$strings["Send public postings to Friendica by default"] = "Отправлять общедоступные публикации во Friendica по умолчанию";
-App::$strings["Friendica API Path"] = "Путь к Friendica API";
-App::$strings["https://{sitename}/api"] = "";
-App::$strings["Friendica login name"] = "Имя входа Friendica";
-App::$strings["Friendica password"] = "Пароль Friendica";
-App::$strings["Hubzilla to Friendica Post Settings"] = "Настройки публикаций Hubzilla для Friendica";
-App::$strings["An account has been created for you."] = "Учётная запись, которая была для вас создана.";
-App::$strings["Authentication successful but rejected: account creation is disabled."] = "Аутентификация выполнена успешно, но отклонена: создание учетной записи отключено.";
-App::$strings["Post to Insanejournal"] = "Опубликовать в InsaneJournal";
-App::$strings["Enable InsaneJournal Post Plugin"] = "Включить плагин публикаций InsaneJournal";
-App::$strings["InsaneJournal username"] = "Имя пользователя InsaneJournal";
-App::$strings["InsaneJournal password"] = "Пароль InsaneJournal";
-App::$strings["Post to InsaneJournal by default"] = "Публиковать в InsaneJournal по умолчанию";
-App::$strings["InsaneJournal Post Settings"] = "Настройки публикаций в InsaneJournal";
-App::$strings["Insane Journal Settings saved."] = "Настройки InsaneJournal сохранены.";
-App::$strings["Your account on %s will expire in a few days."] = "Ваш аккаунт на %s перестанет работать через несколько дней.";
-App::$strings["Your $Productname test account is about to expire."] = "Ваш тестовый аккаунт в $Productname близок к окончанию срока действия.";
-App::$strings["Redmatrix File Storage Import"] = "Импорт файлового хранилища Redmatrix";
-App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Это позволит импортировать все ваши файлы в Redmatrix в этот канал.";
-App::$strings["file"] = "файл";
-App::$strings["Post to Twitter"] = "Опубликовать в Twitter";
-App::$strings["Twitter settings updated."] = "Настройки Twitter обновлены";
-App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Не найдено пары ключей для Twitter. Пожалуйста, свяжитесь с администратором сайта.";
-App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "В этой установке Hubzilla плагин Twitter был включён, однако пока он не подключён к вашему аккаунту в Twitter. Для этого нажмите на кнопку ниже для получения PIN-кода от Twitter который нужно скопировать в поле ввода и отправить форму. Только ваши <strong>общедоступные</strong> публикации будут опубликованы в Twitter.";
-App::$strings["Log in with Twitter"] = "Войти в Twitter";
-App::$strings["Copy the PIN from Twitter here"] = "Скопируйте PIN-код из Twitter здесь";
-App::$strings["Currently connected to: "] = "В настоящее время подключён к:";
-App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Замечание</strong>: Из-за настроек конфиденциальности (<em>скрыть данные своего профиля от неизвестных зрителей?</em>) cсылка, потенциально включенная в общедоступные публикации, переданные в Twitter, приведет посетителя к пустой странице, информирующей его о том, что доступ к вашему профилю был ограничен.";
-App::$strings["Allow posting to Twitter"] = "Разрешить публиковать в Twitter";
-App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи Twitter";
-App::$strings["Twitter post length"] = "Длина публикации Twitter";
-App::$strings["Maximum tweet length"] = "Максимальная длина твита";
-App::$strings["Send public postings to Twitter by default"] = "Отправлять общедоступные публикации в Twitter по умолчанию";
-App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи Twitter по умолчанию";
-App::$strings["Clear OAuth configuration"] = "Очистить конфигурацию OAuth";
-App::$strings["Twitter Post Settings"] = "Настройки публикаций в Twitter";
-App::$strings["Submit Settings"] = "Отправить настройки";
-App::$strings["Edit your profile and change settings."] = "Отредактировать ваш профиль и изменить настройки.";
-App::$strings["Click here to see activity from your connections."] = "Нажмите сюда для отображения активности ваши контактов.";
-App::$strings["Click here to see your channel home."] = "Нажмите сюда чтобы увидеть главную страницу вашего канала.";
-App::$strings["You can access your private messages from here."] = "Вы можете получить доступ с личной переписке здесь.";
-App::$strings["Create new events here."] = "Создать новое событие здесь.";
-App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Вы можете подключать новые контакты и менять разрешения для существующих здесь. Также вы можете создавать их группы.";
-App::$strings["System notifications will arrive here"] = "Системные оповещения будут показываться здесь";
-App::$strings["Search for content and users"] = "Поиск пользователей и содержимого";
-App::$strings["Browse for new contacts"] = "Поиск новых контактов";
-App::$strings["Launch installed apps"] = "Запустить установленные приложения";
-App::$strings["Looking for help? Click here."] = "Нужна помощь? Нажмите сюда.";
-App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "Новые события произошли в вашей сети. Нажмите здесь для того, чтобы знать что случилось!";
-App::$strings["You have received a new private message. Click here to see from who!"] = "Вы получили новое личное сообщение. Нажмите чтобы увидеть от кого!";
-App::$strings["There are events this week. Click here too see which!"] = "На этой неделе есть события. Нажмите здесь чтобы увидеть какие!";
-App::$strings["You have received a new introduction. Click here to see who!"] = "Вы были представлены. Нажмите чтобы увидеть кому!";
-App::$strings["There is a new system notification. Click here to see what has happened!"] = "Это новое системное уведомление. Нажмите чтобы посмотреть что случилось!";
-App::$strings["Click here to share text, images, videos and sound."] = "Нажмите сюда чтобы поделиться текстом, изображениями, видео или треком.";
-App::$strings["You can write an optional title for your update (good for long posts)."] = "Вы можете написать необязательный заголовок для вашей публикации (желательно для больших постов).";
-App::$strings["Entering some categories here makes it easier to find your post later."] = "Введите категории здесь чтобы было проще найти вашу публикацию позднее.";
-App::$strings["Share photos, links, location, etc."] = "Поделиться фотографией, ссылками, местоположение и т.п.";
-App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Хотите только поделиться временным содержимым? Установите срок его действия.";
-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["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."] = "Лёгкий поиск публикаций по дате.";
-App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Рекомендуемые пользователи, которые были представлены в качестве предложений, и которые, по нашему мнению, могут оказаться интересными.";
-App::$strings["Here you see channels you have connected to."] = "Здесь вы видите каналы, к которым вы подключились.";
-App::$strings["Save your search so you can repeat it at a later date."] = "Сохраните ваш поиск с тем, чтобы повторить его позже.";
-App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Если вы видите этот значок, вы можете быть уверены, что отправитель - это тот, кто это говорит. Это нормально, что не всегда можно проверить отправителя, поэтому значок иногда будет отсутствовать. Обычно об этом не нужно беспокоиться.";
-App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "Опасность! Кажется, кто-то пытался подделать сообщение! Это сообщение не обязательно от того, от кого оно значится!";
-App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "Добро пожаловать в Hubzilla! Желаете получить обзор пользовательского интерфейса?</p> <p>Вы можете его приостановаить и в любое время перезагрузив страницу или перейдя на другую.</p><p>Также вы можете нажать клавишу \"Назад\"";
-App::$strings["Block Completely"] = "Заблокировать полностью";
-App::$strings["Block channels"] = "Заблокировать каналы";
-App::$strings["superblock settings updated"] = "Настройки Superblock обновлены.";
-App::$strings["Currently blocked"] = "В настоящее время заблокирован";
-App::$strings["No channels currently blocked"] = "В настоящее время никакие каналы не блокируются";
+App::$strings["Gallery App"] = "Приложение \"Галерея\"";
+App::$strings["A simple gallery for your photo albums"] = "Простая галлерея для ваших фотоальбомов";
+App::$strings["Livejournal Crosspost Connector App"] = "Приложение \"Пересылка публикаций Livejournal\"";
+App::$strings["Relay public posts to Livejournal"] = "Пересылает общедоступные публикации в Livejournal";
+App::$strings["Livejournal username"] = "Имя пользователя Livejournal";
+App::$strings["Livejournal password"] = "Пароль Livejournal";
+App::$strings["Post to Livejournal by default"] = "Публиковать в Livejournal по умолчанию";
+App::$strings["Livejournal Crosspost Connector"] = "Пересылка публикаций Livejournal";
+App::$strings["Post to Livejournal"] = "Опубликовать в Livejournal";
+App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Мы столкнулись с проблемой входа с предоставленным вами OpenID. Пожалуйста, проверьте корректность его написания.";
+App::$strings["The error message was:"] = "Сообщение об ошибке было:";
+App::$strings["First Name"] = "Имя";
+App::$strings["Last Name"] = "Фамилия";
+App::$strings["Nickname"] = "Псевдоним";
+App::$strings["Full Name"] = "Полное имя";
+App::$strings["Profile Photo 16px"] = "Фотография профиля 16px";
+App::$strings["Profile Photo 32px"] = "Фотография профиля 32px";
+App::$strings["Profile Photo 48px"] = "Фотография профиля 48px";
+App::$strings["Profile Photo 64px"] = "Фотография профиля 64px";
+App::$strings["Profile Photo 80px"] = "Фотография профиля 80px";
+App::$strings["Profile Photo 128px"] = "Фотография профиля 128px";
+App::$strings["Timezone"] = "Часовой пояс";
+App::$strings["Birth Year"] = "Год рождения";
+App::$strings["Birth Month"] = "Месяц рождения";
+App::$strings["Birth Day"] = "День рождения";
+App::$strings["Birthdate"] = "Дата рождения";
+App::$strings["OpenID protocol error. No ID returned."] = "Ошибка протокола OpenID. Идентификатор не возвращён.";
+App::$strings["Login failed."] = "Не удалось войти.";
+App::$strings["Male"] = "Мужчина";
+App::$strings["Female"] = "Женщина";
+App::$strings["You're welcome."] = "Пожалуйста.";
+App::$strings["Ah shucks..."] = "О, чёрт...";
+App::$strings["Don't mention it."] = "Не стоит благодарности.";
+App::$strings["&lt;blush&gt;"] = "&lt;краснею&gt;";
+App::$strings["Startpage App"] = "Приложение \"Стартовая страница\"";
+App::$strings["Set a preferred page to load on login from home page"] = "Устанавливает предпочтительную страницу для загрузки при входе с домашней страницы";
+App::$strings["Page to load after login"] = "Страница для загрузки после входа";
+App::$strings["Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave blank for default network page (grid)."] = "Примеры: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (оставьте пустым для для страницы сети по умолчанию).";
+App::$strings["Startpage"] = "Стартовая страница";
App::$strings["bitchslap"] = "дать леща";
App::$strings["bitchslapped"] = "получил леща";
App::$strings["shag"] = "вздрючить";
@@ -2973,18 +2419,63 @@ App::$strings["bonk"] = "";
App::$strings["bonked"] = "";
App::$strings["declare undying love for"] = "признаться в любви к";
App::$strings["declared undying love for"] = "признался в любви к";
-App::$strings["Logfile archive directory"] = "Каталог архивирования журнала";
-App::$strings["Directory to store rotated logs"] = "Каталог для хранения заархивированных журналов";
-App::$strings["Logfile size in bytes before rotating"] = "Размер файла журнала в байтах для архивирования";
-App::$strings["Number of logfiles to retain"] = "Количество сохраняемых файлов журналов";
-App::$strings["Your Webbie:"] = "Ваш Webbie:";
-App::$strings["Fontsize (px):"] = "Размер шрифта (px):";
-App::$strings["Link:"] = "Ссылка:";
-App::$strings["Like us on Hubzilla"] = "Нравится на Hubzilla";
-App::$strings["Embed:"] = "Встроить:";
-App::$strings["QR code"] = "QR-код";
-App::$strings["QR Generator"] = "Генератор QR-кодов";
-App::$strings["Enter some text"] = "Введите любой текст";
+App::$strings["%1\$s dislikes %2\$s's %3\$s"] = "%1\$s не нравится %2\$s's %3\$s";
+App::$strings["Diaspora Protocol Settings updated."] = "Настройки протокола Diaspora обновлены.";
+App::$strings["The diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Протокол Diaspora не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала.";
+App::$strings["Diaspora Protocol App"] = "Приложение \"Протокол Diaspora\"";
+App::$strings["Allow any Diaspora member to comment on your public posts"] = "Разрешить любому участнику Diaspora комментировать ваши общедоступные публикации";
+App::$strings["Prevent your hashtags from being redirected to other sites"] = "Предотвратить перенаправление тегов на другие сайты";
+App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "Подписывать и отправлять публикации и комментарии с несуществующей подписью Diaspora";
+App::$strings["Followed hashtags (comma separated, do not include the #)"] = "Отслеживаемые теги (через запятую, исключая #)";
+App::$strings["Diaspora Protocol"] = "Протокол Diaspora";
+App::$strings["No username found in import file."] = "Имя пользователя не найдено в файле для импорта.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Не удалось создать уникальный адрес канала. Импорт не завершен.";
+App::$strings["Photo Cache settings saved."] = "Настройки кэширования изображений сохранены.";
+App::$strings["Photo Cache addon saves a copy of images from external sites locally to increase your anonymity in the web."] = "Приложение \"Кэшировние изображений\" сохраняет копию изображений с внешних сайтов локально для повышения вашей анонимности в Интернет.";
+App::$strings["Photo Cache App"] = "Приложение \"Кэширование изображений\"";
+App::$strings["Minimal photo size for caching"] = "Минимальный размер изображений для кэширования";
+App::$strings["In pixels. From 1 up to 1024, 0 will be replaced with system default."] = "В пикселях. От 1 до 1024, 0 будет заменён значением по умолчанию.";
+App::$strings["Photo Cache"] = "Кэширование изображений";
+App::$strings["Your account on %s will expire in a few days."] = "Ваш аккаунт на %s перестанет работать через несколько дней.";
+App::$strings["Your $Productname test account is about to expire."] = "Ваш тестовый аккаунт в $Productname близок к окончанию срока действия.";
+App::$strings["Add some colour to tag clouds"] = "Добавить немного цвета для облака тегов";
+App::$strings["Rainbow Tag App"] = "Приложение \"Радуга тегов\"";
+App::$strings["Rainbow Tag"] = "Радуга тегов";
+App::$strings["Show Upload Limits"] = "Показать ограничения на загрузку";
+App::$strings["Hubzilla configured maximum size: "] = "Максимальный размер настроенный в Hubzilla:";
+App::$strings["PHP upload_max_filesize: "] = "";
+App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (должен быть больше чем upload_max_filesize): ";
+App::$strings["generic profile image"] = "Стандартное изображение профиля";
+App::$strings["random geometric pattern"] = "Случайный геометрический рисунок";
+App::$strings["monster face"] = "Лицо чудовища";
+App::$strings["computer generated face"] = "Сгенерированное компьютером лицо";
+App::$strings["retro arcade style face"] = "Лицо в стиле старой аркадной игры";
+App::$strings["Hub default profile photo"] = "Фотография профиля по умолчанию";
+App::$strings["Information"] = "Информация";
+App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "Плагин Libravatar также установлен. Пожалуйста, отключите плагин Libravatar или этот плагин Gravatar. Если Плагин Libravatar ничего не найдёт, он вернётся в Gravatar.";
+App::$strings["Save Settings"] = "Сохранить настройки";
+App::$strings["Default avatar image"] = "Изображение аватара по умолчанию";
+App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "Выберите изображения аватар по умолчанию если ничего не было найдено в Gravatar (см. README).";
+App::$strings["Rating of images"] = "Оценки изображений";
+App::$strings["Select the appropriate avatar rating for your site. See README"] = "Выберите подходящую оценку аватара для вашего сайта (см. README).";
+App::$strings["Gravatar settings updated."] = "Настройки Gravatar обновлены.";
+App::$strings["Hubzilla File Storage Import"] = "Импорт файлового хранилища Hubzilla";
+App::$strings["This will import all your cloud files from another server."] = "Это позволит импортировать все ваши файлы с другого сервера.";
+App::$strings["Hubzilla Server base URL"] = "Базовый URL сервера Hubzilla";
+App::$strings["Since modified date yyyy-mm-dd"] = "Начиная с даты изменений yyyy-mm-dd";
+App::$strings["Until modified date yyyy-mm-dd"] = "Заканчивая датой изменений yyyy-mm-dd";
+App::$strings["Who viewed my channel/profile"] = "Кто смотрел мой канал / профиль";
+App::$strings["Recent Channel/Profile Viewers"] = "Последние просмотры канала / профиля";
+App::$strings["No entries."] = "Нет записей.";
+App::$strings["NSA Bait App"] = "Приложение NSA Bait";
+App::$strings["Make yourself a political target"] = "Сделать себя политической мишенью";
+App::$strings["Send test email"] = "Отправить тестовый email";
+App::$strings["No recipients found."] = "Получателей не найдено.";
+App::$strings["Mail sent."] = "Сообщение отправлено";
+App::$strings["Sending of mail failed."] = "Не удалось отправить сообщение.";
+App::$strings["Mail Test"] = "Тестовое сообщение";
+App::$strings["Message subject"] = "Тема сообщения";
+App::$strings["Use markdown for editing posts"] = "Использовать язык разметки Markdown для редактирования публикаций";
App::$strings["View Larger"] = "Увеличить";
App::$strings["Tile Server URL"] = "URL сервера Tile";
App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Список <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">общедоступных серверов</a>";
@@ -2994,8 +2485,27 @@ App::$strings["Default zoom"] = "Масштаб по умолчанию";
App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "Уровень размера по умолчанию (1 - весь мир, 18 - максимальный; зависит от сервера).";
App::$strings["Include marker on map"] = "Включите маркер на карте";
App::$strings["Include a marker on the map."] = "Включить маркер на карте";
-App::$strings["Activate addon"] = "Активировать расширение";
-App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Скрыть виджет чата Jappixmini из веб-интерфейса";
+App::$strings["text to include in all outgoing posts from this site"] = "текст, который будет добавлен во все исходящие публикации с этого сайта";
+App::$strings["Fuzzloc Settings updated."] = "Настройки примерного положения обновлены.";
+App::$strings["Fuzzy Location App"] = "Приложение \"Примерное положение\"";
+App::$strings["Blur your precise location if your channel uses browser location mapping"] = "Размывает вашего точное местоположение в случае если ваш канал использует отображение местоположения из браузера";
+App::$strings["Minimum offset in meters"] = "Минимальное смещение в метрах";
+App::$strings["Maximum offset in meters"] = "Максимальное смещение в метрах";
+App::$strings["Fuzzy Location"] = "Примерное положение";
+App::$strings["Post to Friendica"] = "Опубликовать в Friendica";
+App::$strings["Friendica Crosspost Connector Settings saved."] = "Настройки пересылки публикаций Friendica сохранены.";
+App::$strings["Friendica Crosspost Connector App"] = "Приложение \"Пересылка публикаций Friendica\"";
+App::$strings["Relay public postings to a connected Friendica account"] = "Пересылает общедоступные публикации на подключённую учётную запись Friendica";
+App::$strings["Send public postings to Friendica by default"] = "Отправлять общедоступные публикации во Friendica по умолчанию";
+App::$strings["Friendica API Path"] = "Путь к Friendica API";
+App::$strings["https://{sitename}/api"] = "";
+App::$strings["Friendica login name"] = "Имя входа Friendica";
+App::$strings["Friendica password"] = "Пароль Friendica";
+App::$strings["Friendica Crosspost Connector"] = "Пересылка публикаций Friendica";
+App::$strings["Jappixmini App"] = "Приложение Jappix Mini";
+App::$strings["Provides a Facebook-like chat using Jappix Mini"] = "Предоставляет Facebook-подобный чат с использованием Jappix Mini";
+App::$strings["Status:"] = "Статус:";
+App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Скрыть виджет чата Jappix Mini из веб-интерфейса";
App::$strings["Jabber username"] = "Имя пользователя Jabber";
App::$strings["Jabber server"] = "Сервер Jabber";
App::$strings["Jabber BOSH host URL"] = "URL узла Jabber BOSH";
@@ -3005,110 +2515,138 @@ App::$strings["Hubzilla password"] = "Пароль Hubzilla";
App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Утверждать запросы на подписку от контактов Hubzilla автоматически";
App::$strings["Purge internal list of jabber addresses of contacts"] = "Очистить внутренний список адресов контактов Jabber";
App::$strings["Configuration Help"] = "Помощь по конфигурации";
-App::$strings["Jappix Mini Settings"] = "Настройки Jappix Mini";
-App::$strings["Errors encountered deleting database table "] = "Возникшие при удалении таблицы базы данных ошибки";
-App::$strings["Drop tables when uninstalling?"] = "Удалить таблицы при деинсталляции?";
-App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Если включено, то таблицы базы данных Rendezvous будут удалены при удалении плагина.";
-App::$strings["Mapbox Access Token"] = "Токен доступа к Mapbox";
-App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Если вы введете токен доступа к Mapbox, он будет использоваться для извлечения фрагментов карты из Mapbox вместо стандартного сервера OpenStreetMap.";
-App::$strings["Rendezvous"] = "";
-App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Этот идентификатор был удалён другим участником из-за неактивности. Пожалуйста нажмите кнопку \"Новый идентификатор\" для обновления страницы и получения нового идентификатора. Вы можете использовать то же имя.";
-App::$strings["Welcome to Rendezvous!"] = "Добро пожаловать в Rendezvous!";
-App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Введите ваше имя для вступления в это Rendezvous. Для того, чтобы делиться вашим положением с другими участниками, нажмите \"GPS control\". Когда ваше местоположение определно, красная точка появится и остальные смогут увидеть вас на карте.";
-App::$strings["Let's meet here"] = "Давайте встретимся здесь";
-App::$strings["New marker"] = "Новый маркер";
-App::$strings["Edit marker"] = "Редактировать маркер";
-App::$strings["New identity"] = "Новый идентификатор";
-App::$strings["Delete marker"] = "Удалить маркер";
-App::$strings["Delete member"] = "Удалить участника";
-App::$strings["Edit proximity alert"] = "Изменить оповещение о близости";
-App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Оповещение о близости будет произведено, если этот участник находится на определённом расстоянии от вас. <br><br>Введите радиус в метрах (0 для отключения):";
-App::$strings["distance"] = "расстояние";
-App::$strings["Proximity alert distance (meters)"] = "Расстояние для уведомления о близости (метров)";
-App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Оповещение о близости будет произведено, если вы находитесь на определённом расстоянии местоположения маркера. <br><br>Введите радиус в метрах (0 для отключения):";
-App::$strings["Marker proximity alert"] = "Маркер уведомления о близости";
-App::$strings["Reminder note"] = "Напоминание";
-App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Введите сообщение для отображения когда вы находитесь рядом";
-App::$strings["Add new rendezvous"] = "Добавить новое Rendezvous.";
-App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Создайте новое Rendezvous и поделитесь ссылкой доступа с теми, кого вы хотите пригласить в группу. Тот, кто откроет эту ссылку, станет её участником. Участники могут видеть местоположение, добавлять маркеры на карту или делится своим собственным местоположением с группой.";
-App::$strings["You have no rendezvous. Press the button above to create a rendezvous!"] = "У вас нет Rendezvous. Нажмите на кнопку ниже чтобы создать его!";
-App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Этот сайт отслеживается с помощью инструментов аналитики <a href='http://www.piwik.org'>Piwik</a>.";
-App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Если вы не хотите, чтобы ваши визиты регистрировались таким образом, вы <a href='%s'>можете отключить cookie с тем, чтобы Piwik не отслеживал дальнейшие посещения сайта</a>.";
-App::$strings["Piwik Base URL"] = "Базовый URL Piwik";
-App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Абсолютный путь к вашей установке Piwik (без типа протокола, с начальным слэшем)";
-App::$strings["Site ID"] = "ID сайта";
-App::$strings["Show opt-out cookie link?"] = "Показывать ссылку на отказ от использования cookies?";
-App::$strings["Asynchronous tracking"] = "Асинхронное отслеживание";
-App::$strings["Enable frontend JavaScript error tracking"] = "Включить отслеживание ошибок JavaScript на фронтенде.";
-App::$strings["This feature requires Piwik >= 2.2.0"] = "Эта функция требует версию Piwik >= 2.2.0";
-App::$strings["You are now authenticated to pumpio."] = "Вы аутентифицированы в Pump.io";
-App::$strings["return to the featured settings page"] = "Вернутся к странице настроек";
-App::$strings["Post to Pump.io"] = "Опубликовать в Pump.io";
-App::$strings["Pump.io servername"] = "Имя сервера Pump.io";
-App::$strings["Without \"http://\" or \"https://\""] = "Без \"http://\" или \"https://\"";
-App::$strings["Pump.io username"] = "Имя пользователя Pump.io";
-App::$strings["Without the servername"] = "без имени сервера";
-App::$strings["You are not authenticated to pumpio"] = "Вы не аутентифицированы на Pump.io";
-App::$strings["(Re-)Authenticate your pump.io connection"] = "Аутентифицировать (повторно) ваше соединение с Pump.io";
-App::$strings["Enable pump.io Post Plugin"] = "Включить плагин публикаций Pump.io";
-App::$strings["Post to pump.io by default"] = "Публиковать в Pump.io по умолчанию";
-App::$strings["Should posts be public"] = "Публикации должны быть общедоступными";
-App::$strings["Mirror all public posts"] = "Отображать все общедоступные публикации";
-App::$strings["Pump.io Post Settings"] = "Настройки публикаций в Pump.io";
-App::$strings["PumpIO Settings saved."] = "Настройки публикаций в Pump.io сохранены.";
-App::$strings["Nsabait Settings updated."] = "Настройки Nsabait обновлены";
-App::$strings["Enable NSAbait Plugin"] = "Включить плагин NSAbait";
-App::$strings["NSAbait Settings"] = "Настройки Nsabait";
-App::$strings["Send test email"] = "Отправить тестовый email";
-App::$strings["No recipients found."] = "Получателей не найдено.";
-App::$strings["Mail sent."] = "Сообщение отправлено";
-App::$strings["Sending of mail failed."] = "Не удалось отправить сообщение.";
-App::$strings["Mail Test"] = "Тестовое сообщение";
-App::$strings["Message subject"] = "Тема сообщения";
-App::$strings["You're welcome."] = "Пожалуйста.";
-App::$strings["Ah shucks..."] = "О, чёрт...";
-App::$strings["Don't mention it."] = "Не стоит благодарности.";
-App::$strings["&lt;blush&gt;"] = "&lt;краснею&gt;";
-App::$strings["System defaults:"] = "Системные по умолчанию:";
-App::$strings["Preferred Clipart IDs"] = "Предпочитаемый Clipart ID";
-App::$strings["List of preferred clipart ids. These will be shown first."] = "Список предпочитаемых Clipart ID. Эти будут показаны первыми.";
-App::$strings["Default Search Term"] = "Условие поиска по умолчанию";
-App::$strings["The default search term. These will be shown second."] = "Условие поиска по умолчанию. Показываются во вторую очередь.";
-App::$strings["Return After"] = "Вернуться после";
-App::$strings["Page to load after image selection."] = "Страница для загрузки после выбора изображения.";
-App::$strings["Profile List"] = "Список профилей";
-App::$strings["Order of Preferred"] = "Порядок предпочтения";
-App::$strings["Sort order of preferred clipart ids."] = "Порядок сортировки предпочитаемых Clipart ID. ";
-App::$strings["Newest first"] = "Новое первым";
-App::$strings["As entered"] = "По мере ввода";
-App::$strings["Order of other"] = "Порядок других";
-App::$strings["Sort order of other clipart ids."] = "Порядок сортировки остальных Clipart ID.";
-App::$strings["Most downloaded first"] = "Самое загружаемое первым";
-App::$strings["Most liked first"] = "Самое нравящееся первым";
-App::$strings["Preferred IDs Message"] = "Сообщение от предпочитаемых ID";
-App::$strings["Message to display above preferred results."] = "Отображаемое сообщение над предпочитаемыми результатами.";
-App::$strings["Uploaded by: "] = "Загружено:";
-App::$strings["Drawn by: "] = "Нарисовано:";
-App::$strings["Use this image"] = "Использовать это изображение";
-App::$strings["Or select from a free OpenClipart.org image:"] = "Или выберите из бесплатных изображений на OpenClipart.org";
-App::$strings["Search Term"] = "Условие поиска";
-App::$strings["Unknown error. Please try again later."] = "Неизвестная ошибка. Пожалуйста, повторите попытку позже.";
-App::$strings["Profile photo updated successfully."] = "Фотография профиля обновлена успешно.";
-App::$strings["Hubzilla File Storage Import"] = "Импорт файлового хранилища Hubzilla";
-App::$strings["This will import all your cloud files from another server."] = "Это позволит импортировать все ваши файлы с другого сервера.";
-App::$strings["Hubzilla Server base URL"] = "Базовый URL сервера Hubzilla";
-App::$strings["Since modified date yyyy-mm-dd"] = "Начиная с даты изменений yyyy-mm-dd";
-App::$strings["Until modified date yyyy-mm-dd"] = "Заканчивая датой изменений yyyy-mm-dd";
-App::$strings["Post to Livejournal"] = "Опубликовать в Livejournal";
-App::$strings["Enable Livejournal Post Plugin"] = "Включить раширение публикаций в Livejournal";
-App::$strings["Livejournal username"] = "Имя пользователя Livejournal";
-App::$strings["Livejournal password"] = "Пароль Livejournal";
-App::$strings["Post to Livejournal by default"] = "Публиковать в Livejournal по умолчанию";
-App::$strings["Livejournal Post Settings"] = "Настройки публикации в Livejournal";
-App::$strings["Post to GNU social"] = "Опубликовать в GNU Social";
+App::$strings["Jappixmini Settings"] = "Настройки Jappix Мini";
+App::$strings["Your channel has been upgraded to the latest \$Projectname version."] = "Ваш канал был обновлён на последнюю версию \$Projectname.";
+App::$strings["To improve usability, we have converted some features into installable stand-alone apps."] = "Чтобы улучшить удобство использования, некоторые функции теперь доступны в виде устанавливаемых автономных приложений.";
+App::$strings["Please visit the \$Projectname"] = "Пожалуйста, посетите \$Projectname";
+App::$strings["app store"] = "раздел \"Приложения\"";
+App::$strings["and install possibly missing apps."] = "и установите необходимые вам.";
+App::$strings["Upgrade Info"] = "Сведения об обновлении";
+App::$strings["Do not show this again"] = "Больше не показывать";
+App::$strings["Access Denied"] = "Доступ запрещён";
+App::$strings["Enable Community Moderation"] = "Включить модерацию сообщества";
+App::$strings["Reputation automatically given to new members"] = "Репутация автоматически предоставляемая новым участникам";
+App::$strings["Reputation will never fall below this value"] = "Репутация никогда не упадёт ниже этого значения";
+App::$strings["Minimum reputation before posting is allowed"] = "Минимальная репутация для разрешения возможности размещать публикации";
+App::$strings["Minimum reputation before commenting is allowed"] = "Минимальная репутация для разрешения комментирования";
+App::$strings["Minimum reputation before a member is able to moderate other posts"] = "Минимальная репутация для возможности модерирования участником чужих публикаций";
+App::$strings["Max ratio of moderator's reputation that can be added to/deducted from reputation of person being moderated"] = "Максимальное соотношение репутации модератора, которое может быть добавлено / вычтено из репутации модерируемого участника";
+App::$strings["Reputation \"cost\" to post"] = "\"Стоимость\" репутации для публикации";
+App::$strings["Reputation \"cost\" to comment"] = "\"Стоимость\" репутации для комментирования";
+App::$strings["Reputation automatically recovers at this rate per hour until it reaches minimum_to_post"] = "Репутация автоматически восстанавливается с этой скоростью в час пока не достигает значения minimum_to_post";
+App::$strings["When minimum_to_moderate > reputation > minimum_to_post reputation recovers at this rate per hour"] = "При minimum_to_moderate > репутация > minimum_to_post репутация восстанавливается с этой скоростью в час";
+App::$strings["Community Moderation Settings"] = "Настройки модерирования сообщества";
+App::$strings["Can moderate reputation on my channel."] = "Может модерировать репутацию на моём канале";
+App::$strings["Channel Reputation"] = "Репутация канала";
+App::$strings["Block Completely"] = "Заблокировать полностью";
+App::$strings["Superblock App"] = "Приложение Superblock";
+App::$strings["Block channels"] = "Заблокировать каналы";
+App::$strings["superblock settings updated"] = "Настройки Superblock обновлены.";
+App::$strings["Currently blocked"] = "В настоящее время заблокирован";
+App::$strings["No channels currently blocked"] = "В настоящее время никакие каналы не блокируются";
+App::$strings["nofed Settings saved."] = "Настройки nofed сохранены.";
+App::$strings["No Federation App"] = "Приложение No Federation";
+App::$strings["Prevent posting from being federated to anybody. It will exist only on your channel page."] = "Запрещает федеративные функций для публикаций. Они будут существовать только на странице вашего канала.";
+App::$strings["Federate posts by default"] = "Разрешить федерацию публикаций по умолчанию";
+App::$strings["No Federation"] = "Отключить Federation";
+App::$strings["Federate"] = "Федерировать";
+App::$strings["Channel is required."] = "Необходим канал.";
+App::$strings["Hubzilla Crosspost Connector Settings saved."] = "Настройки пересылки публикаций Hubzilla сохранены.";
+App::$strings["Hubzilla Crosspost Connector App"] = "Приложение \"Пересылка публикаций Hubzilla\"";
+App::$strings["Relay public postings to another Hubzilla channel"] = "Пересылает общедоступные публикации в другой канал Hubzilla";
+App::$strings["Send public postings to Hubzilla channel by default"] = "Отправлять общедоступные публикации в канал Hubzilla по умолчанию";
+App::$strings["Hubzilla API Path"] = "Путь к Hubzilla API";
+App::$strings["Hubzilla login name"] = "Имя входа Hubzilla";
+App::$strings["Hubzilla channel name"] = "Название канала Hubzilla";
+App::$strings["Hubzilla Crosspost Connector"] = "Пересылка публикаций Hubzilla";
+App::$strings["Post to Hubzilla"] = "Опубликовать в Hubzilla";
+App::$strings["Logfile archive directory"] = "Каталог архивирования журнала";
+App::$strings["Directory to store rotated logs"] = "Каталог для хранения заархивированных журналов";
+App::$strings["Logfile size in bytes before rotating"] = "Размер файла журнала в байтах для архивирования";
+App::$strings["Number of logfiles to retain"] = "Количество сохраняемых файлов журналов";
+App::$strings["Friendica Photo Album Import"] = "Импортировать альбом фотографий Friendica";
+App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Это позволит импортировать все ваши альбомы фотографий Friendica в этот канал.";
+App::$strings["Friendica Server base URL"] = "Базовый URL сервера Friendica";
+App::$strings["Friendica Login Username"] = "Имя пользователя для входа Friendica";
+App::$strings["Friendica Login Password"] = "Пароль для входа Firendica";
+App::$strings["WYSIWYG status editor"] = "WYSIWYG редактор статуса ";
+App::$strings["WYSIWYG Status App"] = "Приложение \"WYSIWYG статус\"";
+App::$strings["WYSIWYG Status"] = "WYSIWYG статус";
+App::$strings["Set your location"] = "Задать своё местоположение";
+App::$strings["Clear browser location"] = "Очистить местоположение из браузера";
+App::$strings["Embed (existing) photo from your photo albums"] = "Встроить (существующее) фото из вашего фотоальбома";
+App::$strings["Tag term:"] = "Теги:";
+App::$strings["Where are you right now?"] = "Где вы сейчас?";
+App::$strings["Choose a different album..."] = "Выбрать другой альбом...";
+App::$strings["Comments enabled"] = "Комментарии включены";
+App::$strings["Comments disabled"] = "Комментарии отключены";
+App::$strings["Page link name"] = "Название ссылки на страницу ";
+App::$strings["Post as"] = "Опубликовать как";
+App::$strings["Toggle voting"] = "Подключить голосование";
+App::$strings["Disable comments"] = "Отключить комментарии";
+App::$strings["Toggle comments"] = "Переключить комментарии";
+App::$strings["Categories (optional, comma-separated list)"] = "Категории (необязательно, список через запятую)";
+App::$strings["Other networks and post services"] = "Другие сети и службы публикаций";
+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["Send multi-media HTML articles"] = "Отправить HTML статьи с мультимедиа";
+App::$strings["Not supported by some microblog services such as Mastodon"] = "Не поддерживается некоторыми микроблогами, например Mastodon";
+App::$strings["Activitypub Protocol"] = "Протокол ActivityPub";
+App::$strings["Project Servers and Resources"] = "Серверы и ресурсы проекта";
+App::$strings["Project Creator and Tech Lead"] = "Создатель проекта и технический руководитель";
+App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "И сотни других людей и организаций которые помогали в создании Hubzilla.";
+App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Проекты Redmatrix / Hubzilla предоставляются, в основном, добровольцами, которые предоставляют свое время и опыт и, часто, оплачивают из своего кармана услуги, которыми они делятся с другими.";
+App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "Здесь нет корпоративного финансирования и рекламы, мы не собираем и не продаем вашу личную информацию. (Мы не контролируем вашу личную информацию - <strong>это делаете вы</strong>.)";
+App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Помогите поддержать нашу новаторскую работу в областях децентрализации, веб-идентификации и конфиденциальности.";
+App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "В ваших пожертвованиях поддерживают серверы и службы, а также помогают нам предоставлять новые возможности и продолжать развитие.";
+App::$strings["Donate"] = "Пожертвовать";
+App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Выберите проект, разработчика или общедоступный узел для поддержки в форме единоразового пожертвования";
+App::$strings["Donate Now"] = "Пожертвовать сейчас";
+App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>или</em></strong> станьте спонсором проекта (только для Hubzilla)";
+App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Пожалуйста, если желаете, укажите ваше имя для отображения в списке спонсоров.";
+App::$strings["Sponsor"] = "Спонсор";
+App::$strings["Special thanks to: "] = "Особые благодарности:";
+App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "";
+App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "";
+App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Примеры действительных включают A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ...";
+App::$strings["Guitar Chords"] = "Гитарные аккорды";
+App::$strings["The complete online chord dictionary"] = "Полный онлайн словарь аккордов";
+App::$strings["Tuning"] = "Настройка";
+App::$strings["Chord name: example: Em7"] = "Наименование аккорда - example: Em7";
+App::$strings["Show for left handed stringing"] = "Показывать струны для левшей";
+App::$strings["Quick Reference"] = "Быстрая ссылка";
+App::$strings["Post to Libertree"] = "Опубликовать в Libertree";
+App::$strings["Libertree Crosspost Connector Settings saved."] = "Настройки пересылки публикаций Libertree сохранены.";
+App::$strings["Libertree Crosspost Connector App"] = "Приложение \"Пересылка публикаций Libertree\"";
+App::$strings["Relay public posts to Libertree"] = "Пересылает общедоступные публикации в Libertree";
+App::$strings["Libertree API token"] = "Токен Libertree API";
+App::$strings["Libertree site URL"] = "URL сайта Libertree";
+App::$strings["Post to Libertree by default"] = "Публиковать в Libertree по умолчанию";
+App::$strings["Libertree Crosspost Connector"] = "Пересылка публикаций Libertree";
+App::$strings["Flattr widget settings updated."] = "Настройки виджета Flattr обновлены.";
+App::$strings["Flattr Widget App"] = "Приложение \"Виджет Flattr\"";
+App::$strings["Add a Flattr button to your channel page"] = "Добавить кнопку Flattr на страницу вашего канала";
+App::$strings["Flattr user"] = "Пользователь Flattr";
+App::$strings["URL of the Thing to flattr"] = "URL ccылки на Flattr";
+App::$strings["If empty channel URL is used"] = "Если пусто, то используется URL канала";
+App::$strings["Title of the Thing to flattr"] = "Заголовок вещи на Flattr";
+App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Если пусто, то будет использовано \"Название канала Hubzilla\"";
+App::$strings["Static or dynamic flattr button"] = "Статическая или динамическая кнопка Flattr";
+App::$strings["static"] = "статическая";
+App::$strings["dynamic"] = "динамическая";
+App::$strings["Alignment of the widget"] = "Выравнивание виджета";
+App::$strings["left"] = "слева";
+App::$strings["right"] = "справа";
+App::$strings["Flattr Widget"] = "Виджет Flattr";
+App::$strings["Flattr this!"] = "Flattr это!";
App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Пожалуйста свяжитесь с администратором сайта. <br />Предоставленный URL API недействителен.";
App::$strings["We could not contact the GNU social API with the Path you entered."] = "Нам не удалось установить контакт с GNU Social API по введённому вами пути";
App::$strings["GNU social settings updated."] = "Настройки GNU Social обновлены.";
+App::$strings["Relay public postings to a connected GNU social account (formerly StatusNet)"] = "Пересылает общедоступные публикации на подключённую учётную запись GNU social (бывшая StatusNet)";
App::$strings["Globally Available GNU social OAuthKeys"] = "Глобально доступные ключи OAuthKeys GNU Social";
App::$strings["There are preconfigured OAuth key pairs for some GNU social servers available. If you are using one of them, please use these credentials.<br />If not feel free to connect to any other GNU social instance (see below)."] = "Существуют предварительно настроенные пары ключей OAuth для некоторых доступных серверов GNU social. Если вы используете один из них, используйте эти учетные данные. <br />Если вы не хотите подключаться к какому-либо другому серверу GNU social (см. ниже).";
App::$strings["Provide your own OAuth Credentials"] = "Предоставьте ваши собственные регистрационные данные OAuth";
@@ -3124,113 +2662,53 @@ App::$strings["Copy the security code from GNU social here"] = "Скопируй
App::$strings["Cancel Connection Process"] = "Отменить процесс подключения";
App::$strings["Current GNU social API is"] = "Текущий GNU social API";
App::$strings["Cancel GNU social Connection"] = "Отменить подключение с GNU social";
+App::$strings["Currently connected to: "] = "В настоящее время подключён к:";
App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Замечание</strong>: Из-за настроек конфиденциальности (<em>скрыть данные своего профиля от неизвестных зрителей?</em>) cсылка, потенциально включенная в общедоступные публикации, переданные в GNU social, приведет посетителя к пустой странице, информирующей его о том, что доступ к вашему профилю был ограничен.";
-App::$strings["Allow posting to GNU social"] = "Разрешить публиковать в GNU social";
-App::$strings["If enabled your public postings can be posted to the associated GNU-social account"] = "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи GNU social";
App::$strings["Post to GNU social by default"] = "Публиковать в GNU social по умолчанию";
App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи GNU social по умолчанию";
-App::$strings["GNU social Post Settings"] = "Настройки публикаций GNU social";
+App::$strings["Clear OAuth configuration"] = "Очистить конфигурацию OAuth";
+App::$strings["GNU-Social Crosspost Connector"] = "Подключение пересылки публикаций GNU Social";
+App::$strings["Post to GNU social"] = "Опубликовать в GNU Social";
App::$strings["API URL"] = "";
App::$strings["Application name"] = "Название приложения";
-App::$strings["Access Denied"] = "Доступ запрещён";
-App::$strings["Enable Community Moderation"] = "Включить модерацию сообщества";
-App::$strings["Reputation automatically given to new members"] = "Репутация автоматически предоставляемая новым участникам";
-App::$strings["Reputation will never fall below this value"] = "Репутация никогда не упадёт ниже этого значения";
-App::$strings["Minimum reputation before posting is allowed"] = "Минимальная репутация для разрешения возможности размещать публикации";
-App::$strings["Minimum reputation before commenting is allowed"] = "Минимальная репутация для разрешения комментирования";
-App::$strings["Minimum reputation before a member is able to moderate other posts"] = "Минимальная репутация для возможности модерирования участником чужих публикаций";
-App::$strings["Max ratio of moderator's reputation that can be added to/deducted from reputation of person being moderated"] = "Максимальное соотношение репутации модератора, которое может быть добавлено / вычтено из репутации модерируемого участника";
-App::$strings["Reputation \"cost\" to post"] = "\"Стоимость\" репутации для публикации";
-App::$strings["Reputation \"cost\" to comment"] = "\"Стоимость\" репутации для комментирования";
-App::$strings["Reputation automatically recovers at this rate per hour until it reaches minimum_to_post"] = "Репутация автоматически восстанавливается с этой скоростью в час пока не достигает значения minimum_to_post";
-App::$strings["When minimum_to_moderate > reputation > minimum_to_post reputation recovers at this rate per hour"] = "При minimum_to_moderate > репутация > minimum_to_post репутация восстанавливается с этой скоростью в час";
-App::$strings["Community Moderation Settings"] = "Настройки модерирования сообщества";
-App::$strings["Can moderate reputation on my channel."] = "Может модерировать репутацию на моём канале";
-App::$strings["Channel Reputation"] = "Репутация канала";
-App::$strings["Flag Adult Photos"] = "Пометка фотографий для взрослых";
-App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Предоставьте возможность редактирования фотографий, чтобы скрыть неприемлемые фотографии из альбома по умолчанию";
-App::$strings["First Name"] = "Имя";
-App::$strings["Last Name"] = "Фамилия";
-App::$strings["Nickname"] = "Псевдоним";
-App::$strings["Full Name"] = "Полное имя";
-App::$strings["Profile Photo 16px"] = "Фотография профиля 16px";
-App::$strings["Profile Photo 32px"] = "Фотография профиля 32px";
-App::$strings["Profile Photo 48px"] = "Фотография профиля 48px";
-App::$strings["Profile Photo 64px"] = "Фотография профиля 64px";
-App::$strings["Profile Photo 80px"] = "Фотография профиля 80px";
-App::$strings["Profile Photo 128px"] = "Фотография профиля 128px";
-App::$strings["Timezone"] = "Часовой пояс";
-App::$strings["Birth Year"] = "Год рождения";
-App::$strings["Birth Month"] = "Месяц рождения";
-App::$strings["Birth Day"] = "День рождения";
-App::$strings["Birthdate"] = "Дата рождения";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Мы столкнулись с проблемой входа с предоставленным вами OpenID. Пожалуйста, проверьте корректность его написания.";
-App::$strings["The error message was:"] = "Сообщение об ошибке было:";
-App::$strings["OpenID protocol error. No ID returned."] = "Ошибка протокола OpenID. Идентификатор не возвращён.";
-App::$strings["Set a preferred page to load on login from home page"] = "Установить предпочтительную страницу для загрузки при входе с домашней страницы";
-App::$strings["Page to load after login"] = "Страница для загрузки после входа";
-App::$strings["Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave blank for default network page (grid)."] = "Примеры: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (оставьте пустым для для страницы сети по умолчанию).";
-App::$strings["Startpage"] = "Стартовая страница";
-App::$strings["Hubzilla Directory Stats"] = "Каталог статистики Hubzilla";
-App::$strings["Total Hubs"] = "Всего хабов";
-App::$strings["Hubzilla Hubs"] = "Хабы Hubzilla";
-App::$strings["Friendica Hubs"] = "Хабы Friendica";
-App::$strings["Diaspora Pods"] = "Стручки Diaspora";
-App::$strings["Hubzilla Channels"] = "Каналы Hubzilla";
-App::$strings["Friendica Channels"] = "Каналы Friendica";
-App::$strings["Diaspora Channels"] = "Каналы Diaspora";
-App::$strings["Aged 35 and above"] = "Возраст 35 и выше";
-App::$strings["Aged 34 and under"] = "Возраст 34 и ниже";
-App::$strings["Average Age"] = "Средний возраст";
-App::$strings["Known Chatrooms"] = "Известные чаты";
-App::$strings["Known Tags"] = "Известные теги";
-App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Обратите внимание, что статистика Diaspora и Friendica это только те, о которых ** этот каталог ** знает, а не все известные в сети. Это также относится и к чатам.";
+App::$strings["QR code"] = "QR-код";
+App::$strings["QR Generator"] = "Генератор QR-кодов";
+App::$strings["Enter some text"] = "Введите любой текст";
+App::$strings["Invalid game."] = "Недействительная игра.";
+App::$strings["You are not a player in this game."] = "Вы не играете в эту игру.";
+App::$strings["You must be a local channel to create a game."] = "Ваш канал должен быть локальным чтобы создать игру.";
+App::$strings["You must select one opponent that is not yourself."] = "Вы должны выбрать противника который не является вами.";
+App::$strings["Random color chosen."] = "Выбран случайный цвет.";
+App::$strings["Error creating new game."] = "Ошибка создания новой игры.";
+App::$strings["Requested channel is not available."] = "Запрошенный канал не доступен.";
+App::$strings["Chess not installed."] = "Шахматы не установлены.";
+App::$strings["You must select a local channel /chess/channelname"] = "Вы должны выбрать локальный канал /chess/channelname";
+App::$strings["Enable notifications"] = "Включить оповещения";
+App::$strings["Twitter settings updated."] = "Настройки Twitter обновлены";
+App::$strings["Twitter Crosspost Connector App"] = "Приложение \"Пересылка публикаций Twitter\"";
+App::$strings["Relay public posts to Twitter"] = "Пересылает общедоступные публикации в Twitter";
+App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Не найдено пары ключей для Twitter. Пожалуйста, свяжитесь с администратором сайта.";
+App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "В этой установке Hubzilla плагин Twitter был включён, однако пока он не подключён к вашему аккаунту в Twitter. Для этого нажмите на кнопку ниже для получения PIN-кода от Twitter который нужно скопировать в поле ввода и отправить форму. Только ваши <strong>общедоступные</strong> публикации будут опубликованы в Twitter.";
+App::$strings["Log in with Twitter"] = "Войти в Twitter";
+App::$strings["Copy the PIN from Twitter here"] = "Скопируйте PIN-код из Twitter здесь";
+App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Замечание</strong>: Из-за настроек конфиденциальности (<em>скрыть данные своего профиля от неизвестных зрителей?</em>) cсылка, потенциально включенная в общедоступные публикации, переданные в Twitter, приведет посетителя к пустой странице, информирующей его о том, что доступ к вашему профилю был ограничен.";
+App::$strings["Twitter post length"] = "Длина публикации Twitter";
+App::$strings["Maximum tweet length"] = "Максимальная длина твита";
+App::$strings["Send public postings to Twitter by default"] = "Отправлять общедоступные публикации в Twitter по умолчанию";
+App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Если включено, ваши общедоступные публикации будут опубликованы в связанной учётной записи Twitter по умолчанию";
+App::$strings["Twitter Crosspost Connector"] = "Пересылка публикаций Twitter";
+App::$strings["Post to Twitter"] = "Опубликовать в Twitter";
+App::$strings["Smileybutton App"] = "Приложение \"Кнопка со смайликам\"";
+App::$strings["Adds a smileybutton to the jot editor"] = "Добавлять кнопку со смайликами в редактор Jot";
+App::$strings["Hide the button and show the smilies directly."] = "Скрыть кнопку и сразу показывать смайлики.";
+App::$strings["Smileybutton Settings"] = "Настройки кнопки со смайликами";
App::$strings["Enable Test Catalog"] = "Включить тестовый каталог";
App::$strings["Enable Manual Payments"] = "Включить ручные платежи";
App::$strings["Base Merchant Currency"] = "Основная торговая валюта";
App::$strings["Cart Settings"] = "Настройки карточек";
-App::$strings["Enable Subscription Management Module"] = "Включить модуль управления подписками";
-App::$strings["Cannot include subscription items with different terms in the same order."] = "Нельзя включать элементы подписки с разными условиями в том же заказе.";
-App::$strings["Select Subscription to Edit"] = "Выбрать подписку для редактирования";
-App::$strings["Edit Subscriptions"] = "Редактировать подписки";
-App::$strings["Subscription SKU"] = "Код подписки";
-App::$strings["Catalog Description"] = "Описание каталога";
-App::$strings["Subscription available for purchase."] = "Подписка доступна для покупки.";
-App::$strings["Maximum active subscriptions to this item per account."] = "Максимальное количество подписок на аккаунт для этой позиции";
-App::$strings["Subscription price."] = "Цена подписки.";
-App::$strings["Quantity"] = "Количество";
-App::$strings["Term"] = "Условия";
-App::$strings["Enable Hubzilla Services Module"] = "Включить модуль сервиса Hubzilla";
-App::$strings["New Sku"] = "Новый код";
-App::$strings["Cannot save edits to locked item."] = "Невозможно сохранить изменения заблокированной позиции.";
-App::$strings["SKU not found."] = "Код не найден.";
-App::$strings["Invalid Activation Directive."] = "Недействительная директива активации.";
-App::$strings["Invalid Deactivation Directive."] = "Недействительная директива деактивации";
-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["Changes Locked"] = "Изменения заблокированы";
-App::$strings["Item available for purchase."] = "Позиция доступна для приобретения.";
-App::$strings["Price"] = "Цена";
-App::$strings["Add buyer to privacy group"] = "Добавить покупателя в группу безопасности";
-App::$strings["Add buyer as connection"] = "Добавить покупателя как контакт";
-App::$strings["Set Service Class"] = "Установить класс обслуживания";
-App::$strings["Enable Paypal Button Module"] = "Включить модуль кнопки Paypal";
-App::$strings["Use Production Key"] = "Использовать ключ Production";
-App::$strings["Paypal Sandbox Client Key"] = "Ключ клиента Paypal Sandbox";
-App::$strings["Paypal Sandbox Secret Key"] = "Секретный ключ Paypal Sandbox";
-App::$strings["Paypal Production Client Key"] = "Ключ клиента Paypal Production";
-App::$strings["Paypal Production Secret Key"] = "Секретный ключ Paypal Production";
-App::$strings["Paypal button payments are not enabled."] = "Кнопка Paypal для платежей не включена.";
-App::$strings["Paypal button payments are not properly configured. Please choose another payment option."] = "Кнопка Paypal для платежей настроена неправильно. Пожалуйста, используйте другой вариант оплаты.";
-App::$strings["Order not found."] = "Заказ не найден.";
-App::$strings["Enable Manual Cart Module"] = "Включить модуль ручного управления карточками";
App::$strings["Access Denied."] = "Доступ запрещён.";
App::$strings["Order Not Found"] = "Заказ не найден";
App::$strings["Invalid Item"] = "Недействительный элемент";
-App::$strings["Error: order mismatch. Please try again."] = "Ошибка: несоответствие заказа. Пожалуйста, попробуйте ещё раз";
-App::$strings["Manual payments are not enabled."] = "Ручные платежи не подключены.";
-App::$strings["Finished"] = "Завершено";
App::$strings["DB Cleanup Failure"] = "Сбой очистки базы данных";
App::$strings["[cart] Item Added"] = "[cart] Элемент добавлен";
App::$strings["Order already checked out."] = "Заказ уже проверен.";
@@ -3238,92 +2716,97 @@ App::$strings["Drop database tables when uninstalling."] = "Сбросить т
App::$strings["Shop"] = "Магазин";
App::$strings["Cart utilities for orders and payments"] = "Утилиты карточек для заказов и платежей";
App::$strings["You must be logged into the Grid to shop."] = "Вы должны быть в сети для доступа к магазину";
+App::$strings["Order not found."] = "Заказ не найден.";
App::$strings["Access denied."] = "Доступ запрещён.";
App::$strings["No Order Found"] = "Нет найденных заказов";
App::$strings["An unknown error has occurred Please start again."] = "Произошла неизвестная ошибка. Пожалуйста, начните снова.";
App::$strings["Invalid Payment Type. Please start again."] = "Недействительный тип платежа. Пожалуйста, начните снова.";
App::$strings["Order not found"] = "Заказ не найден";
-App::$strings["Federate"] = "";
-App::$strings["nofed Settings saved."] = "Настройки nofed сохранены.";
-App::$strings["Allow Federation Toggle"] = "Разрешить переключение федерации";
-App::$strings["Federate posts by default"] = "Разрешить федерацию публикаций по умолчанию";
-App::$strings["NoFed Settings"] = "Настройки NoFed";
-App::$strings["Your channel has been upgraded to the latest \$Projectname version."] = "Ваш канал был обновлён на последнюю версию \$Projectname.";
-App::$strings["To improve usability, we have converted some features into installable stand-alone apps."] = "Чтобы улучшить удобство использования, некоторые функции теперь доступны в виде устанавливаемых автономных приложений.";
-App::$strings["Please visit the \$Projectname"] = "Пожалуйста, посетите \$Projectname";
-App::$strings["app store"] = "раздел \"Приложения\"";
-App::$strings["and install possibly missing apps."] = "и установите необходимые вам.";
-App::$strings["Upgrade Info"] = "Сведения об обновлении";
-App::$strings["Do not show this again"] = "Больше не показывать";
-App::$strings["generic profile image"] = "Стандартное изображение профиля";
-App::$strings["random geometric pattern"] = "Случайный геометрический рисунок";
-App::$strings["monster face"] = "Лицо чудовища";
-App::$strings["computer generated face"] = "Сгенерированное компьютером лицо";
-App::$strings["retro arcade style face"] = "Лицо в стиле старой аркадной игры";
-App::$strings["Hub default profile photo"] = "Фотография профиля по умолчанию";
-App::$strings["Information"] = "Информация";
-App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "Плагин Libravatar также установлен. Пожалуйста, отключите плагин Libravatar или этот плагин Gravatar. Если Плагин Libravatar ничего не найдёт, он вернётся в Gravatar.";
-App::$strings["Save Settings"] = "Сохранить настройки";
-App::$strings["Default avatar image"] = "Изображение аватара по умолчанию";
-App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "Выберите изображения аватар по умолчанию если ничего не было найдено в Gravatar (см. README).";
-App::$strings["Rating of images"] = "Оценки изображений";
-App::$strings["Select the appropriate avatar rating for your site. See README"] = "Выберите подходящую оценку аватара для вашего сайта (см. README).";
-App::$strings["Gravatar settings updated."] = "Настройки Gravatar обновлены.";
-App::$strings["WYSIWYG status editor"] = "WYSIWYG редактор статуса ";
-App::$strings["WYSIWYG Status"] = "WYSIWYG статус";
-App::$strings["Planets Settings updated."] = "Настройки Planets обновлены.";
-App::$strings["Enable Planets Plugin"] = "Включить плагин Planets";
-App::$strings["Planets Settings"] = "Настройки Planets";
-App::$strings["Add some colour to tag clouds"] = "Добавить немного цвета для облака тегов";
-App::$strings["Rainbow Tag"] = "Радуга тегов";
-App::$strings["Invalid game."] = "Недействительная игра";
-App::$strings["You are not a player in this game."] = "Вы не играете в эту игру.";
-App::$strings["You must be a local channel to create a game."] = "Ваш канал должен быть локальным чтобы создать игру.";
-App::$strings["You must select one opponent that is not yourself."] = "Вы должны выбрать противника который не является вами.";
-App::$strings["Random color chosen."] = "Выбран случайный цвет.";
-App::$strings["Error creating new game."] = "Ошибка создания новой игры.";
-App::$strings["You must select a local channel /chess/channelname"] = "Вы должны выбрать локальный канал /chess/channelname";
-App::$strings["Enable notifications"] = "Включить оповещения";
-App::$strings["Follow"] = "Отслеживать";
-App::$strings["%1\$s is now following %2\$s"] = "%1\$s сейчас отслеживает %2\$s";
-App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Протокол GNU-Social не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала.";
-App::$strings["GNU-Social Protocol"] = "Протокол GNU-Social";
-App::$strings["Message to display on every page on this server"] = "Отображаемое сообщение на каждой странице на этом сервере.";
-App::$strings["Pageheader Settings"] = "Настройки шапки страницы";
-App::$strings["pageheader Settings saved."] = "Настройки шапки страницы сохранены.";
-App::$strings["text to include in all outgoing posts from this site"] = "текст, который будет добавлен во все исходящие публикации с этого сайта";
-App::$strings["Send email to all members"] = "Отправить email всем участникам";
-App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d из %2\$d сообщений отправлено.";
-App::$strings["Send email to all hub members."] = "Отправить email всем участникам узла.";
-App::$strings["Sender Email address"] = "Адрес электронной почты отправителя";
-App::$strings["Test mode (only send to hub administrator)"] = "Тестовый режим (отправка только администратору узла)";
-App::$strings["Deactivate the feature"] = "Деактивировать функцию";
-App::$strings["Hide the button and show the smilies directly."] = "Скрыть кнопку и сразу показывать смайлики.";
-App::$strings["Smileybutton Settings"] = "Настройки кнопки смайликов";
-App::$strings["Friendica Photo Album Import"] = "Импортировать альбом фотографий Friendica";
-App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Это позволит импортировать все ваши альбомы фотографий Friendica в этот канал.";
-App::$strings["Friendica Server base URL"] = "Базовый URL сервера Friendica";
-App::$strings["Friendica Login Username"] = "Имя пользователя для входа Friendica";
-App::$strings["Friendica Login Password"] = "Пароль для входа Firendica";
-App::$strings["Show Upload Limits"] = "Показать ограничения на загрузку";
-App::$strings["Hubzilla configured maximum size: "] = "Максимальный размер настроенный в Hubzilla:";
-App::$strings["PHP upload_max_filesize: "] = "";
-App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (должен быть больше чем upload_max_filesize): ";
-App::$strings["Flattr this!"] = "Flattr это!";
-App::$strings["Flattr widget settings updated."] = "Настройки виджета Flattr обновлены.";
-App::$strings["Flattr user"] = "Пользователь Flattr";
-App::$strings["URL of the Thing to flattr"] = "URL ccылки на Flattr";
-App::$strings["If empty channel URL is used"] = "Если пусто, то используется URL канала";
-App::$strings["Title of the Thing to flattr"] = "Заголовок вещи на Flattr";
-App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Если пусто, то будет использовано \"Название канала Hubzilla\"";
-App::$strings["Static or dynamic flattr button"] = "Статическая или динамическая кнопка Flattr";
-App::$strings["static"] = "статическая";
-App::$strings["dynamic"] = "динамическая";
-App::$strings["Alignment of the widget"] = "Выравнивание виджета";
-App::$strings["left"] = "слева";
-App::$strings["right"] = "справа";
-App::$strings["Enable Flattr widget"] = "Включить виджет Flattr";
-App::$strings["Flattr Widget Settings"] = "Настройки виджета Flattr";
+App::$strings["Enable Paypal Button Module"] = "Включить модуль кнопки Paypal";
+App::$strings["Use Production Key"] = "Использовать ключ Production";
+App::$strings["Paypal Sandbox Client Key"] = "Ключ клиента Paypal Sandbox";
+App::$strings["Paypal Sandbox Secret Key"] = "Секретный ключ Paypal Sandbox";
+App::$strings["Paypal Production Client Key"] = "Ключ клиента Paypal Production";
+App::$strings["Paypal Production Secret Key"] = "Секретный ключ Paypal Production";
+App::$strings["Paypal button payments are not enabled."] = "Кнопка Paypal для платежей не включена.";
+App::$strings["Paypal button payments are not properly configured. Please choose another payment option."] = "Кнопка Paypal для платежей настроена неправильно. Пожалуйста, используйте другой вариант оплаты.";
+App::$strings["Enable Manual Cart Module"] = "Включить модуль ручного управления карточками";
+App::$strings["New Sku"] = "Новый код";
+App::$strings["Cannot save edits to locked item."] = "Невозможно сохранить изменения заблокированной позиции.";
+App::$strings["Changes Locked"] = "Изменения заблокированы";
+App::$strings["Item available for purchase."] = "Позиция доступна для приобретения.";
+App::$strings["Price"] = "Цена";
+App::$strings["Enable Hubzilla Services Module"] = "Включить модуль сервиса Hubzilla";
+App::$strings["SKU not found."] = "Код не найден.";
+App::$strings["Invalid Activation Directive."] = "Недействительная директива активации.";
+App::$strings["Invalid Deactivation Directive."] = "Недействительная директива деактивации";
+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 as connection"] = "Добавить покупателя как контакт";
+App::$strings["Set Service Class"] = "Установить класс обслуживания";
+App::$strings["Enable Subscription Management Module"] = "Включить модуль управления подписками";
+App::$strings["Cannot include subscription items with different terms in the same order."] = "Нельзя включать элементы подписки с разными условиями в том же заказе.";
+App::$strings["Select Subscription to Edit"] = "Выбрать подписку для редактирования";
+App::$strings["Edit Subscriptions"] = "Редактировать подписки";
+App::$strings["Subscription SKU"] = "Код подписки";
+App::$strings["Catalog Description"] = "Описание каталога";
+App::$strings["Subscription available for purchase."] = "Подписка доступна для покупки.";
+App::$strings["Maximum active subscriptions to this item per account."] = "Максимальное количество подписок на аккаунт для этой позиции";
+App::$strings["Subscription price."] = "Цена подписки.";
+App::$strings["Quantity"] = "Количество";
+App::$strings["Term"] = "Условия";
+App::$strings["Error: order mismatch. Please try again."] = "Ошибка: несоответствие заказа. Пожалуйста, попробуйте ещё раз";
+App::$strings["Manual payments are not enabled."] = "Ручные платежи не подключены.";
+App::$strings["Finished"] = "Завершено";
+App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Этот сайт отслеживается с помощью инструментов аналитики <a href='http://www.piwik.org'>Piwik</a>.";
+App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Если вы не хотите, чтобы ваши визиты регистрировались таким образом, вы <a href='%s'>можете отключить cookie с тем, чтобы Piwik не отслеживал дальнейшие посещения сайта</a>.";
+App::$strings["Piwik Base URL"] = "Базовый URL Piwik";
+App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Абсолютный путь к вашей установке Piwik (без типа протокола, с начальным слэшем)";
+App::$strings["Site ID"] = "ID сайта";
+App::$strings["Show opt-out cookie link?"] = "Показывать ссылку на отказ от использования cookies?";
+App::$strings["Asynchronous tracking"] = "Асинхронное отслеживание";
+App::$strings["Enable frontend JavaScript error tracking"] = "Включить отслеживание ошибок JavaScript на фронтенде.";
+App::$strings["This feature requires Piwik >= 2.2.0"] = "Эта функция требует версию Piwik >= 2.2.0";
+App::$strings["Edit your profile and change settings."] = "Отредактировать ваш профиль и изменить настройки.";
+App::$strings["Click here to see activity from your connections."] = "Нажмите сюда для отображения активности ваши контактов.";
+App::$strings["Click here to see your channel home."] = "Нажмите сюда чтобы увидеть главную страницу вашего канала.";
+App::$strings["You can access your private messages from here."] = "Вы можете получить доступ с личной переписке здесь.";
+App::$strings["Create new events here."] = "Создать новое событие здесь.";
+App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Вы можете подключать новые контакты и менять разрешения для существующих здесь. Также вы можете создавать их группы.";
+App::$strings["System notifications will arrive here"] = "Системные оповещения будут показываться здесь";
+App::$strings["Search for content and users"] = "Поиск пользователей и содержимого";
+App::$strings["Browse for new contacts"] = "Поиск новых контактов";
+App::$strings["Launch installed apps"] = "Запустить установленные приложения";
+App::$strings["Looking for help? Click here."] = "Нужна помощь? Нажмите сюда.";
+App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "Новые события произошли в вашей сети. Нажмите здесь для того, чтобы знать что случилось!";
+App::$strings["You have received a new private message. Click here to see from who!"] = "Вы получили новое личное сообщение. Нажмите чтобы увидеть от кого!";
+App::$strings["There are events this week. Click here too see which!"] = "На этой неделе есть события. Нажмите здесь чтобы увидеть какие!";
+App::$strings["You have received a new introduction. Click here to see who!"] = "Вы были представлены. Нажмите чтобы увидеть кому!";
+App::$strings["There is a new system notification. Click here to see what has happened!"] = "Это новое системное уведомление. Нажмите чтобы посмотреть что случилось!";
+App::$strings["Click here to share text, images, videos and sound."] = "Нажмите сюда чтобы поделиться текстом, изображениями, видео или треком.";
+App::$strings["You can write an optional title for your update (good for long posts)."] = "Вы можете написать необязательный заголовок для вашей публикации (желательно для больших публикаций).";
+App::$strings["Entering some categories here makes it easier to find your post later."] = "Введите категории здесь чтобы было проще найти вашу публикацию позднее.";
+App::$strings["Share photos, links, location, etc."] = "Поделиться фотографией, ссылками, местоположение и т.п.";
+App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Хотите только поделиться временным содержимым? Установите срок его действия.";
+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["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."] = "Лёгкий поиск публикаций по дате.";
+App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Рекомендуемые пользователи, которые были представлены в качестве предложений, и которые, по нашему мнению, могут оказаться интересными.";
+App::$strings["Here you see channels you have connected to."] = "Здесь вы видите каналы, к которым вы подключились.";
+App::$strings["Save your search so you can repeat it at a later date."] = "Сохраните ваш поиск с тем, чтобы повторить его позже.";
+App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Если вы видите этот значок, вы можете быть уверены, что отправитель - это тот, кто это говорит. Это нормально, что не всегда можно проверить отправителя, поэтому значок иногда будет отсутствовать. Обычно об этом не нужно беспокоиться.";
+App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "Опасность! Кажется, кто-то пытался подделать сообщение! Это сообщение не обязательно от того, от кого оно значится!";
+App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "Добро пожаловать в Hubzilla! Желаете получить обзор пользовательского интерфейса?</p> <p>Вы можете его приостановаить и в любое время перезагрузив страницу или перейдя на другую.</p><p>Также вы можете нажать клавишу \"Назад\"";
+App::$strings["Send your identity to all websites"] = "Отправить ваши данные на все веб-сайты";
+App::$strings["Sendzid App"] = "Приложение \"Отправить ZID\"";
+App::$strings["Send ZID"] = "Отправить ZID";
App::$strings["Three Dimensional Tic-Tac-Toe"] = "Tic-Tac-Toe в трёх измерениях";
App::$strings["3D Tic-Tac-Toe"] = "";
App::$strings["New game"] = "Новая игра";
@@ -3336,19 +2819,14 @@ App::$strings["I'm going first this time..."] = "На этот раз начин
App::$strings["You won!"] = "Вы выиграли!";
App::$strings["\"Cat\" game!"] = "Ничья!";
App::$strings["I won!"] = "Я выиграл!";
-App::$strings["XMPP settings updated."] = "Настройки XMPP обновлены.";
-App::$strings["Enable Chat"] = "Включить чат";
-App::$strings["Individual credentials"] = "Индивидуальные разрешения";
-App::$strings["Jabber BOSH server"] = "Сервер Jabber BOSH";
-App::$strings["XMPP Settings"] = "Настройки XMPP";
-App::$strings["Jabber BOSH host"] = "Узел Jabber BOSH";
-App::$strings["Use central userbase"] = "Использовать центральную базу данных";
-App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "Если включено, участники автоматически войдут на сервер ejabberd, который должен быть установлен на этом компьютере с синхронизированными учетными данными через скрипт \"auth_ejabberd.php\".";
-App::$strings["New registration"] = "Новая регистрация";
-App::$strings["Message sent to %s. New account registration: %s"] = "Сообщение отправлено в %s. Регистрация нового аккаунта: %s";
-App::$strings["Send your identity to all websites"] = "Отправить ваши данные на все веб-сайты";
-App::$strings["Send ZID"] = "Отправить ZID";
-App::$strings["Who likes me?"] = "Кому я нравлюсь?";
+App::$strings["pageheader Settings saved."] = "Настройки шапки страницы сохранены.";
+App::$strings["Page Header App"] = "Приложение \"Заголовок страницы\"";
+App::$strings["Inserts a page header"] = "Вставляет заголовок страницы";
+App::$strings["Message to display on every page on this server"] = "Отображаемое сообщение на каждой странице на этом сервере.";
+App::$strings["Page Header"] = "Заголовок страницы";
+App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Разрешить волшебную аутентификацию только на сайтах ваших непосредственных соединений";
+App::$strings["Authchoose App"] = "Приложение Authchoose";
+App::$strings["Authchoose"] = "";
App::$strings["lonely"] = "одинокий";
App::$strings["drunk"] = "пьяный";
App::$strings["horny"] = "возбуждённый";
@@ -3371,82 +2849,671 @@ App::$strings["victorious"] = "победивший";
App::$strings["defeated"] = "проигравший";
App::$strings["envious"] = "завидует";
App::$strings["jealous"] = "ревнует";
-App::$strings["Recent Channel/Profile Viewers"] = "Последние просмотры канала / профиля";
-App::$strings["This plugin/addon has not been configured."] = "Это расширение не было настроено.";
-App::$strings["Please visit the Visage settings on %s"] = "Пожалуйста, посетите настройки Visage на %s";
-App::$strings["your feature settings page"] = "страница ваших установочных параметров";
-App::$strings["No entries."] = "Нет записей.";
-App::$strings["Enable Visage Visitor Logging"] = "Включить журналирование посетителей Visage";
-App::$strings["Visage Settings"] = "Настройки Visage";
-App::$strings["Channels to auto connect"] = "Каналы для автоматического подключения";
-App::$strings["Comma separated list"] = "Список, разделённый запятыми";
-App::$strings["Popular Channels"] = "Популярные каналы";
-App::$strings["IRC Settings"] = "Настройки IRC";
-App::$strings["IRC settings saved."] = "Настройки IRC сохранены";
-App::$strings["IRC Chatroom"] = "Чат IRC";
-App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "";
-App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "";
-App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Примеры действительных включают A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ...";
-App::$strings["Guitar Chords"] = "Гитарные аккорды";
-App::$strings["The complete online chord dictionary"] = "Полный онлайн словарь аккордов";
-App::$strings["Tuning"] = "Настройка";
-App::$strings["Chord name: example: Em7"] = "Наименование аккорда - example: Em7";
-App::$strings["Show for left handed stringing"] = "Показывать струны для левшей";
-App::$strings["Quick Reference"] = "Быстрая ссылка";
-App::$strings["Post to Libertree"] = "Опубликовать в Libertree";
-App::$strings["Enable Libertree Post Plugin"] = "Включить плагин публикаций Libertree";
-App::$strings["Libertree API token"] = "Токен Libertree API";
-App::$strings["Libertree site URL"] = "URL сайта Libertree";
-App::$strings["Post to Libertree by default"] = "Публиковать в Libertree по умолчанию";
-App::$strings["Libertree Post Settings"] = "Настройки публикаций в Libertree";
-App::$strings["Libertree Settings saved."] = "Настройки Libertree сохранены.";
-App::$strings["Post to Red"] = "Опубликовать в Red";
-App::$strings["Channel is required."] = "Необходим канал.";
-App::$strings["redred Settings saved."] = "Настройки RedRed сохранены.";
-App::$strings["Allow posting to another Hubzilla Channel"] = "Разрешить публиковать в другой канал Hubzilla";
-App::$strings["Send public postings to Hubzilla channel by default"] = "Отправлять общедоступные публикации в канал Hubzilla по умолчанию";
-App::$strings["Hubzilla API Path"] = "Путь к Hubzilla API";
-App::$strings["Hubzilla login name"] = "Имя входа Hubzilla";
-App::$strings["Hubzilla channel name"] = "Название канала Hubzilla";
-App::$strings["Hubzilla Crosspost Settings"] = "Настройки перекрёстных публикаций Hubzilla";
-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["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";
-App::$strings["No username found in import file."] = "Имя пользователя не найдено в файле для импорта.";
-App::$strings["Diaspora Protocol Settings updated."] = "Настройки протокола Diaspora обновлены.";
-App::$strings["The diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Протокол Diaspora не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала.";
-App::$strings["Allow any Diaspora member to comment on your public posts"] = "Разрешить любому участнику Diaspora комментировать ваши общедоступные публикации";
-App::$strings["Prevent your hashtags from being redirected to other sites"] = "Предотвратить перенаправление тегов на другие сайты";
-App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "Подписывать и отправлять публикации и комментарии с несуществующей подписью Diaspora";
-App::$strings["Followed hashtags (comma separated, do not include the #)"] = "Отслеживаемые теги (через запятую, исключая #)";
-App::$strings["Diaspora Protocol"] = "Протокол Diaspora";
-App::$strings["Post to WordPress"] = "Опубликовать в WordPress";
-App::$strings["Wordpress Settings saved."] = "Настройки WordPress сохранены.";
-App::$strings["Post to WordPress or anything else which uses the wordpress XMLRPC API"] = "Опубликовать в WordPress или в чём-то ещё, поддерживающем wordpress XMLRPC API";
-App::$strings["WordPress username"] = "Имя пользователя WordPress";
-App::$strings["WordPress password"] = "Пароль WordPress";
-App::$strings["WordPress API URL"] = "URL API WordPress";
-App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Обычно https://your-blog.tld/xmlrpc.php";
-App::$strings["WordPress blogid"] = "";
-App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Для многопользовательских сайтов, таких, как wordpress.com. В противном случае оставьте пустым";
-App::$strings["Post to WordPress by default"] = "Публиковать в WordPress по умолчанию";
-App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Пересылать комментарии (требуется плагин hubzilla_wp)";
-App::$strings["Wordpress Post"] = "Публикация в WordPress";
-App::$strings["Possible adult content"] = "Возможно содержимое для взрослых";
-App::$strings["%s - view"] = "%s - просмотр";
-App::$strings["NSFW Settings saved."] = "Настройки NSFW сохранены.";
-App::$strings["Collapse content that contains predefined words"] = "Свернуть содержимое, содержащее предопределенные слова";
-App::$strings["This app looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Это приложение просматривает публикации для слов / текста, которые вы указываете ниже, и сворачивает любой контент, содержащий эти ключевые слова, поэтому он не отображается в неподходящее время, например, сексуальные инсинуации, которые могут быть неправильными в настройке работы. Например, мы рекомендуем отмечать любой контент, содержащий наготу, тегом #NSFW. Этот фильтр также способен реагировать на любое другое указанное вами слово / текст и может использоваться в качестве фильтра содержимого общего назначения.";
-App::$strings["Comma separated list of keywords to hide"] = "Список ключевых слов для скрытия, через запятую";
-App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "слово, /регулярное_выражение/, lang=xx, lang!=xx";
-App::$strings["NSFW"] = "";
-App::$strings["Some setting"] = "Некоторые настройки";
-App::$strings["A setting"] = "Настройка";
-App::$strings["Skeleton Settings"] = "Настройки скелета";
+App::$strings["XMPP settings updated."] = "Настройки XMPP обновлены.";
+App::$strings["XMPP App"] = "Приложение XMPP";
+App::$strings["Embedded XMPP (Jabber) client"] = "Встренный клиент XMPP (Jabber)";
+App::$strings["Individual credentials"] = "Индивидуальные разрешения";
+App::$strings["Jabber BOSH server"] = "Сервер Jabber BOSH";
+App::$strings["XMPP Settings"] = "Настройки XMPP";
+App::$strings["Jabber BOSH host"] = "Узел Jabber BOSH";
+App::$strings["Use central userbase"] = "Использовать центральную базу данных";
+App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "Если включено, участники автоматически войдут на сервер ejabberd, который должен быть установлен на этом компьютере с синхронизированными учетными данными через скрипт \"auth_ejabberd.php\".";
+App::$strings["Who likes me?"] = "Кому я нравлюсь?";
+App::$strings["Pump.io Settings saved."] = "Настройки Pump.io сохранены.";
+App::$strings["Pump.io Crosspost Connector App"] = "Приложение \"Пересылка публикаций Pump.io\"";
+App::$strings["Relay public posts to pump.io"] = "Пересылает общедоступные публикации в Pump.io";
+App::$strings["Pump.io servername"] = "Имя сервера Pump.io";
+App::$strings["Without \"http://\" or \"https://\""] = "Без \"http://\" или \"https://\"";
+App::$strings["Pump.io username"] = "Имя пользователя Pump.io";
+App::$strings["Without the servername"] = "без имени сервера";
+App::$strings["You are not authenticated to pumpio"] = "Вы не аутентифицированы на Pump.io";
+App::$strings["(Re-)Authenticate your pump.io connection"] = "Аутентифицировать (повторно) ваше соединение с Pump.io";
+App::$strings["Post to pump.io by default"] = "Публиковать в Pump.io по умолчанию";
+App::$strings["Should posts be public"] = "Публикации должны быть общедоступными";
+App::$strings["Mirror all public posts"] = "Отображать все общедоступные публикации";
+App::$strings["Pump.io Crosspost Connector"] = "Пересылка публикаций Pump.io";
+App::$strings["You are now authenticated to pumpio."] = "Вы аутентифицированы в Pump.io";
+App::$strings["return to the featured settings page"] = "Вернутся к странице настроек";
+App::$strings["Post to Pump.io"] = "Опубликовать в Pump.io";
+App::$strings["An account has been created for you."] = "Учётная запись, которая была для вас создана.";
+App::$strings["Authentication successful but rejected: account creation is disabled."] = "Аутентификация выполнена успешно, но отклонена: создание учетной записи отключено.";
App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Искать %1\$s (%2\$s)";
App::$strings["__ctx:opensearch__ \$Projectname"] = "";
App::$strings["Search \$Projectname"] = "Поиск \$Projectname";
+App::$strings["Redmatrix File Storage Import"] = "Импорт файлового хранилища Redmatrix";
+App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Это позволит импортировать все ваши файлы в Redmatrix в этот канал.";
+App::$strings["file"] = "файл";
+App::$strings["Send email to all members"] = "Отправить email всем участникам";
+App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d из %2\$d сообщений отправлено.";
+App::$strings["Send email to all hub members."] = "Отправить email всем участникам узла.";
+App::$strings["Sender Email address"] = "Адрес электронной почты отправителя";
+App::$strings["Test mode (only send to hub administrator)"] = "Тестовый режим (отправка только администратору узла)";
+App::$strings["Profile to assign new connections"] = "Назначить профиль для новых контактов";
+App::$strings["Frequently"] = "Часто";
+App::$strings["Hourly"] = "Ежечасно";
+App::$strings["Twice daily"] = "Дважды в день";
+App::$strings["Daily"] = "Ежедневно";
+App::$strings["Weekly"] = "Еженедельно";
+App::$strings["Monthly"] = "Ежемесячно";
+App::$strings["Currently Male"] = "В настоящее время мужской";
+App::$strings["Currently Female"] = "В настоящее время женский";
+App::$strings["Mostly Male"] = "В основном мужской";
+App::$strings["Mostly Female"] = "В основном женский";
+App::$strings["Transgender"] = "Трансгендер";
+App::$strings["Intersex"] = "Интерсексуал";
+App::$strings["Transsexual"] = "Транссексуал";
+App::$strings["Hermaphrodite"] = "Гермафродит";
+App::$strings["Neuter"] = "Среднего рода";
+App::$strings["Non-specific"] = "Неспецифический";
+App::$strings["Undecided"] = "Не решил";
+App::$strings["Males"] = "Мужчины";
+App::$strings["Females"] = "Женщины";
+App::$strings["Gay"] = "Гей";
+App::$strings["Lesbian"] = "Лесбиянка";
+App::$strings["No Preference"] = "Без предпочтений";
+App::$strings["Bisexual"] = "Бисексуал";
+App::$strings["Autosexual"] = "Автосексуал";
+App::$strings["Abstinent"] = "Воздержание";
+App::$strings["Virgin"] = "Девственник";
+App::$strings["Deviant"] = "Отклоняющийся от нормы";
+App::$strings["Fetish"] = "Фетишист";
+App::$strings["Oodles"] = "Множественный";
+App::$strings["Nonsexual"] = "Асексуал";
+App::$strings["Single"] = "Одиночка";
+App::$strings["Lonely"] = "Одинокий";
+App::$strings["Available"] = "Свободен";
+App::$strings["Unavailable"] = "Занят";
+App::$strings["Has crush"] = "Влюблён";
+App::$strings["Infatuated"] = "без ума";
+App::$strings["Dating"] = "Встречаюсь";
+App::$strings["Unfaithful"] = "Неверный";
+App::$strings["Sex Addict"] = "Эротоман";
+App::$strings["Friends/Benefits"] = "Друзья / Выгоды";
+App::$strings["Casual"] = "Легкомысленный";
+App::$strings["Engaged"] = "Помолвлен";
+App::$strings["Married"] = "В браке";
+App::$strings["Imaginarily married"] = "В воображаемом браке";
+App::$strings["Partners"] = "Партнёрство";
+App::$strings["Cohabiting"] = "Сожительствующие";
+App::$strings["Common law"] = "Гражданский брак";
+App::$strings["Happy"] = "Счастлив";
+App::$strings["Not looking"] = "Не нуждаюсь";
+App::$strings["Swinger"] = "Свингер";
+App::$strings["Betrayed"] = "Предан";
+App::$strings["Separated"] = "Разделён";
+App::$strings["Unstable"] = "Нестабильно";
+App::$strings["Divorced"] = "В разводе";
+App::$strings["Imaginarily divorced"] = "В воображаемом разводе";
+App::$strings["Widowed"] = "Вдовец / вдова";
+App::$strings["Uncertain"] = "Неопределенный";
+App::$strings["It's complicated"] = "Это сложно";
+App::$strings["Don't care"] = "Всё равно";
+App::$strings["Ask me"] = "Спроси меня";
+App::$strings["likes %1\$s's %2\$s"] = "Нравится %1\$s %2\$s";
+App::$strings["doesn't like %1\$s's %2\$s"] = "Не нравится %1\$s %2\$s";
+App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s теперь в контакте с %2\$s";
+App::$strings["%1\$s poked %2\$s"] = "%1\$s ткнул %2\$s";
+App::$strings["poked"] = "ткнут";
+App::$strings["View %s's profile @ %s"] = "Просмотреть профиль %s @ %s";
+App::$strings["Categories:"] = "Категории:";
+App::$strings["Filed under:"] = "Хранить под:";
+App::$strings["View in context"] = "Показать в контексте";
+App::$strings["remove"] = "удалить";
+App::$strings["Loading..."] = "Загрузка...";
+App::$strings["Delete Selected Items"] = "Удалить выбранные элементы";
+App::$strings["View Source"] = "Просмотреть источник";
+App::$strings["Follow Thread"] = "Следить за темой";
+App::$strings["Unfollow Thread"] = "Прекратить отслеживать тему";
+App::$strings["Edit Connection"] = "Редактировать контакт";
+App::$strings["Message"] = "Сообщение";
+App::$strings["%s likes this."] = "%s нравится это.";
+App::$strings["%s doesn't like this."] = "%s не нравится это.";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d человеку</span> это нравится.",
+ 1 => "<span %1\$s>%2\$d человекам</span> это нравится.",
+ 2 => "<span %1\$s>%2\$d человекам</span> это нравится.",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d человеку</span> это не нравится.",
+ 1 => "<span %1\$s>%2\$d человекам</span> это не нравится.",
+ 2 => "<span %1\$s>%2\$d человекам</span> это не нравится.",
+);
+App::$strings["and"] = "и";
+App::$strings[", and %d other people"] = array(
+ 0 => ", и ещё %d человеку",
+ 1 => ", и ещё %d человекам",
+ 2 => ", и ещё %d человекам",
+);
+App::$strings["%s like this."] = "%s нравится это.";
+App::$strings["%s don't like this."] = "%s не нравится это.";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Посетит",
+ 1 => "Посетят",
+ 2 => "Посетят",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Не посетит",
+ 1 => "Не посетят",
+ 2 => "Не посетят",
+);
+App::$strings["__ctx:noun__ Undecided"] = "Не решил";
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "Согласен",
+ 1 => "Согласны",
+ 2 => "Согласны",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Не согласен",
+ 1 => "Не согласны",
+ 2 => "Не согласны",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "Воздержался",
+ 1 => "Воздержались",
+ 2 => "Воздержались",
+);
+App::$strings["%1\$s's bookmarks"] = "Закладки пользователя %1\$s";
+App::$strings["Unable to import a removed channel."] = "Невозможно импортировать удалённый канал.";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Не удалось создать дублирующийся идентификатор канала. Импорт невозможен.";
+App::$strings["Cloned channel not found. Import failed."] = "Клон канала не найден. Импорт невозможен.";
+App::$strings["prev"] = "предыдущий";
+App::$strings["first"] = "первый";
+App::$strings["last"] = "последний";
+App::$strings["next"] = "следующий";
+App::$strings["older"] = "старше";
+App::$strings["newer"] = "новее";
+App::$strings["No connections"] = "Нет контактов";
+App::$strings["View all %s connections"] = "Просмотреть все %s контактов";
+App::$strings["Network: %s"] = "Сеть: %s";
+App::$strings["poke"] = "Ткнуть";
+App::$strings["ping"] = "Пингануть";
+App::$strings["pinged"] = "Отпингован";
+App::$strings["prod"] = "Подтолкнуть";
+App::$strings["prodded"] = "Подтолкнут";
+App::$strings["slap"] = "Шлёпнуть";
+App::$strings["slapped"] = "Шлёпнут";
+App::$strings["finger"] = "Указать";
+App::$strings["fingered"] = "Указан";
+App::$strings["rebuff"] = "Дать отпор";
+App::$strings["rebuffed"] = "Дан отпор";
+App::$strings["happy"] = "счастливый";
+App::$strings["sad"] = "грустный";
+App::$strings["mellow"] = "спокойный";
+App::$strings["tired"] = "усталый";
+App::$strings["perky"] = "весёлый";
+App::$strings["angry"] = "сердитый";
+App::$strings["stupefied"] = "отупевший";
+App::$strings["puzzled"] = "недоумевающий";
+App::$strings["interested"] = "заинтересованный";
+App::$strings["bitter"] = "едкий";
+App::$strings["cheerful"] = "бодрый";
+App::$strings["alive"] = "энергичный";
+App::$strings["annoyed"] = "раздражённый";
+App::$strings["anxious"] = "обеспокоенный";
+App::$strings["cranky"] = "капризный";
+App::$strings["disturbed"] = "встревоженный";
+App::$strings["frustrated"] = "разочарованный";
+App::$strings["depressed"] = "подавленный";
+App::$strings["motivated"] = "мотивированный";
+App::$strings["relaxed"] = "расслабленный";
+App::$strings["surprised"] = "удивленный";
+App::$strings["Monday"] = "Понедельник";
+App::$strings["Tuesday"] = "Вторник";
+App::$strings["Wednesday"] = "Среда";
+App::$strings["Thursday"] = "Четверг";
+App::$strings["Friday"] = "Пятница";
+App::$strings["Saturday"] = "Суббота";
+App::$strings["Sunday"] = "Воскресенье";
+App::$strings["January"] = "Январь";
+App::$strings["February"] = "Февраль";
+App::$strings["March"] = "Март";
+App::$strings["April"] = "Апрель";
+App::$strings["May"] = "Май";
+App::$strings["June"] = "Июнь";
+App::$strings["July"] = "Июль";
+App::$strings["August"] = "Август";
+App::$strings["September"] = "Сентябрь";
+App::$strings["October"] = "Октябрь";
+App::$strings["November"] = "Ноябрь";
+App::$strings["December"] = "Декабрь";
+App::$strings["Unknown Attachment"] = "Неизвестное вложение";
+App::$strings["unknown"] = "неизвестный";
+App::$strings["remove category"] = "удалить категорию";
+App::$strings["remove from file"] = "удалить из файла";
+App::$strings["Download binary/encrypted content"] = "Загрузить двоичное / зашифрованное содержимое";
+App::$strings["default"] = "по умолчанию";
+App::$strings["Page layout"] = "Шаблон страницы";
+App::$strings["You can create your own with the layouts tool"] = "Вы можете создать свой собственный с помощью инструмента шаблонов";
+App::$strings["HTML"] = "";
+App::$strings["Comanche Layout"] = "Шаблон Comanche";
+App::$strings["PHP"] = "";
+App::$strings["Page content type"] = "Тип содержимого страницы";
+App::$strings["activity"] = "активность";
+App::$strings["a-z, 0-9, -, and _ only"] = "Только a-z, 0-9, -, и _";
+App::$strings["Design Tools"] = "Инструменты дизайна";
+App::$strings["Pages"] = "Страницы";
+App::$strings["Import website..."] = "Импорт веб-сайта...";
+App::$strings["Select folder to import"] = "Выбрать каталог для импорта";
+App::$strings["Import from a zipped folder:"] = "Импортировать из каталога в zip-архиве:";
+App::$strings["Import from cloud files:"] = "Импортировать из сетевых файлов:";
+App::$strings["/cloud/channel/path/to/folder"] = "";
+App::$strings["Enter path to website files"] = "Введите путь к файлам веб-сайта";
+App::$strings["Select folder"] = "Выбрать каталог";
+App::$strings["Export website..."] = "Экспорт веб-сайта...";
+App::$strings["Export to a zip file"] = "Экспортировать в ZIP файл.";
+App::$strings["website.zip"] = "";
+App::$strings["Enter a name for the zip file."] = "Введите имя для ZIP файла.";
+App::$strings["Export to cloud files"] = "Эскпортировать в сетевые файлы:";
+App::$strings["/path/to/export/folder"] = "";
+App::$strings["Enter a path to a cloud files destination."] = "Введите путь к расположению сетевых файлов.";
+App::$strings["Specify folder"] = "Указать каталог";
+App::$strings["%d invitation available"] = array(
+ 0 => "доступно %d приглашение",
+ 1 => "доступны %d приглашения",
+ 2 => "доступны %d приглашений",
+);
+App::$strings["Find Channels"] = "Поиск каналов";
+App::$strings["Enter name or interest"] = "Впишите имя или интерес";
+App::$strings["Connect/Follow"] = "Подключить / отслеживать";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Примеры: Владимир Ильич, Революционер";
+App::$strings["Random Profile"] = "Случайный профиль";
+App::$strings["Invite Friends"] = "Пригласить друзей";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Расширенный пример: name=ivan and country=russia";
+App::$strings["Common Connections"] = "Общие контакты";
+App::$strings["View all %d common connections"] = "Просмотреть все %d общих контактов";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s была создана %2\$s %3\$s";
+App::$strings["Channel is blocked on this site."] = "Канал блокируется на этом сайте.";
+App::$strings["Channel location missing."] = "Местоположение канала отсутствует.";
+App::$strings["Response from remote channel was incomplete."] = "Ответ удаленного канала неполный.";
+App::$strings["Premium channel - please visit:"] = "Премимум-канал - пожалуйста посетите:";
+App::$strings["Channel was deleted and no longer exists."] = "Канал удален и больше не существует.";
+App::$strings["Remote channel or protocol unavailable."] = "Удалённый канал или протокол недоступен.";
+App::$strings["Channel discovery failed."] = "Не удалось обнаружить канал.";
+App::$strings["Protocol disabled."] = "Протокол отключен.";
+App::$strings["Cannot connect to yourself."] = "Нельзя подключиться к самому себе.";
+App::$strings["Delete this item?"] = "Удалить этот элемент?";
+App::$strings["%s show less"] = "%s показать меньше";
+App::$strings["%s expand"] = "%s развернуть";
+App::$strings["%s collapse"] = "%s свернуть";
+App::$strings["Password too short"] = "Пароль слишком короткий";
+App::$strings["Passwords do not match"] = "Пароли не совпадают";
+App::$strings["everybody"] = "все";
+App::$strings["Secret Passphrase"] = "Тайный пароль";
+App::$strings["Passphrase hint"] = "Подсказка для пароля";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Уведомление: Права доступа изменились, но до сих пор не сохранены.";
+App::$strings["close all"] = "закрыть все";
+App::$strings["Nothing new here"] = "Здесь нет ничего нового";
+App::$strings["Rate This Channel (this is public)"] = "Оценкa этoго канала (общедоступно)";
+App::$strings["Describe (optional)"] = "Охарактеризовать (необязательно)";
+App::$strings["Please enter a link URL"] = "Пожалуйста, введите URL ссылки";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Есть несохраненные изменения. Вы уверены, что хотите покинуть эту страницу?";
+App::$strings["lovely"] = "прекрасно";
+App::$strings["wonderful"] = "замечательно";
+App::$strings["fantastic"] = "фантастично";
+App::$strings["great"] = "отлично";
+App::$strings["Your chosen nickname was either already taken or not valid. Please use our suggestion ("] = "Выбранный вами псевдоним уже используется или недействителен. Попробуйте использовать наше предложение (";
+App::$strings[") or enter a new one."] = ") или введите новый.";
+App::$strings["Thank you, this nickname is valid."] = "Спасибо, этот псевдоним может быть использован.";
+App::$strings["A channel name is required."] = "Требуется название канала.";
+App::$strings["This is a "] = "Это ";
+App::$strings[" channel name"] = " название канала";
+App::$strings["%d minutes"] = array(
+ 0 => "%d минуту",
+ 1 => "%d минуты",
+ 2 => "%d минут",
+);
+App::$strings["about %d hours"] = array(
+ 0 => "около %d часa",
+ 1 => "около %d часов",
+ 2 => "около %d часов",
+);
+App::$strings["%d days"] = array(
+ 0 => "%d день",
+ 1 => "%d дня",
+ 2 => "%d дней",
+);
+App::$strings["%d months"] = array(
+ 0 => "%d месяц",
+ 1 => "%d месяца",
+ 2 => "%d месяцев",
+);
+App::$strings["%d years"] = array(
+ 0 => "%d год",
+ 1 => "%d года",
+ 2 => "%d лет",
+);
+App::$strings["timeago.prefixAgo"] = "";
+App::$strings["timeago.prefixFromNow"] = "через";
+App::$strings["timeago.suffixAgo"] = "назад";
+App::$strings["timeago.suffixFromNow"] = "";
+App::$strings["less than a minute"] = "менее чем одну минуту";
+App::$strings["about a minute"] = "около минуты";
+App::$strings["about an hour"] = "около часа";
+App::$strings["a day"] = "день";
+App::$strings["about a month"] = "около месяца";
+App::$strings["about a year"] = "около года";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "";
+App::$strings["__ctx:long__ May"] = "Май";
+App::$strings["Jan"] = "Янв";
+App::$strings["Feb"] = "Фев";
+App::$strings["Mar"] = "Мар";
+App::$strings["Apr"] = "Апр";
+App::$strings["__ctx:short__ May"] = "Май";
+App::$strings["Jun"] = "Июн";
+App::$strings["Jul"] = "Июл";
+App::$strings["Aug"] = "Авг";
+App::$strings["Sep"] = "Сен";
+App::$strings["Oct"] = "Окт";
+App::$strings["Nov"] = "Ноя";
+App::$strings["Dec"] = "Дек";
+App::$strings["Sun"] = "Вск";
+App::$strings["Mon"] = "Пон";
+App::$strings["Tue"] = "Вт";
+App::$strings["Wed"] = "Ср";
+App::$strings["Thu"] = "Чет";
+App::$strings["Fri"] = "Пят";
+App::$strings["Sat"] = "Суб";
+App::$strings["__ctx:calendar__ today"] = "сегодня";
+App::$strings["__ctx:calendar__ month"] = "месяц";
+App::$strings["__ctx:calendar__ week"] = "неделя";
+App::$strings["__ctx:calendar__ day"] = "день";
+App::$strings["__ctx:calendar__ All day"] = "Весь день";
+App::$strings["Unable to determine sender."] = "Невозможно определить отправителя.";
+App::$strings["No recipient provided."] = "Получатель не предоставлен.";
+App::$strings["[no subject]"] = "[без темы]";
+App::$strings["Stored post could not be verified."] = "Сохранённая публикация не может быть проверена.";
+App::$strings[" and "] = " и ";
+App::$strings["public profile"] = "общедоступный профиль";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s изменил %2\$s на &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Посетить %1\$s %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s обновлено %2\$s, изменено %3\$s.";
+App::$strings["Item was not found."] = "Элемент не найден.";
+App::$strings["Unknown error."] = "Неизвестная ошибка.";
+App::$strings["No source file."] = "Нет исходного файла.";
+App::$strings["Cannot locate file to replace"] = "Не удается найти файл для замены";
+App::$strings["Cannot locate file to revise/update"] = "Не удается найти файл для пересмотра / обновления";
+App::$strings["File exceeds size limit of %d"] = "Файл превышает предельный размер %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Вы достигли предела %1$.0f Мбайт для хранения вложений.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Загрузка файла не удалась. Возможно система перегружена или попытка прекращена.";
+App::$strings["Stored file could not be verified. Upload failed."] = "Файл для сохранения не может быть проверен. Загрузка не удалась.";
+App::$strings["Path not available."] = "Путь недоступен.";
+App::$strings["Empty pathname"] = "Пустое имя пути";
+App::$strings["duplicate filename or path"] = "дублирующееся имя файла или пути";
+App::$strings["Path not found."] = "Путь не найден.";
+App::$strings["mkdir failed."] = "mkdir не удался";
+App::$strings["database storage failed."] = "ошибка при записи базы данных.";
+App::$strings["Empty path"] = "Пустое имя пути";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Не верный токен безопасности для формы. Вероятно, это произошло потому, что форма была открыта слишком долго (> 3-х часов) перед его отправкой.";
+App::$strings["(Unknown)"] = "(Неизвестный)";
+App::$strings["Visible to anybody on the internet."] = "Виден всем в интернете.";
+App::$strings["Visible to you only."] = "Видно только вам.";
+App::$strings["Visible to anybody in this network."] = "Видно всем в этой сети.";
+App::$strings["Visible to anybody authenticated."] = "Видно всем аутентифицированным.";
+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["Connection not found."] = "Контакт не найден.";
+App::$strings["profile photo"] = "Фотография профиля";
+App::$strings["[Edited %s]"] = "[Отредактировано %s]";
+App::$strings["__ctx:edit_activity__ Post"] = "Публикация";
+App::$strings["__ctx:edit_activity__ Comment"] = "Комментарий";
+App::$strings["Unable to obtain identity information from database"] = "Невозможно получить идентификационную информацию из базы данных";
+App::$strings["Empty name"] = "Пустое имя";
+App::$strings["Name too long"] = "Слишком длинное имя";
+App::$strings["No account identifier"] = "Идентификатор аккаунта отсутствует";
+App::$strings["Nickname is required."] = "Требуется псевдоним.";
+App::$strings["Unable to retrieve created identity"] = "Не удается получить созданный идентификатор";
+App::$strings["Default Profile"] = "Профиль по умолчанию";
+App::$strings["Unable to retrieve modified identity"] = "Не удается найти изменённый идентификатор";
+App::$strings["Create New Profile"] = "Создать новый профиль";
+App::$strings["Visible to everybody"] = "Видно всем";
+App::$strings["Gender:"] = "Пол:";
+App::$strings["Homepage:"] = "Домашняя страница:";
+App::$strings["Online Now"] = "Сейчас в сети";
+App::$strings["Change your profile photo"] = "Изменить фотографию вашего профиля";
+App::$strings["Trans"] = "Трансексуал";
+App::$strings["Like this channel"] = "нравится этот канал";
+App::$strings["j F, Y"] = "";
+App::$strings["j F"] = "";
+App::$strings["Birthday:"] = "День рождения:";
+App::$strings["for %1\$d %2\$s"] = "для %1\$d %2\$s";
+App::$strings["Tags:"] = "Теги:";
+App::$strings["Sexual Preference:"] = "Сексуальные предпочтения:";
+App::$strings["Political Views:"] = "Политические взгляды:";
+App::$strings["Religion:"] = "Религия:";
+App::$strings["Hobbies/Interests:"] = "Хобби / интересы:";
+App::$strings["Likes:"] = "Что вам нравится:";
+App::$strings["Dislikes:"] = "Что вам не нравится:";
+App::$strings["Contact information and Social Networks:"] = "Контактная информация и социальные сети:";
+App::$strings["My other channels:"] = "Мои другие каналы:";
+App::$strings["Musical interests:"] = "Музыкальные интересы:";
+App::$strings["Books, literature:"] = "Книги, литература:";
+App::$strings["Television:"] = "Телевидение:";
+App::$strings["Film/dance/culture/entertainment:"] = "Кино / танцы / культура / развлечения:";
+App::$strings["Love/Romance:"] = "Любовь / романтика:";
+App::$strings["Work/employment:"] = "Работа / занятость:";
+App::$strings["School/education:"] = "Школа / образование:";
+App::$strings["Like this thing"] = "нравится этo";
+App::$strings["l F d, Y \\@ g:i A"] = "";
+App::$strings["Starts:"] = "Начало:";
+App::$strings["Finishes:"] = "Окончание:";
+App::$strings["This event has been added to your calendar."] = "Это событие было добавлено в ваш календарь.";
+App::$strings["Not specified"] = "Не указано";
+App::$strings["Needs Action"] = "Требует действия";
+App::$strings["Completed"] = "Завершено";
+App::$strings["In Process"] = "В процессе";
+App::$strings["Cancelled"] = "Отменено";
+App::$strings["Home, Voice"] = "Дом, голос";
+App::$strings["Home, Fax"] = "Дом, факс";
+App::$strings["Work, Voice"] = "Работа, голос";
+App::$strings["Work, Fax"] = "Работа, факс";
+App::$strings["GNU-Social"] = "";
+App::$strings["RSS/Atom"] = "";
+App::$strings["Facebook"] = "";
+App::$strings["LinkedIn"] = "";
+App::$strings["XMPP/IM"] = "";
+App::$strings["MySpace"] = "";
+App::$strings["Select an alternate language"] = "Выбор дополнительного языка";
+App::$strings["Who can see this?"] = "Кто может это видеть?";
+App::$strings["Custom selection"] = "Настраиваемый выбор";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Нажмите \"Показать\" чтобы разрешить просмотр. \"Не показывать\" позволит вам переопределить и ограничить область показа.";
+App::$strings["Show"] = "Показать";
+App::$strings["Don't show"] = "Не показывать";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Разрешения публикации %s не могут быть изменены %s после того, как ею поделились. Эти разрешения устанавливают кому разрешено просматривать эту публикацию.";
+App::$strings["Image/photo"] = "Изображение / фотография";
+App::$strings["Encrypted content"] = "Зашифрованное содержание";
+App::$strings["Install %1\$s element %2\$s"] = "Установить %1\$s элемент %2\$s";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Эта публикация содержит устанавливаемый %s элемент, однако у вас нет разрешений для его установки на этом сайте.";
+App::$strings["card"] = "карточка";
+App::$strings["article"] = "статья";
+App::$strings["Click to open/close"] = "Нажмите, чтобы открыть/закрыть";
+App::$strings["spoiler"] = "спойлер";
+App::$strings["View article"] = "Просмотр статьи";
+App::$strings["View summary"] = "Просмотр резюме";
+App::$strings["$1 wrote:"] = "$1 писал:";
+App::$strings["View PDF"] = "Просмотреть PDF";
+App::$strings[" by "] = " по ";
+App::$strings[" on "] = " на ";
+App::$strings["Embedded content"] = "Встроенное содержимое";
+App::$strings["Embedding disabled"] = "Встраивание отключено";
+App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s приветствует %2\$s";
+App::$strings["Start calendar week on Monday"] = "Начинать календарную неделю с понедельника";
+App::$strings["Default is Sunday"] = "По умолчанию - воскресенье";
+App::$strings["Search by Date"] = "Поиск по дате";
+App::$strings["Ability to select posts by date ranges"] = "Возможность выбора сообщений по диапазонам дат";
+App::$strings["Tag Cloud"] = "Облако тегов";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Показывает личное облако тегов на странице канала";
+App::$strings["Use blog/list mode"] = "Использовать режим блога / списка";
+App::$strings["Comments will be displayed separately"] = "Комментарии будут отображаться отдельно";
+App::$strings["Connection Filtering"] = "Фильтрация контактов";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Фильтр входящих сообщений от контактов на основе ключевых слов / контента";
+App::$strings["Conversation"] = "Диалоги";
+App::$strings["Community Tagging"] = "Отметки сообщества";
+App::$strings["Ability to tag existing posts"] = "Возможность помечать тегами существующие публикации";
+App::$strings["Emoji Reactions"] = "Реакции Emoji";
+App::$strings["Add emoji reaction ability to posts"] = "Возможность добавлять реакции Emoji к публикациям";
+App::$strings["Dislike Posts"] = "Не нравящиеся публикации";
+App::$strings["Ability to dislike posts/comments"] = "Возможность отмечать не нравящиеся публикации / комментарии";
+App::$strings["Star Posts"] = "Помечать сообщения";
+App::$strings["Ability to mark special posts with a star indicator"] = "Возможность отметить специальные сообщения индикатором-звёздочкой";
+App::$strings["Advanced Directory Search"] = "Расширенный поиск в каталоге";
+App::$strings["Allows creation of complex directory search queries"] = "Позволяет создание сложных поисковых запросов в каталоге";
+App::$strings["Editor"] = "Редактор";
+App::$strings["Post Categories"] = "Категории публикаций";
+App::$strings["Add categories to your posts"] = "Добавить категории для ваших публикаций";
+App::$strings["Large Photos"] = "Большие фотографии";
+App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Включить большие (1024px) миниатюры изображений в публикациях. Если не включено, использовать маленькие (640px) миниатюры.";
+App::$strings["Even More Encryption"] = "Еще больше шифрования";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Разрешить дополнительное end-to-end шифрование содержимого с общим секретным ключом";
+App::$strings["Enable Voting Tools"] = "Включить инструменты голосования";
+App::$strings["Provide a class of post which others can vote on"] = "Предоставь класс публикаций с возможностью голосования";
+App::$strings["Disable Comments"] = "Отключить комментарии";
+App::$strings["Provide the option to disable comments for a post"] = "Предоставить возможность отключать комментарии для публикаций";
+App::$strings["Delayed Posting"] = "Задержанная публикация";
+App::$strings["Allow posts to be published at a later date"] = "Разрешить размешать публикации следующими датами";
+App::$strings["Content Expiration"] = "Истечение срока действия содержимого";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Удалять публикации / комментарии и / или личные сообщения";
+App::$strings["Suppress Duplicate Posts/Comments"] = "Подавлять дублирующие публикации / комментарии";
+App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Предотвращает появление публикаций с одинаковым содержимым если интервал между ними менее 2 минут";
+App::$strings["Auto-save drafts of posts and comments"] = "Автоматически сохранять черновики публикаций и комментариев";
+App::$strings["Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions"] = "Автоматически сохраняет черновики публикаций и комментариев в локальном хранилище браузера для предотвращения их случайной утраты";
+App::$strings["Smart Birthdays"] = "\"Умные\" Дни рождений";
+App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Сделать уведомления о днях рождения зависимыми от часового пояса в том случае, если ваши друзья разбросаны по планете.";
+App::$strings["Event Timezone Selection"] = "Выбор часового пояса события";
+App::$strings["Allow event creation in timezones other than your own."] = "Разрешить создание события в часовой зоне отличной от вашей";
+App::$strings["Manage"] = "Управление";
+App::$strings["Navigation Channel Select"] = "Выбор канала навигации";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Изменить канал напрямую из выпадающего меню";
+App::$strings["Save search terms for re-use"] = "Сохранять результаты поиска для повторного использования";
+App::$strings["Ability to file posts under folders"] = "Возможность размещать публикации в каталогах";
+App::$strings["Alternate Stream Order"] = "Отображение потока";
+App::$strings["Ability to order the stream by last post date, last comment date or unthreaded activities"] = "Возможность показывать поток по дате последнего сообщения, последнего комментария или в порядке поступления";
+App::$strings["Contact Filter"] = "Фильтр контактов";
+App::$strings["Ability to display only posts of a selected contact"] = "Возможность показа публикаций только от выбранных контактов";
+App::$strings["Forum Filter"] = "Фильтр по форумам";
+App::$strings["Ability to display only posts of a specific forum"] = "Возможность показа публикаций только определённого форума";
+App::$strings["Personal Posts Filter"] = "Персональный фильтр публикаций";
+App::$strings["Ability to display only posts that you've interacted on"] = "Возможность показа только тех публикаций с которыми вы взаимодействовали";
+App::$strings["Show friend and connection suggestions"] = "Показать предложения в друзья";
+App::$strings["Photo Location"] = "Местоположение фотографии";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Если данные о местоположении доступны на загруженных фотографий, связать их с картой.";
+App::$strings["Advanced Profiles"] = "Расширенные профили";
+App::$strings["Additional profile sections and selections"] = "Дополнительные секции и выборы профиля";
+App::$strings["Profile Import/Export"] = "Импорт / экспорт профиля";
+App::$strings["Save and load profile details across sites/channels"] = "Сохранение и загрузка настроек профиля на всех сайтах / каналах";
+App::$strings["Multiple Profiles"] = "Несколько профилей";
+App::$strings["Ability to create multiple profiles"] = "Возможность создания нескольких профилей";
+App::$strings["Trending"] = "В тренде";
+App::$strings["Keywords"] = "Ключевые слова";
+App::$strings["have"] = "иметь";
+App::$strings["has"] = "есть";
+App::$strings["want"] = "хотеть";
+App::$strings["wants"] = "хотеть";
+App::$strings["likes"] = "нравится";
+App::$strings["dislikes"] = "не нравится";
+App::$strings["Not a valid email address"] = "Недействительный адрес электронной почты";
+App::$strings["Your email domain is not among those allowed on this site"] = "Домен электронной почты не входит в число тех, которые разрешены на этом сайте";
+App::$strings["Your email address is already registered at this site."] = "Ваш адрес электронной почты уже зарегистрирован на этом сайте.";
+App::$strings["An invitation is required."] = "Требуется приглашение.";
+App::$strings["Invitation could not be verified."] = "Не удалось проверить приглашение.";
+App::$strings["Please enter the required information."] = "Пожалуйста, введите необходимую информацию.";
+App::$strings["Failed to store account information."] = "Не удалось сохранить информацию аккаунта.";
+App::$strings["Registration confirmation for %s"] = "Подтверждение регистрации на %s";
+App::$strings["Registration request at %s"] = "Запрос регистрации на %s";
+App::$strings["your registration password"] = "ваш пароль регистрации";
+App::$strings["Registration details for %s"] = "Регистрационные данные для %s";
+App::$strings["Account approved."] = "Аккаунт утвержден.";
+App::$strings["Registration revoked for %s"] = "Регистрация отозвана для %s";
+App::$strings["Click here to upgrade."] = "Нажмите здесь для обновления.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Это действие превышает ограничения, установленные в вашем плане.";
+App::$strings["This action is not available under your subscription plan."] = "Это действие невозможно из-за ограничений в вашем плане.";
+App::$strings["Birthday"] = "День рождения";
+App::$strings["Age: "] = "Возраст:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD или MM-DD";
+App::$strings["less than a second ago"] = "менее чем одну секунду";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s назад";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "год",
+ 1 => "года",
+ 2 => "лет",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "месяц",
+ 1 => "месяца",
+ 2 => "месяцев",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "неделю",
+ 1 => "недели",
+ 2 => "недель",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "день",
+ 1 => "дня",
+ 2 => "дней",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "час",
+ 1 => "часа",
+ 2 => "часов",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "минуту",
+ 1 => "минуты",
+ 2 => "минут",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "секунду",
+ 1 => "секунды",
+ 2 => "секунд",
+);
+App::$strings["%1\$s's birthday"] = "У %1\$s День рождения";
+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["Account/Channel Settings"] = "Настройки аккаунта / канала";
+App::$strings["End this session"] = "Закончить эту сессию";
+App::$strings["Your profile page"] = "Страницa вашего профиля";
+App::$strings["Manage/Edit profiles"] = "Управление / редактирование профилей";
+App::$strings["Sign in"] = "Войти";
+App::$strings["Take me home"] = "Домой";
+App::$strings["Log me out of this site"] = "Выйти с этого сайта";
+App::$strings["Create an account"] = "Создать аккаунт";
+App::$strings["Help and documentation"] = "Справочная информация и документация";
+App::$strings["Search site @name, !forum, #tag, ?docs, content"] = "Искать на сайте @имя, !форум, #тег, ?документ, содержимое";
+App::$strings["Site Setup and Configuration"] = "Установка и конфигурация сайта";
+App::$strings["@name, !forum, #tag, ?doc, content"] = "@имя, !форум, #тег, ?документ, содержимое";
+App::$strings["Please wait..."] = "Подождите пожалуйста ...";
+App::$strings["Add Apps"] = "Добавить приложения";
+App::$strings["Arrange Apps"] = "Упорядочить приложения";
+App::$strings["Toggle System Apps"] = "Показать системные приложения";
+App::$strings["Status Messages and Posts"] = "Статусы и публикации";
+App::$strings["Profile Details"] = "Информация о профиле";
+App::$strings["Photo Albums"] = "Фотоальбомы";
+App::$strings["Files and Storage"] = "Файлы и хранилище";
+App::$strings["Saved Bookmarks"] = "Сохранённые закладки";
+App::$strings["View Cards"] = "Просмотреть карточки";
+App::$strings["View Articles"] = "Просмотр статей";
+App::$strings["View Webpages"] = "Просмотр веб-страниц";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Файл превышает предельный размер для сайта в %lu байт";
+App::$strings["Image file is empty."] = "Файл изображения пуст.";
+App::$strings["Photo storage failed."] = "Ошибка хранилища фотографий.";
+App::$strings["a new photo"] = "новая фотография";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s опубликовал %2\$s в %3\$s";
+App::$strings["Upload New Photos"] = "Загрузить новые фотографии";
+App::$strings["Invalid data packet"] = "Неверный пакет данных";
+App::$strings["invalid target signature"] = "недопустимая целевая подпись";
+App::$strings["New window"] = "Новое окно";
+App::$strings["Open the selected location in a different window or browser tab"] = "Открыть выбранное местоположение в другом окне или вкладке браузера";
+App::$strings["Delegation session ended."] = "Делегированная сессия завершена.";
+App::$strings["Logged out."] = "Вышел из системы.";
+App::$strings["Email validation is incomplete. Please check your email."] = "Проверка email не завершена. Пожалуйста, проверьте вашу почту.";
+App::$strings["Failed authentication"] = "Ошибка аутентификации";
+App::$strings["Help:"] = "Помощь:";
+App::$strings["Not Found"] = "Не найдено";
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index f2c1b7a48..18c3db665 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -1803,3 +1803,8 @@ dl.bb-dl > dd > li {
.hover-fx-show:hover .hover-fx-hide {
opacity: 1;
}
+
+/* default highlighted text if not specified by schema: */
+span.default-highlight {
+ background-color: yellow;
+}
diff --git a/view/theme/redbasic/js/redbasic.js b/view/theme/redbasic/js/redbasic.js
index 688e92148..8d3b795cc 100644
--- a/view/theme/redbasic/js/redbasic.js
+++ b/view/theme/redbasic/js/redbasic.js
@@ -121,9 +121,9 @@ function toggleAside() {
$('main').addClass('region_1-on')
$('<div id="overlay"></div>').appendTo('section');
$('#left_aside_wrapper').stick_in_parent({
- offset_top: $('nav').outerHeight(true) + 10,
- parent: '#region_1',
- spacer: '#left_aside_spacer'
+ offset_top: parseInt($('aside').css('padding-top')),
+ parent: 'main',
+ spacer: '.aside_spacer'
});
}
}
diff --git a/view/theme/redbasic/schema/dark.css b/view/theme/redbasic/schema/dark.css
index 71f7bc393..bf55fec72 100644
--- a/view/theme/redbasic/schema/dark.css
+++ b/view/theme/redbasic/schema/dark.css
@@ -322,9 +322,6 @@ a, a:visited, a:link, .fakelink, .fakelink:visited, .fakelink:link {
.text-dark {
color: #aaa !important;
}
-a.text-dark:focus, a.text-dark:hover {
- color: #ddd !important;
-}
.group-selected, .fileas-selected, .categories-selected, .search-selected, a.active {
color: #fff !important;
@@ -480,3 +477,26 @@ pre {
.widget-nav-pills-checkbox:hover + a {
background-color: #222;
}
+
+
+/* category badge fix: */
+a.text-dark:focus, a.text-dark:hover {
+ color: #ddd !important;
+}
+
+.badge-warning {
+/* background-color: #ffc927; */
+}
+.badge-warning a.text-dark {
+ color: #333 !important;
+}
+.badge-warning a.text-dark:focus, .badge-warning a.text-dark:hover {
+ color: red !important;
+ text-decoration: none;
+}
+
+/* fix color for highlithed text */
+span.default-highlight {
+ color: #333;
+ border-radius: 4px;
+}
diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl
index 6013f9548..cacbf7e64 100644
--- a/view/tpl/app.tpl
+++ b/view/tpl/app.tpl
@@ -31,8 +31,8 @@
<a class="dropdown-item{{if $app.active}} active{{/if}}" href="{{$app.url}}">{{if $icon}}<i class="generic-icons-nav fa fa-fw fa-{{$icon}}"></i>{{else}}<img src="{{$app.photo}}" width="16" height="16" style="margin-right:9px;"/>{{/if}}{{$app.name}}</a>
{{/if}}
{{if $order}}
-<a href="{{$hosturl}}appman/{{$app.guid}}/moveup" class="btn btn-outline-secondary btn-sm" style="margin-bottom: 5px;"><i class="generic-icons-nav fa fa-fw fa-arrow-up"></i></a>
-<a href="{{$hosturl}}appman/{{$app.guid}}/movedown" class="btn btn-outline-secondary btn-sm" style="margin-bottom: 5px;"><i class="generic-icons-nav fa fa-fw fa-arrow-down"></i></a>
+<a href="{{$hosturl}}appman/{{$app.guid}}/moveup{{if $pinned}}/nav_pinned_app{{else}}/nav_featured_app{{/if}}" class="btn btn-outline-secondary btn-sm" style="margin-bottom: 5px;"><i class="generic-icons-nav fa fa-fw fa-arrow-up"></i></a>
+<a href="{{$hosturl}}appman/{{$app.guid}}/movedown{{if $pinned}}/nav_pinned_app{{else}}/nav_featured_app{{/if}}" class="btn btn-outline-secondary btn-sm" style="margin-bottom: 5px;"><i class="generic-icons-nav fa fa-fw fa-arrow-down"></i></a>
{{if $icon}}<i class="generic-icons-nav fa fa-fw fa-{{$icon}}"></i>{{else}}<img src="{{$app.photo}}" width="16" height="16" style="margin-right:9px;"/>{{/if}}{{$app.name}}<br>
{{/if}}
diff --git a/view/tpl/categories_widget.tpl b/view/tpl/categories_widget.tpl
index 72478aa3d..1341c652c 100755
--- a/view/tpl/categories_widget.tpl
+++ b/view/tpl/categories_widget.tpl
@@ -5,7 +5,7 @@
<ul class="nav nav-pills flex-column">
<li class="nav-item"><a href="{{$base}}" class="nav-link{{if $sel_all}} active{{/if}}">{{$all}}</a></li>
{{foreach $terms as $term}}
- <li class="nav-item"><a href="{{$base}}?f=&cat={{$term.name}}" class="nav-link{{if $term.selected}} active{{/if}}">{{$term.name}}</a></li>
+ <li class="nav-item"><a href="{{$base}}?f=&cat={{$term.name|urlencode}}" class="nav-link{{if $term.selected}} active{{/if}}">{{$term.name}}</a></li>
{{/foreach}}
</ul>
diff --git a/view/tpl/cloud_directory.tpl b/view/tpl/cloud_directory.tpl
index 51178a9ba..90347d274 100644
--- a/view/tpl/cloud_directory.tpl
+++ b/view/tpl/cloud_directory.tpl
@@ -68,7 +68,7 @@
<td class="cloud-index-tool"><a href="#" title="{{$delete}}" onclick="dropItem('{{$item.fileStorageUrl}}/{{$item.attachId}}/delete/json', '#cloud-index-{{$item.attachId}},#cloud-tools-{{$item.attachId}}'); return false;"><i class="fa fa-trash-o drop-icons"></i></a></td>
{{else}}
- <td></td><td></td><td></td>{{if $is_admin}}<td class="cloud-index-tool"><a href="#" title="{{$admin_delete}}" onclick="dropItem('{{$item.fileStorageUrl}}/{{$item.attachId}}/delete/json', '#cloud-index-{{$item.attachId}},#cloud-tools-{{$item.attachId}}'); return false;"><i class="fa fa-trash-o drop-icons"></i></a>{{else}}<td>{{/if}}</td>
+ <td></td><td></td><td></td>{{if $is_admin || $item.is_creator}}<td class="cloud-index-tool"><a href="#" title="{{if $is_admin}}{{$admin_delete}}{{else}}{{$delete}}{{/if}}" onclick="dropItem('{{$item.fileStorageUrl}}/{{$item.attachId}}/delete/json', '#cloud-index-{{$item.attachId}},#cloud-tools-{{$item.attachId}}'); return false;"><i class="fa fa-trash-o drop-icons"></i></a>{{else}}<td>{{/if}}</td>
{{/if}}
<td>{{*{{$item.type}}*}}</td>
<td class="d-none d-md-table-cell">{{$item.sizeFormatted}}</td>
diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl
index 7dddf9c01..428529de2 100755
--- a/view/tpl/conv_item.tpl
+++ b/view/tpl/conv_item.tpl
@@ -9,12 +9,12 @@
<div class="wall-item-outside-wrapper{{if $item.is_comment}} comment{{/if}}{{if $item.previewing}} preview{{/if}}" id="wall-item-outside-wrapper-{{$item.id}}" >
<div class="clearfix wall-item-content-wrapper{{if $item.is_comment}} comment{{/if}}" id="wall-item-content-wrapper-{{$item.id}}">
{{if $item.photo}}
- <div class="wall-photo-item" id="wall-photo-item-{{$item.id}}">
+ <div class="wall-photo-item{{if $item.is_new && !$item.title}} wall-item-head-new rounded-top{{/if}}" id="wall-photo-item-{{$item.id}}">
{{$item.photo}}
</div>
{{/if}}
{{if $item.event}}
- <div class="wall-event-item" id="wall-event-item-{{$item.id}}">
+ <div class="wall-event-item{{if $item.is_new && !$item.title}} wall-item-head-new rounded-top{{/if}}" id="wall-event-item-{{$item.id}}">
{{$item.event}}
</div>
{{/if}}
@@ -26,7 +26,7 @@
<hr class="m-0">
{{/if}}
{{/if}}
- <div class="p-2 clearfix wall-item-head{{if $item.is_new && !$item.title && !$item.event && !$item.is_comment}} wall-item-head-new rounded-top{{/if}}">
+ <div class="p-2 clearfix wall-item-head{{if $item.is_new && !$item.title && !$item.event && !$item.is_comment && !$item.photo}} wall-item-head-new rounded-top{{/if}}">
<div class="wall-item-info " id="wall-item-info-{{$item.id}}" >
<div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}} h-card p-author" id="wall-item-photo-wrapper-{{$item.id}}">
<img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" />
@@ -146,6 +146,9 @@
{{if $item.share}}
<a class="dropdown-item" href="#" onclick="jotShare({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-retweet" title="{{$item.share.0}}"></i>{{$item.share.0}}</a>
{{/if}}
+ {{if $item.embed}}
+ <a class="dropdown-item" href="#" onclick="jotEmbed({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-share" title="{{$item.embed.0}}"></i>{{$item.embed.0}}</a>
+ {{/if}}
{{if $item.plink}}
<a class="dropdown-item" href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="u-url"><i class="generic-icons-nav fa fa-fw fa-external-link"></i>{{$item.plink.title}}</a>
{{/if}}
diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl
index c6da3d8a4..63e74b159 100755
--- a/view/tpl/conv_list.tpl
+++ b/view/tpl/conv_list.tpl
@@ -9,12 +9,12 @@
<div class="wall-item-outside-wrapper{{if $item.is_comment}} comment{{/if}}{{if $item.previewing}} preview{{/if}}" id="wall-item-outside-wrapper-{{$item.id}}" >
<div class="clearfix wall-item-content-wrapper{{if $item.is_comment}} comment{{/if}}" id="wall-item-content-wrapper-{{$item.id}}">
{{if $item.photo}}
- <div class="wall-photo-item" id="wall-photo-item-{{$item.id}}">
+ <div class="wall-photo-item{{if $item.is_new && !$item.title}} wall-item-head-new rounded-top{{/if}}" id="wall-photo-item-{{$item.id}}">
{{$item.photo}}
</div>
{{/if}}
{{if $item.event}}
- <div class="wall-event-item" id="wall-event-item-{{$item.id}}">
+ <div class="wall-event-item{{if $item.is_new && !$item.title}} wall-item-head-new rounded-top{{/if}}" id="wall-event-item-{{$item.id}}">
{{$item.event}}
</div>
{{/if}}
@@ -26,7 +26,7 @@
<hr class="m-0">
{{/if}}
{{/if}}
- <div class="p-2 clearfix wall-item-head{{if $item.is_new && !$item.title && !$item.event && !$item.is_comment}} wall-item-head-new rounded-top{{/if}}">
+ <div class="p-2 clearfix wall-item-head{{if $item.is_new && !$item.title && !$item.event && !$item.is_comment && !$item.photo}} wall-item-head-new rounded-top{{/if}}">
<div class="wall-item-info" id="wall-item-info-{{$item.id}}" >
<div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}} h-card p-author" id="wall-item-photo-wrapper-{{$item.id}}">
<img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" /></a>
@@ -139,6 +139,9 @@
{{if $item.share}}
<a class="dropdown-item" href="#" onclick="jotShare({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-retweet" title="{{$item.share.0}}"></i>{{$item.share.0}}</a>
{{/if}}
+ {{if $item.embed}}
+ <a class="dropdown-item" href="#" onclick="jotEmbed({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-share" title="{{$item.embed.0}}"></i>{{$item.embed.0}}</a>
+ {{/if}}
{{if $item.plink}}
<a class="dropdown-item" href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="u-url"><i class="generic-icons-nav fa fa-fw fa-external-link"></i>{{$item.plink.title}}</a>
{{/if}}
diff --git a/view/tpl/group_edit.tpl b/view/tpl/group_edit.tpl
index 88f037abe..60038701e 100755
--- a/view/tpl/group_edit.tpl
+++ b/view/tpl/group_edit.tpl
@@ -13,6 +13,7 @@
<input type='hidden' name='form_security_token' value='{{$form_security_token_edit}}'>
{{include file="field_input.tpl" field=$gname}}
{{include file="field_checkbox.tpl" field=$public}}
+ {{$pgrp_extras}}
<a href="group/drop/{{$gid}}?t={{$form_security_token_drop}}" onclick="return confirmDelete();" class="btn btn-sm btn-danger">
{{$delete}}
</a>
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index 2670ba9e7..9a44f1a54 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -198,16 +198,24 @@ var activeCommentText = '';
})
}
-
function jotShare(id,post_type) {
+ $('#like-rotator-' + id).show();
+ $.get('{{$baseurl}}/share/' + id, function(data) {
+ $('#like-rotator-' + id).hide();
+ updateInit();
+ });
+ }
+
+ function jotEmbed(id,post_type) {
if(post_type == 6) {
window.location.href = 'rpost?f=&post_id='+id;
}
else {
+
if ($('#jot-popup').length != 0) $('#jot-popup').show();
$('#like-rotator-' + id).show();
- $.get('{{$baseurl}}/share/' + id, function(data) {
+ $.get('{{$baseurl}}/embed/' + id, function(data) {
if (!editor) $("#profile-jot-text").val("");
initEditor(function(){
addeditortext(data);
@@ -219,7 +227,7 @@ var activeCommentText = '';
}
function linkdropper(event) {
- var linkFound = event.dataTransfer.types.contains("text/uri-list");
+ var linkFound = ((event.dataTransfer.types.indexOf("text/uri-list") > -1) ? true : false);
if(linkFound) {
event.preventDefault();
var editwin = '#' + event.target.id;
@@ -256,7 +264,7 @@ var activeCommentText = '';
commentwin = ((editwin.indexOf('comment') >= 0) ? true : false);
if(commentwin) {
var commentid = editwin.substring(editwin.lastIndexOf('-') + 1);
- commentOpen(document.getElementById(event.target.id),commentid);
+ $("#comment-edit-text-" + commentid).addClass("expanded");
}
}
diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl
index 4eae33d13..12509fc59 100755
--- a/view/tpl/jot.tpl
+++ b/view/tpl/jot.tpl
@@ -137,8 +137,11 @@
<i id="profile-nocomment" class="fa fa-comments jot-icons"></i>
</button>
{{/if}}
+ {{if $custommoretoolsbuttons}}
+ {{$custommoretoolsbuttons}}
+ {{/if}}
</div>
- {{if $writefiles || $weblink || $setloc || $clearloc || $feature_expire || $feature_encrypt || $feature_voting}}
+ {{if $writefiles || $weblink || $setloc || $clearloc || $feature_expire || $feature_encrypt || $feature_voting || $custommoretoolsdropdown}}
<div class="btn-group d-lg-none">
<button type="button" id="more-tools" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<i id="more-tools-icon" class="fa fa-cog jot-icons"></i>
@@ -176,6 +179,8 @@
{{if $feature_nocomment}}
<a class="dropdown-item" href="#" onclick="toggleNoComment(); return false;"><i id="profile-nocomment-sub" class="fa fa-comments"></i>&nbsp;{{$nocommenttitlesub}}</a>
{{/if}}
+ <hr />
+ {{$custommoretoolsdropdown}}
</div>
</div>
{{/if}}
@@ -186,6 +191,11 @@
</div>
</div>
<div id="profile-jot-submit-right" class="btn-group float-right">
+ {{foreach $customsubmitright as $csr}}
+ <button class="btn btn-outline-secondary btn-sm" {{$csr.buttonparams}} title="{{$csr.preview}}">
+ {{$csr.buttoncontent}}
+ </button>
+ {{/foreach}}
{{if $preview}}
<button class="btn btn-outline-secondary btn-sm" onclick="preview_post();return false;" title="{{$preview}}">
<i class="fa fa-eye jot-icons" ></i>
diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl
index f43d82301..bc7f80906 100644
--- a/view/tpl/notifications_widget.tpl
+++ b/view/tpl/notifications_widget.tpl
@@ -24,7 +24,7 @@
});
window.onpopstate = function(e) {
- if(e.state !== null)
+ if(e.state !== null && e.state.b64mid !== bParam_mid)
getData(e.state.b64mid, '');
};
});
@@ -105,8 +105,9 @@
$("#nav-{{$notification.type}}-menu .notification").each(function(i, el){
var cn = $(el).data('contact_name').toString().toLowerCase();
+ var ca = $(el).data('contact_addr').toString().toLowerCase();
- if(cn.indexOf(val) === -1)
+ if(cn.indexOf(val) === -1 && ca.indexOf(val) === -1)
$(this).addClass('d-none');
else
$(this).removeClass('d-none');
@@ -134,18 +135,18 @@
{{$no_notifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
</div>
<div id="nav-notifications-template" rel="template">
- <a class="list-group-item clearfix notification {5}" href="{0}" title="{2}" data-b64mid="{6}" data-notify_id="{7}" data-thread_top="{8}" data-contact_name="{2}">
+ <a class="list-group-item clearfix notification {6}" href="{0}" title="{3}" data-b64mid="{7}" data-notify_id="{8}" data-thread_top="{9}" data-contact_name="{2}" data-contact_addr="{3}">
<img class="menu-img-3" data-src="{1}">
<span class="contactname">{2}</span>
- <span class="dropdown-sub-text">{3}<br>{4}</span>
+ <span class="dropdown-sub-text">{4}<br>{5}</span>
</a>
</div>
<div id="nav-notifications-forums-template" rel="template">
- <a class="list-group-item clearfix notification notification-forum" href="{0}" title="{3}" data-b64mid="{6}" data-notify_id="{7}" data-thread_top="{8}" data-contact_name="{2}">
- <span class="float-right badge badge-{{$notification.severity}}">{9}</span>
+ <a class="list-group-item clearfix notification notification-forum" href="{0}" title="{4} - {3}" data-b64mid="{7}" data-notify_id="{8}" data-thread_top="{9}" data-contact_name="{2}" data-contact_addr="{3}">
+ <span class="float-right badge badge-{{$notification.severity}}">{10}</span>
<img class="menu-img-1" data-src="{1}">
<span class="">{2}</span>
- <i class="fa fa-{10} text-muted"></i>
+ <i class="fa fa-{11} text-muted"></i>
</a>
</div>
<div id="notifications" class="navbar-nav">
diff --git a/view/tpl/photo_view.tpl b/view/tpl/photo_view.tpl
index 105cf0ac8..6d566cab9 100755
--- a/view/tpl/photo_view.tpl
+++ b/view/tpl/photo_view.tpl
@@ -99,7 +99,7 @@
<div id="photo-edit-end" class="clear"></div>
</div>
<div id="photo-view-wrapper">
- <div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}" onclick="$.colorbox({href: '{{$photo.href}}'}); return false;"><img style="width: 100%;" src="{{$photo.src}}"></a></div>
+ <div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}" onclick="{{$onclick}}"><img style="width: 100%;" src="{{$photo.src}}"></a></div>
<div id="photo-photo-end" class="clear"></div>
{{if $tags}}
<div class="photo-item-tools-left" id="in-this-photo">
diff --git a/view/tpl/privacy_groups.tpl b/view/tpl/privacy_groups.tpl
index b4e27ef2c..327a15aee 100644
--- a/view/tpl/privacy_groups.tpl
+++ b/view/tpl/privacy_groups.tpl
@@ -8,6 +8,7 @@
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{include file="field_input.tpl" field=$gname}}
{{include file="field_checkbox.tpl" field=$public}}
+ {{$pgrp_extras}}
<button type="submit" name="submit" class="btn btn-sm btn-primary float-right">{{$submit}}</button>
</form>
</div>
diff --git a/view/tpl/remote_friends_common.tpl b/view/tpl/remote_friends_common.tpl
index efc0ab49a..6ef3a7dde 100755
--- a/view/tpl/remote_friends_common.tpl
+++ b/view/tpl/remote_friends_common.tpl
@@ -7,10 +7,9 @@
<div class="contact-block-content">
{{foreach $items as $item}}
<div class="contact-block-div">
- <a class="contact-block-link mpfriend" href="{{$base}}/chanview?f=&url={{$item.xchan_url}}"><img class="contact-block-img mpfriend" src="{{$item.xchan_photo_s}}"alt="{{$item.xchan_name}}" title="{{$item.xchan_name}} [{{$item.xchan_addr}}]" /></a>
+ <a class="contact-block-link mpfriend" href="{{$base}}/chanview?f=&url={{$item.xchan_url}}"><img class="contact-block-img mpfriend" src="{{$item.xchan_photo_s}}" alt="{{$item.xchan_name}}" title="{{$item.xchan_name}} [{{$item.xchan_addr}}]" /></a>
</div>
{{/foreach}}
</div>
{{/if}}
</div>
-