]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #6577 from rabuzarus/20190129_-_jot_atachment_preview
authorHypolite Petovan <hypolite@mrpetovan.com>
Thu, 7 Feb 2019 13:43:49 +0000 (08:43 -0500)
committerGitHub <noreply@github.com>
Thu, 7 Feb 2019 13:43:49 +0000 (08:43 -0500)
Attachement live preview

118 files changed:
bin/auth_ejabberd.php
bin/console.php
bin/daemon.php
bin/worker.php
boot.php
config/dbstructure.config.php
config/defaults.config.php
doc/Config.md
doc/Settings.md
doc/de/Settings.md
index.php
mod/admin.php
mod/babel.php
mod/friendica.php
mod/profile.php [deleted file]
mod/update_profile.php
src/App.php
src/BaseObject.php
src/Content/ForumManager.php
src/Content/Text/BBCode.php
src/Content/Text/Markdown.php
src/Core/Addon.php
src/Core/Config.php
src/Core/Config/ConfigCache.php [new file with mode: 0644]
src/Core/Config/ConfigCacheLoader.php [new file with mode: 0644]
src/Core/Config/IConfigAdapter.php
src/Core/Config/IConfigCache.php [new file with mode: 0644]
src/Core/Config/IPConfigAdapter.php
src/Core/Config/IPConfigCache.php [new file with mode: 0644]
src/Core/Config/JITConfigAdapter.php
src/Core/Config/JITPConfigAdapter.php
src/Core/Config/PreloadConfigAdapter.php
src/Core/Config/PreloadPConfigAdapter.php
src/Core/Console/AutomaticInstallation.php
src/Core/Console/Config.php
src/Core/Console/DatabaseStructure.php
src/Core/Console/PostUpdate.php
src/Core/Console/Typo.php
src/Core/Installer.php
src/Core/Lock/DatabaseLockDriver.php
src/Core/Logger.php
src/Core/PConfig.php
src/Core/System.php
src/Core/Update.php
src/Core/Worker.php
src/Database/DBA.php
src/Database/DBStructure.php
src/Factory/ConfigFactory.php [new file with mode: 0644]
src/Factory/LoggerFactory.php [new file with mode: 0644]
src/Model/Attach.php
src/Model/Item.php
src/Model/User.php
src/Module/Install.php
src/Module/Profile.php [new file with mode: 0644]
src/Network/Probe.php
src/Object/Post.php
src/Protocol/ActivityPub/Processor.php
src/Protocol/ActivityPub/Receiver.php
src/Protocol/ActivityPub/Transmitter.php
src/Util/BasePath.php [new file with mode: 0644]
src/Util/LoggerFactory.php [deleted file]
src/Worker/DBUpdate.php
src/Worker/Notifier.php
tests/DatabaseTest.php
tests/Util/AppMockTrait.php
tests/Util/DBAMockTrait.php
tests/Util/DateTimeFormatMockTrait.php [new file with mode: 0644]
tests/Util/DbaCacheMockTrait.php [new file with mode: 0644]
tests/Util/DbaLockMockTrait.php [new file with mode: 0644]
tests/include/ApiTest.php
tests/src/BaseObjectTest.php
tests/src/Core/Cache/CacheTest.php
tests/src/Core/Cache/DatabaseCacheDriverTest.php
tests/src/Core/Cache/MemcacheCacheDriverTest.php
tests/src/Core/Cache/MemcachedCacheDriverTest.php
tests/src/Core/Cache/MemoryCacheTest.php
tests/src/Core/Cache/RedisCacheDriverTest.php
tests/src/Core/Console/AutomaticInstallationConsoleTest.php
tests/src/Core/Console/ConfigConsoleTest.php
tests/src/Core/Console/ConsoleTest.php
tests/src/Core/InstallerTest.php
tests/src/Core/Lock/DatabaseLockDriverTest.php
tests/src/Core/Lock/LockTest.php
tests/src/Core/Lock/MemcacheCacheLockDriverTest.php
tests/src/Core/Lock/MemcachedCacheLockDriverTest.php
tests/src/Core/Lock/RedisCacheLockDriverTest.php
tests/src/Core/Lock/SemaphoreLockDriverTest.php
tests/src/Database/DBATest.php
tests/src/Database/DBStructureTest.php
tests/src/Network/CurlResultTest.php
view/lang/cs/messages.po
view/lang/cs/strings.php
view/lang/de/messages.po
view/lang/de/strings.php
view/lang/pl/messages.po
view/lang/pl/strings.php
view/lang/zh-cn/messages.po
view/lang/zh-cn/strings.php
view/templates/comment_item.tpl
view/templates/field_input.tpl
view/templates/field_select.tpl
view/templates/field_select_raw.tpl
view/templates/field_textarea.tpl
view/templates/field_themeselect.tpl
view/templates/field_yesno.tpl
view/theme/duepuntozero/templates/comment_item.tpl
view/theme/frio/css/style.css
view/theme/frio/templates/field_input.tpl
view/theme/frio/templates/field_select.tpl
view/theme/frio/templates/field_select_raw.tpl
view/theme/frio/templates/field_textarea.tpl
view/theme/frio/templates/field_themeselect.tpl
view/theme/frio/templates/profile_vcard.tpl
view/theme/frio/templates/search_item.tpl
view/theme/frio/templates/vcard-widget.tpl
view/theme/frio/templates/wall_thread.tpl
view/theme/quattro/templates/comment_item.tpl
view/theme/vier/templates/comment_item.tpl

index a6f30d20193275192d808dc5a9f9190d7d5f5e9e..11df438952a06e96ee700a7d6345cba1c90007d8 100755 (executable)
  */
 
 use Friendica\App;
+use Friendica\Core\Config;
+use Friendica\Factory;
+use Friendica\Util\BasePath;
 use Friendica\Util\ExAuth;
-use Friendica\Util\LoggerFactory;
 
 if (sizeof($_SERVER["argv"]) == 0) {
        die();
@@ -52,9 +54,12 @@ chdir($directory);
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-$logger = LoggerFactory::create('auth_ejabberd');
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
+$configLoader = new Config\ConfigCacheLoader($basedir);
+$config = Factory\ConfigFactory::createCache($configLoader);
+$logger = Factory\LoggerFactory::create('auth_ejabberd', $config);
 
-$a = new App(dirname(__DIR__), $logger);
+$a = new App($config, $logger);
 
 if ($a->getMode()->isNormal()) {
        $oAuth = new ExAuth();
index 9264e3eee46080d294ff79fd28041340ed239942..9061824d875b0be10f8f1fad8aa94c1f883c55a0 100755 (executable)
@@ -3,11 +3,16 @@
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-use Friendica\Util\LoggerFactory;
+use Friendica\Core\Config;
+use Friendica\Factory;
+use Friendica\Util\BasePath;
 
-$logger = LoggerFactory::create('console');
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
+$configLoader = new Config\ConfigCacheLoader($basedir);
+$config = Factory\ConfigFactory::createCache($configLoader);
+$logger = Factory\LoggerFactory::create('console', $config);
 
-$a = new Friendica\App(dirname(__DIR__), $logger);
+$a = new Friendica\App($config, $logger);
 \Friendica\BaseObject::setApp($a);
 
 (new Friendica\Core\Console($argv))->execute();
index c7b321c11c3c455ab8d31fc61b48b30ee68a0ebc..5c014a92702429d58af4dfab1ac163597d34b95d 100755 (executable)
@@ -11,7 +11,8 @@ use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
-use Friendica\Util\LoggerFactory;
+use Friendica\Factory;
+use Friendica\Util\BasePath;
 
 // Get options
 $shortopts = 'f';
@@ -32,9 +33,12 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-$logger = LoggerFactory::create('daemon');
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
+$configLoader = new Config\ConfigCacheLoader($basedir);
+$config = Factory\ConfigFactory::createCache($configLoader);
+$logger = Factory\LoggerFactory::create('daemon', $config);
 
-$a = new App(dirname(__DIR__), $logger);
+$a = new App($config, $logger);
 
 if ($a->getMode()->isInstall()) {
        die("Friendica isn't properly installed yet.\n");
index a64b6a83305660f705bf5530141061ddcf379269..553e9849774fe307e5f1535b9c090809ce043e80 100755 (executable)
@@ -4,11 +4,13 @@
  * @file bin/worker.php
  * @brief Starts the background processing
  */
+
 use Friendica\App;
 use Friendica\Core\Config;
-use Friendica\Core\Worker;
 use Friendica\Core\Update;
-use Friendica\Util\LoggerFactory;
+use Friendica\Core\Worker;
+use Friendica\Factory;
+use Friendica\Util\BasePath;
 
 // Get options
 $shortopts = 'sn';
@@ -29,12 +31,15 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-$logger = LoggerFactory::create('worker');
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
+$configLoader = new Config\ConfigCacheLoader($basedir);
+$config = Factory\ConfigFactory::createCache($configLoader);
+$logger = Factory\LoggerFactory::create('worker', $config);
 
-$a = new App(dirname(__DIR__), $logger);
+$a = new App($config, $logger);
 
 // Check the database structure and possibly fixes it
-Update::check(true);
+Update::check($a->getBasePath(), true);
 
 // Quit when in maintenance
 if (!$a->getMode()->has(App\Mode::MAINTENANCEDISABLED)) {
index 7dc99bbe88c3621e72babf21a08823088ad08694..318798e324c3fd693313654feb8da3c7496d6e82 100644 (file)
--- a/boot.php
+++ b/boot.php
 
 use Friendica\App;
 use Friendica\BaseObject;
-use Friendica\Core\Addon;
-use Friendica\Core\Cache;
 use Friendica\Core\Config;
-use Friendica\Core\L10n;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
-use Friendica\Core\Update;
-use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
-use Friendica\Model\Conversation;
+use Friendica\Util\BasePath;
 use Friendica\Util\DateTimeFormat;
 
 define('FRIENDICA_PLATFORM',     'Friendica');
@@ -640,18 +635,18 @@ function get_temppath()
 
        $temppath = Config::get("system", "temppath");
 
-       if (($temppath != "") && App::isDirectoryUsable($temppath)) {
+       if (($temppath != "") && System::isDirectoryUsable($temppath)) {
                // We have a temp path and it is usable
-               return App::getRealPath($temppath);
+               return BasePath::getRealPath($temppath);
        }
 
        // We don't have a working preconfigured temp path, so we take the system path.
        $temppath = sys_get_temp_dir();
 
        // Check if it is usable
-       if (($temppath != "") && App::isDirectoryUsable($temppath)) {
+       if (($temppath != "") && System::isDirectoryUsable($temppath)) {
                // Always store the real path, not the path through symlinks
-               $temppath = App::getRealPath($temppath);
+               $temppath = BasePath::getRealPath($temppath);
 
                // To avoid any interferences with other systems we create our own directory
                $new_temppath = $temppath . "/" . $a->getHostName();
@@ -660,7 +655,7 @@ function get_temppath()
                        mkdir($new_temppath);
                }
 
-               if (App::isDirectoryUsable($new_temppath)) {
+               if (System::isDirectoryUsable($new_temppath)) {
                        // The new path is usable, we are happy
                        Config::set("system", "temppath", $new_temppath);
                        return $new_temppath;
@@ -742,8 +737,8 @@ function get_itemcachepath()
        }
 
        $itemcache = Config::get('system', 'itemcache');
-       if (($itemcache != "") && App::isDirectoryUsable($itemcache)) {
-               return App::getRealPath($itemcache);
+       if (($itemcache != "") && System::isDirectoryUsable($itemcache)) {
+               return BasePath::getRealPath($itemcache);
        }
 
        $temppath = get_temppath();
@@ -754,7 +749,7 @@ function get_itemcachepath()
                        mkdir($itemcache);
                }
 
-               if (App::isDirectoryUsable($itemcache)) {
+               if (System::isDirectoryUsable($itemcache)) {
                        Config::set("system", "itemcache", $itemcache);
                        return $itemcache;
                }
@@ -770,7 +765,7 @@ function get_itemcachepath()
 function get_spoolpath()
 {
        $spoolpath = Config::get('system', 'spoolpath');
-       if (($spoolpath != "") && App::isDirectoryUsable($spoolpath)) {
+       if (($spoolpath != "") && System::isDirectoryUsable($spoolpath)) {
                // We have a spool path and it is usable
                return $spoolpath;
        }
@@ -785,7 +780,7 @@ function get_spoolpath()
                        mkdir($spoolpath);
                }
 
-               if (App::isDirectoryUsable($spoolpath)) {
+               if (System::isDirectoryUsable($spoolpath)) {
                        // The new path is usable, we are happy
                        Config::set("system", "spoolpath", $spoolpath);
                        return $spoolpath;
index dcacce811efbe94ca69b2851e1b824bda90781e3..fdc54b0bde80586f483a63802fae68b8eefbc6e3 100644 (file)
@@ -34,7 +34,7 @@
 use Friendica\Database\DBA;
 
 if (!defined('DB_UPDATE_VERSION')) {
-       define('DB_UPDATE_VERSION', 1300);
+       define('DB_UPDATE_VERSION', 1301);
 }
 
 return [
@@ -1376,12 +1376,12 @@ return [
                ],
                "indexes" => [
                        "PRIMARY" => ["id"],
-                       "pid" => ["pid"],
-                       "parameter" => ["parameter(64)"],
-                       "priority_created_next_try" => ["priority", "created", "next_try"],
+                       "done_parameter" => ["done", "parameter(64)"],
+                       "done_pid" => ["done", "pid"],
+                       "done_priority_created_next_try" => ["done", "priority", "created", "next_try"],
                        "done_priority_executed_next_try" => ["done", "priority", "executed", "next_try"],
-                       "done_executed_next_try" => ["done", "executed", "next_try"],
                        "done_priority_next_try" => ["done", "priority", "next_try"],
+                       "done_executed_next_try" => ["done", "executed", "next_try"],
                        "done_next_try" => ["done", "next_try"]
                ]
        ],
index f16bd664cf99a37d0b42bf31cdbd7e2f670bf81a..18859ee103f9439bb7cb3bca7d40bbadfabb708f 100644 (file)
@@ -393,6 +393,10 @@ return [
                // Number of worker tasks that are fetched in a single query.
                'worker_fetch_limit' => 1,
 
+               // worker_jpm (Boolean)
+               // If enabled, it prints out the jobs per minute.
+               'worker_jpm' => false,
+
                // worker_load_exponent (Integer)
                // Default 3, which allows only 25% of the maximum worker queues when server load reaches around 37% of maximum load.
                // For a linear response where 25% of worker queues are allowed at 75% of maximum load, set this to 1.
@@ -421,9 +425,13 @@ return [
                // Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes.
                'lockpath' => '',
        ],
-    'debug' => [
-        // ap_inbox_log (Boolean)
-        // Logs every call to /inbox as a JSON file in Friendica's temporary directory
-        'ap_inbox_log' => false,
-    ]
+       'debug' => [
+               // ap_inbox_log (Boolean)
+               // Logs every call to /inbox as a JSON file in Friendica's temporary directory
+               'ap_inbox_log' => false,
+
+               // total_ap_delivery (Boolean)
+               // Deliver via AP to every possible receiver and we suppress the delivery to these contacts with other protocols
+               'total_ap_delivery' => false,
+       ]
 ];
index a187331dd645cb3f34ddec3349e312fbafd5c8fd..7eae371c285a9dca8c90d639e315c60569d71081 100644 (file)
@@ -142,7 +142,7 @@ $a->config['register_policy'] = REGISTER_CLOSED;
 </pre></td>
                     <td><pre>
 'config' => [
-    'register_policty' => REGISTER_CLOSED,
+    'register_policy' => \Friendica\Module\Register::CLOSED,
 ],
 </pre></td>
         </tr>
@@ -242,7 +242,7 @@ register_policty = REGISTER_CLOSED
 </pre></td>
                                <td><pre>
 'config' => [
-    'register_policty' => REGISTER_CLOSED,
+    'register_policy' => \Friendica\Module\Register::CLOSED,
 ],
 </pre></td>
         </tr>
index 6eb3a5c4404250a13f55368d80bd28a1e3e74aea..ed25e580a2810176b01c2f20a9f8c4d5ec6218c6 100644 (file)
@@ -110,8 +110,9 @@ Two storage backends are avaiable with Friendica:
 - **Filesystem** : Data is stored as file on the filesystem.
 
 More storage backends can be avaiable from third-party addons.
+If you use those, please refer to the documentation of those addons for further information.
 
-Default value is 'None': it's the legacy way used to store data directly in database.
+Default value is 'Database (legacy)': it's the legacy way used to store data directly in database.
 
 Existing data can be moved to the current active backend using the ['storage move' console command](help/tools)
 
index d03fc4b9de80645406ffe3a62d36c3f977e9b158..1234a3d157b125223c33a645aad02b23ff9e619f 100644 (file)
@@ -12,7 +12,7 @@ Die zweite Zahl steht für die Anzahl der Aufgaben, die die Worker noch vor sich
 Die Worker arbeiten Hintergrundprozesse ab.
 Die Aufgaben der Worker sind priorisiert und werden anhand dieser Prioritäten abgearbeitet.
 
-Desweiteren findest du eine Übersicht über die Accounts auf dem Friendica Knoten, die unter dem Punkt "Nutzer" moderiert werden können.
+Des weiteren findest du eine Übersicht über die Accounts auf dem Friendica Knoten, die unter dem Punkt "Nutzer" moderiert werden können.
 Sowie eine Liste der derzeit aktivierten Addons.
 Diese Liste ist verlinkt, so dass du schnellen Zugriff auf die Informationsseiten der einzelnen Addons hast.
 Abschließend findest du auf der Startseite des Admin Panels die installierte Version von Friendica.
@@ -47,7 +47,7 @@ Mehr Informationen zum Übersetzungsprozess von Friendica findest du [auf dieser
 
 Hier kann das Theme bestimmt werden, welches standardmäßig zum Anzeigen der Seite verwendet werden soll.
 Nutzer können in ihren Einstellungen andere Themes wählen.
-Derzeit ist das "duepunto zero" Theme das vorausgewählte Theme.
+Derzeit ist das "vier" Theme das vorausgewählte Theme.
 
 Für mobile Geräte kannst du ein spezielles Theme wählen, wenn das Standardtheme ungeeignet für mobile Geräte sein sollte.
 Das `vier` Theme z.B. unterstützt kleine Anzeigen und benötigt kein zusätzliches mobiles Theme.
@@ -92,6 +92,32 @@ Standardmäßig ist hier "false" gesetzt.
 
 ### Datei hochladen
 
+#### Datenspeicher Backend
+
+Legt das Datenspeicher Backend fest, mit dem Friendica hoch geladene Daten speichert.
+Zwei Speicher Backends sind standardmäßig bei Friendica verfügbar:
+
+- **Database** : Die Daten werden in einer speziellen Tabelle in der Datenbank (`storage`) gespeichert.
+- **Filesystem** : Die Daten werden als Dateien im Dateisystem gespeichert.
+
+Weitere Speicher Backends können als Addons von Drittanbietern verfügbar sein.
+Falls ein solches verwendet wird, sei an dieser Stelle nur auf deren Dokumentation für weitere Informationen verwiesen.
+
+Die Grundeinstellung ist 'Datenbank (legacy)': Dies ist die alte Methode von Friendica Daten direkt in der Datenbank abzulegen.
+
+Bestehende Daten können zum aktuell ausgewählten Backend verschoben werden.
+Hierfür kann der ['storage move'](help/tools) Befehl der Friendica Konsole verwendet werden.
+
+Sollte das ausgewählte Speicher Backand zusätzliche Konfigurationsparameter besitzen, werden nach der Auswahl des Backends hier weitere Felder angezeigt.
+
+##### Dateipfad zum Speicher
+
+Der Basispfad unter dem das Filesystem Datenspeicher Backend die Daten speichern soll.
+
+Um zu verhindern, dass Daten unter Umgehung der Privatsphären-Einstellungen herunter geladen werden, sollte dieser Pfad außerhalb der Verzeichnisstruktur des Webservers liegen.
+
+Die Grundeinstellung ist `storage`, das ist das `storage` Unterverzeichnis innerhalb des Friendica Verzeichnisses.
+
 #### Maximale Bildgröße
 
 Maximale Bild-Dateigröße in Byte. Standardmäßig ist 0 gesetzt, was bedeutet, dass kein Limit gesetzt ist.
index c2dd31bcf24289362cb4f8e223617b5275c84be1..7e7396785f5993c7b17f7a1e74870b7be5b4afcd 100644 (file)
--- a/index.php
+++ b/index.php
@@ -5,7 +5,9 @@
  */
 
 use Friendica\App;
-use Friendica\Util\LoggerFactory;
+use Friendica\Core\Config;
+use Friendica\Factory;
+use Friendica\Util\BasePath;
 
 if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
        die('Vendor path not found. Please execute "bin/composer.phar --no-dev install" on the command line in the web root.');
@@ -13,10 +15,13 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
 
 require __DIR__ . '/vendor/autoload.php';
 
-$logger = LoggerFactory::create('index');
+$basedir = BasePath::create(__DIR__, $_SERVER);
+$configLoader = new Config\ConfigCacheLoader($basedir);
+$config = Factory\ConfigFactory::createCache($configLoader);
+$logger = Factory\LoggerFactory::create('index', $config);
 
 // We assume that the index.php is called by a frontend process
 // The value is set to "true" by default in App
-$a = new App(__DIR__, $logger, false);
+$a = new App($config, $logger, false);
 
 $a->runFrontend();
index 684c31af11e808bddc47214fe8c95a687886e2f9..39f75021889c0eba414af9094bb93df9b5281942 100644 (file)
@@ -15,11 +15,11 @@ use Friendica\Core\Config;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
+use Friendica\Core\StorageManager;
 use Friendica\Core\System;
 use Friendica\Core\Theme;
 use Friendica\Core\Update;
 use Friendica\Core\Worker;
-use Friendica\Core\StorageManager;
 use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
 use Friendica\Model\Contact;
@@ -30,6 +30,7 @@ use Friendica\Module;
 use Friendica\Module\Login;
 use Friendica\Module\Tos;
 use Friendica\Util\Arrays;
+use Friendica\Util\BasePath;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Network;
 use Friendica\Util\Strings;
@@ -915,7 +916,7 @@ function admin_page_summary(App $a)
        }
 
        if (Config::get('system', 'dbupdate', DBStructure::UPDATE_NOT_CHECKED) == DBStructure::UPDATE_NOT_CHECKED) {
-               DBStructure::update(false, true);
+               DBStructure::update($a->getBasePath(), false, true);
        }
        if (Config::get('system', 'dbupdate') == DBStructure::UPDATE_FAILED) {
                $showwarning = true;
@@ -936,6 +937,10 @@ function admin_page_summary(App $a)
                $showwarning = true;
                $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->getBaseURL() . '/help/Config');
        }
+       if (file_exists('config/local.ini.php')) {
+               $showwarning = true;
+               $warningtext[] = L10n::t('Friendica\'s configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>config/local.ini.php</code>. See <a href="%s">the Config help page</a> for help with the transition.', $a->getBaseURL() . '/help/Config');
+       }
 
        // Check server vitality
        if (!admin_page_server_vital()) {
@@ -1371,7 +1376,7 @@ function admin_page_site_post(App $a)
        Config::set('system', 'dbclean-expire-unclaimed', $dbclean_unclaimed);
 
        if ($itemcache != '') {
-               $itemcache = App::getRealPath($itemcache);
+               $itemcache = BasePath::getRealPath($itemcache);
        }
 
        Config::set('system', 'itemcache', $itemcache);
@@ -1379,13 +1384,13 @@ function admin_page_site_post(App $a)
        Config::set('system', 'max_comments', $max_comments);
 
        if ($temppath != '') {
-               $temppath = App::getRealPath($temppath);
+               $temppath = BasePath::getRealPath($temppath);
        }
 
        Config::set('system', 'temppath', $temppath);
 
        if ($basepath != '') {
-               $basepath = App::getRealPath($basepath);
+               $basepath = BasePath::getRealPath($basepath);
        }
 
        Config::set('system', 'basepath'         , $basepath);
@@ -1547,7 +1552,7 @@ function admin_page_site(App $a)
        $storage_current_backend = StorageManager::getBackend();
 
        $storage_backends_choices = [
-               '' => L10n::t('None')
+               '' => L10n::t('Database (legacy)')
        ];
        foreach($storage_backends as $name=>$class) {
                $storage_backends_choices[$class] = $name;
@@ -1603,7 +1608,7 @@ function admin_page_site(App $a)
                '$hide_help'        => ['hide_help', L10n::t("Hide help entry from navigation menu"), Config::get('system', 'hide_help'), L10n::t("Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly.")],
                '$singleuser'       => ['singleuser', L10n::t("Single user instance"), Config::get('system', 'singleuser', '---'), L10n::t("Make this instance multi-user or single-user for the named user"), $user_names],
 
-               '$storagebackend'   => ['storagebackend', L10n::t("File storage backend"), $storage_current_backend, L10n::t('Backend used to store uploaded files data'), $storage_backends_choices],
+               '$storagebackend'   => ['storagebackend', L10n::t("File storage backend"), $storage_current_backend, L10n::t('The backend used to store uploaded data. If you change the storage backend, you can manually move the existing files. If you do not do so, the files uploaded before the change will still be available at the old backend. Please see <a href="/help/Settings#1_2_3_1">the settings documentation</a> for more information about the choices and the moving procedure.'), $storage_backends_choices],
                '$storageform'      => $storage_form,
                '$maximagesize'     => ['maximagesize', L10n::t("Maximum image size"), Config::get('system', 'maximagesize'), L10n::t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")],
                '$maximagelength'   => ['maximagelength', L10n::t("Maximum image length"), Config::get('system', 'max_image_length'), L10n::t("Maximum length in pixels of the longest side of uploaded images. Default is -1, which means no limits.")],
@@ -1720,7 +1725,7 @@ function admin_page_dbsync(App $a)
        }
 
        if (($a->argc > 2) && (intval($a->argv[2]) || ($a->argv[2] === 'check'))) {
-               $retval = DBStructure::update(false, true);
+               $retval = DBStructure::update($a->getBasePath(), false, true);
                if ($retval === '') {
                        $o .= L10n::t("Database structure update %s was successfully applied.", DB_UPDATE_VERSION) . "<br />";
                        Config::set('database', 'last_successful_update', DB_UPDATE_VERSION);
index 64c9557767d278d7a6122019dbd6016f4c3087d0..51bbf7c8a4b7ef8c6382dc21aa1c2dbfaee5c59c 100644 (file)
@@ -72,6 +72,21 @@ function babel_content()
                                        'title' => L10n::t('BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode'),
                                        'content' => visible_whitespace($bbcode4)
                                ];
+
+                               $item = [
+                                       'body' => $bbcode,
+                                       'tag' => '',
+                               ];
+
+                               \Friendica\Model\Item::setHashtags($item);
+                               $results[] = [
+                                       'title' => L10n::t('Item Body'),
+                                       'content' => visible_whitespace($item['body'])
+                               ];
+                               $results[] = [
+                                       'title' => L10n::t('Item Tags'),
+                                       'content' => $item['tag']
+                               ];
                                break;
                        case 'markdown':
                                $markdown = trim($_REQUEST['text']);
@@ -83,7 +98,7 @@ function babel_content()
                                $html = Text\Markdown::convert($markdown);
                                $results[] = [
                                        'title' => L10n::t('Markdown::convert (raw HTML)'),
-                                       'content' => htmlspecialchars($html)
+                                       'content' => visible_whitespace(htmlspecialchars($html))
                                ];
 
                                $results[] = [
index d10deb2e88452ce94cbdf4704b35f98053a789ea..80d5f34cc814ee0da16d24cd9d7c31a216079ff4 100644 (file)
@@ -29,7 +29,7 @@ function friendica_init(App $a)
                }
 
                $sql_extra = '';
-               if (!empty($a->config['admin_nickname'])) {
+               if (Config::get('config', 'admin_nickname') !== null) {
                        $sql_extra = sprintf(" AND `nickname` = '%s' ", DBA::escape(Config::get('config', 'admin_nickname')));
                }
                if (!empty(Config::get('config', 'admin_email'))) {
@@ -48,8 +48,9 @@ function friendica_init(App $a)
 
                Config::load('feature_lock');
                $locked_features = [];
-               if (!empty($a->config['feature_lock'])) {
-                       foreach ($a->config['feature_lock'] as $k => $v) {
+               $featureLock = Config::get('config', 'feature_lock');
+               if (isset($featureLock)) {
+                       foreach ($featureLock as $k => $v) {
                                if ($k === 'config_loaded') {
                                        continue;
                                }
diff --git a/mod/profile.php b/mod/profile.php
deleted file mode 100644 (file)
index f93e459..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-<?php
-/**
- * @file mod/profile.php
- */
-
-use Friendica\App;
-use Friendica\Content\Nav;
-use Friendica\Content\Pager;
-use Friendica\Content\Widget;
-use Friendica\Core\ACL;
-use Friendica\Core\Config;
-use Friendica\Core\Hook;
-use Friendica\Core\L10n;
-use Friendica\Core\Logger;
-use Friendica\Core\PConfig;
-use Friendica\Core\System;
-use Friendica\Database\DBA;
-use Friendica\Model\Contact;
-use Friendica\Model\Group;
-use Friendica\Model\Item;
-use Friendica\Model\Profile;
-use Friendica\Model\User;
-use Friendica\Module\Login;
-use Friendica\Protocol\ActivityPub;
-use Friendica\Protocol\DFRN;
-use Friendica\Util\DateTimeFormat;
-use Friendica\Util\Security;
-use Friendica\Util\Strings;
-use Friendica\Util\XML;
-
-function profile_init(App $a)
-{
-       if (empty($a->page['aside'])) {
-               $a->page['aside'] = '';
-       }
-
-       if ($a->argc < 2) {
-               System::httpExit(400);
-       }
-
-       $which = filter_var($a->argv[1], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_BACKTICK);
-
-       $profile = 0;
-       if (local_user() && $a->argc > 2 && $a->argv[2] === 'view') {
-               $which = $a->user['nickname'];
-               $profile = filter_var($a->argv[1], FILTER_SANITIZE_NUMBER_INT);
-       } else {
-               DFRN::autoRedir($a, $which);
-       }
-
-       if (ActivityPub::isRequest()) {
-               $user = DBA::selectFirst('user', ['uid'], ['nickname' => $which]);
-               if (DBA::isResult($user)) {
-                       $data = ActivityPub\Transmitter::getProfile($user['uid']);
-                       header('Content-Type: application/activity+json');
-                       echo json_encode($data);
-                       exit();
-               }
-       }
-
-       Profile::load($a, $which, $profile);
-
-       $blocked   = !local_user() && !remote_user() && Config::get('system', 'block_public');
-       $userblock = !local_user() && !remote_user() && $a->profile['hidewall'];
-
-       if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) {
-               $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
-       }
-
-       if (!empty($a->profile['openidserver'])) {
-               $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n";
-       }
-
-       if (!empty($a->profile['openid'])) {
-               $delegate = strstr($a->profile['openid'], '://') ? $a->profile['openid'] : 'https://' . $a->profile['openid'];
-               $a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
-       }
-
-       // site block
-       if (!$blocked && !$userblock) {
-               $keywords = str_replace(['#', ',', ' ', ',,'], ['', ' ', ',', ','], defaults($a->profile, 'pub_keywords', ''));
-               if (strlen($keywords)) {
-                       $a->page['htmlhead'] .= '<meta name="keywords" content="' . $keywords . '" />' . "\r\n";
-               }
-       }
-
-       $a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($a->profile['net-publish'] ? 'true' : 'false') . '" />' . "\r\n";
-       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/dfrn_poll/' . $which . '" title="DFRN: ' . L10n::t('%s\'s timeline', $a->profile['username']) . '"/>' . "\r\n";
-       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . $which . '/" title="' . L10n::t('%s\'s posts', $a->profile['username']) . '"/>' . "\r\n";
-       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . $which . '/comments" title="' . L10n::t('%s\'s comments', $a->profile['username']) . '"/>' . "\r\n";
-       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . $which . '/activity" title="' . L10n::t('%s\'s timeline', $a->profile['username']) . '"/>' . "\r\n";
-       $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->getHostName() . ($a->getURLPath() ? '/' . $a->getURLPath() : ''));
-       $a->page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . System::baseUrl() . '/xrd/?uri=' . $uri . '" />' . "\r\n";
-       header('Link: <' . System::baseUrl() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
-
-       $dfrn_pages = ['request', 'confirm', 'notify', 'poll'];
-       foreach ($dfrn_pages as $dfrn) {
-               $a->page['htmlhead'] .= "<link rel=\"dfrn-{$dfrn}\" href=\"" . System::baseUrl() . "/dfrn_{$dfrn}/{$which}\" />\r\n";
-       }
-       $a->page['htmlhead'] .= '<link rel="dfrn-poco" href="' . System::baseUrl() . "/poco/{$which}\" />\r\n";
-}
-
-function profile_content(App $a, $update = 0)
-{
-       $category = $datequery = $datequery2 = '';
-
-       if ($a->argc > 2) {
-               for ($x = 2; $x < $a->argc; $x ++) {
-                       if (is_a_date_arg($a->argv[$x])) {
-                               if ($datequery) {
-                                       $datequery2 = Strings::escapeHtml($a->argv[$x]);
-                               } else {
-                                       $datequery = Strings::escapeHtml($a->argv[$x]);
-                               }
-                       } else {
-                               $category = $a->argv[$x];
-                       }
-               }
-       }
-
-       if (empty($category)) {
-               $category = defaults($_GET, 'category', '');
-       }
-
-       $hashtags = defaults($_GET, 'tag', '');
-
-       if (Config::get('system', 'block_public') && !local_user() && !remote_user()) {
-               return Login::form();
-       }
-
-       $groups = [];
-       $remote_cid = null;
-
-       $o = '';
-
-       if ($update) {
-               // Ensure we've got a profile owner if updating.
-               $a->profile['profile_uid'] = $update;
-       } elseif ($a->profile['profile_uid'] == local_user()) {
-               Nav::setSelected('home');
-       }
-
-       $remote_contact = Contact::isFollower(remote_user(), $a->profile['profile_uid']);
-       $is_owner = local_user() == $a->profile['profile_uid'];
-       $last_updated_key = "profile:" . $a->profile['profile_uid'] . ":" . local_user() . ":" . remote_user();
-
-       if ($remote_contact) {
-               $cdata = Contact::getPublicAndUserContacID(remote_user(), $a->profile['profile_uid']);
-               if (!empty($cdata['user'])) {
-                       $groups = Group::getIdsByContactId($cdata['user']);
-                       $remote_cid = $cdata['user'];
-               }
-       }
-
-       if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact) {
-               notice(L10n::t('Access to this profile has been restricted.') . EOL);
-               return;
-       }
-
-       if (!$update) {
-               $tab = false;
-               if (!empty($_GET['tab'])) {
-                       $tab = Strings::escapeTags(trim($_GET['tab']));
-               }
-
-               $o .= Profile::getTabs($a, $is_owner, $a->profile['nickname']);
-
-               if ($tab === 'profile') {
-                       $o .= Profile::getAdvanced($a);
-                       Hook::callAll('profile_advanced', $o);
-                       return $o;
-               }
-
-               $o .= Widget::commonFriendsVisitor($a->profile['profile_uid']);
-
-               $commpage = $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
-               $commvisitor = $commpage && $remote_contact;
-
-               $a->page['aside'] .= posted_date_widget(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], $a->profile['profile_uid'], true);
-               $a->page['aside'] .= Widget::categories(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], (!empty($category) ? XML::escape($category) : ''));
-               $a->page['aside'] .= Widget::tagCloud();
-
-               if (Security::canWriteToUserWall($a->profile['profile_uid'])) {
-                       $x = [
-                               'is_owner' => $is_owner,
-                               'allow_location' => ($is_owner || $commvisitor) && $a->profile['allow_location'],
-                               'default_location' => $is_owner ? $a->user['default-location'] : '',
-                               'nickname' => $a->profile['nickname'],
-                               'lockstate' => is_array($a->user)
-                                       && (strlen($a->user['allow_cid'])
-                                               || strlen($a->user['allow_gid'])
-                                               || strlen($a->user['deny_cid'])
-                                               || strlen($a->user['deny_gid'])
-                                       ) ? 'lock' : 'unlock',
-                               'acl' => $is_owner ? ACL::getFullSelectorHTML($a->user, true) : '',
-                               'bang' => '',
-                               'visitor' => $is_owner || $commvisitor ? 'block' : 'none',
-                               'profile_uid' => $a->profile['profile_uid'],
-                       ];
-
-                       $o .= status_editor($a, $x);
-               }
-       }
-
-       // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
-       $sql_extra = Item::getPermissionsSQLByUserId($a->profile['profile_uid'], $remote_contact, $groups, $remote_cid);
-       $sql_extra2 = '';
-
-       if ($update) {
-               $last_updated = (defaults($_SESSION['last_updated'], $last_updated_key, 0));
-
-               // If the page user is the owner of the page we should query for unseen
-               // items. Otherwise use a timestamp of the last succesful update request.
-               if ($is_owner || !$last_updated) {
-                       $sql_extra4 = " AND `item`.`unseen`";
-               } else {
-                       $gmupdate = gmdate(DateTimeFormat::MYSQL, $last_updated);
-                       $sql_extra4 = " AND `item`.`received` > '" . $gmupdate . "'";
-               }
-
-               $items = q("SELECT DISTINCT(`parent-uri`) AS `uri`, `item`.`created`
-                       FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
-                       AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
-                       WHERE `item`.`uid` = %d AND `item`.`visible` AND
-                       (NOT `item`.`deleted` OR `item`.`gravity` = %d)
-                       AND NOT `item`.`moderated` AND `item`.`wall`
-                       $sql_extra4
-                       $sql_extra
-                       ORDER BY `item`.`created` DESC",
-                       intval($a->profile['profile_uid']), intval(GRAVITY_ACTIVITY)
-               );
-
-               if (!DBA::isResult($items)) {
-                       return '';
-               }
-
-               $pager = new Pager($a->query_string);
-       } else {
-               $sql_post_table = "";
-
-               if (!empty($category)) {
-                       $sql_post_table = sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
-                               DBA::escape(Strings::protectSprintf($category)), intval(TERM_OBJ_POST), intval(TERM_CATEGORY), intval($a->profile['profile_uid']));
-               }
-
-               if (!empty($hashtags)) {
-                       $sql_post_table .= sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",
-                               DBA::escape(Strings::protectSprintf($hashtags)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval($a->profile['profile_uid']));
-               }
-
-               if (!empty($datequery)) {
-                       $sql_extra2 .= Strings::protectSprintf(sprintf(" AND `thread`.`created` <= '%s' ", DBA::escape(DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get()))));
-               }
-               if (!empty($datequery2)) {
-                       $sql_extra2 .= Strings::protectSprintf(sprintf(" AND `thread`.`created` >= '%s' ", DBA::escape(DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get()))));
-               }
-
-               // Does the profile page belong to a forum?
-               // If not then we can improve the performance with an additional condition
-               $condition = ['uid' => $a->profile['profile_uid'], 'page-flags' => [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]];
-               if (!DBA::exists('user', $condition)) {
-                       $sql_extra3 = sprintf(" AND `thread`.`contact-id` = %d ", intval(intval($a->profile['contact_id'])));
-               } else {
-                       $sql_extra3 = "";
-               }
-
-               //  check if we serve a mobile device and get the user settings
-               //  accordingly
-               if ($a->is_mobile) {
-                       $itemspage_network = PConfig::get(local_user(), 'system', 'itemspage_mobile_network', 10);
-               } else {
-                       $itemspage_network = PConfig::get(local_user(), 'system', 'itemspage_network', 20);
-               }
-
-               //  now that we have the user settings, see if the theme forces
-               //  a maximum item number which is lower then the user choice
-               if (($a->force_max_items > 0) && ($a->force_max_items < $itemspage_network)) {
-                       $itemspage_network = $a->force_max_items;
-               }
-
-               $pager = new Pager($a->query_string, $itemspage_network);
-
-               $pager_sql = sprintf(" LIMIT %d, %d ", $pager->getStart(), $pager->getItemsPerPage());
-
-               $items = q("SELECT `item`.`uri`
-                       FROM `thread`
-                       STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
-                       $sql_post_table
-                       STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
-                               AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
-                       WHERE `thread`.`uid` = %d AND `thread`.`visible`
-                               AND NOT `thread`.`deleted`
-                               AND NOT `thread`.`moderated`
-                               AND `thread`.`wall`
-                               $sql_extra3 $sql_extra $sql_extra2
-                       ORDER BY `thread`.`created` DESC $pager_sql",
-                       intval($a->profile['profile_uid'])
-               );
-       }
-
-       // Set a time stamp for this page. We will make use of it when we
-       // search for new items (update routine)
-       $_SESSION['last_updated'][$last_updated_key] = time();
-
-       if ($is_owner && !$update && !Config::get('theme', 'hide_eventlist')) {
-               $o .= Profile::getBirthdays();
-               $o .= Profile::getEventsReminderHTML();
-       }
-
-       if ($is_owner) {
-               $unseen = Item::exists(['wall' => true, 'unseen' => true, 'uid' => local_user()]);
-               if ($unseen) {
-                       Item::update(['unseen' => false], ['wall' => true, 'unseen' => true, 'uid' => local_user()]);
-               }
-       }
-
-       $o .= conversation($a, $items, $pager, 'profile', $update, false, 'created', $a->profile['profile_uid']);
-
-       if (!$update) {
-               $o .= $pager->renderMinimal(count($items));
-       }
-
-       return $o;
-}
index bc6e511896f5935e137a5f57c32110988eec1a17..72056703958ef0306251773c101d52c5371aea5c 100644 (file)
@@ -8,8 +8,7 @@
 use Friendica\App;
 use Friendica\Core\L10n;
 use Friendica\Core\PConfig;
-
-require_once 'mod/profile.php';
+use Friendica\Module\Profile;
 
 function update_profile_content(App $a) {
 
@@ -29,7 +28,7 @@ function update_profile_content(App $a) {
         * on the client side and then swap the image back.
         */
 
-       $text = profile_content($a, $profile_uid);
+       $text = Profile::content($profile_uid);
 
        if (PConfig::get(local_user(), "system", "bandwidth_saver")) {
                $replace = "<br />".L10n::t("[Embedded content - reload page to view]")."<br />";
index b910765e12f02c35719523d9c9393c6a2cfd86f6..8068a1530bad71a2e3c462e48c710f2751d99b68 100644 (file)
@@ -8,7 +8,10 @@ use Detection\MobileDetect;
 use DOMDocument;
 use DOMXPath;
 use Exception;
+use Friendica\Core\Config\ConfigCache;
+use Friendica\Core\Config\ConfigCacheLoader;
 use Friendica\Database\DBA;
+use Friendica\Factory\ConfigFactory;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 use Psr\Log\LoggerInterface;
 
@@ -30,7 +33,6 @@ class App
        public $module_loaded = false;
        public $module_class = null;
        public $query_string = '';
-       public $config = [];
        public $page = [];
        public $profile;
        public $profile_uid;
@@ -112,6 +114,31 @@ class App
         */
        private $logger;
 
+       /**
+        * @var ConfigCache The cached config
+        */
+       private $config;
+
+       /**
+        * Returns the current config cache of this node
+        *
+        * @return ConfigCache
+        */
+       public function getConfig()
+       {
+               return $this->config;
+       }
+
+       /**
+        * The basepath of this app
+        *
+        * @return string
+        */
+       public function getBasePath()
+       {
+               return $this->basePath;
+       }
+
        /**
         * Register a stylesheet file path to be included in the <head> tag of every page.
         * Inclusion is done in App->initHead().
@@ -124,7 +151,7 @@ class App
         */
        public function registerStylesheet($path)
        {
-               $url = str_replace($this->getBasePath() . DIRECTORY_SEPARATOR, '', $path);
+               $url = str_replace($this->basePath . DIRECTORY_SEPARATOR, '', $path);
 
                $this->stylesheets[] = trim($url, '/');
        }
@@ -141,7 +168,7 @@ class App
         */
        public function registerFooterScript($path)
        {
-               $url = str_replace($this->getBasePath() . DIRECTORY_SEPARATOR, '', $path);
+               $url = str_replace($this->basePath . DIRECTORY_SEPARATOR, '', $path);
 
                $this->footerScripts[] = trim($url, '/');
        }
@@ -154,23 +181,25 @@ class App
        /**
         * @brief App constructor.
         *
-        * @param string           $basePath  Path to the app base folder
+        * @param ConfigCache      $config    The Cached Config
         * @param LoggerInterface  $logger    Logger of this application
         * @param bool             $isBackend Whether it is used for backend or frontend (Default true=backend)
         *
         * @throws Exception if the Basepath is not usable
         */
-       public function __construct($basePath, LoggerInterface $logger, $isBackend = true)
+       public function __construct(ConfigCache $config, LoggerInterface $logger, $isBackend = true)
        {
-               $this->logger = $logger;
+               $this->config   = $config;
+               $this->logger   = $logger;
+               $this->basePath = $this->config->get('system', 'basepath');
 
-               if (!static::isDirectoryUsable($basePath, false)) {
-                       throw new Exception('Basepath ' . $basePath . ' isn\'t usable.');
+               if (!Core\System::isDirectoryUsable($this->basePath, false)) {
+                       throw new Exception('Basepath ' . $this->basePath . ' isn\'t usable.');
                }
+               $this->basePath = rtrim($this->basePath, DIRECTORY_SEPARATOR);
 
                BaseObject::setApp($this);
 
-               $this->basePath = rtrim($basePath, DIRECTORY_SEPARATOR);
                $this->checkBackend($isBackend);
                $this->checkFriendicaApp();
 
@@ -195,7 +224,7 @@ class App
                $this->callstack['rendering'] = [];
                $this->callstack['parser'] = [];
 
-               $this->mode = new App\Mode($basePath);
+               $this->mode = new App\Mode($this->basePath);
 
                $this->reload();
 
@@ -226,9 +255,9 @@ class App
 
                set_include_path(
                        get_include_path() . PATH_SEPARATOR
-                       . $this->getBasePath() . DIRECTORY_SEPARATOR . 'include' . PATH_SEPARATOR
-                       . $this->getBasePath() . DIRECTORY_SEPARATOR . 'library' . PATH_SEPARATOR
-                       . $this->getBasePath());
+                       . $this->basePath . DIRECTORY_SEPARATOR . 'include' . PATH_SEPARATOR
+                       . $this->basePath . DIRECTORY_SEPARATOR . 'library' . PATH_SEPARATOR
+                       . $this->basePath);
 
                if (!empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['QUERY_STRING'], 'pagename=') === 0) {
                        $this->query_string = substr($_SERVER['QUERY_STRING'], 9);
@@ -332,21 +361,32 @@ class App
         */
        public function reload()
        {
-               // The order of the following calls is important to ensure proper initialization
-               $this->loadConfigFiles();
+               Core\Config::init($this->config);
+               Core\PConfig::init($this->config);
 
                $this->loadDatabase();
 
-               $this->getMode()->determine($this->getBasePath());
+               $this->getMode()->determine($this->basePath);
 
                $this->determineURLPath();
 
-               Core\Config::load();
+               if ($this->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
+                       $adapterType = $this->config->get('system', 'config_adapter');
+                       $adapter = ConfigFactory::createConfig($adapterType, $this->config);
+                       Core\Config::setAdapter($adapter);
+                       $adapterP = ConfigFactory::createPConfig($adapterType, $this->config);
+                       Core\PConfig::setAdapter($adapterP);
+                       Core\Config::load();
+               }
+
+               // again because DB-config could change the config
+               $this->getMode()->determine($this->basePath);
 
                if ($this->getMode()->has(App\Mode::DBAVAILABLE)) {
                        Core\Hook::loadHooks();
-
-                       $this->loadAddonConfig();
+                       $loader = new ConfigCacheLoader($this->basePath);
+                       Core\Hook::callAll('load_config', $loader);
+                       $this->config->loadConfigArray($loader->loadCoreConfig('addon'), true);
                }
 
                $this->loadDefaultTimezone();
@@ -358,158 +398,6 @@ class App
                Core\Logger::setLogger($this->logger);
        }
 
-       /**
-        * Load the configuration files
-        *
-        * First loads the default value for all the configuration keys, then the legacy configuration files, then the
-        * expected local.config.php
-        */
-       private function loadConfigFiles()
-       {
-               $this->loadConfigFile($this->getBasePath() . '/config/defaults.config.php');
-               $this->loadConfigFile($this->getBasePath() . '/config/settings.config.php');
-
-               // Legacy .htconfig.php support
-               if (file_exists($this->getBasePath() . '/.htpreconfig.php')) {
-                       $a = $this;
-                       include $this->getBasePath() . '/.htpreconfig.php';
-               }
-
-               // Legacy .htconfig.php support
-               if (file_exists($this->getBasePath() . '/.htconfig.php')) {
-                       $a = $this;
-
-                       include $this->getBasePath() . '/.htconfig.php';
-
-                       $this->setConfigValue('database', 'hostname', $db_host);
-                       $this->setConfigValue('database', 'username', $db_user);
-                       $this->setConfigValue('database', 'password', $db_pass);
-                       $this->setConfigValue('database', 'database', $db_data);
-                       if (isset($a->config['system']['db_charset'])) {
-                               $this->setConfigValue('database', 'charset', $a->config['system']['db_charset']);
-                       }
-
-                       unset($db_host, $db_user, $db_pass, $db_data);
-
-                       if (isset($default_timezone)) {
-                               $this->setConfigValue('system', 'default_timezone', $default_timezone);
-                               unset($default_timezone);
-                       }
-
-                       if (isset($pidfile)) {
-                               $this->setConfigValue('system', 'pidfile', $pidfile);
-                               unset($pidfile);
-                       }
-
-                       if (isset($lang)) {
-                               $this->setConfigValue('system', 'language', $lang);
-                               unset($lang);
-                       }
-               }
-
-               if (file_exists($this->getBasePath() . '/config/local.config.php')) {
-                       $this->loadConfigFile($this->getBasePath() . '/config/local.config.php', true);
-               } elseif (file_exists($this->getBasePath() . '/config/local.ini.php')) {
-                       $this->loadINIConfigFile($this->getBasePath() . '/config/local.ini.php', true);
-               }
-       }
-
-       /**
-        * Tries to load the specified legacy configuration file into the App->config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
-        *
-        * @deprecated since version 2018.12
-        * @param string $filepath
-        * @param bool $overwrite Force value overwrite if the config key already exists
-        * @throws Exception
-        */
-       public function loadINIConfigFile($filepath, $overwrite = false)
-       {
-               if (!file_exists($filepath)) {
-                       throw new Exception('Error parsing non-existent INI config file ' . $filepath);
-               }
-
-               $contents = include($filepath);
-
-               $config = parse_ini_string($contents, true, INI_SCANNER_TYPED);
-
-               if ($config === false) {
-                       throw new Exception('Error parsing INI config file ' . $filepath);
-               }
-
-               $this->loadConfigArray($config, $overwrite);
-       }
-
-       /**
-        * Tries to load the specified configuration file into the App->config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
-        *
-        * The config format is PHP array and the template for configuration files is the following:
-        *
-        * <?php return [
-        *      'section' => [
-        *          'key' => 'value',
-        *      ],
-        * ];
-        *
-        * @param string $filepath
-        * @param bool $overwrite Force value overwrite if the config key already exists
-        * @throws Exception
-        */
-       public function loadConfigFile($filepath, $overwrite = false)
-       {
-               if (!file_exists($filepath)) {
-                       throw new Exception('Error loading non-existent config file ' . $filepath);
-               }
-
-               $config = include($filepath);
-
-               if (!is_array($config)) {
-                       throw new Exception('Error loading config file ' . $filepath);
-               }
-
-               $this->loadConfigArray($config, $overwrite);
-       }
-
-       /**
-        * Loads addons configuration files
-        *
-        * First loads all activated addons default configuration through the load_config hook, then load the local.config.php
-        * again to overwrite potential local addon configuration.
-        */
-       private function loadAddonConfig()
-       {
-               // Loads addons default config
-               Core\Hook::callAll('load_config');
-
-               // Load the local addon config file to overwritten default addon config values
-               if (file_exists($this->getBasePath() . '/config/addon.config.php')) {
-                       $this->loadConfigFile($this->getBasePath() . '/config/addon.config.php', true);
-               } elseif (file_exists($this->getBasePath() . '/config/addon.ini.php')) {
-                       $this->loadINIConfigFile($this->getBasePath() . '/config/addon.ini.php', true);
-               }
-       }
-
-       /**
-        * Tries to load the specified configuration array into the App->config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
-        *
-        * @param array $config
-        * @param bool  $overwrite Force value overwrite if the config key already exists
-        */
-       private function loadConfigArray(array $config, $overwrite = false)
-       {
-               foreach ($config as $category => $values) {
-                       foreach ($values as $key => $value) {
-                               if ($overwrite) {
-                                       $this->setConfigValue($category, $key, $value);
-                               } else {
-                                       $this->setDefaultConfigValue($category, $key, $value);
-                               }
-                       }
-               }
-       }
-
        /**
         * Loads the default timezone
         *
@@ -519,8 +407,8 @@ class App
         */
        private function loadDefaultTimezone()
        {
-               if ($this->getConfigValue('system', 'default_timezone')) {
-                       $this->timezone = $this->getConfigValue('system', 'default_timezone');
+               if ($this->config->get('system', 'default_timezone')) {
+                       $this->timezone = $this->config->get('system', 'default_timezone');
                } else {
                        global $default_timezone;
                        $this->timezone = !empty($default_timezone) ? $default_timezone : 'UTC';
@@ -546,7 +434,7 @@ class App
                $relative_script_path = defaults($_SERVER, 'SCRIPT_URL'         , $relative_script_path);
                $relative_script_path = defaults($_SERVER, 'REQUEST_URI'        , $relative_script_path);
 
-               $this->urlPath = $this->getConfigValue('system', 'urlpath');
+               $this->urlPath = $this->config->get('system', 'urlpath');
 
                /* $relative_script_path gives /relative/path/to/friendica/module/parameter
                 * QUERY_STRING gives pagename=module/parameter
@@ -574,11 +462,11 @@ class App
                        return;
                }
 
-               $db_host = $this->getConfigValue('database', 'hostname');
-               $db_user = $this->getConfigValue('database', 'username');
-               $db_pass = $this->getConfigValue('database', 'password');
-               $db_data = $this->getConfigValue('database', 'database');
-               $charset = $this->getConfigValue('database', 'charset');
+               $db_host = $this->config->get('database', 'hostname');
+               $db_user = $this->config->get('database', 'username');
+               $db_pass = $this->config->get('database', 'password');
+               $db_data = $this->config->get('database', 'database');
+               $charset = $this->config->get('database', 'charset');
 
                // Use environment variables for mysql if they are set beforehand
                if (!empty(getenv('MYSQL_HOST'))
@@ -601,9 +489,9 @@ class App
 
                $stamp1 = microtime(true);
 
-               if (DBA::connect($db_host, $db_user, $db_pass, $db_data, $charset)) {
+               if (DBA::connect($this->config, $db_host, $db_user, $db_pass, $db_data, $charset)) {
                        // Loads DB_UPDATE_VERSION constant
-                       Database\DBStructure::definition(false);
+                       Database\DBStructure::definition($this->basePath, false);
                }
 
                unset($db_host, $db_user, $db_pass, $db_data, $charset);
@@ -611,55 +499,6 @@ class App
                $this->saveTimestamp($stamp1, 'network');
        }
 
-       /**
-        * @brief Returns the base filesystem path of the App
-        *
-        * It first checks for the internal variable, then for DOCUMENT_ROOT and
-        * finally for PWD
-        *
-        * @return string
-        * @throws InternalServerErrorException
-        */
-       public function getBasePath()
-       {
-               $basepath = $this->basePath;
-
-               if (!$basepath) {
-                       $basepath = Core\Config::get('system', 'basepath');
-               }
-
-               if (!$basepath && !empty($_SERVER['DOCUMENT_ROOT'])) {
-                       $basepath = $_SERVER['DOCUMENT_ROOT'];
-               }
-
-               if (!$basepath && !empty($_SERVER['PWD'])) {
-                       $basepath = $_SERVER['PWD'];
-               }
-
-               return self::getRealPath($basepath);
-       }
-
-       /**
-        * @brief Returns a normalized file path
-        *
-        * This is a wrapper for the "realpath" function.
-        * That function cannot detect the real path when some folders aren't readable.
-        * Since this could happen with some hosters we need to handle this.
-        *
-        * @param string $path The path that is about to be normalized
-        * @return string normalized path - when possible
-        */
-       public static function getRealPath($path)
-       {
-               $normalized = realpath($path);
-
-               if (!is_bool($normalized)) {
-                       return $normalized;
-               } else {
-                       return $path;
-               }
-       }
-
        public function getScheme()
        {
                return $this->scheme;
@@ -735,8 +574,8 @@ class App
                                $this->urlPath = trim($parsed['path'], '\\/');
                        }
 
-                       if (file_exists($this->getBasePath() . '/.htpreconfig.php')) {
-                               include $this->getBasePath() . '/.htpreconfig.php';
+                       if (file_exists($this->basePath . '/.htpreconfig.php')) {
+                               include $this->basePath . '/.htpreconfig.php';
                        }
 
                        if (Core\Config::get('config', 'hostname') != '') {
@@ -789,9 +628,9 @@ class App
                // compose the page title from the sitename and the
                // current module called
                if (!$this->module == '') {
-                       $this->page['title'] = $this->config['sitename'] . ' (' . $this->module . ')';
+                       $this->page['title'] = $this->config->get('config', 'sitename') . ' (' . $this->module . ')';
                } else {
-                       $this->page['title'] = $this->config['sitename'];
+                       $this->page['title'] = $this->config->get('config', 'sitename');
                }
 
                if (!empty(Core\Renderer::$theme['stylesheet'])) {
@@ -912,7 +751,9 @@ class App
         */
        public function saveTimestamp($timestamp, $value)
        {
-               if (!isset($this->config['system']['profiler']) || !$this->config['system']['profiler']) {
+               $profiler = $this->config->get('system', 'profiler');
+
+               if (!isset($profiler) || !$profiler) {
                        return;
                }
 
@@ -1150,7 +991,7 @@ class App
                        return;
                }
 
-               $cmdline = $this->getConfigValue('config', 'php_path', 'php') . ' ' . escapeshellarg($command);
+               $cmdline = $this->config->get('config', 'php_path', 'php') . ' ' . escapeshellarg($command);
 
                foreach ($args as $key => $value) {
                        if (!is_null($value) && is_bool($value) && !$value) {
@@ -1168,9 +1009,9 @@ class App
                }
 
                if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
-                       $resource = proc_open('cmd /c start /b ' . $cmdline, [], $foo, $this->getBasePath());
+                       $resource = proc_open('cmd /c start /b ' . $cmdline, [], $foo, $this->basePath);
                } else {
-                       $resource = proc_open($cmdline . ' &', [], $foo, $this->getBasePath());
+                       $resource = proc_open($cmdline . ' &', [], $foo, $this->basePath);
                }
                if (!is_resource($resource)) {
                        Core\Logger::log('We got no resource for command ' . $cmdline, Core\Logger::DEBUG);
@@ -1179,203 +1020,6 @@ class App
                proc_close($resource);
        }
 
-       /**
-        * @brief Returns the system user that is executing the script
-        *
-        * This mostly returns something like "www-data".
-        *
-        * @return string system username
-        */
-       private static function getSystemUser()
-       {
-               if (!function_exists('posix_getpwuid') || !function_exists('posix_geteuid')) {
-                       return '';
-               }
-
-               $processUser = posix_getpwuid(posix_geteuid());
-               return $processUser['name'];
-       }
-
-       /**
-        * @brief Checks if a given directory is usable for the system
-        *
-        * @param      $directory
-        * @param bool $check_writable
-        * @return boolean the directory is usable
-        * @throws Exception
-        */
-       public static function isDirectoryUsable($directory, $check_writable = true)
-       {
-               if ($directory == '') {
-                       Core\Logger::log('Directory is empty. This shouldn\'t happen.', Core\Logger::DEBUG);
-                       return false;
-               }
-
-               if (!file_exists($directory)) {
-                       Core\Logger::log('Path "' . $directory . '" does not exist for user ' . self::getSystemUser(), Core\Logger::DEBUG);
-                       return false;
-               }
-
-               if (is_file($directory)) {
-                       Core\Logger::log('Path "' . $directory . '" is a file for user ' . self::getSystemUser(), Core\Logger::DEBUG);
-                       return false;
-               }
-
-               if (!is_dir($directory)) {
-                       Core\Logger::log('Path "' . $directory . '" is not a directory for user ' . self::getSystemUser(), Core\Logger::DEBUG);
-                       return false;
-               }
-
-               if ($check_writable && !is_writable($directory)) {
-                       Core\Logger::log('Path "' . $directory . '" is not writable for user ' . self::getSystemUser(), Core\Logger::DEBUG);
-                       return false;
-               }
-
-               return true;
-       }
-
-       /**
-        * @param string $cat     Config category
-        * @param string $k       Config key
-        * @param mixed  $default Default value if it isn't set
-        *
-        * @return string Returns the value of the Config entry
-        */
-       public function getConfigValue($cat, $k, $default = null)
-       {
-               $return = $default;
-
-               if ($cat === 'config') {
-                       if (isset($this->config[$k])) {
-                               $return = $this->config[$k];
-                       }
-               } else {
-                       if (isset($this->config[$cat][$k])) {
-                               $return = $this->config[$cat][$k];
-                       }
-               }
-
-               return $return;
-       }
-
-       /**
-        * Sets a default value in the config cache. Ignores already existing keys.
-        *
-        * @param string $cat Config category
-        * @param string $k   Config key
-        * @param mixed  $v   Default value to set
-        */
-       private function setDefaultConfigValue($cat, $k, $v)
-       {
-               if (!isset($this->config[$cat][$k])) {
-                       $this->setConfigValue($cat, $k, $v);
-               }
-       }
-
-       /**
-        * Sets a value in the config cache. Accepts raw output from the config table
-        *
-        * @param string $cat Config category
-        * @param string $k   Config key
-        * @param mixed  $v   Value to set
-        */
-       public function setConfigValue($cat, $k, $v)
-       {
-               // Only arrays are serialized in database, so we have to unserialize sparingly
-               $value = is_string($v) && preg_match("|^a:[0-9]+:{.*}$|s", $v) ? unserialize($v) : $v;
-
-               if ($cat === 'config') {
-                       $this->config[$k] = $value;
-               } else {
-                       if (!isset($this->config[$cat])) {
-                               $this->config[$cat] = [];
-                       }
-
-                       $this->config[$cat][$k] = $value;
-               }
-       }
-
-       /**
-        * Deletes a value from the config cache
-        *
-        * @param string $cat Config category
-        * @param string $k   Config key
-        */
-       public function deleteConfigValue($cat, $k)
-       {
-               if ($cat === 'config') {
-                       if (isset($this->config[$k])) {
-                               unset($this->config[$k]);
-                       }
-               } else {
-                       if (isset($this->config[$cat][$k])) {
-                               unset($this->config[$cat][$k]);
-                       }
-               }
-       }
-
-
-       /**
-        * Retrieves a value from the user config cache
-        *
-        * @param int    $uid     User Id
-        * @param string $cat     Config category
-        * @param string $k       Config key
-        * @param mixed  $default Default value if key isn't set
-        *
-        * @return string The value of the config entry
-        */
-       public function getPConfigValue($uid, $cat, $k, $default = null)
-       {
-               $return = $default;
-
-               if (isset($this->config[$uid][$cat][$k])) {
-                       $return = $this->config[$uid][$cat][$k];
-               }
-
-               return $return;
-       }
-
-       /**
-        * Sets a value in the user config cache
-        *
-        * Accepts raw output from the pconfig table
-        *
-        * @param int    $uid User Id
-        * @param string $cat Config category
-        * @param string $k   Config key
-        * @param mixed  $v   Value to set
-        */
-       public function setPConfigValue($uid, $cat, $k, $v)
-       {
-               // Only arrays are serialized in database, so we have to unserialize sparingly
-               $value = is_string($v) && preg_match("|^a:[0-9]+:{.*}$|s", $v) ? unserialize($v) : $v;
-
-               if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
-                       $this->config[$uid] = [];
-               }
-
-               if (!isset($this->config[$uid][$cat]) || !is_array($this->config[$uid][$cat])) {
-                       $this->config[$uid][$cat] = [];
-               }
-
-               $this->config[$uid][$cat][$k] = $value;
-       }
-
-       /**
-        * Deletes a value from the user config cache
-        *
-        * @param int    $uid User Id
-        * @param string $cat Config category
-        * @param string $k   Config key
-        */
-       public function deletePConfigValue($uid, $cat, $k)
-       {
-               if (isset($this->config[$uid][$cat][$k])) {
-                       unset($this->config[$uid][$cat][$k]);
-               }
-       }
-
        /**
         * Generates the site's default sender email address
         *
@@ -1643,7 +1287,7 @@ class App
                        $this->module = 'maintenance';
                } else {
                        $this->checkURL();
-                       Core\Update::check(false);
+                       Core\Update::check($this->basePath, false);
                        Core\Addon::loadAddons();
                        Core\Hook::loadHooks();
                }
index 84ff193823113a1534e3e407ac2eb712f3fda5f0..4a6fa12d24b03ad18f4542114f1302d8a9e3573e 100644 (file)
@@ -6,7 +6,7 @@ namespace Friendica;
 
 require_once 'boot.php';
 
-use Friendica\Util\LoggerFactory;
+use Friendica\Network\HTTPException\InternalServerErrorException;
 
 /**
  * Basic object
@@ -28,8 +28,7 @@ class BaseObject
        public static function getApp()
        {
                if (empty(self::$app)) {
-                       $logger = $logger = LoggerFactory::create('app');
-                       self::$app = new App(dirname(__DIR__), $logger);
+                       throw new InternalServerErrorException('App isn\'t initialized.');
                }
 
                return self::$app;
index d0aefd306225c777a7ba8521d5036018fee9ef15..0ef18df35f95a04bfc6936705c9efa8b41b71ec7 100644 (file)
@@ -170,7 +170,7 @@ class ForumManager
                $total_shown = 0;
                $forumlist = '';
                foreach ($contacts as $contact) {
-                       $forumlist .= HTML::micropro($contact, false, 'forumlist-profile-advanced');
+                       $forumlist .= HTML::micropro($contact, true, 'forumlist-profile-advanced');
                        $total_shown ++;
                        if ($total_shown == $show_total) {
                                break;
index e0190c0c1d2005a8751c8b3526b114d7ca9ed7c5..a8b5ec2025546e7ffa0e694597d2f38524ccd8b1 100644 (file)
@@ -1293,7 +1293,7 @@ class BBCode extends BaseObject
                                $text);
                } elseif ($simple_html == 7) {
                        $text = preg_replace("/([@!])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
-                               '$1<span class="vcard"><a href="$2" class="url" title="$3"><span class="fn nickname mention">$3</span></a></span>',
+                               '$1<span class="vcard"><a href="$2" class="url u-url mention" title="$3"><span class="fn nickname mention">$3</span></a></span>',
                                $text);
                } elseif (!$simple_html) {
                        $text = preg_replace("/([@!])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
@@ -1743,7 +1743,7 @@ class BBCode extends BaseObject
 
                // Clean up the HTML by loading and saving the HTML with the DOM.
                // Bad structured html can break a whole page.
-               // For performance reasons do it only with ativated item cache or at export.
+               // For performance reasons do it only with activated item cache or at export.
                if (!$try_oembed || (get_itemcachepath() != "")) {
                        $doc = new DOMDocument();
                        $doc->preserveWhiteSpace = false;
@@ -1959,7 +1959,7 @@ class BBCode extends BaseObject
         $string = preg_replace('/#\[url\=([^\[\]]*)\](.*?)\[\/url\]/ism', '#$2', $string);
 
         // ignore anything in a code block
-        $string = preg_replace('/\[code\](.*?)\[\/code\]/sm', '', $string);
+        $string = preg_replace('/\[code.*?\].*?\[\/code\]/sm', '', $string);
 
         // Force line feeds at bbtags
         $string = str_replace(['[', ']'], ["\n[", "]\n"], $string);
index e54234bffefc13cafe45c08935a5dd341579f674..ceb5b043b3065ba045c27891fc0138df916afd31 100644 (file)
@@ -34,6 +34,7 @@ class Markdown extends BaseObject
                $MarkdownParser->hard_wrap = $hardwrap;
                $MarkdownParser->code_class_prefix = 'language-';
                $html = $MarkdownParser->transform($text);
+               $html = preg_replace('/<a(.*?)href="#/is', '<a$1href="' . ltrim($_SERVER['REQUEST_URI'], '/') . '#', $html);
 
                self::getApp()->saveTimestamp($stamp1, "parser");
 
@@ -82,27 +83,17 @@ class Markdown extends BaseObject
        {
                $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
 
-               // Handles single newlines
-               $s = str_replace("\r\n", "\n", $s);
-               $s = str_replace("\n", " \n", $s);
-               $s = str_replace("\r", " \n", $s);
-
-               // Replace lonely stars in lines not starting with it with literal stars
-               $s = preg_replace('/^([^\*]+)\*([^\*]*)$/im', '$1\*$2', $s);
-
                // The parser cannot handle paragraphs correctly
                $s = str_replace(['</p>', '<p>', '<p dir="ltr">'], ['<br>', '<br>', '<br>'], $s);
 
-               // Escaping the hash tags
-               $s = preg_replace('/\#([^\s\#])/', '&#35;$1', $s);
+               // Escaping hashtags that could be titles
+               $s = preg_replace('/^\#([^\s\#])/im', '\#$1', $s);
 
                $s = self::convert($s);
 
                $regexp = "/([@!])\{(?:([^\}]+?); ?)?([^\} ]+)\}/";
                $s = preg_replace_callback($regexp, ['self', 'diasporaMention2BBCodeCallback'], $s);
 
-               $s = str_replace('&#35;', '#', $s);
-
                $s = HTML::toBBCode($s);
 
                // protect the recycle symbol from turning into a tag, but without unescaping angles and naked ampersands
index 1118280a53e4bd0ca02394394a36e1fdc173d56f..6697a44aea13bd60b480fa0cb067d4fa5e9f2be5 100644 (file)
@@ -12,6 +12,12 @@ use Friendica\Database\DBA;
  */
 class Addon extends BaseObject
 {
+       /**
+        * The addon sub-directory
+        * @var string
+        */
+       const DIRECTORY = 'addon';
+
        /**
         * List of the names of enabled addons
         *
@@ -106,7 +112,7 @@ class Addon extends BaseObject
                @include_once('addon/' . $addon . '/' . $addon . '.php');
                if (function_exists($addon . '_install')) {
                        $func = $addon . '_install';
-                       $func();
+                       $func(self::getApp());
 
                        $addon_admin = (function_exists($addon . "_addon_admin") ? 1 : 0);
 
@@ -162,11 +168,11 @@ class Addon extends BaseObject
 
                                                                if (function_exists($addon . '_uninstall')) {
                                                                        $func = $addon . '_uninstall';
-                                                                       $func();
+                                                                       $func(self::getApp());
                                                                }
                                                                if (function_exists($addon . '_install')) {
                                                                        $func = $addon . '_install';
-                                                                       $func();
+                                                                       $func(self::getApp());
                                                                }
                                                                DBA::update('addon', ['timestamp' => $t], ['id' => $i['id']]);
                                                        }
index 755dc6ebbcf50bfcc82e9f31a7877ea5d89ea8e3..6ceb637701a251506c4d32a09b9d52af2edcfa55 100644 (file)
@@ -8,8 +8,9 @@
  */
 namespace Friendica\Core;
 
-use Friendica\App;
-use Friendica\BaseObject;
+use Friendica\Core\Config\ConfigCache;
+use Friendica\Core\Config\IConfigAdapter;
+use Friendica\Core\Config\IConfigCache;
 
 /**
  * @brief Arbitrary system configuration storage
@@ -18,49 +19,53 @@ use Friendica\BaseObject;
  * If we ever would decide to return exactly the variable type as entered,
  * we will have fun with the additional features. :-)
  */
-class Config extends BaseObject
+class Config
 {
        /**
-        * @var \Friendica\Core\Config\IConfigAdapter
+        * @var Config\IConfigAdapter
         */
-       private static $adapter = null;
+       private static $adapter;
 
-       public static function init()
+       /**
+        * @var Config\IConfigCache
+        */
+       private static $cache;
+
+       /**
+        * Initialize the config with only the cache
+        *
+        * @param Config\IConfigCache $cache  The configuration cache
+        */
+       public static function init(Config\IConfigCache $cache)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return;
-               }
+               self::$cache  = $cache;
+       }
 
-               if (self::getApp()->getConfigValue('system', 'config_adapter') == 'preload') {
-                       self::$adapter = new Config\PreloadConfigAdapter();
-               } else {
-                       self::$adapter = new Config\JITConfigAdapter();
-               }
+       /**
+        * Add the adapter for DB-backend
+        *
+        * @param Config\IConfigAdapter $adapter
+        */
+       public static function setAdapter(Config\IConfigAdapter $adapter)
+       {
+               self::$adapter = $adapter;
        }
 
        /**
         * @brief Loads all configuration values of family into a cached storage.
         *
-        * All configuration values of the system are stored in global cache
-        * which is available under the global variable $a->config
+        * All configuration values of the system are stored in the cache ( @see IConfigCache )
         *
         * @param string $family The category of the configuration value
         *
         * @return void
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function load($family = "config")
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
+               if (!isset(self::$adapter)) {
                        return;
                }
 
-               if (empty(self::$adapter)) {
-                       self::init();
-               }
-
                self::$adapter->load($family);
        }
 
@@ -69,12 +74,8 @@ class Config extends BaseObject
         * ($family) and a key.
         *
         * Get a particular config value from the given category ($family)
-        * and the $key from a cached storage in $a->config[$uid].
-        * $instore is only used by the set_config function
-        * to determine if the key already exists in the DB
-        * If a key is found in the DB but doesn't exist in
-        * local config cache, pull it into the cache so we don't have
-        * to hit the DB again for this item.
+        * and the $key from a cached storage either from the self::$adapter
+        * (@see IConfigAdapter ) or from the static::$cache (@see IConfigCache ).
         *
         * @param string  $family        The category of the configuration value
         * @param string  $key           The configuration key to query
@@ -82,17 +83,11 @@ class Config extends BaseObject
         * @param boolean $refresh       optional, If true the config is loaded from the db and not from the cache (default: false)
         *
         * @return mixed Stored value or null if it does not exist
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function get($family, $key, $default_value = null, $refresh = false)
        {
-               // Database isn't ready or populated yet, fallback to file config
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return self::getApp()->getConfigValue($family, $key, $default_value);
-               }
-
-               if (empty(self::$adapter)) {
-                       self::init();
+               if (!isset(self::$adapter)) {
+                       return self::$cache->get($family, $key, $default_value);
                }
 
                return self::$adapter->get($family, $key, $default_value, $refresh);
@@ -102,7 +97,6 @@ class Config extends BaseObject
         * @brief Sets a configuration value for system config
         *
         * Stores a config value ($value) in the category ($family) under the key ($key)
-        * for the user_id $uid.
         *
         * Note: Please do not store booleans - convert to 0/1 integer values!
         *
@@ -111,17 +105,12 @@ class Config extends BaseObject
         * @param mixed  $value  The value to store
         *
         * @return bool Operation success
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function set($family, $key, $value)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return false;
-               }
-
-               if (empty(self::$adapter)) {
-                       self::init();
+               if (!isset(self::$adapter)) {
+                       self::$cache->set($family, $key, $value);
+                       return true;
                }
 
                return self::$adapter->set($family, $key, $value);
@@ -130,24 +119,18 @@ class Config extends BaseObject
        /**
         * @brief Deletes the given key from the system configuration.
         *
-        * Removes the configured value from the stored cache in $a->config
-        * and removes it from the database.
+        * Removes the configured value from the stored cache in self::$config
+        * (@see ConfigCache ) and removes it from the database (@see IConfigAdapter ).
         *
         * @param string $family The category of the configuration value
         * @param string $key    The configuration key to delete
         *
         * @return mixed
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function delete($family, $key)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return false;
-               }
-
-               if (empty(self::$adapter)) {
-                       self::init();
+               if (!isset(self::$adapter)) {
+                       self::$cache->delete($family, $key);
                }
 
                return self::$adapter->delete($family, $key);
diff --git a/src/Core/Config/ConfigCache.php b/src/Core/Config/ConfigCache.php
new file mode 100644 (file)
index 0000000..e03d352
--- /dev/null
@@ -0,0 +1,173 @@
+<?php
+
+namespace Friendica\Core\Config;
+
+/**
+ * The Friendica config cache for the application
+ * Initial, all *.config.php files are loaded into this cache with the
+ * ConfigCacheLoader ( @see ConfigCacheLoader )
+ *
+ * Is used for further caching operations too (depending on the ConfigAdapter )
+ */
+class ConfigCache implements IConfigCache, IPConfigCache
+{
+       private $config;
+
+       /**
+        * @param array $config    A initial config array
+        */
+       public function __construct(array $config = [])
+       {
+               $this->config = $config;
+       }
+
+       /**
+        * Tries to load the specified configuration array into the App->config array.
+        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
+        *
+        * @param array $config
+        * @param bool  $overwrite Force value overwrite if the config key already exists
+        */
+       public function loadConfigArray(array $config, $overwrite = false)
+       {
+               foreach ($config as $category => $values) {
+                       foreach ($values as $key => $value) {
+                               if ($overwrite) {
+                                       $this->set($category, $key, $value);
+                               } else {
+                                       $this->setDefault($category, $key, $value);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function get($cat, $key = null, $default = null)
+       {
+               $return = $default;
+
+               if ($cat === 'config') {
+                       if (isset($this->config[$key])) {
+                               $return = $this->config[$key];
+                       }
+               } else {
+                       if (isset($this->config[$cat][$key])) {
+                               $return = $this->config[$cat][$key];
+                       } elseif ($key == null && isset($this->config[$cat])) {
+                               $return = $this->config[$cat];
+                       }
+               }
+
+               return $return;
+       }
+
+       /**
+        * Sets a default value in the config cache. Ignores already existing keys.
+        *
+        * @param string $cat Config category
+        * @param string $k   Config key
+        * @param mixed  $v   Default value to set
+        */
+       private function setDefault($cat, $k, $v)
+       {
+               if (!isset($this->config[$cat][$k])) {
+                       $this->set($cat, $k, $v);
+               }
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function set($cat, $key, $value)
+       {
+               // Only arrays are serialized in database, so we have to unserialize sparingly
+               $value = is_string($value) && preg_match("|^a:[0-9]+:{.*}$|s", $value) ? unserialize($value) : $value;
+
+               if ($cat === 'config') {
+                       $this->config[$key] = $value;
+               } else {
+                       if (!isset($this->config[$cat])) {
+                               $this->config[$cat] = [];
+                       }
+
+                       $this->config[$cat][$key] = $value;
+               }
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function delete($cat, $key)
+       {
+               if ($cat === 'config') {
+                       if (isset($this->config[$key])) {
+                               unset($this->config[$key]);
+                       }
+               } else {
+                       if (isset($this->config[$cat][$key])) {
+                               unset($this->config[$cat][$key]);
+                       }
+               }
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function getP($uid, $cat, $key = null, $default = null)
+       {
+               $return = $default;
+
+               if (isset($this->config[$uid][$cat][$key])) {
+                       $return = $this->config[$uid][$cat][$key];
+               } elseif ($key === null && isset($this->config[$uid][$cat])) {
+                       $return = $this->config[$uid][$cat];
+               }
+
+               return $return;
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function setP($uid, $cat, $key, $value)
+       {
+               // Only arrays are serialized in database, so we have to unserialize sparingly
+               $value = is_string($value) && preg_match("|^a:[0-9]+:{.*}$|s", $value) ? unserialize($value) : $value;
+
+               if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
+                       $this->config[$uid] = [];
+               }
+
+               if (!isset($this->config[$uid][$cat]) || !is_array($this->config[$uid][$cat])) {
+                       $this->config[$uid][$cat] = [];
+               }
+
+               if ($key === null) {
+                       $this->config[$uid][$cat] = $value;
+               } else {
+                       $this->config[$uid][$cat][$key] = $value;
+               }
+       }
+
+       /**
+        * {@inheritdoc}
+        */
+       public function deleteP($uid, $cat, $key)
+       {
+               if (isset($this->config[$uid][$cat][$key])) {
+                       unset($this->config[$uid][$cat][$key]);
+               }
+       }
+
+       /**
+        * Returns the whole configuration
+        *
+        * @return array The configuration
+        */
+       public function getAll()
+       {
+               return $this->config;
+       }
+}
diff --git a/src/Core/Config/ConfigCacheLoader.php b/src/Core/Config/ConfigCacheLoader.php
new file mode 100644 (file)
index 0000000..0b87614
--- /dev/null
@@ -0,0 +1,208 @@
+<?php
+
+namespace Friendica\Core\Config;
+
+use Friendica\Core\Addon;
+
+/**
+ * The ConfigCacheLoader loads config-files and stores them in a ConfigCache ( @see ConfigCache )
+ *
+ * It is capable of loading the following config files:
+ * - *.config.php   (current)
+ * - *.ini.php      (deprecated)
+ * - *.htconfig.php (deprecated)
+ */
+class ConfigCacheLoader
+{
+       /**
+        * The Sub directory of the config-files
+        * @var string
+        */
+       const SUBDIRECTORY = 'config';
+
+       private $baseDir;
+       private $configDir;
+
+       public function __construct($baseDir)
+       {
+               $this->baseDir = $baseDir;
+               $this->configDir = $baseDir . DIRECTORY_SEPARATOR . self::SUBDIRECTORY;
+       }
+
+       /**
+        * Load the configuration files
+        *
+        * First loads the default value for all the configuration keys, then the legacy configuration files, then the
+        * expected local.config.php
+        */
+       public function loadConfigFiles(ConfigCache $config)
+       {
+               // Setting at least the basepath we know
+               $config->set('system', 'basepath', $this->baseDir);
+
+               $config->loadConfigArray($this->loadCoreConfig('defaults'));
+               $config->loadConfigArray($this->loadCoreConfig('settings'));
+
+               $config->loadConfigArray($this->loadLegacyConfig('htpreconfig'), true);
+               $config->loadConfigArray($this->loadLegacyConfig('htconfig'), true);
+
+               $config->loadConfigArray($this->loadCoreConfig('local'), true);
+       }
+
+       /**
+        * Tries to load the specified core-configuration and returns the config array.
+        *
+        * @param string $name The name of the configuration
+        *
+        * @return array The config array (empty if no config found)
+        *
+        * @throws \Exception if the configuration file isn't readable
+        */
+       public function loadCoreConfig($name)
+       {
+               if (file_exists($this->configDir . DIRECTORY_SEPARATOR . $name . '.config.php')) {
+                       return $this->loadConfigFile($this->configDir . DIRECTORY_SEPARATOR . $name . '.config.php');
+               } elseif (file_exists($this->configDir . DIRECTORY_SEPARATOR . $name . '.ini.php')) {
+                       return $this->loadINIConfigFile($this->configDir . DIRECTORY_SEPARATOR . $name . '.ini.php');
+               } else {
+                       return [];
+               }
+       }
+
+       /**
+        * Tries to load the specified addon-configuration and returns the config array.
+        *
+        * @param string $name The name of the configuration
+        *
+        * @return array The config array (empty if no config found)
+        *
+        * @throws \Exception if the configuration file isn't readable
+        */
+       public function loadAddonConfig($name)
+       {
+               $filepath = $this->baseDir . DIRECTORY_SEPARATOR . // /var/www/html/
+                       Addon::DIRECTORY       . DIRECTORY_SEPARATOR . // addon/
+                       $name                  . DIRECTORY_SEPARATOR . // openstreetmap/
+                       self::SUBDIRECTORY     . DIRECTORY_SEPARATOR . // config/
+                       $name . ".config.php";                         // openstreetmap.config.php
+
+               if (file_exists($filepath)) {
+                       return $this->loadConfigFile($filepath);
+               } else {
+                       return [];
+               }
+       }
+
+       /**
+        * Tries to load the legacy config files (.htconfig.php, .htpreconfig.php) and returns the config array.
+        *
+        * @param string $name The name of the config file
+        *
+        * @return array The configuration array (empty if no config found)
+        *
+        * @deprecated since version 2018.09
+        */
+       private function loadLegacyConfig($name)
+       {
+               $filePath = $this->baseDir  . DIRECTORY_SEPARATOR . '.' . $name . '.php';
+
+               if (file_exists($filePath)) {
+                       $a = new \stdClass();
+                       $a->config = [];
+                       include $filePath;
+
+                       if (isset($db_host)) {
+                               $a->config['database']['hostname'] = $db_host;
+                               unset($db_host);
+                       }
+                       if (isset($db_user)) {
+                               $a->config['database']['username'] = $db_user;
+                               unset($db_user);
+                       }
+                       if (isset($db_pass)) {
+                               $a->config['database']['password'] = $db_pass;
+                               unset($db_pass);
+                       }
+                       if (isset($db_data)) {
+                               $a->config['database']['database'] = $db_data;
+                               unset($db_data);
+                       }
+                       if (isset($a->config['system']['db_charset'])) {
+                               $a->config['database']['charset'] = $a->config['system']['charset'];
+                       }
+                       if (isset($pidfile)) {
+                               $a->config['system']['pidfile'] = $pidfile;
+                               unset($pidfile);
+                       }
+                       if (isset($default_timezone)) {
+                               $a->config['system']['default_timezone'] = $default_timezone;
+                               unset($default_timezone);
+                       }
+                       if (isset($lang)) {
+                               $a->config['system']['language'] = $lang;
+                               unset($lang);
+                       }
+
+                       return $a->config;
+               } else {
+                       return [];
+               }
+       }
+
+       /**
+        * Tries to load the specified legacy configuration file and returns the config array.
+        *
+        * @deprecated since version 2018.12
+        * @param string $filepath
+        *
+        * @return array The configuration array
+        * @throws \Exception
+        */
+       private function loadINIConfigFile($filepath)
+       {
+               if (!file_exists($filepath)) {
+                       throw new \Exception('Error parsing non-existent INI config file ' . $filepath);
+               }
+
+               $contents = include($filepath);
+
+               $config = parse_ini_string($contents, true, INI_SCANNER_TYPED);
+
+               if ($config === false) {
+                       throw new \Exception('Error parsing INI config file ' . $filepath);
+               }
+
+               return $config;
+       }
+
+       /**
+        * Tries to load the specified configuration file and returns the config array.
+        *
+        * The config format is PHP array and the template for configuration files is the following:
+        *
+        * <?php return [
+        *      'section' => [
+        *          'key' => 'value',
+        *      ],
+        * ];
+        *
+        * @param  string $filepath The filepath of the
+        * @return array The config array0
+        *
+        * @throws \Exception if the config cannot get loaded.
+        */
+       private function loadConfigFile($filepath)
+       {
+               if (!file_exists($filepath)) {
+                       throw new \Exception('Error loading non-existent config file ' . $filepath);
+               }
+
+               $config = include($filepath);
+
+               if (!is_array($config)) {
+                       throw new \Exception('Error loading config file ' . $filepath);
+               }
+
+               return $config;
+       }
+}
index 9d8eefd777406181afd1bfa5b95e549886abdcdc..139483de26922d9db7761e2a413d7a6218af098a 100644 (file)
@@ -9,10 +9,7 @@ namespace Friendica\Core\Config;
 interface IConfigAdapter
 {
        /**
-        * @brief Loads all configuration values into a cached storage.
-        *
-        * All configuration values of the system are stored in global cache
-        * which is available under the global variable $a->config
+        * Loads all configuration values into a cached storage.
         *
         * @param string  $cat The category of the configuration values to load
         *
@@ -21,17 +18,9 @@ interface IConfigAdapter
        public function load($cat = "config");
 
        /**
-        * @brief Get a particular user's config variable given the category name
+        * Get a particular user's config variable given the category name
         * ($family) and a key.
         *
-        * Get a particular config value from the given category ($family)
-        * and the $key from a cached storage in $a->config[$uid].
-        * $instore is only used by the set_config function
-        * to determine if the key already exists in the DB
-        * If a key is found in the DB but doesn't exist in
-        * local config cache, pull it into the cache so we don't have
-        * to hit the DB again for this item.
-        *
         * @param string  $cat           The category of the configuration value
         * @param string  $k             The configuration key to query
         * @param mixed   $default_value optional, The value to return if key is not set (default: null)
@@ -42,8 +31,6 @@ interface IConfigAdapter
        public function get($cat, $k, $default_value = null, $refresh = false);
 
        /**
-        * @brief Sets a configuration value for system config
-        *
         * Stores a config value ($value) in the category ($family) under the key ($key)
         * for the user_id $uid.
         *
@@ -58,9 +45,7 @@ interface IConfigAdapter
        public function set($cat, $k, $value);
 
        /**
-        * @brief Deletes the given key from the system configuration.
-        *
-        * Removes the configured value from the stored cache in $a->config
+        * Removes the configured value from the stored cache
         * and removes it from the database.
         *
         * @param string $cat The category of the configuration value
diff --git a/src/Core/Config/IConfigCache.php b/src/Core/Config/IConfigCache.php
new file mode 100644 (file)
index 0000000..8266cc2
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+namespace Friendica\Core\Config;
+
+/**
+ * The interface for a system-wide ConfigCache
+ */
+interface IConfigCache
+{
+       /**
+        * @param string $cat     Config category
+        * @param string $key       Config key
+        * @param mixed  $default Default value if it isn't set
+        *
+        * @return mixed Returns the value of the Config entry
+        */
+       function get($cat, $key = null, $default = null);
+
+       /**
+        * Sets a value in the config cache. Accepts raw output from the config table
+        *
+        * @param string $cat   Config category
+        * @param string $key   Config key
+        * @param mixed  $value Value to set
+        */
+       function set($cat, $key, $value);
+
+       /**
+        * Deletes a value from the config cache
+        *
+        * @param string $cat  Config category
+        * @param string $key  Config key
+        */
+       function delete($cat, $key);
+
+       function getAll();
+}
index b912418432e1eb86d15005a4da20911b3cd84bbd..e62fc9c93fb83e0a427fcc638d05839229fb2c35 100644 (file)
@@ -15,10 +15,7 @@ namespace Friendica\Core\Config;
 interface IPConfigAdapter
 {
        /**
-        * @brief Loads all configuration values of a user's config family into a cached storage.
-        *
-        * All configuration values of the given user are stored in global cache
-        * which is available under the global variable $a->config[$uid].
+        * Loads all configuration values of a user's config family into a cached storage.
         *
         * @param string $uid The user_id
         * @param string $cat The category of the configuration value
@@ -28,12 +25,9 @@ interface IPConfigAdapter
        public function load($uid, $cat);
 
        /**
-        * @brief Get a particular user's config variable given the category name
+        * Get a particular user's config variable given the category name
         * ($family) and a key.
         *
-        * Get a particular user's config value from the given category ($family)
-        * and the $key from a cached storage in $a->config[$uid].
-        *
         * @param string  $uid           The user_id
         * @param string  $cat           The category of the configuration value
         * @param string  $k             The configuration key to query
@@ -45,8 +39,6 @@ interface IPConfigAdapter
        public function get($uid, $cat, $k, $default_value = null, $refresh = false);
 
        /**
-        * @brief Sets a configuration value for a user
-        *
         * Stores a config value ($value) in the category ($family) under the key ($key)
         * for the user_id $uid.
         *
@@ -62,9 +54,7 @@ interface IPConfigAdapter
        public function set($uid, $cat, $k, $value);
 
        /**
-        * @brief Deletes the given key from the users's configuration.
-        *
-        * Removes the configured value from the stored cache in $a->config[$uid]
+        * Removes the configured value from the stored cache
         * and removes it from the database.
         *
         * @param string $uid The user_id
diff --git a/src/Core/Config/IPConfigCache.php b/src/Core/Config/IPConfigCache.php
new file mode 100644 (file)
index 0000000..6a57daf
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+namespace Friendica\Core\Config;
+
+/**
+ * The interface for a user-specific config cache
+ */
+interface IPConfigCache
+{
+       /**
+        * Retrieves a value from the user config cache
+        *
+        * @param int    $uid     User Id
+        * @param string $cat     Config category
+        * @param string $key     Config key
+        * @param mixed  $default Default value if key isn't set
+        *
+        * @return string The value of the config entry
+        */
+       function getP($uid, $cat, $key = null, $default = null);
+
+       /**
+        * Sets a value in the user config cache
+        *
+        * Accepts raw output from the pconfig table
+        *
+        * @param int    $uid   User Id
+        * @param string $cat   Config category
+        * @param string $key   Config key
+        * @param mixed  $value Value to set
+        */
+       function setP($uid, $cat, $key, $value);
+
+       /**
+        * Deletes a value from the user config cache
+        *
+        * @param int    $uid User Id
+        * @param string $cat Config category
+        * @param string $key Config key
+        */
+       function deleteP($uid, $cat, $key);
+
+       function getAll();
+}
index ce1c13b2cae8b82b8e9e776064ac3027756dfece..e7aecb933b673af56a7a65e9f3cdccf28f596d37 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 namespace Friendica\Core\Config;
 
-use Friendica\BaseObject;
 use Friendica\Database\DBA;
 
 /**
@@ -11,11 +10,27 @@ use Friendica\Database\DBA;
  *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class JITConfigAdapter extends BaseObject implements IConfigAdapter
+class JITConfigAdapter implements IConfigAdapter
 {
        private $cache;
        private $in_db;
 
+       /**
+        * @var IConfigCache The config cache of this driver
+        */
+       private $configCache;
+
+       /**
+        * @param IConfigCache $configCache The config cache of this driver
+        */
+       public function __construct(IConfigCache $configCache)
+       {
+               $this->configCache = $configCache;
+       }
+
+       /**
+        * {@inheritdoc}
+        */
        public function load($cat = "config")
        {
                // We don't preload "system" anymore.
@@ -28,7 +43,7 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter
                while ($config = DBA::fetch($configs)) {
                        $k = $config['k'];
 
-                       self::getApp()->setConfigValue($cat, $k, $config['v']);
+                       $this->configCache->set($cat, $k, $config['v']);
 
                        if ($cat !== 'config') {
                                $this->cache[$cat][$k] = $config['v'];
@@ -38,10 +53,11 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter
                DBA::close($configs);
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function get($cat, $k, $default_value = null, $refresh = false)
        {
-               $a = self::getApp();
-
                if (!$refresh) {
                        // Do we have the cached value? Then return it
                        if (isset($this->cache[$cat][$k])) {
@@ -62,18 +78,18 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter
                        $this->cache[$cat][$k] = $value;
                        $this->in_db[$cat][$k] = true;
                        return $value;
-               } elseif (isset($a->config[$cat][$k])) {
+               } elseif ($this->configCache->get($cat, $k) !== null) {
                        // Assign the value (mostly) from config/local.config.php file to the cache
-                       $this->cache[$cat][$k] = $a->config[$cat][$k];
+                       $this->cache[$cat][$k] = $this->configCache->get($cat, $k);
                        $this->in_db[$cat][$k] = false;
 
-                       return $a->config[$cat][$k];
-               } elseif (isset($a->config[$k])) {
+                       return $this->configCache->get($cat, $k);
+               } elseif ($this->configCache->get('config', $k) !== null) {
                        // Assign the value (mostly) from config/local.config.php file to the cache
-                       $this->cache[$k] = $a->config[$k];
+                       $this->cache[$k] = $this->configCache->get('config', $k);
                        $this->in_db[$k] = false;
 
-                       return $a->config[$k];
+                       return $this->configCache->get('config', $k);
                }
 
                $this->cache[$cat][$k] = '!<unset>!';
@@ -82,6 +98,9 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter
                return $default_value;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function set($cat, $k, $value)
        {
                // We store our setting values in a string variable.
@@ -102,7 +121,7 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter
                        return true;
                }
 
-               self::getApp()->setConfigValue($cat, $k, $value);
+               $this->configCache->set($cat, $k, $value);
 
                // Assign the just added value to the cache
                $this->cache[$cat][$k] = $dbvalue;
@@ -119,6 +138,9 @@ class JITConfigAdapter extends BaseObject implements IConfigAdapter
                return $result;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function delete($cat, $k)
        {
                if (isset($this->cache[$cat][$k])) {
index bdaca407ffa583f88aa0c5c36a2dcf0fb4275471..b1a15601cc4cdaa28efbd7687c7c0aeb65e65097 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 namespace Friendica\Core\Config;
 
-use Friendica\BaseObject;
 use Friendica\Database\DBA;
 
 /**
@@ -11,47 +10,63 @@ use Friendica\Database\DBA;
  *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
+class JITPConfigAdapter implements IPConfigAdapter
 {
        private $in_db;
 
-       public function load($uid, $cat)
+       /**
+        * The config cache of this adapter
+        * @var IPConfigCache
+        */
+       private $configCache;
+
+       /**
+        * @param IPConfigCache $configCache The config cache of this adapter
+        */
+       public function __construct(IPConfigCache $configCache)
        {
-               $a = self::getApp();
+               $this->configCache = $configCache;
+       }
 
+       /**
+        * {@inheritdoc}
+        */
+       public function load($uid, $cat)
+       {
                $pconfigs = DBA::select('pconfig', ['v', 'k'], ['cat' => $cat, 'uid' => $uid]);
                if (DBA::isResult($pconfigs)) {
                        while ($pconfig = DBA::fetch($pconfigs)) {
                                $k = $pconfig['k'];
 
-                               self::getApp()->setPConfigValue($uid, $cat, $k, $pconfig['v']);
+                               $this->configCache->setP($uid, $cat, $k, $pconfig['v']);
 
                                $this->in_db[$uid][$cat][$k] = true;
                        }
                } else if ($cat != 'config') {
                        // Negative caching
-                       $a->config[$uid][$cat] = "!<unset>!";
+                       $this->configCache->setP($uid, $cat, null, "!<unset>!");
                }
                DBA::close($pconfigs);
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function get($uid, $cat, $k, $default_value = null, $refresh = false)
        {
-               $a = self::getApp();
-
                if (!$refresh) {
                        // Looking if the whole family isn't set
-                       if (isset($a->config[$uid][$cat])) {
-                               if ($a->config[$uid][$cat] === '!<unset>!') {
+                       if ($this->configCache->getP($uid, $cat) !== null) {
+                               if ($this->configCache->getP($uid, $cat) === '!<unset>!') {
                                        return $default_value;
                                }
                        }
 
-                       if (isset($a->config[$uid][$cat][$k])) {
-                               if ($a->config[$uid][$cat][$k] === '!<unset>!') {
+                       if ($this->configCache->getP($uid, $cat, $k) !== null) {
+                               if ($this->configCache->getP($uid, $cat, $k) === '!<unset>!') {
                                        return $default_value;
                                }
-                               return $a->config[$uid][$cat][$k];
+                               return $this->configCache->getP($uid, $cat, $k);
                        }
                }
 
@@ -59,13 +74,13 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
                if (DBA::isResult($pconfig)) {
                        $val = (preg_match("|^a:[0-9]+:{.*}$|s", $pconfig['v']) ? unserialize($pconfig['v']) : $pconfig['v']);
 
-                       self::getApp()->setPConfigValue($uid, $cat, $k, $val);
+                       $this->configCache->setP($uid, $cat, $k, $val);
 
                        $this->in_db[$uid][$cat][$k] = true;
 
                        return $val;
                } else {
-                       self::getApp()->setPConfigValue($uid, $cat, $k, '!<unset>!');
+                       $this->configCache->setP($uid, $cat, $k, '!<unset>!');
 
                        $this->in_db[$uid][$cat][$k] = false;
 
@@ -73,6 +88,9 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
                }
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function set($uid, $cat, $k, $value)
        {
                // We store our setting values in a string variable.
@@ -86,7 +104,7 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
                        return true;
                }
 
-               self::getApp()->setPConfigValue($uid, $cat, $k, $value);
+               $this->configCache->setP($uid, $cat, $k, $value);
 
                // manage array value
                $dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
@@ -100,9 +118,12 @@ class JITPConfigAdapter extends BaseObject implements IPConfigAdapter
                return $result;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function delete($uid, $cat, $k)
        {
-               self::getApp()->deletePConfigValue($uid, $cat, $k);
+               $this->configCache->deleteP($uid, $cat, $k);
 
                if (!empty($this->in_db[$uid][$cat][$k])) {
                        unset($this->in_db[$uid][$cat][$k]);
index ac59d945580ca6d6e55ffebda4fdff8a042a5c4a..d5fbd982bf56e6f912fa5568c3168087819fdf61 100644 (file)
@@ -3,7 +3,6 @@
 namespace Friendica\Core\Config;
 
 use Exception;
-use Friendica\BaseObject;
 use Friendica\Database\DBA;
 
 /**
@@ -13,15 +12,27 @@ use Friendica\Database\DBA;
  *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class PreloadConfigAdapter extends BaseObject implements IConfigAdapter
+class PreloadConfigAdapter implements IConfigAdapter
 {
        private $config_loaded = false;
 
-       public function __construct()
+       /**
+        * @var IConfigCache The config cache of this driver
+        */
+       private $configCache;
+
+       /**
+        * @param IConfigCache $configCache The config cache of this driver
+        */
+       public function __construct(IConfigCache $configCache)
        {
+               $this->configCache = $configCache;
                $this->load();
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function load($family = 'config')
        {
                if ($this->config_loaded) {
@@ -30,27 +41,33 @@ class PreloadConfigAdapter extends BaseObject implements IConfigAdapter
 
                $configs = DBA::select('config', ['cat', 'v', 'k']);
                while ($config = DBA::fetch($configs)) {
-                       self::getApp()->setConfigValue($config['cat'], $config['k'], $config['v']);
+                       $this->configCache->set($config['cat'], $config['k'], $config['v']);
                }
                DBA::close($configs);
 
                $this->config_loaded = true;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function get($cat, $k, $default_value = null, $refresh = false)
        {
                if ($refresh) {
                        $config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $k]);
                        if (DBA::isResult($config)) {
-                               self::getApp()->setConfigValue($cat, $k, $config['v']);
+                               $this->configCache->set($cat, $k, $config['v']);
                        }
                }
 
-               $return = self::getApp()->getConfigValue($cat, $k, $default_value);
+               $return = $this->configCache->get($cat, $k, $default_value);
 
                return $return;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function set($cat, $k, $value)
        {
                // We store our setting values as strings.
@@ -58,11 +75,11 @@ class PreloadConfigAdapter extends BaseObject implements IConfigAdapter
                // The exception are array values.
                $compare_value = !is_array($value) ? (string)$value : $value;
 
-               if (self::getApp()->getConfigValue($cat, $k) === $compare_value) {
+               if ($this->configCache->get($cat, $k) === $compare_value) {
                        return true;
                }
 
-               self::getApp()->setConfigValue($cat, $k, $value);
+               $this->configCache->set($cat, $k, $value);
 
                // manage array value
                $dbvalue = is_array($value) ? serialize($value) : $value;
@@ -75,9 +92,12 @@ class PreloadConfigAdapter extends BaseObject implements IConfigAdapter
                return true;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function delete($cat, $k)
        {
-               self::getApp()->deleteConfigValue($cat, $k);
+               $this->configCache->delete($cat, $k);
 
                $result = DBA::delete('config', ['cat' => $cat, 'k' => $k]);
 
index 6658efa3f67f571e2d1c93f60aa17bb67392a8ba..af97815adef38d159ab6ba44f27766d10ed7ca9d 100644 (file)
@@ -3,7 +3,6 @@
 namespace Friendica\Core\Config;
 
 use Exception;
-use Friendica\BaseObject;
 use Friendica\Database\DBA;
 
 /**
@@ -13,15 +12,31 @@ use Friendica\Database\DBA;
  *
  * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
-class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
+class PreloadPConfigAdapter implements IPConfigAdapter
 {
        private $config_loaded = false;
 
-       public function __construct($uid)
+       /**
+        * The config cache of this adapter
+        * @var IPConfigCache
+        */
+       private $configCache;
+
+       /**
+        * @param IPConfigCache $configCache The config cache of this adapter
+        * @param int           $uid    The UID of the current user
+        */
+       public function __construct(IPConfigCache $configCache, $uid = null)
        {
-               $this->load($uid, 'config');
+               $this->configCache = $configCache;
+               if (isset($uid)) {
+                       $this->load($uid, 'config');
+               }
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function load($uid, $family)
        {
                if ($this->config_loaded) {
@@ -34,13 +49,16 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
 
                $pconfigs = DBA::select('pconfig', ['cat', 'v', 'k'], ['uid' => $uid]);
                while ($pconfig = DBA::fetch($pconfigs)) {
-                       self::getApp()->setPConfigValue($uid, $pconfig['cat'], $pconfig['k'], $pconfig['v']);
+                       $this->configCache->setP($uid, $pconfig['cat'], $pconfig['k'], $pconfig['v']);
                }
                DBA::close($pconfigs);
 
                $this->config_loaded = true;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function get($uid, $cat, $k, $default_value = null, $refresh = false)
        {
                if (!$this->config_loaded) {
@@ -50,17 +68,18 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
                if ($refresh) {
                        $config = DBA::selectFirst('pconfig', ['v'], ['uid' => $uid, 'cat' => $cat, 'k' => $k]);
                        if (DBA::isResult($config)) {
-                               self::getApp()->setPConfigValue($uid, $cat, $k, $config['v']);
+                               $this->configCache->setP($uid, $cat, $k, $config['v']);
                        } else {
-                               self::getApp()->deletePConfigValue($uid, $cat, $k);
+                               $this->configCache->deleteP($uid, $cat, $k);
                        }
                }
 
-               $return = self::getApp()->getPConfigValue($uid, $cat, $k, $default_value);
-
-               return $return;
+               return $this->configCache->getP($uid, $cat, $k, $default_value);;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function set($uid, $cat, $k, $value)
        {
                if (!$this->config_loaded) {
@@ -71,11 +90,11 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
                // The exception are array values.
                $compare_value = !is_array($value) ? (string)$value : $value;
 
-               if (self::getApp()->getPConfigValue($uid, $cat, $k) === $compare_value) {
+               if ($this->configCache->getP($uid, $cat, $k) === $compare_value) {
                        return true;
                }
 
-               self::getApp()->setPConfigValue($uid, $cat, $k, $value);
+               $this->configCache->setP($uid, $cat, $k, $value);
 
                // manage array value
                $dbvalue = is_array($value) ? serialize($value) : $value;
@@ -88,13 +107,16 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter
                return true;
        }
 
+       /**
+        * {@inheritdoc}
+        */
        public function delete($uid, $cat, $k)
        {
                if (!$this->config_loaded) {
                        $this->load($uid, $cat);
                }
 
-               self::getApp()->deletePConfigValue($uid, $cat, $k);
+               $this->configCache->deleteP($uid, $cat, $k);
 
                $result = DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $k]);
 
index c38dab9806b5d22a21dadcac9fc01ac73bb7e072..da078545e3eb0dd4c52c98ab0f329ca83fc1dd59 100644 (file)
@@ -100,10 +100,10 @@ HELP;
                                }
                        }
 
-                       $db_host = $a->getConfigValue('database', 'hostname');
-                       $db_user = $a->getConfigValue('database', 'username');
-                       $db_pass = $a->getConfigValue('database', 'password');
-                       $db_data = $a->getConfigValue('database', 'database');
+                       $db_host = $a->getConfig()->get('database', 'hostname');
+                       $db_user = $a->getConfig()->get('database', 'username');
+                       $db_pass = $a->getConfig()->get('database', 'password');
+                       $db_data = $a->getConfig()->get('database', 'database');
                } else {
                        // Creating config file
                        $this->out("Creating config file...\n");
@@ -158,7 +158,7 @@ HELP;
 
                $installer->resetChecks();
 
-               if (!$installer->installDatabase()) {
+               if (!$installer->installDatabase($a->getBasePath())) {
                        $errorMessage = $this->extractErrors($installer->getChecks());
                        throw new RuntimeException($errorMessage);
                }
index ce367fffbf748785c4f81dbc1c46ef341d4bdfc5..b1c3df54e024fc59738c259c9cddf0b54327292b 100644 (file)
@@ -113,7 +113,7 @@ HELP;
 
                        if (is_array($value)) {
                                foreach ($value as $k => $v) {
-                                       $this->out("{$cat}.{$key}[{$k}] => " . $v);
+                                       $this->out("{$cat}.{$key}[{$k}] => " . (is_array($v) ? implode(', ', $v) : $v));
                                }
                        } else {
                                $this->out("{$cat}.{$key} => " . $value);
@@ -124,12 +124,13 @@ HELP;
                        $cat = $this->getArgument(0);
                        Core\Config::load($cat);
 
-                       if (!is_null($a->config[$cat])) {
+                       if ($a->getConfig()->get($cat) !== null) {
                                $this->out("[{$cat}]");
-                               foreach ($a->config[$cat] as $key => $value) {
+                               $catVal = $a->getConfig()->get($cat);
+                               foreach ($catVal as $key => $value) {
                                        if (is_array($value)) {
                                                foreach ($value as $k => $v) {
-                                                       $this->out("{$key}[{$k}] => " . $v);
+                                                       $this->out("{$key}[{$k}] => " . (is_array($v) ? implode(', ', $v) : $v));
                                                }
                                        } else {
                                                $this->out("{$key} => " . $value);
@@ -147,12 +148,13 @@ HELP;
                                $this->out('Warning: The JIT (Just In Time) Config adapter doesn\'t support loading the entire configuration, showing file config only');
                        }
 
-                       foreach ($a->config as $cat => $section) {
+                       $config = $a->getConfig()->getAll();
+                       foreach ($config as $cat => $section) {
                                if (is_array($section)) {
                                        foreach ($section as $key => $value) {
                                                if (is_array($value)) {
                                                        foreach ($value as $k => $v) {
-                                                               $this->out("{$cat}.{$key}[{$k}] => " . $v);
+                                                               $this->out("{$cat}.{$key}[{$k}] => " . (is_array($v) ? implode(', ', $v) : $v));
                                                        }
                                                } else {
                                                        $this->out("{$cat}.{$key} => " . $value);
index 724feea5e44f947e2178ef47915bc22ce257360c..1ec108d2e61cfd2f0d5d2fc07502b733ba3843b3 100644 (file)
@@ -61,17 +61,19 @@ HELP;
 
                Core\Config::load();
 
+               $a = get_app();
+
                switch ($this->getArgument(0)) {
                        case "dryrun":
-                               $output = DBStructure::update(true, false);
+                               $output = DBStructure::update($a->getBasePath(), true, false);
                                break;
                        case "update":
                                $force = $this->getOption(['f', 'force'], false);
-                               $output = Update::run($force, true, false);
+                               $output = Update::run($a->getBasePath(), $force, true, false);
                                break;
                        case "dumpsql":
                                ob_start();
-                               DBStructure::printStructure();
+                               DBStructure::printStructure($a->getBasePath());
                                $output = ob_get_clean();
                                break;
                        case "toinnodb":
index 17ed231f978f1d3a0e365bf738c84e472483ffc1..103d0fef7e68062928cdfd79100234a8dfd0187d 100644 (file)
@@ -2,8 +2,8 @@
 
 namespace Friendica\Core\Console;
 
-use Friendica\Core\L10n;
 use Friendica\Core\Config;
+use Friendica\Core\L10n;
 use Friendica\Core\Update;
 
 /**
@@ -56,7 +56,7 @@ HELP;
                }
 
                echo L10n::t('Check for pending update actions.') . "\n";
-               Update::run(true, true, false);
+               Update::run($a->getBasePath(), true, true, false);
                echo L10n::t('Done.') . "\n";
 
                echo L10n::t('Execute pending post updates.') . "\n";
index 82357b475397ded28ae9e41ff5794cdea5af970a..32ba6ded35186878bea79e9bf8cac456c8444172 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace Friendica\Core\Console;
 
+use Friendica\BaseObject;
+
 /**
  * Tired of chasing typos and finding them after a commit.
  * Run this and quickly see if we've got any parse errors in our application files.
@@ -41,9 +43,7 @@ HELP;
                        throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');
                }
 
-               $a = \get_app();
-
-               $php_path = $a->getConfigValue('config', 'php_path', 'php');
+               $php_path = BaseObject::getApp()->getConfig()->get('config', 'php_path', 'php');
 
                if ($this->getOption('v')) {
                        $this->out('Directory: src');
index a487aec78b34ee24053c53c58d2b6e46c7999f80..7e79f29f153dd6efe81efc50993c19106c916032 100644 (file)
@@ -168,12 +168,14 @@ class Installer
        /***
         * Installs the DB-Scheme for Friendica
         *
+        * @param string $basePath The base path of this application
+        *
         * @return bool true if the installation was successful, otherwise false
         * @throws Exception
         */
-       public function installDatabase()
+       public function installDatabase($basePath)
        {
-               $result = DBStructure::update(false, true, true);
+               $result = DBStructure::update($basePath, false, true, true);
 
                if ($result) {
                        $txt = L10n::t('You may need to import the file "database.sql" manually using phpmyadmin or mysql.') . EOL;
index a8788d1f45bf1400b9e96a125c10c28bc9891394..6f18fb5bec7dcf63416c4112cec7c2bf307b89f1 100644 (file)
@@ -11,6 +11,21 @@ use Friendica\Util\DateTimeFormat;
  */
 class DatabaseLockDriver extends AbstractLockDriver
 {
+       /**
+        * The current ID of the process
+        *
+        * @var int
+        */
+       private $pid;
+
+       /**
+        * @param null|int $pid The Id of the current process (null means determine automatically)
+        */
+       public function __construct($pid = null)
+       {
+               $this->pid = isset($pid) ? $pid : getmypid();
+       }
+
        /**
         * (@inheritdoc)
         */
@@ -26,16 +41,16 @@ class DatabaseLockDriver extends AbstractLockDriver
                        if (DBA::isResult($lock)) {
                                if ($lock['locked']) {
                                        // We want to lock something that was already locked by us? So we got the lock.
-                                       if ($lock['pid'] == getmypid()) {
+                                       if ($lock['pid'] == $this->pid) {
                                                $got_lock = true;
                                        }
                                }
                                if (!$lock['locked']) {
-                                       DBA::update('locks', ['locked' => true, 'pid' => getmypid(), 'expires' => DateTimeFormat::utc('now + ' . $ttl . 'seconds')], ['name' => $key]);
+                                       DBA::update('locks', ['locked' => true, 'pid' => $this->pid, 'expires' => DateTimeFormat::utc('now + ' . $ttl . 'seconds')], ['name' => $key]);
                                        $got_lock = true;
                                }
                        } else {
-                               DBA::insert('locks', ['name' => $key, 'locked' => true, 'pid' => getmypid(), 'expires' => DateTimeFormat::utc('now + ' . $ttl . 'seconds')]);
+                               DBA::insert('locks', ['name' => $key, 'locked' => true, 'pid' => $this->pid, 'expires' => DateTimeFormat::utc('now + ' . $ttl . 'seconds')]);
                                $got_lock = true;
                                $this->markAcquire($key);
                        }
@@ -55,7 +70,7 @@ class DatabaseLockDriver extends AbstractLockDriver
         */
        public function releaseLock($key)
        {
-               DBA::delete('locks', ['name' => $key, 'pid' => getmypid()]);
+               DBA::delete('locks', ['name' => $key, 'pid' => $this->pid]);
 
                $this->markRelease($key);
 
@@ -67,7 +82,7 @@ class DatabaseLockDriver extends AbstractLockDriver
         */
        public function releaseAll()
        {
-               DBA::delete('locks', ['pid' => getmypid()]);
+               DBA::delete('locks', ['pid' => $this->pid]);
 
                $this->acquiredLocks = [];
        }
index 277a0916417aa562bf260b7f62dad1e7a9c626ef..6b8112796f557f00dea156a9c22fef3993097584 100644 (file)
@@ -5,8 +5,8 @@
 namespace Friendica\Core;
 
 use Friendica\BaseObject;
+use Friendica\Factory\LoggerFactory;
 use Friendica\Network\HTTPException\InternalServerErrorException;
-use Friendica\Util\LoggerFactory;
 use Psr\Log\LoggerInterface;
 use Psr\Log\LogLevel;
 
index 584318adbc65a4c0efa1368940d1d1961f15e649..df024f0f3426dfa84abc665789066a1c6427316a 100644 (file)
@@ -8,9 +8,6 @@
  */
 namespace Friendica\Core;
 
-use Friendica\App;
-use Friendica\BaseObject;
-
 /**
  * @brief Management of user configuration storage
  * Note:
@@ -18,52 +15,55 @@ use Friendica\BaseObject;
  * The PConfig::get() functions return boolean false for keys that are unset,
  * and this could lead to subtle bugs.
  */
-class PConfig extends BaseObject
+class PConfig
 {
        /**
-        * @var \Friendica\Core\Config\IPConfigAdapter
+        * @var Config\IPConfigAdapter
         */
-       private static $adapter = null;
+       private static $adapter;
 
-       public static function init($uid)
-       {
-               $a = self::getApp();
+       /**
+        * @var Config\IPConfigCache
+        */
+       private static $cache;
 
-               // Database isn't ready or populated yet
-               if (!$a->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return;
-               }
+       /**
+        * Initialize the config with only the cache
+        *
+        * @param Config\IPConfigCache $cache  The configuration cache
+        */
+       public static function init(Config\IPConfigCache $cache)
+       {
+               self::$cache  = $cache;
+       }
 
-               if ($a->getConfigValue('system', 'config_adapter') == 'preload') {
-                       self::$adapter = new Config\PreloadPConfigAdapter($uid);
-               } else {
-                       self::$adapter = new Config\JITPConfigAdapter();
-               }
+       /**
+        * Add the adapter for DB-backend
+        *
+        * @param Config\IPConfigAdapter $adapter
+        */
+       public static function setAdapter(Config\IPConfigAdapter $adapter)
+       {
+               self::$adapter = $adapter;
        }
 
        /**
         * @brief Loads all configuration values of a user's config family into a cached storage.
         *
-        * All configuration values of the given user are stored in global cache
-        * which is available under the global variable $a->config[$uid].
+        * All configuration values of the given user are stored with the $uid in
+        * the cache ( @see IPConfigCache )
         *
         * @param string $uid    The user_id
         * @param string $family The category of the configuration value
         *
         * @return void
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function load($uid, $family)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
+               if (!isset(self::$adapter)) {
                        return;
                }
 
-               if (empty(self::$adapter)) {
-                       self::init($uid);
-               }
-
                self::$adapter->load($uid, $family);
        }
 
@@ -72,7 +72,8 @@ class PConfig extends BaseObject
         * ($family) and a key.
         *
         * Get a particular user's config value from the given category ($family)
-        * and the $key from a cached storage in $a->config[$uid].
+        * and the $key with the $uid from a cached storage either from the self::$adapter
+        * (@see IConfigAdapter ) or from the static::$cache (@see IConfigCache ).
         *
         * @param string  $uid           The user_id
         * @param string  $family        The category of the configuration value
@@ -81,17 +82,11 @@ class PConfig extends BaseObject
         * @param boolean $refresh       optional, If true the config is loaded from the db and not from the cache (default: false)
         *
         * @return mixed Stored value or null if it does not exist
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function get($uid, $family, $key, $default_value = null, $refresh = false)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return;
-               }
-
-               if (empty(self::$adapter)) {
-                       self::init($uid);
+               if (!isset(self::$adapter)) {
+                       return self::$cache->getP($uid, $family, $key, $default_value);
                }
 
                return self::$adapter->get($uid, $family, $key, $default_value, $refresh);
@@ -111,17 +106,11 @@ class PConfig extends BaseObject
         * @param mixed  $value  The value to store
         *
         * @return bool Operation success
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function set($uid, $family, $key, $value)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return false;
-               }
-
-               if (empty(self::$adapter)) {
-                       self::init($uid);
+               if (!isset(self::$adapter)) {
+                       return self::$cache->setP($uid, $family, $key, $value);
                }
 
                return self::$adapter->set($uid, $family, $key, $value);
@@ -130,25 +119,20 @@ class PConfig extends BaseObject
        /**
         * @brief Deletes the given key from the users's configuration.
         *
-        * Removes the configured value from the stored cache in $a->config[$uid]
-        * and removes it from the database.
+        * Removes the configured value from the stored cache in self::$config
+        * (@see ConfigCache ) and removes it from the database (@see IConfigAdapter )
+        * with the given $uid.
         *
         * @param string $uid    The user_id
         * @param string $family The category of the configuration value
         * @param string $key    The configuration key to delete
         *
         * @return mixed
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        public static function delete($uid, $family, $key)
        {
-               // Database isn't ready or populated yet
-               if (!self::getApp()->getMode()->has(App\Mode::DBCONFIGAVAILABLE)) {
-                       return false;
-               }
-
-               if (empty(self::$adapter)) {
-                       self::init($uid);
+               if (!isset(self::$adapter)) {
+                       return self::$cache->deleteP($uid, $family, $key);
                }
 
                return self::$adapter->delete($uid, $family, $key);
index ba3d03e6229f283e3d0d7250366869f144e8caeb..f0ed08357359f5cc75f1d3a77652085e35ca657e 100644 (file)
@@ -286,6 +286,61 @@ class System extends BaseObject
                exit();
        }
 
+       /**
+        * @brief Returns the system user that is executing the script
+        *
+        * This mostly returns something like "www-data".
+        *
+        * @return string system username
+        */
+       public static function getUser()
+       {
+               if (!function_exists('posix_getpwuid') || !function_exists('posix_geteuid')) {
+                       return '';
+               }
+
+               $processUser = posix_getpwuid(posix_geteuid());
+               return $processUser['name'];
+       }
+
+       /**
+        * @brief Checks if a given directory is usable for the system
+        *
+        * @param      $directory
+        * @param bool $check_writable
+        *
+        * @return boolean the directory is usable
+        */
+       public static function isDirectoryUsable($directory, $check_writable = true)
+       {
+               if ($directory == '') {
+                       Logger::log('Directory is empty. This shouldn\'t happen.', Logger::DEBUG);
+                       return false;
+               }
+
+               if (!file_exists($directory)) {
+                       Logger::log('Path "' . $directory . '" does not exist for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               if (is_file($directory)) {
+                       Logger::log('Path "' . $directory . '" is a file for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               if (!is_dir($directory)) {
+                       Logger::log('Path "' . $directory . '" is not a directory for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               if ($check_writable && !is_writable($directory)) {
+                       Logger::log('Path "' . $directory . '" is not writable for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               return true;
+       }
+
        /// @todo Move the following functions from boot.php
        /*
        function killme()
index 368f5f55cc777bb28ab38f8fa440116ff50bfafa..5df0675cdaeb46cd7520468d693e79f349b034c2 100644 (file)
@@ -14,10 +14,11 @@ class Update
        /**
         * @brief Function to check if the Database structure needs an update.
         *
+        * @param string $basePath The base path of this application
         * @param boolean $via_worker boolean Is the check run via the worker?
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function check($via_worker)
+       public static function check($basePath, $via_worker)
        {
                if (!DBA::connected()) {
                        return;
@@ -38,7 +39,7 @@ class Update
                if ($build < DB_UPDATE_VERSION) {
                        // When we cannot execute the database update via the worker, we will do it directly
                        if (!Worker::add(PRIORITY_CRITICAL, 'DBUpdate') && $via_worker) {
-                               self::run();
+                               self::run($basePath);
                        }
                }
        }
@@ -46,14 +47,15 @@ class Update
        /**
         * Automatic database updates
         *
-        * @param bool $force    Force the Update-Check even if the lock is set
-        * @param bool $verbose  Run the Update-Check verbose
-        * @param bool $sendMail Sends a Mail to the administrator in case of success/failure
+        * @param string $basePath The base path of this application
+        * @param bool $force      Force the Update-Check even if the lock is set
+        * @param bool $verbose    Run the Update-Check verbose
+        * @param bool $sendMail   Sends a Mail to the administrator in case of success/failure
         *
         * @return string Empty string if the update is successful, error messages otherwise
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function run($force = false, $verbose = false, $sendMail = true)
+       public static function run($basePath, $force = false, $verbose = false, $sendMail = true)
        {
                // In force mode, we release the dbupdate lock first
                // Necessary in case of an stuck update
@@ -91,7 +93,7 @@ class Update
                                        }
 
                                        // update the structure in one call
-                                       $retval = DBStructure::update($verbose, true);
+                                       $retval = DBStructure::update($basePath, $verbose, true);
                                        if ($retval) {
                                                if ($sendMail) {
                                                        self::updateFailed(
@@ -125,7 +127,7 @@ class Update
                                }
                        }
                } elseif ($force) {
-                       DBStructure::update($verbose, true);
+                       DBStructure::update($basePath, $verbose, true);
                }
 
                return '';
index 00b22c78858c0b06c34ca643174b251fca5a5240..cd1627244337d99a8d2594b93139447aea2d9964 100644 (file)
@@ -657,6 +657,19 @@ class Worker
 
                        $processlist = '';
 
+                       if (Config::get('system', 'worker_jpm')) {
+                               $intervals = [1, 10, 60];
+                               $jobs_per_minute = [];
+                               foreach ($intervals as $interval) {
+                                       $jobs = DBA::p("SELECT COUNT(*) AS `jobs` FROM `workerqueue` WHERE `done` AND `executed` > UTC_TIMESTAMP() - INTERVAL ".intval($interval)." MINUTE");
+                                       if ($job = DBA::fetch($jobs)) {
+                                               $jobs_per_minute[$interval] = number_format($job['jobs'] / $interval, 0);
+                                       }
+                                       DBA::close($jobs);
+                               }
+                               $processlist = ' - jpm: '.implode('/', $jobs_per_minute);
+                       }
+
                        if (Config::get('system', 'worker_debug')) {
                                // Create a list of queue entries grouped by their priority
                                $listitem = [];
@@ -686,16 +699,7 @@ class Worker
                                }
                                DBA::close($entries);
 
-                               $intervals = [1, 10, 60];
-                               $jobs_per_minute = [];
-                               foreach ($intervals as $interval) {
-                                       $jobs = DBA::p("SELECT COUNT(*) AS `jobs` FROM `workerqueue` WHERE `done` AND `executed` > UTC_TIMESTAMP() - INTERVAL ".intval($interval)." MINUTE");
-                                       if ($job = DBA::fetch($jobs)) {
-                                               $jobs_per_minute[$interval] = number_format($job['jobs'] / $interval, 0);
-                                       }
-                                       DBA::close($jobs);
-                               }
-                               $processlist = ' - jpm: '.implode('/', $jobs_per_minute).' ('.implode(', ', $listitem).')';
+                               $processlist .= ' ('.implode(', ', $listitem).')';
                        }
 
                        $entries = self::totalEntries();
index e14d94ce04fc8cb5acb7e8fae7fb6965a66ece8d..d2a739e9313aa07b9be4aaf948bab6398c1930e2 100644 (file)
@@ -2,10 +2,7 @@
 
 namespace Friendica\Database;
 
-// Do not use Core\Config in this class at risk of infinite loop.
-// Please use App->getConfigVariable() instead.
-//use Friendica\Core\Config;
-
+use Friendica\Core\Config\IConfigCache;
 use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Util\DateTimeFormat;
@@ -34,6 +31,10 @@ class DBA
 
        public static $connected = false;
 
+       /**
+        * @var IConfigCache
+        */
+       private static $configCache;
        private static $server_info = '';
        private static $connection;
        private static $driver;
@@ -49,13 +50,14 @@ class DBA
        private static $db_name = '';
        private static $db_charset = '';
 
-       public static function connect($serveraddr, $user, $pass, $db, $charset = null)
+       public static function connect($configCache, $serveraddr, $user, $pass, $db, $charset = null)
        {
                if (!is_null(self::$connection) && self::connected()) {
                        return true;
                }
 
                // We are storing these values for being able to perform a reconnect
+               self::$configCache = $configCache;
                self::$db_serveraddr = $serveraddr;
                self::$db_user = $user;
                self::$db_pass = $pass;
@@ -156,7 +158,7 @@ class DBA
        public static function reconnect() {
                self::disconnect();
 
-               $ret = self::connect(self::$db_serveraddr, self::$db_user, self::$db_pass, self::$db_name, self::$db_charset);
+               $ret = self::connect(self::$configCache, self::$db_serveraddr, self::$db_user, self::$db_pass, self::$db_name, self::$db_charset);
                return $ret;
        }
 
@@ -210,9 +212,8 @@ class DBA
         * @throws \Exception
         */
        private static function logIndex($query) {
-               $a = \get_app();
 
-               if (!$a->getConfigVariable('system', 'db_log_index')) {
+               if (!self::$configCache->get('system', 'db_log_index')) {
                        return;
                }
 
@@ -231,18 +232,18 @@ class DBA
                        return;
                }
 
-               $watchlist = explode(',', $a->getConfigVariable('system', 'db_log_index_watch'));
-               $blacklist = explode(',', $a->getConfigVariable('system', 'db_log_index_blacklist'));
+               $watchlist = explode(',', self::$configCache->get('system', 'db_log_index_watch'));
+               $blacklist = explode(',', self::$configCache->get('system', 'db_log_index_blacklist'));
 
                while ($row = self::fetch($r)) {
-                       if ((intval($a->getConfigVariable('system', 'db_loglimit_index')) > 0)) {
+                       if ((intval(self::$configCache->get('system', 'db_loglimit_index')) > 0)) {
                                $log = (in_array($row['key'], $watchlist) &&
-                                       ($row['rows'] >= intval($a->getConfigVariable('system', 'db_loglimit_index'))));
+                                       ($row['rows'] >= intval(self::$configCache->get('system', 'db_loglimit_index'))));
                        } else {
                                $log = false;
                        }
 
-                       if ((intval($a->getConfigVariable('system', 'db_loglimit_index_high')) > 0) && ($row['rows'] >= intval($a->getConfigVariable('system', 'db_loglimit_index_high')))) {
+                       if ((intval(self::$configCache->get('system', 'db_loglimit_index_high')) > 0) && ($row['rows'] >= intval(self::$configCache->get('system', 'db_loglimit_index_high')))) {
                                $log = true;
                        }
 
@@ -252,7 +253,7 @@ class DBA
 
                        if ($log) {
                                $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
-                               @file_put_contents($a->getConfigVariable('system', 'db_log_index'), DateTimeFormat::utcNow()."\t".
+                               @file_put_contents(self::$configCache->get('system', 'db_log_index'), DateTimeFormat::utcNow()."\t".
                                                $row['key']."\t".$row['rows']."\t".$row['Extra']."\t".
                                                basename($backtrace[1]["file"])."\t".
                                                $backtrace[1]["line"]."\t".$backtrace[2]["function"]."\t".
@@ -422,7 +423,7 @@ class DBA
 
                $orig_sql = $sql;
 
-               if ($a->getConfigValue('system', 'db_callstack')) {
+               if (self::$configCache->get('system', 'db_callstack') !== null) {
                        $sql = "/*".System::callstack()." */ ".$sql;
                }
 
@@ -583,15 +584,15 @@ class DBA
 
                $a->saveTimestamp($stamp1, 'database');
 
-               if ($a->getConfigValue('system', 'db_log')) {
+               if (self::$configCache->get('system', 'db_log')) {
                        $stamp2 = microtime(true);
                        $duration = (float)($stamp2 - $stamp1);
 
-                       if (($duration > $a->getConfigValue('system', 'db_loglimit'))) {
+                       if (($duration > self::$configCache->get('system', 'db_loglimit'))) {
                                $duration = round($duration, 3);
                                $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
 
-                               @file_put_contents($a->getConfigValue('system', 'db_log'), DateTimeFormat::utcNow()."\t".$duration."\t".
+                               @file_put_contents(self::$configCache->get('system', 'db_log'), DateTimeFormat::utcNow()."\t".$duration."\t".
                                                basename($backtrace[1]["file"])."\t".
                                                $backtrace[1]["line"]."\t".$backtrace[2]["function"]."\t".
                                                substr(self::replaceParameters($sql, $args), 0, 2000)."\n", FILE_APPEND);
@@ -1030,7 +1031,7 @@ class DBA
         * This process must only be started once, since the value is cached.
         */
        private static function buildRelationData() {
-               $definition = DBStructure::definition();
+               $definition = DBStructure::definition(self::$configCache->get('system', 'basepath'));
 
                foreach ($definition AS $table => $structure) {
                        foreach ($structure['fields'] AS $field => $field_struct) {
index 7d52e60caec13d53a0b0b811754932c76ca121ed..75a5c86241fc63497e3c9fa4f31a73b07eed5733 100644 (file)
@@ -74,9 +74,9 @@ class DBStructure
                return L10n::t('Errors encountered performing database changes: ') . $message . EOL;
        }
 
-       public static function printStructure()
+       public static function printStructure($basePath)
        {
-               $database = self::definition(false);
+               $database = self::definition($basePath, false);
 
                echo "-- ------------------------------------------\n";
                echo "-- " . FRIENDICA_PLATFORM . " " . FRIENDICA_VERSION . " (" . FRIENDICA_CODENAME, ")\n";
@@ -98,15 +98,15 @@ class DBStructure
         *
         * @see config/dbstructure.config.php
         * @param boolean $with_addons_structure Whether to tack on addons additional tables
+        * @param string  $basePath              The base path of this application
         * @return array
         * @throws Exception
         */
-       public static function definition($with_addons_structure = true)
+       public static function definition($basePath, $with_addons_structure = true)
        {
                if (!self::$definition) {
-                       $a = \Friendica\BaseObject::getApp();
 
-                       $filename = $a->getBasePath() . '/config/dbstructure.config.php';
+                       $filename = $basePath . '/config/dbstructure.config.php';
 
                        if (!is_readable($filename)) {
                                throw new Exception('Missing database structure config file config/dbstructure.config.php');
@@ -247,15 +247,16 @@ class DBStructure
        /**
         * Updates DB structure and returns eventual errors messages
         *
-        * @param bool  $verbose
-        * @param bool  $action     Whether to actually apply the update
-        * @param bool  $install    Is this the initial update during the installation?
-        * @param array $tables     An array of the database tables
-        * @param array $definition An array of the definition tables
+        * @param string $basePath   The base path of this application
+        * @param bool   $verbose
+        * @param bool   $action     Whether to actually apply the update
+        * @param bool   $install    Is this the initial update during the installation?
+        * @param array  $tables     An array of the database tables
+        * @param array  $definition An array of the definition tables
         * @return string Empty string if the update is successful, error messages otherwise
         * @throws Exception
         */
-       public static function update($verbose, $action, $install = false, array $tables = null, array $definition = null)
+       public static function update($basePath, $verbose, $action, $install = false, array $tables = null, array $definition = null)
        {
                if ($action && !$install) {
                        Config::set('system', 'maintenance', 1);
@@ -284,7 +285,7 @@ class DBStructure
 
                // Get the definition
                if (is_null($definition)) {
-                       $definition = self::definition();
+                       $definition = self::definition($basePath);
                }
 
                // MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements
diff --git a/src/Factory/ConfigFactory.php b/src/Factory/ConfigFactory.php
new file mode 100644 (file)
index 0000000..269daea
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+namespace Friendica\Factory;
+
+use Friendica\Core\Config;
+
+class ConfigFactory
+{
+       /**
+        * @param Config\ConfigCacheLoader $loader The Config Cache loader (INI/config/.htconfig)
+        *
+        * @return Config\ConfigCache
+        */
+       public static function createCache(Config\ConfigCacheLoader $loader)
+       {
+               $configCache = new Config\ConfigCache();
+               $loader->loadConfigFiles($configCache);
+
+               return $configCache;
+       }
+
+       /**
+        * @param string              $type   The adapter type
+        * @param Config\IConfigCache $config The config cache of this adapter
+        *
+        * @return Config\IConfigAdapter
+        */
+       public static function createConfig($type, Config\IConfigCache $config)
+       {
+               if ($type == 'preload') {
+                       return new Config\PreloadConfigAdapter($config);
+               } else {
+                       return new Config\JITConfigAdapter($config);
+               }
+       }
+
+       /**
+        * @param string               $type   The adapter type
+        * @param Config\IPConfigCache $config The config cache of this adapter
+        * @param int                  $uid    The UID of the current user
+        *
+        * @return Config\IPConfigAdapter
+        */
+       public static function createPConfig($type, Config\IPConfigCache $config, $uid = null)
+       {
+               if ($type == 'preload') {
+                       return new Config\PreloadPConfigAdapter($config, $uid);
+               } else {
+                       return new Config\JITPConfigAdapter($config);
+               }
+       }
+}
diff --git a/src/Factory/LoggerFactory.php b/src/Factory/LoggerFactory.php
new file mode 100644 (file)
index 0000000..751a635
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+
+namespace Friendica\Factory;
+
+use Friendica\Core\Config\ConfigCache;
+use Friendica\Network\HTTPException\InternalServerErrorException;
+use Friendica\Util\Logger\FriendicaDevelopHandler;
+use Friendica\Util\Logger\FriendicaIntrospectionProcessor;
+use Monolog;
+use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
+
+/**
+ * A logger factory
+ *
+ * Currently only Monolog is supported
+ */
+class LoggerFactory
+{
+       /**
+        * Creates a new PSR-3 compliant logger instances
+        *
+        * @param string      $channel The channel of the logger instance
+        * @param ConfigCache $config  The config
+        *
+        * @return LoggerInterface The PSR-3 compliant logger instance
+        */
+       public static function create($channel, ConfigCache $config = null)
+       {
+               $logger = new Monolog\Logger($channel);
+               $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
+               $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
+               $logger->pushProcessor(new Monolog\Processor\UidProcessor());
+               $logger->pushProcessor(new FriendicaIntrospectionProcessor(LogLevel::DEBUG, ['Friendica\\Core\\Logger']));
+
+               if (isset($config)) {
+                       $debugging = $config->get('system', 'debugging');
+                       $stream = $config->get('system', 'logfile');
+                       $level = $config->get('system', 'loglevel');
+
+                       if ($debugging) {
+                               static::addStreamHandler($logger, $stream, $level);
+                       }
+               }
+
+               return $logger;
+       }
+
+       /**
+        * Creates a new PSR-3 compliant develop logger
+        *
+        * If you want to debug only interactions from your IP or the IP of a remote server for federation debug,
+        * you'll use this logger instance for the duration of your work.
+        *
+        * It should never get filled during normal usage of Friendica
+        *
+        * @param string $channel      The channel of the logger instance
+        * @param string $developerIp  The IP of the developer who wants to use the logger
+        *
+        * @return LoggerInterface The PSR-3 compliant logger instance
+        */
+       public static function createDev($channel, $developerIp)
+       {
+               $logger = new Monolog\Logger($channel);
+               $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
+               $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
+               $logger->pushProcessor(new Monolog\Processor\UidProcessor());
+               $logger->pushProcessor(new FriendicaIntrospectionProcessor(LogLevel::DEBUG, ['Friendica\\Core\\Logger']));
+
+
+               $logger->pushHandler(new FriendicaDevelopHandler($developerIp));
+
+               return $logger;
+       }
+
+       /**
+        * Adding a handler to a given logger instance
+        *
+        * @param LoggerInterface $logger  The logger instance
+        * @param mixed           $stream  The stream which handles the logger output
+        * @param string          $level   The level, for which this handler at least should handle logging
+        *
+        * @return void
+        *
+        * @throws InternalServerErrorException if the logger is incompatible to the logger factory
+        * @throws \Exception in case of general failures
+        */
+       public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE)
+       {
+               if ($logger instanceof Monolog\Logger) {
+                       $loglevel = Monolog\Logger::toMonologLevel($level);
+
+                       // fallback to notice if an invalid loglevel is set
+                       if (!is_int($loglevel)) {
+                               $loglevel = LogLevel::NOTICE;
+                       }
+                       $fileHandler = new Monolog\Handler\StreamHandler($stream, $loglevel);
+
+                       $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
+                       $fileHandler->setFormatter($formatter);
+
+                       $logger->pushHandler($fileHandler);
+               } else {
+                       throw new InternalServerErrorException('Logger instance incompatible for MonologFactory');
+               }
+       }
+
+       /**
+        * This method enables the test mode of a given logger
+        *
+        * @param LoggerInterface $logger The logger
+        *
+        * @return Monolog\Handler\TestHandler the Handling for tests
+        *
+        * @throws InternalServerErrorException if the logger is incompatible to the logger factory
+        */
+       public static function enableTest($logger)
+       {
+               if ($logger instanceof Monolog\Logger) {
+                       // disable every handler so far
+                       $logger->pushHandler(new Monolog\Handler\NullHandler());
+
+                       // enable the test handler
+                       $fileHandler = new Monolog\Handler\TestHandler();
+                       $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
+                       $fileHandler->setFormatter($formatter);
+
+                       $logger->pushHandler($fileHandler);
+
+                       return $fileHandler;
+               } else {
+                       throw new InternalServerErrorException('Logger instance incompatible for MonologFactory');
+               }
+       }
+}
index 7efb56f95a03a87fcd38dc5823aa73b5de2a5883..d65e67fe3e6a8c34adec09eb7ffca2091f8e7f2c 100644 (file)
@@ -7,15 +7,15 @@
 namespace Friendica\Model;
 
 use Friendica\BaseObject;
-use Friendica\Core\System;
 use Friendica\Core\StorageManager;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
 use Friendica\Model\Storage\IStorage;
 use Friendica\Object\Image;
-use Friendica\Util\Security;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Mimetype;
+use Friendica\Util\Security;
 
 /**
  * Class to handle attach dabatase table
@@ -31,7 +31,7 @@ class Attach extends BaseObject
         */
        private static function getFields()
        {
-               $allfields = DBStructure::definition(false);
+               $allfields = DBStructure::definition(self::getApp()->getBasePath(), false);
                $fields = array_keys($allfields['attach']['fields']);
                array_splice($fields, array_search('data', $fields), 1);
                return $fields;
index bb7053187ec4b612c42a5d048d80e09e21eb074f..6a5ff01d596c32faa5ff6cd67ea42ffb5483d6cb 100644 (file)
@@ -1535,17 +1535,10 @@ class Item extends BaseObject
                                        $item['private'] = 0;
                                }
 
-                               // If its a post from myself then tag the thread as "mention"
-                               Logger::log("Checking if parent ".$parent_id." has to be tagged as mention for user ".$item['uid'], Logger::DEBUG);
-                               $user = DBA::selectFirst('user', ['nickname'], ['uid' => $item['uid']]);
-                               if (DBA::isResult($user)) {
-                                       $self = Strings::normaliseLink(System::baseUrl() . '/profile/' . $user['nickname']);
-                                       $self_id = Contact::getIdForURL($self, 0, true);
-                                       Logger::log("'myself' is ".$self_id." for parent ".$parent_id." checking against ".$item['author-id']." and ".$item['owner-id'], Logger::DEBUG);
-                                       if (($item['author-id'] == $self_id) || ($item['owner-id'] == $self_id)) {
-                                               DBA::update('thread', ['mention' => true], ['iid' => $parent_id]);
-                                               Logger::log("tagged thread ".$parent_id." as mention for user ".$self, Logger::DEBUG);
-                                       }
+                               // If its a post that originated here then tag the thread as "mention"
+                               if ($item['origin'] && $item['uid']) {
+                                       DBA::update('thread', ['mention' => true], ['iid' => $parent_id]);
+                                       Logger::log('tagged thread ' . $parent_id . ' as mention for user ' . $item['uid'], Logger::DEBUG);
                                }
                        } else {
                                /*
@@ -2386,24 +2379,23 @@ class Item extends BaseObject
 
        public static function setHashtags(&$item)
        {
+               $tags = BBCode::getTags($item["body"]);
+
+               // No hashtags?
+               if (!count($tags)) {
+                       return false;
+               }
 
                // What happens in [code], stays in [code]!
                // escape the # and the [
                // hint: we will also get in trouble with #tags, when we want markdown in posts -> ### Headline 3
-               $item["body"] = preg_replace_callback("/\[code(.*)\](.*?)\[\/code\]/ism",
+               $item["body"] = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism",
                        function ($match) {
                                // we truly ESCape all # and [ to prevent gettin weird tags in [code] blocks
                                $find = ['#', '['];
                                $replace = [chr(27).'sharp', chr(27).'leftsquarebracket'];
-                               return ("[code" . str_replace($find, $replace, $match[1]) . "]" . $match[2] . "[/code]");
+                               return ("[code" . $match[1] . "]" . str_replace($find, $replace, $match[2]) . "[/code]");
                        }, $item["body"]);
-               
-               $tags = BBCode::getTags($item["body"]);
-
-               // No hashtags?
-               if (!count($tags)) {
-                       return false;
-               }
 
                // This sorting is important when there are hashtags that are part of other hashtags
                // Otherwise there could be problems with hashtags like #test and #test2
@@ -2463,12 +2455,12 @@ class Item extends BaseObject
 
                // Remember! What happens in [code], stays in [code]
                // roleback the # and [
-               $item["body"] = preg_replace_callback("/\[code(.*)\](.*?)\[\/code\]/ism",
+               $item["body"] = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism",
                        function ($match) {
                                // we truly unESCape all sharp and leftsquarebracket
                                $find = [chr(27).'sharp', chr(27).'leftsquarebracket'];
                                $replace = ['#', '['];
-                               return ("[code" . str_replace($find, $replace, $match[1]) . "]" . $match[2] . "[/code]");
+                               return ("[code" . $match[1] . "]" . str_replace($find, $replace, $match[2]) . "[/code]");
                        }, $item["body"]);
        }
 
index 6b110f6afb6d9bff503e13a4f3b64ef37d0fa69d..59ca4c90a40a3f6742c41cd0883babf94d13288f 100644 (file)
@@ -891,7 +891,7 @@ class User
                Worker::add(PRIORITY_LOW, 'Directory', $self['url']);
 
                // Remove the user relevant data
-               Worker::add(PRIORITY_LOW, 'RemoveUser', $uid);
+               Worker::add(PRIORITY_NEGLIGIBLE, 'RemoveUser', $uid);
 
                return true;
        }
index d1a35c1518597eff9e631ec1a15a6818f9ac8981..327e59422c9f97083b34ee6cf5133b3c2d03600c 100644 (file)
@@ -103,7 +103,7 @@ class Install extends BaseModule
                                        return;
                                }
 
-                               self::$installer->installDatabase();
+                               self::$installer->installDatabase($a->getBasePath());
 
                                break;
                }
diff --git a/src/Module/Profile.php b/src/Module/Profile.php
new file mode 100644 (file)
index 0000000..e43554a
--- /dev/null
@@ -0,0 +1,353 @@
+<?php\r
+\r
+namespace Friendica\Module;\r
+\r
+use Friendica\BaseModule;\r
+use Friendica\Content\Nav;\r
+use Friendica\Content\Pager;\r
+use Friendica\Content\Widget;\r
+use Friendica\Core\ACL;\r
+use Friendica\Core\Config;\r
+use Friendica\Core\Hook;\r
+use Friendica\Core\L10n;\r
+use Friendica\Core\PConfig;\r
+use Friendica\Core\System;\r
+use Friendica\Database\DBA;\r
+use Friendica\Model\Contact as ContactModel;\r
+use Friendica\Model\Group;\r
+use Friendica\Model\Item;\r
+use Friendica\Model\Profile AS ProfileModel;\r
+use Friendica\Model\User;\r
+use Friendica\Protocol\ActivityPub;\r
+use Friendica\Protocol\DFRN;\r
+use Friendica\Util\DateTimeFormat;\r
+use Friendica\Util\Security;\r
+use Friendica\Util\Strings;\r
+use Friendica\Util\XML;\r
+\r
+require_once 'boot.php';\r
+\r
+class Profile extends BaseModule\r
+{\r
+       public static $which = '';\r
+       public static $profile = 0;\r
+\r
+       public static function init()\r
+       {\r
+               $a = self::getApp();\r
+\r
+               if ($a->argc < 2) {\r
+                       System::httpExit(400);\r
+               }\r
+\r
+               self::$which = filter_var($a->argv[1], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_BACKTICK);\r
+\r
+               if (local_user() && $a->argc > 2 && $a->argv[2] === 'view') {\r
+                       self::$which = $a->user['nickname'];\r
+                       self::$profile = filter_var($a->argv[1], FILTER_SANITIZE_NUMBER_INT);\r
+               } else {\r
+                       DFRN::autoRedir($a, self::$which);\r
+               }\r
+       }\r
+\r
+       public static function rawContent()\r
+       {\r
+               if (ActivityPub::isRequest()) {\r
+                       $user = DBA::selectFirst('user', ['uid'], ['nickname' => self::$which]);\r
+                       if (DBA::isResult($user)) {\r
+                               $data = ActivityPub\Transmitter::getProfile($user['uid']);\r
+                               System::jsonExit($data, 'application/activity+json');\r
+                       } elseif (DBA::exists('userd', ['username' => self::$which])) {\r
+                               // Known deleted user\r
+                               System::httpExit(410);\r
+                       } else {\r
+                               // Unknown user\r
+                               System::httpExit(404);\r
+                       }\r
+               }\r
+       }\r
+\r
+       public static function content($update = 0)\r
+       {\r
+               $a = self::getApp();\r
+\r
+               if (!$update) {\r
+                       ProfileModel::load($a, self::$which, self::$profile);\r
+\r
+                       $blocked   = !local_user() && !remote_user() && Config::get('system', 'block_public');\r
+                       $userblock = !local_user() && !remote_user() && $a->profile['hidewall'];\r
+\r
+                       if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) {\r
+                               $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';\r
+                       }\r
+\r
+                       if (!empty($a->profile['openidserver'])) {\r
+                               $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\n";\r
+                       }\r
+\r
+                       if (!empty($a->profile['openid'])) {\r
+                               $delegate = strstr($a->profile['openid'], '://') ? $a->profile['openid'] : 'https://' . $a->profile['openid'];\r
+                               $a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\n";\r
+                       }\r
+\r
+                       // site block\r
+                       if (!$blocked && !$userblock) {\r
+                               $keywords = str_replace(['#', ',', ' ', ',,'], ['', ' ', ',', ','], defaults($a->profile, 'pub_keywords', ''));\r
+                               if (strlen($keywords)) {\r
+                                       $a->page['htmlhead'] .= '<meta name="keywords" content="' . $keywords . '" />' . "\n";\r
+                               }\r
+                       }\r
+\r
+                       $a->page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($a->profile['net-publish'] ? 'true' : 'false') . '" />' . "\n";\r
+                       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/dfrn_poll/' . self::$which . '" title="DFRN: ' . L10n::t('%s\'s timeline', $a->profile['username']) . '"/>' . "\n";\r
+                       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . self::$which . '/" title="' . L10n::t('%s\'s posts', $a->profile['username']) . '"/>' . "\n";\r
+                       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . self::$which . '/comments" title="' . L10n::t('%s\'s comments', $a->profile['username']) . '"/>' . "\n";\r
+                       $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . System::baseUrl() . '/feed/' . self::$which . '/activity" title="' . L10n::t('%s\'s timeline', $a->profile['username']) . '"/>' . "\n";\r
+                       $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->getHostName() . ($a->getURLPath() ? '/' . $a->getURLPath() : ''));\r
+                       $a->page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . System::baseUrl() . '/xrd/?uri=' . $uri . '" />' . "\n";\r
+                       header('Link: <' . System::baseUrl() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);\r
+\r
+                       $dfrn_pages = ['request', 'confirm', 'notify', 'poll'];\r
+                       foreach ($dfrn_pages as $dfrn) {\r
+                               $a->page['htmlhead'] .= '<link rel="dfrn-' . $dfrn . '" href="' . System::baseUrl() . '/dfrn_' . $dfrn . '/' . self::$which . '" />' . "\n";\r
+                       }\r
+                       $a->page['htmlhead'] .= '<link rel="dfrn-poco" href="' . System::baseUrl() . '/poco/' . self::$which . '" />' . "\n";\r
+               }\r
+\r
+               $category = $datequery = $datequery2 = '';\r
+\r
+               if ($a->argc > 2) {\r
+                       for ($x = 2; $x < $a->argc; $x ++) {\r
+                               if (is_a_date_arg($a->argv[$x])) {\r
+                                       if ($datequery) {\r
+                                               $datequery2 = Strings::escapeHtml($a->argv[$x]);\r
+                                       } else {\r
+                                               $datequery = Strings::escapeHtml($a->argv[$x]);\r
+                                       }\r
+                               } else {\r
+                                       $category = $a->argv[$x];\r
+                               }\r
+                       }\r
+               }\r
+\r
+               if (empty($category)) {\r
+                       $category = defaults($_GET, 'category', '');\r
+               }\r
+\r
+               $hashtags = defaults($_GET, 'tag', '');\r
+\r
+               if (Config::get('system', 'block_public') && !local_user() && !remote_user()) {\r
+                       return Login::form();\r
+               }\r
+\r
+               $groups = [];\r
+               $remote_cid = null;\r
+\r
+               $o = '';\r
+\r
+               if ($update) {\r
+                       // Ensure we've got a profile owner if updating.\r
+                       $a->profile['profile_uid'] = $update;\r
+               } elseif ($a->profile['profile_uid'] == local_user()) {\r
+                       Nav::setSelected('home');\r
+               }\r
+\r
+               $remote_contact = ContactModel::isFollower(remote_user(), $a->profile['profile_uid']);\r
+               $is_owner = local_user() == $a->profile['profile_uid'];\r
+               $last_updated_key = "profile:" . $a->profile['profile_uid'] . ":" . local_user() . ":" . remote_user();\r
+\r
+               if ($remote_contact) {\r
+                       $cdata = ContactModel::getPublicAndUserContacID(remote_user(), $a->profile['profile_uid']);\r
+                       if (!empty($cdata['user'])) {\r
+                               $groups = Group::getIdsByContactId($cdata['user']);\r
+                               $remote_cid = $cdata['user'];\r
+                       }\r
+               }\r
+\r
+               if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact) {\r
+                       notice(L10n::t('Access to this profile has been restricted.') . EOL);\r
+                       return '';\r
+               }\r
+\r
+               if (!$update) {\r
+                       $tab = false;\r
+                       if (!empty($_GET['tab'])) {\r
+                               $tab = Strings::escapeTags(trim($_GET['tab']));\r
+                       }\r
+\r
+                       $o .= ProfileModel::getTabs($a, $is_owner, $a->profile['nickname']);\r
+\r
+                       if ($tab === 'profile') {\r
+                               $o .= ProfileModel::getAdvanced($a);\r
+                               Hook::callAll('profile_advanced', $o);\r
+                               return $o;\r
+                       }\r
+\r
+                       $o .= Widget::commonFriendsVisitor($a->profile['profile_uid']);\r
+\r
+                       $commpage = $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY;\r
+                       $commvisitor = $commpage && $remote_contact;\r
+\r
+                       $a->page['aside'] .= posted_date_widget(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], $a->profile['profile_uid'], true);\r
+                       $a->page['aside'] .= Widget::categories(System::baseUrl(true) . '/profile/' . $a->profile['nickname'], (!empty($category) ? XML::escape($category) : ''));\r
+                       $a->page['aside'] .= Widget::tagCloud();\r
+\r
+                       if (Security::canWriteToUserWall($a->profile['profile_uid'])) {\r
+                               $x = [\r
+                                       'is_owner' => $is_owner,\r
+                                       'allow_location' => ($is_owner || $commvisitor) && $a->profile['allow_location'],\r
+                                       'default_location' => $is_owner ? $a->user['default-location'] : '',\r
+                                       'nickname' => $a->profile['nickname'],\r
+                                       'lockstate' => is_array($a->user)\r
+                                       && (strlen($a->user['allow_cid'])\r
+                                               || strlen($a->user['allow_gid'])\r
+                                               || strlen($a->user['deny_cid'])\r
+                                               || strlen($a->user['deny_gid'])\r
+                                       ) ? 'lock' : 'unlock',\r
+                                       'acl' => $is_owner ? ACL::getFullSelectorHTML($a->user, true) : '',\r
+                                       'bang' => '',\r
+                                       'visitor' => $is_owner || $commvisitor ? 'block' : 'none',\r
+                                       'profile_uid' => $a->profile['profile_uid'],\r
+                               ];\r
+\r
+                               $o .= status_editor($a, $x);\r
+                       }\r
+               }\r
+\r
+               // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups\r
+               $sql_extra = Item::getPermissionsSQLByUserId($a->profile['profile_uid'], $remote_contact, $groups, $remote_cid);\r
+               $sql_extra2 = '';\r
+\r
+               if ($update) {\r
+                       $last_updated = (defaults($_SESSION['last_updated'], $last_updated_key, 0));\r
+\r
+                       // If the page user is the owner of the page we should query for unseen\r
+                       // items. Otherwise use a timestamp of the last succesful update request.\r
+                       if ($is_owner || !$last_updated) {\r
+                               $sql_extra4 = " AND `item`.`unseen`";\r
+                       } else {\r
+                               $gmupdate = gmdate(DateTimeFormat::MYSQL, $last_updated);\r
+                               $sql_extra4 = " AND `item`.`received` > '" . $gmupdate . "'";\r
+                       }\r
+\r
+                       $items_stmt = DBA::p(\r
+                               "SELECT DISTINCT(`parent-uri`) AS `uri`, `item`.`created`\r
+                               FROM `item`\r
+                               INNER JOIN `contact`\r
+                               ON `contact`.`id` = `item`.`contact-id`\r
+                                       AND NOT `contact`.`blocked`\r
+                                       AND NOT `contact`.`pending`\r
+                               WHERE `item`.`uid` = ?\r
+                                       AND `item`.`visible`\r
+                                       AND     (NOT `item`.`deleted` OR `item`.`gravity` = ?)\r
+                                       AND NOT `item`.`moderated`\r
+                                       AND `item`.`wall`\r
+                                       $sql_extra4\r
+                                       $sql_extra\r
+                               ORDER BY `item`.`created` DESC",\r
+                               $a->profile['profile_uid'],\r
+                               GRAVITY_ACTIVITY\r
+                       );\r
+\r
+                       if (!DBA::isResult($items_stmt)) {\r
+                               return '';\r
+                       }\r
+\r
+                       $pager = new Pager($a->query_string);\r
+               } else {\r
+                       $sql_post_table = "";\r
+\r
+                       if (!empty($category)) {\r
+                               $sql_post_table = sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",\r
+                                       DBA::escape(Strings::protectSprintf($category)), intval(TERM_OBJ_POST), intval(TERM_CATEGORY), intval($a->profile['profile_uid']));\r
+                       }\r
+\r
+                       if (!empty($hashtags)) {\r
+                               $sql_post_table .= sprintf("INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ",\r
+                                       DBA::escape(Strings::protectSprintf($hashtags)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval($a->profile['profile_uid']));\r
+                       }\r
+\r
+                       if (!empty($datequery)) {\r
+                               $sql_extra2 .= Strings::protectSprintf(sprintf(" AND `thread`.`created` <= '%s' ", DBA::escape(DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get()))));\r
+                       }\r
+                       if (!empty($datequery2)) {\r
+                               $sql_extra2 .= Strings::protectSprintf(sprintf(" AND `thread`.`created` >= '%s' ", DBA::escape(DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get()))));\r
+                       }\r
+\r
+                       // Does the profile page belong to a forum?\r
+                       // If not then we can improve the performance with an additional condition\r
+                       $condition = ['uid' => $a->profile['profile_uid'], 'page-flags' => [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]];\r
+                       if (!DBA::exists('user', $condition)) {\r
+                               $sql_extra3 = sprintf(" AND `thread`.`contact-id` = %d ", intval(intval($a->profile['contact_id'])));\r
+                       } else {\r
+                               $sql_extra3 = "";\r
+                       }\r
+\r
+                       //  check if we serve a mobile device and get the user settings\r
+                       //  accordingly\r
+                       if ($a->is_mobile) {\r
+                               $itemspage_network = PConfig::get(local_user(), 'system', 'itemspage_mobile_network', 10);\r
+                       } else {\r
+                               $itemspage_network = PConfig::get(local_user(), 'system', 'itemspage_network', 20);\r
+                       }\r
+\r
+                       //  now that we have the user settings, see if the theme forces\r
+                       //  a maximum item number which is lower then the user choice\r
+                       if (($a->force_max_items > 0) && ($a->force_max_items < $itemspage_network)) {\r
+                               $itemspage_network = $a->force_max_items;\r
+                       }\r
+\r
+                       $pager = new Pager($a->query_string, $itemspage_network);\r
+\r
+                       $pager_sql = sprintf(" LIMIT %d, %d ", $pager->getStart(), $pager->getItemsPerPage());\r
+\r
+                       $items_stmt = DBA::p(\r
+                               "SELECT `item`.`uri`\r
+                               FROM `thread`\r
+                               STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`\r
+                               $sql_post_table\r
+                               STRAIGHT_JOIN `contact`\r
+                               ON `contact`.`id` = `thread`.`contact-id`\r
+                                       AND NOT `contact`.`blocked`\r
+                                       AND NOT `contact`.`pending`\r
+                               WHERE `thread`.`uid` = ?\r
+                                       AND `thread`.`visible`\r
+                                       AND NOT `thread`.`deleted`\r
+                                       AND NOT `thread`.`moderated`\r
+                                       AND `thread`.`wall`\r
+                                       $sql_extra3\r
+                                       $sql_extra\r
+                                       $sql_extra2\r
+                               ORDER BY `thread`.`created` DESC\r
+                               $pager_sql",\r
+                               $a->profile['profile_uid']\r
+                       );\r
+               }\r
+\r
+               // Set a time stamp for this page. We will make use of it when we\r
+               // search for new items (update routine)\r
+               $_SESSION['last_updated'][$last_updated_key] = time();\r
+\r
+               if ($is_owner && !$update && !Config::get('theme', 'hide_eventlist')) {\r
+                       $o .= ProfileModel::getBirthdays();\r
+                       $o .= ProfileModel::getEventsReminderHTML();\r
+               }\r
+\r
+               if ($is_owner) {\r
+                       $unseen = Item::exists(['wall' => true, 'unseen' => true, 'uid' => local_user()]);\r
+                       if ($unseen) {\r
+                               Item::update(['unseen' => false], ['wall' => true, 'unseen' => true, 'uid' => local_user()]);\r
+                       }\r
+               }\r
+\r
+               $items = DBA::toArray($items_stmt);\r
+\r
+               $o .= conversation($a, $items, $pager, 'profile', $update, false, 'created', $a->profile['profile_uid']);\r
+\r
+               if (!$update) {\r
+                       $o .= $pager->renderMinimal(count($items));\r
+               }\r
+\r
+               return $o;\r
+       }\r
+}\r
index 1a0607bf1223877dbbdfc0d5a07b047ed29a0a51..deec3cf2dcb22f3bb0d51b6ee7a08c9492bf1caa 100644 (file)
@@ -342,7 +342,7 @@ class Probe
 
                $ap_profile = ActivityPub::probeProfile($uri);
 
-               if (!empty($ap_profile) && (defaults($data, 'network', '') != Protocol::DFRN)) {
+               if (!empty($ap_profile) && empty($network) && (defaults($data, 'network', '') != Protocol::DFRN)) {
                        $data = $ap_profile;
                }
 
index 3ac5c77ee9545a46674bc4dacd88242688e541ef..6e2483c6a0c42e368c09dc06a2e0a641c3afb8da 100644 (file)
@@ -775,19 +775,30 @@ class Post extends BaseObject
         */
        private function getDefaultText()
        {
+               $a = self::getApp();
+
+               if (!local_user() || empty($a->profile['addr'])) {
+                       return;
+               }
+
                $item = Item::selectFirst(['author-addr'], ['id' => $this->getId()]);
                if (!DBA::isResult($item) || empty($item['author-addr'])) {
                        // Should not happen
                        return '';
                }
 
-               $text = '@' . $item['author-addr'] . ' ';
+               if ($item['author-addr'] != $a->profile['addr']) {
+                       $text = '@' . $item['author-addr'] . ' ';
+               } else {
+                       $text = '';
+               }
 
                $terms = Term::tagArrayFromItemId($this->getId(), TERM_MENTION);
 
                foreach ($terms as $term) {
                        $profile = Contact::getDetailsByURL($term['url']);
-                       if (!empty($profile['addr']) && !strstr($text, $profile['addr'])) {
+                       if (!empty($profile['addr']) && ($profile['contact-type'] != Contact::TYPE_COMMUNITY) &&
+                               ($profile['addr'] != $a->profile['addr']) && !strstr($text, $profile['addr'])) {
                                $text .= '@' . $profile['addr'] . ' ';
                        }
                }
index ea4d5ba411c1123eae0d4c199c972d2839c694ee..fd6d70a42a2d01fac09c0501a2da35a57a03d13b 100644 (file)
@@ -329,6 +329,15 @@ class Processor
                        $item_id = Item::insert($item);
                        Logger::log('Storing for user ' . $item['uid'] . ': ' . $item_id);
                }
+
+               if (!$item['private'] && ($item['gravity'] == GRAVITY_PARENT) && ($item['author-link'] != $item['owner-link'])) {
+                       $author = APContact::getByURL($item['owner-link'], false);
+                       // We send automatic follow requests for reshared messages. (We don't need though for forum posts)
+                       if ($author['type'] != 'Group') {
+                               Logger::log('Send follow request for ' . $item['uri'] . ' to ' . $item['author-link'], Logger::DEBUG);
+                               ActivityPub\Transmitter::sendFollowObject($item['uri'], $item['author-link']);
+                       }
+               }
        }
 
        /**
index 0ab2619412b16967d18dad05ff500c79bb5300c5..e0ee1f0f90e71ac6a200580dcddb1e0d13aefd66 100644 (file)
@@ -208,7 +208,8 @@ class Receiver
                        }
                        // We had been able to retrieve the object data - so we can trust the source
                        $trust_source = true;
-               } elseif (in_array($type, ['as:Like', 'as:Dislike'])) {
+               } elseif (in_array($type, ['as:Like', 'as:Dislike']) ||
+                       (($type == 'as:Follow') && in_array($object_type, self::CONTENT_TYPES))) {
                        // Create a mostly empty array out of the activity data (instead of the object).
                        // This way we later don't have to check for the existence of ech individual array element.
                        $object_data = self::processObject($activity);
@@ -394,6 +395,9 @@ class Receiver
                        case 'as:Follow':
                                if (in_array($object_data['object_type'], self::ACCOUNT_TYPES)) {
                                        ActivityPub\Processor::followUser($object_data);
+                               } elseif (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
+                                       $object_data['reply-to-id'] = $object_data['object_id'];
+                                       ActivityPub\Processor::createActivity($object_data, ACTIVITY_FOLLOW);
                                }
                                break;
 
index 41239b3afdfa76c8f6a2b4950d8dd12eb8b998d6..f5953e7c5fcdab1e5bc54aba944b48d0440d53ee 100644 (file)
@@ -6,6 +6,7 @@ namespace Friendica\Protocol\ActivityPub;
 
 use Friendica\BaseObject;
 use Friendica\Database\DBA;
+use Friendica\Core\Config;
 use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Util\HTTPSignature;
@@ -325,15 +326,21 @@ class Transmitter
                        }
                }
 
-               // Will be activated in a later step
-               // $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS];
-
-               // For now only send to these contacts:
-               $networks = [Protocol::ACTIVITYPUB, Protocol::OSTATUS];
+               if (Config::get('debug', 'total_ap_delivery')) {
+                       // Will be activated in a later step
+                       $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS];
+               } else {
+                       // For now only send to these contacts:
+                       $networks = [Protocol::ACTIVITYPUB, Protocol::OSTATUS];
+               }
 
                $data = ['to' => [], 'cc' => [], 'bcc' => []];
 
-               $actor_profile = APContact::getByURL($item['author-link']);
+               if ($item['gravity'] == GRAVITY_PARENT) {
+                       $actor_profile = APContact::getByURL($item['owner-link']);
+               } else {
+                       $actor_profile = APContact::getByURL($item['author-link']);
+               }
 
                $terms = Term::tagArrayFromItemId($item['id'], TERM_MENTION);
 
@@ -341,9 +348,6 @@ class Transmitter
                        $data = array_merge($data, self::fetchPermissionBlockFromConversation($item));
 
                        $data['to'][] = ActivityPub::PUBLIC_COLLECTION;
-                       if (!empty($actor_profile['followers'])) {
-                               $data['cc'][] = $actor_profile['followers'];
-                       }
 
                        foreach ($terms as $term) {
                                $profile = APContact::getByURL($term['url'], false);
@@ -378,6 +382,29 @@ class Transmitter
 
                $parents = Item::select(['id', 'author-link', 'owner-link', 'gravity', 'uri'], ['parent' => $item['parent']]);
                while ($parent = Item::fetch($parents)) {
+                       if ($parent['gravity'] == GRAVITY_PARENT) {
+                               $profile = APContact::getByURL($parent['owner-link'], false);
+                               if (!empty($profile)) {
+                                       if ($item['gravity'] != GRAVITY_PARENT) {
+                                               // Comments to forums are directed to the forum
+                                               // But comments to forums aren't directed to the followers collection
+                                               if ($profile['type'] == 'Group') {
+                                                       $data['to'][] = $profile['url'];
+                                               } else {
+                                                       $data['cc'][] = $profile['url'];
+                                                       if (!$item['private']) {
+                                                               $data['cc'][] = $actor_profile['followers'];
+                                                       }
+                                               }
+                                       } else {
+                                               // Public thread parent post always are directed to the followes
+                                               if (!$item['private']) {
+                                                       $data['cc'][] = $actor_profile['followers'];
+                                               }
+                                       }
+                               }
+                       }
+
                        // Don't include data from future posts
                        if ($parent['id'] >= $last_id) {
                                continue;
@@ -385,21 +412,12 @@ class Transmitter
 
                        $profile = APContact::getByURL($parent['author-link'], false);
                        if (!empty($profile)) {
-                               if ($parent['uri'] == $item['thr-parent']) {
+                               if (($profile['type'] == 'Group') || ($parent['uri'] == $item['thr-parent'])) {
                                        $data['to'][] = $profile['url'];
                                } else {
                                        $data['cc'][] = $profile['url'];
                                }
                        }
-
-                       if ($item['gravity'] != GRAVITY_PARENT) {
-                               continue;
-                       }
-
-                       $profile = APContact::getByURL($parent['owner-link'], false);
-                       if (!empty($profile)) {
-                               $data['cc'][] = $profile['url'];
-                       }
                }
                DBA::close($parents);
 
@@ -458,11 +476,13 @@ class Transmitter
        {
                $inboxes = [];
 
-               // Will be activated in a later step
-               // $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS];
-
-               // For now only send to these contacts:
-               $networks = [Protocol::ACTIVITYPUB, Protocol::OSTATUS];
+               if (Config::get('debug', 'total_ap_delivery')) {
+                       // Will be activated in a later step
+                       $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS];
+               } else {
+                       // For now only send to these contacts:
+                       $networks = [Protocol::ACTIVITYPUB, Protocol::OSTATUS];
+               }
 
                $condition = ['uid' => $uid, 'network' => $networks, 'archive' => false, 'pending' => false];
 
@@ -586,6 +606,8 @@ class Transmitter
                        $type = 'Reject';
                } elseif ($item['verb'] == ACTIVITY_ATTENDMAYBE) {
                        $type = 'TentativeAccept';
+               } elseif ($item['verb'] == ACTIVITY_FOLLOW) {
+                       $type = 'Follow';
                } else {
                        $type = '';
                }
@@ -686,6 +708,8 @@ class Transmitter
                        $data['object'] = self::createNote($item);
                } elseif ($data['type'] == 'Announce') {
                        $data = self::createAnnounce($item, $data);
+               } elseif ($data['type'] == 'Follow') {
+                       $data['object'] = $item['parent-uri'];
                } elseif ($data['type'] == 'Undo') {
                        $data['object'] = self::createActivityFromItem($item_id, true);
                } else {
@@ -1054,8 +1078,9 @@ class Transmitter
         * Creates an announce object entry
         *
         * @param array $item
+        * @param array $data activity data
         *
-        * @return string with announced object url
+        * @return array with activity data
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
@@ -1259,6 +1284,48 @@ class Transmitter
                return HTTPSignature::transmit($signed, $profile['inbox'], $uid);
        }
 
+       /**
+        * Transmits a "follow object" activity to a target
+        * This is a preparation for sending automated "follow" requests when receiving "Announce" messages
+        *
+        * @param string  $object Object URL
+        * @param string  $target Target profile
+        * @param integer $uid    User ID
+        * @return bool
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
+        * @throws \Exception
+        */
+       public static function sendFollowObject($object, $target, $uid = 0)
+       {
+               $profile = APContact::getByURL($target);
+
+               if (empty($uid)) {
+                       // Fetch the list of administrators
+                       $admin_mail = explode(',', str_replace(' ', '', Config::get('config', 'admin_email')));
+
+                       // We need to use some user as a sender. It doesn't care who it will send. We will use an administrator account.
+                       $condition = ['verified' => true, 'blocked' => false, 'account_removed' => false, 'account_expired' => false, 'email' => $admin_mail];
+                       $first_user = DBA::selectFirst('user', ['uid'], $condition);
+                       $uid = $first_user['uid'];
+               }
+
+               $owner = User::getOwnerDataById($uid);
+
+               $data = ['@context' => ActivityPub::CONTEXT,
+                       'id' => System::baseUrl() . '/activity/' . System::createGUID(),
+                       'type' => 'Follow',
+                       'actor' => $owner['url'],
+                       'object' => $object,
+                       'instrument' => ['type' => 'Service', 'name' => BaseObject::getApp()->getUserAgent()],
+                       'to' => [$profile['url']]];
+
+               Logger::log('Sending follow ' . $object . ' to ' . $target . ' for user ' . $uid, Logger::DEBUG);
+
+               $signed = LDSignature::sign($data, $owner);
+               return HTTPSignature::transmit($signed, $profile['inbox'], $uid);
+       }
+
        /**
         * Transmit a message that the contact request had been accepted
         *
diff --git a/src/Util/BasePath.php b/src/Util/BasePath.php
new file mode 100644 (file)
index 0000000..a284983
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+namespace Friendica\Util;
+
+class BasePath
+{
+       /**
+        * @brief Returns the base filesystem path of the App
+        *
+        * It first checks for the internal variable, then for DOCUMENT_ROOT and
+        * finally for PWD
+        *
+        * @param string|null $basePath The default base path
+        * @param array       $server   server arguments
+        *
+        * @return string
+        *
+        * @throws \Exception if directory isn't usable
+        */
+       public static function create($basePath, $server = [])
+       {
+               if (!$basePath && !empty($server['DOCUMENT_ROOT'])) {
+                       $basePath = $server['DOCUMENT_ROOT'];
+               }
+
+               if (!$basePath && !empty($server['PWD'])) {
+                       $basePath = $server['PWD'];
+               }
+
+               return self::getRealPath($basePath);
+       }
+
+       /**
+        * @brief Returns a normalized file path
+        *
+        * This is a wrapper for the "realpath" function.
+        * That function cannot detect the real path when some folders aren't readable.
+        * Since this could happen with some hosters we need to handle this.
+        *
+        * @param string $path The path that is about to be normalized
+        * @return string normalized path - when possible
+        */
+       public static function getRealPath($path)
+       {
+               $normalized = realpath($path);
+
+               if (!is_bool($normalized)) {
+                       return $normalized;
+               } else {
+                       return $path;
+               }
+       }
+}
diff --git a/src/Util/LoggerFactory.php b/src/Util/LoggerFactory.php
deleted file mode 100644 (file)
index 4d3a287..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-namespace Friendica\Util;
-
-use Friendica\Network\HTTPException\InternalServerErrorException;
-use Friendica\Util\Logger\FriendicaDevelopHandler;
-use Friendica\Util\Logger\FriendicaIntrospectionProcessor;
-use Monolog;
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-
-/**
- * A logger factory
- *
- * Currently only Monolog is supported
- */
-class LoggerFactory
-{
-       /**
-        * Creates a new PSR-3 compliant logger instances
-        *
-        * @param string $channel The channel of the logger instance
-        *
-        * @return LoggerInterface The PSR-3 compliant logger instance
-        */
-       public static function create($channel)
-       {
-               $logger = new Monolog\Logger($channel);
-               $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
-               $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
-               $logger->pushProcessor(new Monolog\Processor\UidProcessor());
-               $logger->pushProcessor(new FriendicaIntrospectionProcessor(LogLevel::DEBUG, ['Friendica\\Core\\Logger']));
-
-               return $logger;
-       }
-
-       /**
-        * Creates a new PSR-3 compliant develop logger
-        *
-        * If you want to debug only interactions from your IP or the IP of a remote server for federation debug,
-        * you'll use this logger instance for the duration of your work.
-        *
-        * It should never get filled during normal usage of Friendica
-        *
-        * @param string $channel      The channel of the logger instance
-        * @param string $developerIp  The IP of the developer who wants to use the logger
-        *
-        * @return LoggerInterface The PSR-3 compliant logger instance
-        */
-       public static function createDev($channel, $developerIp)
-       {
-               $logger = new Monolog\Logger($channel);
-               $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
-               $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
-               $logger->pushProcessor(new Monolog\Processor\UidProcessor());
-               $logger->pushProcessor(new FriendicaIntrospectionProcessor(LogLevel::DEBUG, ['Friendica\\Core\\Logger']));
-
-
-               $logger->pushHandler(new FriendicaDevelopHandler($developerIp));
-
-               return $logger;
-       }
-
-       /**
-        * Adding a handler to a given logger instance
-        *
-        * @param LoggerInterface $logger  The logger instance
-        * @param mixed           $stream  The stream which handles the logger output
-        * @param string          $level   The level, for which this handler at least should handle logging
-        *
-        * @return void
-        *
-        * @throws InternalServerErrorException if the logger is incompatible to the logger factory
-        * @throws \Exception in case of general failures
-        */
-       public static function addStreamHandler($logger, $stream, $level = LogLevel::NOTICE)
-       {
-               if ($logger instanceof Monolog\Logger) {
-                       $loglevel = Monolog\Logger::toMonologLevel($level);
-
-                       // fallback to notice if an invalid loglevel is set
-                       if (!is_int($loglevel)) {
-                               $loglevel = LogLevel::NOTICE;
-                       }
-                       $fileHandler = new Monolog\Handler\StreamHandler($stream, $loglevel);
-
-                       $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
-                       $fileHandler->setFormatter($formatter);
-
-                       $logger->pushHandler($fileHandler);
-               } else {
-                       throw new InternalServerErrorException('Logger instance incompatible for MonologFactory');
-               }
-       }
-
-       /**
-        * This method enables the test mode of a given logger
-        *
-        * @param LoggerInterface $logger The logger
-        *
-        * @return Monolog\Handler\TestHandler the Handling for tests
-        *
-        * @throws InternalServerErrorException if the logger is incompatible to the logger factory
-        */
-       public static function enableTest($logger)
-       {
-               if ($logger instanceof Monolog\Logger) {
-                       // disable every handler so far
-                       $logger->pushHandler(new Monolog\Handler\NullHandler());
-
-                       // enable the test handler
-                       $fileHandler = new Monolog\Handler\TestHandler();
-                       $formatter = new Monolog\Formatter\LineFormatter("%datetime% %channel% [%level_name%]: %message% %context% %extra%\n");
-                       $fileHandler->setFormatter($formatter);
-
-                       $logger->pushHandler($fileHandler);
-
-                       return $fileHandler;
-               } else {
-                       throw new InternalServerErrorException('Logger instance incompatible for MonologFactory');
-               }
-       }
-}
index 48c7e7ce6a20ec22fa3bb5389aea01970aeb00c8..05bace14679d3da1718d75b2df8f62066e79e110 100644 (file)
@@ -5,12 +5,13 @@
  */
 namespace Friendica\Worker;
 
+use Friendica\BaseObject;
 use Friendica\Core\Update;
 
-class DBUpdate
+class DBUpdate extends BaseObject
 {
        public static function execute()
        {
-               Update::run();
+               Update::run(self::getApp()->getBasePath());
        }
 }
index 4d63d436fecb92ea6de610312f61caf1c14e1178..681fd13c8f57317d76716a002a0f7bca13584a82 100644 (file)
@@ -11,6 +11,7 @@ use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
+use Friendica\Model\APContact;
 use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
 use Friendica\Model\Group;
@@ -418,12 +419,17 @@ class Notifier
                        $condition = ['network' => Protocol::DFRN, 'uid' => $owner['uid'], 'blocked' => false,
                                'pending' => false, 'archive' => false, 'rel' => [Contact::FOLLOWER, Contact::FRIEND]];
 
-                       $r2 = DBA::toArray(DBA::select('contact', ['id', 'name', 'network'], $condition));
+                       $r2 = DBA::toArray(DBA::select('contact', ['id', 'url', 'name', 'network'], $condition));
 
                        $r = array_merge($r2, $relay_list);
 
                        if (DBA::isResult($r)) {
                                foreach ($r as $rr) {
+                                       if (Config::get('debug', 'total_ap_delivery') && !empty($rr['url']) && ($rr['network'] == Protocol::DFRN) && !empty(APContact::getByURL($rr['url'], false))) {
+                                               Logger::log('Skipping contact ' . $rr['url'] . ' since it will be delivered via AP', Logger::DEBUG);
+                                               continue;
+                                       }
+
                                        $conversants[] = $rr['id'];
 
                                        $delivery_queue_count++;
@@ -447,6 +453,11 @@ class Notifier
 
                // delivery loop
                while ($contact = DBA::fetch($delivery_contacts_stmt)) {
+                       if (Config::get('debug', 'total_ap_delivery') && ($contact['network'] == Protocol::DFRN) && !empty(APContact::getByURL($contact['url'], false))) {
+                               Logger::log('Skipping contact ' . $contact['url'] . ' since it will be delivered via AP', Logger::DEBUG);
+                               continue;
+                       }
+
                        // Don't deliver to Diaspora if it already had been done as batch delivery
                        if (($contact['network'] == Protocol::DIASPORA) && $batch_delivery) {
                                Logger::log('Already delivered  id ' . $target_id . ' via batch to ' . json_encode($contact), Logger::DEBUG);
index 2cb76dcad9ab39a013987026d6c4248bbe2afa56..79af5b5468a9495f86d390ceda58d1afdc4d64eb 100644 (file)
@@ -5,7 +5,10 @@
 
 namespace Friendica\Test;
 
+use Friendica\Core\Config;
 use Friendica\Database\DBA;
+use Friendica\Factory;
+use Friendica\Util\BasePath;
 use PHPUnit\DbUnit\DataSet\YamlDataSet;
 use PHPUnit\DbUnit\TestCaseTrait;
 use PHPUnit_Extensions_Database_DB_IDatabaseConnection;
@@ -36,7 +39,13 @@ abstract class DatabaseTest extends MockedTest
                        $this->markTestSkipped('Please set the MYSQL_* environment variables to your test database credentials.');
                }
 
-               DBA::connect(getenv('MYSQL_HOST'),
+               $basedir = BasePath::create(dirname(__DIR__));
+               $configLoader = new Config\ConfigCacheLoader($basedir);
+               $config = Factory\ConfigFactory::createCache($configLoader);
+
+               DBA::connect(
+                       $config,
+                       getenv('MYSQL_HOST'),
                        getenv('MYSQL_USERNAME'),
                        getenv('MYSQL_PASSWORD'),
                        getenv('MYSQL_DATABASE'));
index c6793218446cc168bc01e9628b822e98609ff108..290191cba125b6e40fca01d5d1a8f279e9e459da 100644 (file)
@@ -4,6 +4,7 @@ namespace Friendica\Test\Util;
 
 use Friendica\App;
 use Friendica\BaseObject;
+use Friendica\Core\Config\ConfigCache;
 use Friendica\Render\FriendicaSmartyEngine;
 use Mockery\MockInterface;
 use org\bovigo\vfs\vfsStreamDirectory;
@@ -24,8 +25,9 @@ trait AppMockTrait
         * Mock the App
         *
         * @param vfsStreamDirectory $root The root directory
+        * @param MockInterface|ConfigCache $config The config cache
         */
-       public function mockApp($root)
+       public function mockApp($root, $config)
        {
                $this->mockConfigGet('system', 'theme', 'testtheme');
 
@@ -35,22 +37,26 @@ trait AppMockTrait
                        ->shouldReceive('getBasePath')
                        ->andReturn($root->url());
 
-               $this->app
-                       ->shouldReceive('getConfigValue')
+               $config
+                       ->shouldReceive('get')
                        ->with('database', 'hostname')
                        ->andReturn(getenv('MYSQL_HOST'));
-               $this->app
-                       ->shouldReceive('getConfigValue')
+               $config
+                       ->shouldReceive('get')
                        ->with('database', 'username')
                        ->andReturn(getenv('MYSQL_USERNAME'));
-               $this->app
-                       ->shouldReceive('getConfigValue')
+               $config
+                       ->shouldReceive('get')
                        ->with('database', 'password')
                        ->andReturn(getenv('MYSQL_PASSWORD'));
-               $this->app
-                       ->shouldReceive('getConfigValue')
+               $config
+                       ->shouldReceive('get')
                        ->with('database', 'database')
                        ->andReturn(getenv('MYSQL_DATABASE'));
+               $this->app
+                       ->shouldReceive('getConfig')
+                       ->andReturn($config);
+
                $this->app
                        ->shouldReceive('getTemplateEngine')
                        ->andReturn(new FriendicaSmartyEngine());
index 2ee54adaa17e923397cc413f76b6e52b6513f242..296e3539496f225f1397686ed91212ced47ec449 100644 (file)
@@ -4,6 +4,11 @@ namespace Friendica\Test\Util;
 
 use Mockery\MockInterface;
 
+class DBAStub
+{
+       public static $connected = true;
+}
+
 /**
  * Trait to mock the DBA connection status
  */
@@ -14,6 +19,13 @@ trait DBAMockTrait
         */
        private $dbaMock;
 
+       private function checkMock()
+       {
+               if (!isset($this->dbaMock)) {
+                       $this->dbaMock = \Mockery::namedMock('Friendica\Database\DBA', 'Friendica\Test\Util\DBAStub');
+               }
+       }
+
        /**
         * Mocking DBA::connect()
         *
@@ -22,9 +34,7 @@ trait DBAMockTrait
         */
        public function mockConnect($return = true, $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                $this->dbaMock
                        ->shouldReceive('connect')
@@ -40,9 +50,7 @@ trait DBAMockTrait
         */
        public function mockConnected($return = true, $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                $this->dbaMock
                        ->shouldReceive('connected')
@@ -59,9 +67,7 @@ trait DBAMockTrait
         */
        public function mockFetchFirst($arg, $return = true, $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                $this->dbaMock
                        ->shouldReceive('fetchFirst')
@@ -70,6 +76,45 @@ trait DBAMockTrait
                        ->andReturn($return);
        }
 
+       /**
+        * Mocking each DBA::fetch() call of an statement
+        *
+        * @param array $stmt The result statement (array)
+        * @param null|int $times How often the method will get used
+        */
+       public function mockFetchLoop($stmt = [], $times = null)
+       {
+               $this->checkMock();
+
+               foreach ($stmt as $item) {
+                       $this->dbaMock
+                               ->shouldReceive('fetch')
+                               ->times($times)
+                               ->andReturn($item);
+               }
+
+               // The last mock call of a fetch (=> breaking the loop)
+               $this->dbaMock
+                       ->shouldReceive('fetch')
+                       ->times($times)
+                       ->andReturn(false);
+       }
+
+       /**
+        * Mocking DBA::close()
+        *
+        * @param array $return The return per fetch
+        * @param null|int $times How often the method will get used
+        */
+       public function mockDbaClose($return = [], $times = null)
+       {
+               $this->checkMock();
+
+               $this->dbaMock
+                       ->shouldReceive('close')
+                       ->times($times)
+                       ->andReturn($return);
+       }
 
        /**
         * Mocking DBA::select()
@@ -82,9 +127,7 @@ trait DBAMockTrait
         */
        public function mockSelect($tableName, $select = [], $where = [], $return = null, $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                $this->dbaMock
                        ->shouldReceive('select')
@@ -94,23 +137,102 @@ trait DBAMockTrait
        }
 
        /**
-        * Mocking DBA::selectFirst()
+        * Mocking DBA::delete()
         *
         * @param string $tableName The name of the table
-        * @param array $select The Select Array (Default is [])
         * @param array $where The Where Array (Default is [])
+        * @param bool $return The array to return (Default is true)
+        * @param null|int $times How often the method will get used
+        */
+       public function mockDBADelete($tableName, $where = [], $return = true, $times = null)
+       {
+               $this->checkMock();
+
+               $this->dbaMock
+                       ->shouldReceive('delete')
+                       ->with($tableName, $where)
+                       ->times($times)
+                       ->andReturn($return);
+       }
+
+       /**
+        * Mocking DBA::update()
+        *
+        * @param string $expTableName The name of the table
+        * @param array $expFields The Fields Array
+        * @param array $expCondition The Condition Array
+        * @param array $expOld_fields The Old Fieldnames (Default is [])
+        * @param bool $return true if the update was successful
+        * @param null|int $times How often the method will get used
+        */
+       public function mockDBAUpdate($expTableName, $expFields, $expCondition, $expOld_fields = [], $return = true, $times = null)
+       {
+               $this->checkMock();
+
+               $closure = function ($tableName, $fields, $condition, $old_fields = []) use ($expTableName, $expFields, $expCondition, $expOld_fields) {
+                       return
+                               $tableName == $expTableName &&
+                               $fields == $expFields &&
+                               $condition == $expCondition &&
+                               $old_fields == $expOld_fields;
+               };
+
+               $this->dbaMock
+                       ->shouldReceive('update')
+                       ->withArgs($closure)
+                       ->times($times)
+                       ->andReturn($return);
+       }
+
+       /**
+        * Mocking DBA::insert()
+        *
+        * @param string $expTableName    The name of the table
+        * @param array  $expParam        The Parameters Array
+        * @param bool   $expOnDuplUpdate Update on a duplicated entry
+        * @param bool   $return          True if the insert was successful
+        * @param null|int $times How often the method will get used
+        */
+       public function mockDBAInsert($expTableName, $expParam, $expOnDuplUpdate = false, $return = true, $times = null)
+       {
+               $this->checkMock();
+
+               $closure = function ($tableName, $param, $on_duplicate_update = false) use ($expTableName, $expParam, $expOnDuplUpdate) {
+                       return $tableName            == $expTableName
+                               && $param                == $expParam
+                               && $on_duplicate_update  == $expOnDuplUpdate;
+
+               };
+
+               $this->dbaMock
+                       ->shouldReceive('insert')
+                       ->withArgs($closure)
+                       ->times($times)
+                       ->andReturn($return);
+       }
+
+       /**
+        * Mocking DBA::selectFirst()
+        *
+        * @param string $expTableName The name of the table
+        * @param array $expSelect The Select Array (Default is [])
+        * @param array $expWhere The Where Array (Default is [])
         * @param array $return The array to return (Default is [])
         * @param null|int $times How often the method will get used
         */
-       public function mockSelectFirst($tableName, $select = [], $where = [], $return = [], $times = null)
+       public function mockSelectFirst($expTableName, $expSelect = [], $expWhere = [], $return = [], $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
+
+               $closure = function ($tableName, $select = [], $where = []) use ($expTableName, $expSelect, $expWhere) {
+                       return $tableName === $expTableName
+                               && $select === $expSelect
+                               && $where === $expWhere;
+               };
 
                $this->dbaMock
                        ->shouldReceive('selectFirst')
-                       ->with($tableName, $select, $where)
+                       ->withArgs($closure)
                        ->times($times)
                        ->andReturn($return);
        }
@@ -124,9 +246,7 @@ trait DBAMockTrait
         */
        public function mockIsResult($record, $return = true, $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                $this->dbaMock
                        ->shouldReceive('isResult')
@@ -144,9 +264,7 @@ trait DBAMockTrait
         */
        public function mockToArray($record = null, $return = [], $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                $this->dbaMock
                        ->shouldReceive('toArray')
@@ -155,7 +273,6 @@ trait DBAMockTrait
                        ->andReturn($return);
        }
 
-
        /**
         * Mocking DBA::p()
         *
@@ -165,9 +282,7 @@ trait DBAMockTrait
         */
        public function mockP($sql = null, $return = null, $times = null)
        {
-               if (!isset($this->dbaMock)) {
-                       $this->dbaMock = \Mockery::mock('alias:Friendica\Database\DBA');
-               }
+               $this->checkMock();
 
                if (!isset($sql)) {
                        $this->dbaMock
@@ -182,4 +297,38 @@ trait DBAMockTrait
                                ->andReturn($return);
                }
        }
+
+       /**
+        * Mocking DBA::lock()
+        *
+        * @param string $table The table to lock
+        * @param bool $return True, if the lock is set successful
+        * @param null|int $times How often the method will get used
+        */
+       public function mockDbaLock($table, $return = true, $times = null)
+       {
+               $this->checkMock();
+
+               $this->dbaMock
+                       ->shouldReceive('lock')
+                       ->with($table)
+                       ->times($times)
+                       ->andReturn($return);
+       }
+
+       /**
+        * Mocking DBA::unlock()
+        *
+        * @param bool $return True, if the lock is set successful
+        * @param null|int $times How often the method will get used
+        */
+       public function mockDbaUnlock( $return = true, $times = null)
+       {
+               $this->checkMock();
+
+               $this->dbaMock
+                       ->shouldReceive('unlock')
+                       ->times($times)
+                       ->andReturn($return);
+       }
 }
diff --git a/tests/Util/DateTimeFormatMockTrait.php b/tests/Util/DateTimeFormatMockTrait.php
new file mode 100644 (file)
index 0000000..1f1ad01
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+namespace Friendica\Test\Util;
+
+use Mockery\MockInterface;
+
+trait DateTimeFormatMockTrait
+{
+       /**
+        * @var MockInterface The mocking interface of Friendica\Database\DBA
+        */
+       private $dtfMock;
+
+       public function mockUtcNow($time, $times = null)
+       {
+               if (!isset($this->dtfMock)) {
+                       $this->dtfMock = \Mockery::mock('alias:Friendica\Util\DateTimeFormat');
+               }
+
+               $this->dtfMock
+                       ->shouldReceive('utcNow')
+                       ->andReturn($time)
+                       ->times($times);
+       }
+
+       public function mockUtc($input, $time, $times = null)
+       {
+               if (!isset($this->dtfMock)) {
+                       $this->dtfMock = \Mockery::mock('alias:Friendica\Util\DateTimeFormat');
+               }
+
+               $this->dtfMock
+                       ->shouldReceive('utc')
+                       ->with($input)
+                       ->andReturn($time)
+                       ->times($times);
+       }
+}
diff --git a/tests/Util/DbaCacheMockTrait.php b/tests/Util/DbaCacheMockTrait.php
new file mode 100644 (file)
index 0000000..87ab450
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+namespace Friendica\Test\Util;
+
+trait DbaCacheMockTrait
+{
+       use DBAMockTrait;
+       use DateTimeFormatMockTrait;
+
+       protected function mockDelete($key, $return = true, $times = null)
+       {
+               $this->mockDBADelete('cache', ['k' => $key], $return, $times);
+       }
+
+       protected function mockGet($key, $return = null, $time = null, $times = null)
+       {
+               if ($time === null) {
+                       $time = time();
+               }
+
+               $value = @serialize($return);
+
+               $this->mockSelectFirst('cache', ['v'], ['`k` = ? AND (`expires` >= ? OR `expires` = -1)', $key, $time], ['v' => $value], $times);
+               $this->mockIsResult(['v' => $value], isset($return), $times);
+       }
+
+       protected function mockSet($key, $value, $ttl = Cache::FIVE_MINUTES, $time = null, $return = true, $times = null)
+       {
+               if ($time === null) {
+                       $time = time();
+               }
+
+               if ($ttl > 0) {
+                       $this->mockUtc('now + ' . $ttl . 'seconds', $time + $ttl, $times);
+                       $fields = [
+                               'v' => serialize($value),
+                               'expires' => $time + $ttl,
+                               'updated' => $time
+                       ];
+               } else {
+                       $fields = [
+                               'v' => serialize($value),
+                               'expires' => -1,
+                               'updated' => $time
+                       ];
+               }
+
+               $this->mockDBAUpdate('cache', $fields, ['k' => $key], true, $return, $times);
+       }
+
+       protected function mockClear($outdated = true, $return = true, $times = null)
+       {
+               if ($outdated) {
+                       $this->mockDBADelete('cache', ['`expires` < NOW()'], $return, $times);
+               } else {
+                       $this->mockDBADelete('cache', ['`k` IS NOT NULL '], $return, $times);
+               }
+       }
+
+       protected function mockGetAllKeys($prefix = null, $return = [], $time = null, $times = null)
+       {
+               if ($time === null) {
+                       $time = time();
+               }
+
+               if (empty($prefix)) {
+                       $where = ['`expires` >= ?', $time];
+               } else {
+                       $where = ['`expires` >= ? AND `k` LIKE CONCAT(?, \'%\')', $time, $prefix];
+               }
+
+               $this->mockSelect('cache', ['k'], $where, $return, $times);
+               $this->mockFetchLoop($return, $times);
+               $this->mockDbaClose(true, $times);
+       }
+}
diff --git a/tests/Util/DbaLockMockTrait.php b/tests/Util/DbaLockMockTrait.php
new file mode 100644 (file)
index 0000000..3f76edb
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+
+namespace Friendica\Test\Util;
+
+use Friendica\Core\Cache;
+use Friendica\Core\Lock\DatabaseLockDriver;
+
+trait DbaLockMockTrait
+{
+       use DBAMockTrait;
+       use DateTimeFormatMockTrait;
+
+       /**
+        * Mocking acquireLock with DBA-backend
+        * @see DatabaseLockDriver::acquireLock()
+        *
+        * @param mixed    $key       The key to lock
+        * @param int      $ttl       The TimeToLive
+        *
+        * @param bool     $locked    Was the lock already set?
+        * @param null     $pid       The PID which was set
+        * @param bool     $rowExists True, if a row already exists in the lock table
+        * @param null     $time      The current timestamp
+        * @param null|int $times     How often the method will get used
+        */
+       public function mockAcquireLock($key, $ttl = Cache::FIVE_MINUTES, $locked = false, $pid = null, $rowExists = true, $time = null, $times = null)
+       {
+               if ($time === null) {
+                       $time = time();
+               }
+
+               if ($pid === null) {
+                       $pid = getmypid();
+               }
+
+               $this->mockDbaLock('locks', true, $times);
+
+               $this->mockUtcNow($time, $times);
+               $result = ['locked' => $locked, 'pid' => $pid];
+               $this->mockSelectFirst('locks', ['locked', 'pid'], ['`name` = ? AND `expires` >= ?', $key, $time], $result, $times);
+               $this->mockIsResult($result, $rowExists, $times);
+
+               if ($rowExists) {
+                       if (!$locked ) {
+                               $this->mockUtc('now + ' . $ttl . 'seconds', $time, $times);
+                               $this->mockDBAUpdate('locks', ['locked' => true, 'pid' => $pid, 'expires' => $time], ['name' => $key], [], true, $times);
+                       }
+               } else {
+                       $this->mockUtc('now + ' . $ttl . 'seconds', $time, $times);
+                       $this->mockDBAInsert('locks', ['name' => $key, 'locked' => true, 'pid' => $pid, 'expires' => $time], false, true, $times);
+               }
+
+               $this->mockDbaUnlock($times);
+       }
+
+       /**
+        * Mocking isLocked with DBA-backend
+        * @see DatabaseLockDriver::isLocked()
+        *
+        * @param mixed     $key    The key of the lock
+        * @param null|bool $return True, if the key is already locked
+        * @param null      $time      The current timestamp
+        * @param null|int  $times  How often the method will get used
+        */
+       public function mockIsLocked($key, $return = true, $time = null, $times = null)
+       {
+               if ($time === null) {
+                       $time = time();
+               }
+
+               $this->mockUtcNow($time, $times);
+               $return = ((isset($return)) ? ['locked' => $return] : null);
+               $this->mockSelectFirst('locks', ['locked'], ['`name` = ? AND `expires` >= ?', $key, $time], $return, $times);
+               $this->mockIsResult($return, (isset($return) && $return), $times);
+       }
+
+       /**
+        * Mocking releaseAll with DBA-backend
+        * @see DatabaseLockDriver::releaseAll()
+        *
+        * @param null     $pid    The PID which was set
+        * @param null|int $times  How often the method will get used
+        */
+       public function mockReleaseAll($pid = null, $times = null)
+       {
+               if ($pid === null) {
+                       $pid = getmypid();
+               }
+
+               $this->mockDBADelete('locks', ['pid' => $pid], true, $times);
+       }
+
+       /**
+        * Mocking ReleaseLock with DBA-backend
+        * @see DatabaseLockDriver::releaseLock()
+        *
+        * @param mixed    $key    The key to release
+        * @param null|int $pid    The PID which was set
+        * @param null|int $times  How often the method will get used
+        */
+       public function mockReleaseLock($key, $pid = null, $times = null)
+       {
+               if ($pid === null) {
+                       $pid = getmypid();
+               }
+
+               $this->mockDBADelete('locks', ['name' => $key, 'pid' => $pid], true, $times);
+       }
+}
index cf7571073addfdd38397aef30b4377a80948cf1b..be70d923bd4866c42e3f084cf4a543cb5ef72f2a 100644 (file)
@@ -5,13 +5,14 @@
 
 namespace Friendica\Test;
 
-use Friendica\BaseObject;
+use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
+use Friendica\Factory;
 use Friendica\Network\HTTPException;
-use Friendica\Util\LoggerFactory;
+use Friendica\Util\BasePath;
 use Monolog\Handler\TestHandler;
 
 require_once __DIR__ . '/../../include/api.php';
@@ -34,10 +35,14 @@ class ApiTest extends DatabaseTest
         */
        public function setUp()
        {
-               parent::setUp();
+               $basedir = BasePath::create(dirname(__DIR__) . '/../');
+               $configLoader = new Config\ConfigCacheLoader($basedir);
+               $config = Factory\ConfigFactory::createCache($configLoader);
+               $logger = Factory\LoggerFactory::create('test', $config);
+               $this->app = new App($config, $logger, false);
+               $this->logOutput = FActory\LoggerFactory::enableTest($this->app->getLogger());
 
-               $this->app = BaseObject::getApp();
-               $this->logOutput = LoggerFactory::enableTest($this->app->getLogger());
+               parent::setUp();
 
                // User data that the test database is populated with
                $this->selfUser = [
index 7b9ff3aa15875caf2c583dc5151498f81b47792a..b2c73780a4499247544524f0f515636a1979f298 100644 (file)
@@ -7,14 +7,24 @@ namespace Friendica\Test;
 
 use Friendica\App;
 use Friendica\BaseObject;
-use Friendica\Util\LoggerFactory;
+use Friendica\Test\Util\AppMockTrait;
+use Friendica\Test\Util\VFSTrait;
 use PHPUnit\Framework\TestCase;
 
 /**
  * Tests for the BaseObject class.
+ * @runTestsInSeparateProcesses
+ * @preserveGlobalState disabled
  */
 class BaseObjectTest extends TestCase
 {
+       use VFSTrait;
+       use AppMockTrait;
+
+       /**
+        * @var BaseObject
+        */
+       private $baseObject;
 
        /**
         * Create variables used in tests.
@@ -30,6 +40,10 @@ class BaseObjectTest extends TestCase
         */
        public function testGetApp()
        {
+               $this->setUpVfsDir();
+               $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache');
+               $this->mockApp($this->root, $configMock);
+
                $this->assertInstanceOf(App::class, $this->baseObject->getApp());
        }
 
@@ -39,10 +53,20 @@ class BaseObjectTest extends TestCase
         */
        public function testSetApp()
        {
-               $logger = $logger = LoggerFactory::create('test');
-               $app = new App(__DIR__ . '/../../', $logger);
-               LoggerFactory::enableTest($logger);
-               $this->assertNull($this->baseObject->setApp($app));
-               $this->assertEquals($app, $this->baseObject->getApp());
+               $this->setUpVfsDir();
+               $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache');
+               $this->mockApp($this->root, $configMock);
+
+               $this->assertNull($this->baseObject->setApp($this->app));
+               $this->assertEquals($this->app, $this->baseObject->getApp());
+       }
+
+       /**
+        * Test the getApp() function without App
+        * @expectedException Friendica\Network\HTTPException\InternalServerErrorException
+        */
+       public function testGetAppFailed()
+       {
+               BaseObject::getApp();
        }
 }
index e51ce745f0c72638c41ab960b30673c34ec40c61..d0b357bf465dad6a77768cb9fc9ec48110b6c763 100644 (file)
@@ -3,12 +3,23 @@
 namespace Friendica\Test\src\Core\Cache;
 
 use Friendica\Core\Cache\MemcachedCacheDriver;
-use Friendica\Core\Config;
-use Friendica\Test\DatabaseTest;
-use Friendica\Util\DateTimeFormat;
+use Friendica\Test\MockedTest;
+use Friendica\Test\Util\AppMockTrait;
+use Friendica\Test\Util\DateTimeFormatMockTrait;
+use Friendica\Test\Util\VFSTrait;
+use Friendica\Util\PidFile;
 
-abstract class CacheTest extends DatabaseTest
+abstract class CacheTest extends MockedTest
 {
+       use VFSTrait;
+       use AppMockTrait;
+       use DateTimeFormatMockTrait;
+
+       /**
+        * @var int Start time of the mock (used for time operations)
+        */
+       protected $startTime = 1417011228;
+
        /**
         * @var \Friendica\Core\Cache\ICacheDriver
         */
@@ -19,48 +30,88 @@ abstract class CacheTest extends DatabaseTest
         */
        protected $cache;
 
+       /**
+        * Dataset for test setting different types in the cache
+        * @return array
+        */
+       public function dataTypesInCache()
+       {
+               return [
+                       'string'    => ['data' => 'foobar'],
+                       'integer'   => ['data' => 1],
+                       'boolTrue'  => ['data' => true],
+                       'boolFalse' => ['data' => false],
+                       'float'     => ['data' => 4.6634234],
+                       'array'     => ['data' => ['1', '2', '3', '4', '5']],
+                       'object'    => ['data' => new PidFile()],
+                       'null'      => ['data' => null],
+               ];
+       }
+
+       /**
+        * Dataset for simple value sets/gets
+        * @return array
+        */
+       public function dataSimple()
+       {
+               return [
+                       'string' => [
+                               'value1' => 'foobar',
+                               'value2' => 'ipsum lorum',
+                               'value3' => 'test',
+                               'value4' => 'lasttest',
+                       ],
+               ];
+       }
 
        abstract protected function getInstance();
 
        protected function setUp()
        {
+               $this->setUpVfsDir();
+               $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache');
+               $this->mockApp($this->root, $configMock);
+               $this->app
+                       ->shouldReceive('getHostname')
+                       ->andReturn('friendica.local');
+
+               $this->mockUtcNow($this->startTime);
+
                parent::setUp();
-               $this->instance = $this->getInstance();
 
-               // Reusable App object
-               $this->app = \Friendica\BaseObject::getApp();
+               $this->instance = $this->getInstance();
 
                // Default config
-               Config::set('config', 'hostname', 'localhost');
-               Config::set('system', 'throttle_limit_day', 100);
-               Config::set('system', 'throttle_limit_week', 100);
-               Config::set('system', 'throttle_limit_month', 100);
-               Config::set('system', 'theme', 'system_theme');
+               $this->mockConfigGet('config', 'hostname', 'localhost');
+               $this->mockConfigGet('system', 'throttle_limit_day', 100);
+               $this->mockConfigGet('system', 'throttle_limit_week', 100);
+               $this->mockConfigGet('system', 'throttle_limit_month', 100);
+               $this->mockConfigGet('system', 'theme', 'system_theme');
 
                $this->instance->clear(false);
        }
 
        /**
         * @small
+        * @dataProvider dataSimple
+        * @param mixed $value1 a first
+        * @param mixed $value2 a second
         */
-       function testSimple() {
+       function testSimple($value1, $value2) {
                $this->assertNull($this->instance->get('value1'));
 
-               $value = 'foobar';
-               $this->instance->set('value1', $value);
+               $this->instance->set('value1', $value1);
                $received = $this->instance->get('value1');
-               $this->assertEquals($value, $received, 'Value received from cache not equal to the original');
+               $this->assertEquals($value1, $received, 'Value received from cache not equal to the original');
 
-               $value = 'ipsum lorum';
-               $this->instance->set('value1', $value);
+               $this->instance->set('value1', $value2);
                $received = $this->instance->get('value1');
-               $this->assertEquals($value, $received, 'Value not overwritten by second set');
+               $this->assertEquals($value2, $received, 'Value not overwritten by second set');
 
-               $value2 = 'foobar';
-               $this->instance->set('value2', $value2);
+               $this->instance->set('value2', $value1);
                $received2 = $this->instance->get('value2');
-               $this->assertEquals($value, $received, 'Value changed while setting other variable');
-               $this->assertEquals($value2, $received2, 'Second value not equal to original');
+               $this->assertEquals($value2, $received, 'Value changed while setting other variable');
+               $this->assertEquals($value1, $received2, 'Second value not equal to original');
 
                $this->assertNull($this->instance->get('not_set'), 'Unset value not equal to null');
 
@@ -70,19 +121,24 @@ abstract class CacheTest extends DatabaseTest
 
        /**
         * @small
+        * @dataProvider dataSimple
+        * @param mixed $value1 a first
+        * @param mixed $value2 a second
+        * @param mixed $value3 a third
+        * @param mixed $value4 a fourth
         */
-       function testClear() {
+       function testClear($value1, $value2, $value3, $value4) {
                $value = 'ipsum lorum';
-               $this->instance->set('1_value1', $value . '1');
-               $this->instance->set('1_value2', $value . '2');
-               $this->instance->set('2_value1', $value . '3');
-               $this->instance->set('3_value1', $value . '4');
+               $this->instance->set('1_value1', $value1);
+               $this->instance->set('1_value2', $value2);
+               $this->instance->set('2_value1', $value3);
+               $this->instance->set('3_value1', $value4);
 
                $this->assertEquals([
-                       '1_value1' => 'ipsum lorum1',
-                       '1_value2' => 'ipsum lorum2',
-                       '2_value1' => 'ipsum lorum3',
-                       '3_value1' => 'ipsum lorum4',
+                       '1_value1' => $value1,
+                       '1_value2' => $value2,
+                       '2_value1' => $value3,
+                       '3_value1' => $value4,
                ], [
                        '1_value1' => $this->instance->get('1_value1'),
                        '1_value2' => $this->instance->get('1_value2'),
@@ -93,10 +149,10 @@ abstract class CacheTest extends DatabaseTest
                $this->assertTrue($this->instance->clear());
 
                $this->assertEquals([
-                       '1_value1' => 'ipsum lorum1',
-                       '1_value2' => 'ipsum lorum2',
-                       '2_value1' => 'ipsum lorum3',
-                       '3_value1' => 'ipsum lorum4',
+                       '1_value1' => $value1,
+                       '1_value2' => $value2,
+                       '2_value1' => $value3,
+                       '3_value1' => $value4,
                ], [
                        '1_value1' => $this->instance->get('1_value1'),
                        '1_value2' => $this->instance->get('1_value2'),
@@ -139,67 +195,30 @@ abstract class CacheTest extends DatabaseTest
 
        /**
         * @small
+        * @param $data mixed the data to store in the cache
+        * @dataProvider dataTypesInCache
         */
-       function testDifferentTypesInCache() {
-               // String test
-               $value = "foobar";
-               $this->instance->set('stringVal', $value);
-               $received = $this->instance->get('stringVal');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               // Integer test
-               $value = 1;
-               $this->instance->set('intVal', $value);
-               $received = $this->instance->get('intVal');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               // Boolean test
-               $value = true;
-               $this->instance->set('boolValTrue', $value);
-               $received = $this->instance->get('boolValTrue');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               $value = false;
-               $this->instance->set('boolValFalse', $value);
-               $received = $this->instance->get('boolValFalse');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               // float
-               $value = 4.6634234;
-               $this->instance->set('decVal', $value);
-               $received = $this->instance->get('decVal');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               // array
-               $value = array('1', '2', '3', '4', '5');
-               $this->instance->set('arrayVal', $value);
-               $received = $this->instance->get('arrayVal');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               // object
-               $value = new DateTimeFormat();
-               $this->instance->set('objVal', $value);
-               $received = $this->instance->get('objVal');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
-
-               // null
-               $value = null;
-               $this->instance->set('objVal', $value);
-               $received = $this->instance->get('objVal');
-               $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received));
+       function testDifferentTypesInCache($data) {
+               $this->instance->set('val', $data);
+               $received = $this->instance->get('val');
+               $this->assertEquals($data, $received, 'Value type changed from ' . gettype($data) . ' to ' . gettype($received));
        }
 
        /**
         * @small
+        * @param mixed $value1 a first
+        * @param mixed $value2 a second
+        * @param mixed $value3 a third
+        * @dataProvider dataSimple
         */
-       public function testGetAllKeys() {
+       public function testGetAllKeys($value1, $value2, $value3) {
                if ($this->cache instanceof MemcachedCacheDriver) {
                        $this->markTestSkipped('Memcached doesn\'t support getAllKeys anymore');
                }
 
-               $this->assertTrue($this->instance->set('value1', 'test'));
-               $this->assertTrue($this->instance->set('value2', 'test'));
-               $this->assertTrue($this->instance->set('test_value3', 'test'));
+               $this->assertTrue($this->instance->set('value1', $value1));
+               $this->assertTrue($this->instance->set('value2', $value2));
+               $this->assertTrue($this->instance->set('test_value3', $value3));
 
                $list = $this->instance->getAllKeys();
 
index 60eb7b329558273c2c29cdbea051a91a3f7f5d03..f035f3fecde902cdc2be23364f239ccb9f4ad150 100644 (file)
@@ -2,7 +2,9 @@
 
 namespace Friendica\Test\src\Core\Cache;
 
+use Friendica\Core\Cache;
 use Friendica\Core\Cache\CacheDriverFactory;
+use Friendica\Test\Util\DbaCacheMockTrait;
 
 /**
  * @runTestsInSeparateProcesses
@@ -10,6 +12,19 @@ use Friendica\Core\Cache\CacheDriverFactory;
  */
 class DatabaseCacheDriverTest extends CacheTest
 {
+       use DbaCacheMockTrait;
+
+       public function setUp()
+       {
+               $this->mockConnected();
+               $this->mockConnect();
+
+               // The first "clear" at setup
+               $this->mockClear(false, true, 2);
+
+               parent::setUp();
+       }
+
        protected function getInstance()
        {
                $this->cache = CacheDriverFactory::create('database');
@@ -21,4 +36,104 @@ class DatabaseCacheDriverTest extends CacheTest
                $this->cache->clear(false);
                parent::tearDown();
        }
+
+       /**
+        * {@inheritdoc}
+        * @dataProvider dataSimple
+        */
+       public function testSimple($value1, $value2)
+       {
+               // assertNull
+               $this->mockGet('value1', null, $this->startTime, 1);
+
+               // assertEquals
+               $this->mockSet('value1', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockGet('value1', $value1, $this->startTime, 1);
+
+               // assertEquals
+               $this->mockSet('value1', $value2, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockGet('value1', $value2, $this->startTime, 1);
+
+               // assertEquals
+               $this->mockSet('value2', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockGet('value2', $value1, $this->startTime, 1);
+
+               // assertNull
+               $this->mockGet('not_set', null, $this->startTime, 1);
+
+               // assertNull
+               $this->mockDelete('value1', true, 1);
+               $this->mockGet('value1', null, $this->startTime, 1);
+
+               parent::testSimple($value1, $value2);
+       }
+
+       /**
+        * {@inheritdoc}
+        * @dataProvider dataSimple
+        */
+       public function testClear($value1, $value2, $value3, $value4)
+       {
+               // assert Equals
+               $this->mockSet('1_value1', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockSet('1_value2', $value2, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockSet('2_value1', $value3, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockSet('3_value1', $value4, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+
+               $this->mockGet('1_value1', $value1, $this->startTime, 2);
+               $this->mockGet('1_value2', $value2, $this->startTime, 2);
+               $this->mockGet('2_value1', $value3, $this->startTime, 2);
+               $this->mockGet('3_value1', $value4, $this->startTime, 2);
+
+               // assertTrue
+               $this->mockClear(true, true, 1);
+               $this->mockClear(false, true, 1);
+
+               // assertEquals
+               $this->mockGet('1_value1', null, $this->startTime, 1);
+               $this->mockGet('1_value2', null, $this->startTime, 1);
+               $this->mockGet('2_value3', null, $this->startTime, 1);
+               $this->mockGet('3_value4', null, $this->startTime, 1);
+
+               parent::testClear($value1, $value2, $value3, $value4);
+       }
+
+       /**
+        * {@inheritdoc}
+        * @dataProvider dataTypesInCache
+        */
+       public function testDifferentTypesInCache($data)
+       {
+               $this->mockSet('val', $data, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockGet('val', $data, $this->startTime, 1);
+
+               parent::testDifferentTypesInCache($data);
+       }
+
+       /**
+        * {@inheritdoc}
+        * @dataProvider dataSimple
+        */
+       public function testGetAllKeys($value1, $value2, $value3)
+       {
+               $this->mockSet('value1', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockSet('value2', $value2,Cache::FIVE_MINUTES, $this->startTime, true, 1);
+               $this->mockSet('test_value3', $value3, Cache::FIVE_MINUTES, $this->startTime, true, 1);
+
+               $result = [
+                       ['k' => 'value1'],
+                       ['k' => 'value2'],
+                       ['k' => 'test_value3'],
+               ];
+
+               $this->mockGetAllKeys(null, $result, $this->startTime, 1);
+
+               $result = [
+                       ['k' => 'test_value3'],
+               ];
+
+               $this->mockGetAllKeys('test', $result, $this->startTime, 1);
+
+               parent::testGetAllKeys($value1, $value2, $value3);
+       }
 }
index 6a81cf46a17a496c4d702b661a6c1ce0677a41ea..4a4c4ebd7eb7be134602caa17758c19e326598a4 100644 (file)
@@ -3,19 +3,20 @@
 
 namespace Friendica\Test\src\Core\Cache;
 
-/**
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
 use Friendica\Core\Cache\CacheDriverFactory;
 
 /**
+ * @runTestsInSeparateProcesses
+ * @preserveGlobalState disabled
  * @requires extension memcache
  */
 class MemcacheCacheDriverTest extends MemoryCacheTest
 {
        protected function getInstance()
        {
+               $this->mockConfigGet('system', 'memcache_host', 'localhost', 1);
+               $this->mockConfigGet('system', 'memcache_port', 11211, 1);
+
                $this->cache = CacheDriverFactory::create('memcache');
                return $this->cache;
 
index d371f81fb32cbcdc9df225c496f93605446c3abf..b118ee0f6ef3a4f5245587f79ede8df0ad6c9691 100644 (file)
@@ -3,19 +3,19 @@
 
 namespace Friendica\Test\src\Core\Cache;
 
-/**
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
 use Friendica\Core\Cache\CacheDriverFactory;
 
 /**
+ * @runTestsInSeparateProcesses
+ * @preserveGlobalState disabled
  * @requires extension memcached
  */
 class MemcachedCacheDriverTest extends MemoryCacheTest
 {
        protected function getInstance()
        {
+               $this->mockConfigGet('system', 'memcached_hosts', [0 => 'localhost, 11211']);
+
                $this->cache = CacheDriverFactory::create('memcached');
                return $this->cache;
        }
index b6889a65134956f40c52fe8f8e869067bb73ee63..3bf2966a1331e304dad7188f50815079a0b719f4 100644 (file)
@@ -21,89 +21,86 @@ abstract class MemoryCacheTest extends CacheTest
 
        /**
         * @small
+        * @dataProvider dataSimple
         */
-       function testCompareSet() {
+       function testCompareSet($value1, $value2) {
                $this->assertNull($this->instance->get('value1'));
 
-               $value = 'foobar';
-               $this->instance->add('value1', $value);
+               $this->instance->add('value1', $value1);
                $received = $this->instance->get('value1');
-               $this->assertEquals($value, $received, 'Value received from cache not equal to the original');
+               $this->assertEquals($value1, $received, 'Value received from cache not equal to the original');
 
-               $newValue = 'ipsum lorum';
-               $this->instance->compareSet('value1', $value, $newValue);
+               $this->instance->compareSet('value1', $value1, $value2);
                $received = $this->instance->get('value1');
-               $this->assertEquals($newValue, $received, 'Value not overwritten by compareSet');
+               $this->assertEquals($value2, $received, 'Value not overwritten by compareSet');
        }
 
        /**
         * @small
+        * @dataProvider dataSimple
         */
-       function testNegativeCompareSet() {
+       function testNegativeCompareSet($value1, $value2) {
                $this->assertNull($this->instance->get('value1'));
 
-               $value = 'foobar';
-               $this->instance->add('value1', $value);
+               $this->instance->add('value1', $value1);
                $received = $this->instance->get('value1');
-               $this->assertEquals($value, $received, 'Value received from cache not equal to the original');
+               $this->assertEquals($value1, $received, 'Value received from cache not equal to the original');
 
-               $newValue = 'ipsum lorum';
-               $this->instance->compareSet('value1', 'wrong', $newValue);
+               $this->instance->compareSet('value1', 'wrong', $value2);
                $received = $this->instance->get('value1');
-               $this->assertNotEquals($newValue, $received, 'Value was wrongly overwritten by compareSet');
-               $this->assertEquals($value, $received, 'Value was wrongly overwritten by any other value');
+               $this->assertNotEquals($value2, $received, 'Value was wrongly overwritten by compareSet');
+               $this->assertEquals($value1, $received, 'Value was wrongly overwritten by any other value');
        }
 
        /**
         * @small
+        * @dataProvider dataSimple
         */
-       function testCompareDelete() {
+       function testCompareDelete($data) {
                $this->assertNull($this->instance->get('value1'));
 
-               $value = 'foobar';
-               $this->instance->add('value1', $value);
+               $this->instance->add('value1', $data);
                $received = $this->instance->get('value1');
-               $this->assertEquals($value, $received, 'Value received from cache not equal to the original');
-               $this->instance->compareDelete('value1', $value);
+               $this->assertEquals($data, $received, 'Value received from cache not equal to the original');
+               $this->instance->compareDelete('value1', $data);
                $this->assertNull($this->instance->get('value1'), 'Value was not deleted by compareDelete');
        }
 
        /**
         * @small
+        * @dataProvider dataSimple
         */
-       function testNegativeCompareDelete() {
+       function testNegativeCompareDelete($data) {
                $this->assertNull($this->instance->get('value1'));
 
-               $value = 'foobar';
-               $this->instance->add('value1', $value);
+               $this->instance->add('value1', $data);
                $received = $this->instance->get('value1');
-               $this->assertEquals($value, $received, 'Value received from cache not equal to the original');
+               $this->assertEquals($data, $received, 'Value received from cache not equal to the original');
                $this->instance->compareDelete('value1', 'wrong');
                $this->assertNotNull($this->instance->get('value1'), 'Value was wrongly compareDeleted');
 
-               $this->instance->compareDelete('value1', $value);
+               $this->instance->compareDelete('value1', $data);
                $this->assertNull($this->instance->get('value1'), 'Value was wrongly NOT deleted by compareDelete');
        }
 
        /**
         * @small
+        * @dataProvider dataSimple
         */
-       function testAdd() {
+       function testAdd($value1, $value2) {
                $this->assertNull($this->instance->get('value1'));
 
-               $value = 'foobar';
-               $this->instance->add('value1', $value);
+               $this->instance->add('value1', $value1);
 
-               $newValue = 'ipsum lorum';
-               $this->instance->add('value1', $newValue);
+               $this->instance->add('value1', $value2);
                $received = $this->instance->get('value1');
-               $this->assertNotEquals($newValue, $received, 'Value was wrongly overwritten by add');
-               $this->assertEquals($value, $received, 'Value was wrongly overwritten by any other value');
+               $this->assertNotEquals($value2, $received, 'Value was wrongly overwritten by add');
+               $this->assertEquals($value1, $received, 'Value was wrongly overwritten by any other value');
 
                $this->instance->delete('value1');
-               $this->instance->add('value1', $newValue);
+               $this->instance->add('value1', $value2);
                $received = $this->instance->get('value1');
-               $this->assertEquals($newValue, $received, 'Value was not overwritten by add');
-               $this->assertNotEquals($value, $received, 'Value was not overwritten by any other value');
+               $this->assertEquals($value2, $received, 'Value was not overwritten by add');
+               $this->assertNotEquals($value1, $received, 'Value was not overwritten by any other value');
        }
 }
\ No newline at end of file
index 17079f1e0699c6f7476b5be997678979a8788e4f..4530ff1c025b16dedbf54d624bfdc0cbe9751846 100644 (file)
@@ -3,19 +3,20 @@
 
 namespace Friendica\Test\src\Core\Cache;
 
-/**
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
 use Friendica\Core\Cache\CacheDriverFactory;
 
 /**
+ * @runTestsInSeparateProcesses
+ * @preserveGlobalState disabled
  * @requires extension redis
  */
 class RedisCacheDriverTest extends MemoryCacheTest
 {
        protected function getInstance()
        {
+               $this->mockConfigGet('system', 'redis_host', 'localhost', 1);
+               $this->mockConfigGet('system', 'redis_port', null, 1);
+
                $this->cache = CacheDriverFactory::create('redis');
                return $this->cache;
        }
index 361608d375f3f06f0b1564c4e402768de6cc3afe..127a8bc3f87bdf38fdd4228de33925b1ec94f91f 100644 (file)
@@ -181,7 +181,7 @@ FIN;
                $this->mockConnect(true, 1);
                $this->mockConnected(true, 1);
                $this->mockExistsTable('user', false, 1);
-               $this->mockUpdate([false, true, true], null, 1);
+               $this->mockUpdate([$this->root->url(), false, true, true], null, 1);
 
                $config = <<<CONF
 <?php
@@ -241,7 +241,7 @@ CONF;
                $this->mockConnect(true, 1);
                $this->mockConnected(true, 1);
                $this->mockExistsTable('user', false, 1);
-               $this->mockUpdate([false, true, true], null, 1);
+               $this->mockUpdate([$this->root->url(), false, true, true], null, 1);
 
                $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1);
                $this->mockReplaceMacros('testTemplate', $this->createArgumentsForMacro(true), '', 1);
@@ -267,7 +267,7 @@ CONF;
                $this->mockConnect(true, 1);
                $this->mockConnected(true, 1);
                $this->mockExistsTable('user', false, 1);
-               $this->mockUpdate([false, true, true], null, 1);
+               $this->mockUpdate([$this->root->url(), false, true, true], null, 1);
 
                $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1);
                $this->mockReplaceMacros('testTemplate', $this->createArgumentsForMacro(false), '', 1);
@@ -292,7 +292,7 @@ CONF;
                $this->mockConnect(true, 1);
                $this->mockConnected(true, 1);
                $this->mockExistsTable('user', false, 1);
-               $this->mockUpdate([false, true, true], null, 1);
+               $this->mockUpdate([$this->root->url(), false, true, true], null, 1);
 
                $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1);
                $this->mockReplaceMacros('testTemplate', $this->createArgumentsForMacro(true), '', 1);
index 3ba2bd60d36951dbdf31e35cfaf610a08cf4a170..4ee34917d8a5d9a77fec70dfd6d659218655ea7b 100644 (file)
@@ -21,7 +21,7 @@ class ConfigConsoleTest extends ConsoleTest
                        ]
                ]);
 
-               $mode = \Mockery::mock('alias:Friendica\App\Mode');
+               $mode = \Mockery::mock('Friendica\App\Mode');
                $mode
                        ->shouldReceive('has')
                        ->andReturn(true);
index 0997269c06a4d49103eac48f7f859e2f2bccb623..905d214cac2b6282ceb298c5c5a391d3073d0587 100644 (file)
@@ -3,12 +3,12 @@
 namespace Friendica\Test\src\Core\Console;
 
 use Asika\SimpleConsole\Console;
+use Friendica\Test\MockedTest;
 use Friendica\Test\Util\AppMockTrait;
 use Friendica\Test\Util\Intercept;
 use Friendica\Test\Util\VFSTrait;
-use PHPUnit\Framework\TestCase;
 
-abstract class ConsoleTest extends TestCase
+abstract class ConsoleTest extends MockedTest
 {
        use VFSTrait;
        use AppMockTrait;
@@ -29,14 +29,8 @@ abstract class ConsoleTest extends TestCase
                Intercept::setUp();
 
                $this->setUpVfsDir();
-               $this->mockApp($this->root);
-       }
-
-       protected function tearDown()
-       {
-               \Mockery::close();
-
-               parent::tearDown();
+               $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache');
+               $this->mockApp($this->root, $configMock);
        }
 
        /**
index 564c2562a877ca37c8f1db3700a565b958b5cc52..f7f8f5c7d494834c2e4734d1a6e6c4768217ef52 100644 (file)
@@ -99,6 +99,8 @@ class InstallerTest extends MockedTest
         */
        public function testCheckKeys()
        {
+               $this->mockL10nT();
+
                $this->setFunctions(['openssl_pkey_new' => false]);
                $install = new Installer();
                $this->assertFalse($install->checkKeys());
@@ -209,6 +211,8 @@ class InstallerTest extends MockedTest
         */
        public function testCheckLocalIni()
        {
+               $this->mockL10nT();
+
                $this->assertTrue($this->root->hasChild('config/local.config.php'));
 
                $install = new Installer();
@@ -227,6 +231,8 @@ class InstallerTest extends MockedTest
         */
        public function testCheckHtAccessFail()
        {
+               $this->mockL10nT();
+
                // Mocking the CURL Response
                $curlResult = \Mockery::mock('Friendica\Network\CurlResult');
                $curlResult
@@ -264,6 +270,8 @@ class InstallerTest extends MockedTest
         */
        public function testCheckHtAccessWork()
        {
+               $this->mockL10nT();
+
                // Mocking the failed CURL Response
                $curlResultF = \Mockery::mock('Friendica\Network\CurlResult');
                $curlResultF
@@ -303,6 +311,8 @@ class InstallerTest extends MockedTest
         */
        public function testImagick()
        {
+               $this->mockL10nT();
+
                $imageMock = \Mockery::mock('alias:Friendica\Object\Image');
                $imageMock
                        ->shouldReceive('supportedTypes')
@@ -328,6 +338,8 @@ class InstallerTest extends MockedTest
         */
        public function testImagickNotFound()
        {
+               $this->mockL10nT();
+
                $imageMock = \Mockery::mock('alias:Friendica\Object\Image');
                $imageMock
                        ->shouldReceive('supportedTypes')
index e5ca825c990a58eec374615d76729bd1509031c8..3d641376995549a91e3c1664b8f41a3919dbc5c8 100644 (file)
@@ -2,8 +2,9 @@
 
 namespace Friendica\Test\src\Core\Lock;
 
+use Friendica\Core\Cache;
 use Friendica\Core\Lock\DatabaseLockDriver;
-use Friendica\Database\DBA;
+use Friendica\Test\Util\DbaLockMockTrait;
 
 /**
  * @runTestsInSeparateProcesses
@@ -11,14 +12,96 @@ use Friendica\Database\DBA;
  */
 class DatabaseLockDriverTest extends LockTest
 {
+       use DbaLockMockTrait;
+
+       protected $pid = 123;
+
+       protected function setUp()
+       {
+               $this->mockConnected();
+               $this->mockConnect();
+
+               $this->mockReleaseAll($this->pid, 2);
+
+               parent::setUp();
+       }
+
        protected function getInstance()
        {
-               return new DatabaseLockDriver();
+               return new DatabaseLockDriver($this->pid);
+       }
+
+       public function testLock()
+       {
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+               $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockIsLocked('foo', true, $this->startTime, 1);
+               $this->mockIsLocked('bar', false, $this->startTime, 1);
+
+               parent::testLock();
+       }
+
+       public function testDoubleLock()
+       {
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+               $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockIsLocked('foo', true, $this->startTime, 1);
+               $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, true, $this->pid, true, $this->startTime, 1);
+
+               parent::testDoubleLock();
+       }
+
+       public function testReleaseLock()
+       {
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+               $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockIsLocked('foo', true, $this->startTime, 1);
+               $this->mockReleaseLock('foo', $this->pid, 1);
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+
+               parent::testReleaseLock();
+       }
+
+       public function testReleaseAll()
+       {
+               $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockAcquireLock('bar', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockAcquireLock('nice', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+
+               $this->mockIsLocked('foo', true, $this->startTime, 1);
+               $this->mockIsLocked('bar', true, $this->startTime, 1);
+               $this->mockIsLocked('nice', true, $this->startTime, 1);
+
+               $this->mockReleaseAll($this->pid, 1);
+
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+               $this->mockIsLocked('bar', false, $this->startTime, 1);
+               $this->mockIsLocked('nice', false, $this->startTime, 1);
+
+               parent::testReleaseAll();
        }
 
-       public function tearDown()
+       public function testReleaseAfterUnlock()
        {
-               DBA::delete('locks', [ 'id > 0']);
-               parent::tearDown();
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+               $this->mockIsLocked('bar', false, $this->startTime, 1);
+               $this->mockIsLocked('nice', false, $this->startTime, 1);
+
+               $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockAcquireLock('bar', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+               $this->mockAcquireLock('nice', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1);
+
+               $this->mockReleaseLock('foo', $this->pid, 1);
+
+               $this->mockIsLocked('foo', false, $this->startTime, 1);
+               $this->mockIsLocked('bar', true, $this->startTime, 1);
+               $this->mockIsLocked('nice', true, $this->startTime, 1);
+
+               $this->mockReleaseAll($this->pid, 1);
+
+               $this->mockIsLocked('bar', false, $this->startTime, 1);
+               $this->mockIsLocked('nice', false, $this->startTime, 1);
+
+               parent::testReleaseAfterUnlock();
        }
 }
index 78f2271e54016bd581b74c542794d7c3b5b03a39..2d11a71ae18946c153d726f0c56833d881914995 100644 (file)
@@ -2,12 +2,20 @@
 
 namespace Friendica\Test\src\Core\Lock;
 
-use Friendica\BaseObject;
-use Friendica\Core\Config;
-use Friendica\Test\DatabaseTest;
+use Friendica\Test\MockedTest;
+use Friendica\Test\Util\AppMockTrait;
+use Friendica\Test\Util\VFSTrait;
 
-abstract class LockTest extends DatabaseTest
+abstract class LockTest extends MockedTest
 {
+       use VFSTrait;
+       use AppMockTrait;
+
+       /**
+        * @var int Start time of the mock (used for time operations)
+        */
+       protected $startTime = 1417011228;
+
        /**
         * @var \Friendica\Core\Lock\ILockDriver
         */
@@ -22,20 +30,25 @@ abstract class LockTest extends DatabaseTest
                $this->instance->releaseAll();
 
                // Reusable App object
-               $this->app = BaseObject::getApp();
+               $this->setUpVfsDir();
+               $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache');
+               $this->mockApp($this->root, $configMock);
+               $this->app
+                       ->shouldReceive('getHostname')
+                       ->andReturn('friendica.local');
 
                // Default config
-               Config::set('config', 'hostname', 'localhost');
-               Config::set('system', 'throttle_limit_day', 100);
-               Config::set('system', 'throttle_limit_week', 100);
-               Config::set('system', 'throttle_limit_month', 100);
-               Config::set('system', 'theme', 'system_theme');
+               $this->mockConfigGet('config', 'hostname', 'localhost');
+               $this->mockConfigGet('system', 'throttle_limit_day', 100);
+               $this->mockConfigGet('system', 'throttle_limit_week', 100);
+               $this->mockConfigGet('system', 'throttle_limit_month', 100);
+               $this->mockConfigGet('system', 'theme', 'system_theme');
        }
 
        protected function tearDown()
        {
-               parent::tearDown();
                $this->instance->releaseAll();
+               parent::tearDown();
        }
 
        /**
index c46eb6faa9645d81a6f7299813e9e425ea4a045f..d7002037e0def7f4f6dcff67c06088ef94c949f9 100644 (file)
@@ -15,6 +15,9 @@ class MemcacheCacheLockDriverTest extends LockTest
 {
        protected function getInstance()
        {
+               $this->mockConfigGet('system', 'memcache_host', 'localhost', 1);
+               $this->mockConfigGet('system', 'memcache_port', 11211, 1);
+
                return new CacheLockDriver(CacheDriverFactory::create('memcache'));
        }
 }
index 4a508919a599bf4a3ccf4119f7863322d7c3c53f..3ba6de53efce02e8832752ef85e48fe362149827 100644 (file)
@@ -15,6 +15,8 @@ class MemcachedCacheLockDriverTest extends LockTest
 {
        protected function getInstance()
        {
+               $this->mockConfigGet('system', 'memcached_hosts', [0 => 'localhost, 11211']);
+
                return new CacheLockDriver(CacheDriverFactory::create('memcached'));
        }
 }
index e537e50c1054d03f842b01cd4cb2b202193eb9eb..765055add0ad7fe5783e7eee7edf96358ab59f52 100644 (file)
@@ -15,7 +15,9 @@ class RedisCacheLockDriverTest extends LockTest
 {
        protected function getInstance()
        {
-               return new CacheLockDriver(CacheDriverFactory::create('redis'));
+               $this->mockConfigGet('system', 'redis_host', 'localhost', 1);
+               $this->mockConfigGet('system', 'redis_port', null, 1);
 
+               return new CacheLockDriver(CacheDriverFactory::create('redis'));
        }
 }
index 422ab3221f072bd07bd936c344aca522008530d8..58daa3516cba633f45ffa9edaaf9accf709a672b 100644 (file)
@@ -10,6 +10,14 @@ use Friendica\Core\Lock\SemaphoreLockDriver;
  */
 class SemaphoreLockDriverTest extends LockTest
 {
+       public function setUp()
+       {
+               parent::setUp();
+
+               $this->app->shouldReceive('getHostname')->andReturn('friendica.local');
+               $this->mockConfigGet('system', 'temppath', '/tmp/');
+       }
+
        protected function getInstance()
        {
                return new SemaphoreLockDriver();
index 17ac55fd7a5bd58d031b5fdf609c09647c018aec..f2a5cc5558f7dcd853a377d2065f905fbe245331 100644 (file)
@@ -1,19 +1,25 @@
 <?php
 namespace Friendica\Test\Database;
 
-use Friendica\BaseObject;
+use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Database\DBA;
+use Friendica\Factory;
 use Friendica\Test\DatabaseTest;
+use Friendica\Util\BasePath;
 
 class DBATest extends DatabaseTest
 {
        public function setUp()
        {
-               parent::setUp();
+               $basedir = BasePath::create(dirname(__DIR__) . '/../../');
+               $configLoader = new Config\ConfigCacheLoader($basedir);
+               $config = Factory\ConfigFactory::createCache($configLoader);
+               $logger = Factory\LoggerFactory::create('test', $config);
+               $this->app = new App($config, $logger, false);
+               $this->logOutput = FActory\LoggerFactory::enableTest($this->app->getLogger());
 
-               // Reusable App object
-               $this->app = BaseObject::getApp();
+               parent::setUp();
 
                // Default config
                Config::set('config', 'hostname', 'localhost');
index 268bf8eeddcb08694b4ac18a40521982969ab232..53c4e8895b2dac1afe52cea59b6d5ffa29af7f49 100644 (file)
@@ -2,19 +2,25 @@
 
 namespace Friendica\Test\Database;
 
-use Friendica\BaseObject;
+use Friendica\App;
 use Friendica\Core\Config;
 use Friendica\Database\DBStructure;
+use Friendica\Factory;
 use Friendica\Test\DatabaseTest;
+use Friendica\Util\BasePath;
 
 class DBStructureTest extends DatabaseTest
 {
        public function setUp()
        {
-               parent::setUp();
+               $basedir = BasePath::create(dirname(__DIR__) . '/../../');
+               $configLoader = new Config\ConfigCacheLoader($basedir);
+               $config = Factory\ConfigFactory::createCache($configLoader);
+               $logger = Factory\LoggerFactory::create('test', $config);
+               $this->app = new App($config, $logger, false);
+               $this->logOutput = FActory\LoggerFactory::enableTest($this->app->getLogger());
 
-               // Reusable App object
-               $this->app = BaseObject::getApp();
+               parent::setUp();
 
                // Default config
                Config::set('config', 'hostname', 'localhost');
index 775c4179f3a7139f5891cf5f86ff0520f7e7d9bb..bb0bcf2471fe6a25144947dd93ad587e646a057e 100644 (file)
@@ -34,6 +34,8 @@ class CurlResultTest extends TestCase
 
        /**
         * @small
+        * @runInSeparateProcess
+        * @preserveGlobalState disabled
         */
        public function testRedirect()
        {
@@ -86,6 +88,8 @@ class CurlResultTest extends TestCase
 
        /**
         * @small
+        * @runInSeparateProcess
+        * @preserveGlobalState disabled
         */
        public function testRedirectHeader()
        {
index 20046c99a96d1e5e5ab16b4dad36a9890734af4d..c6dfabed1a5a79f8f7ee0f11479316340ba3e177 100644 (file)
@@ -13,7 +13,7 @@ msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-01-21 10:24-0500\n"
-"PO-Revision-Date: 2019-01-26 17:28+0000\n"
+"PO-Revision-Date: 2019-02-03 16:48+0000\n"
 "Last-Translator: Aditoo\n"
 "Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
 "MIME-Version: 1.0\n"
@@ -711,12 +711,12 @@ msgstr "Uživatel %1$s s vámi sdílí na %2$s"
 
 #: include/enotify.php:345
 msgid "[Friendica:Notify] You have a new follower"
-msgstr "[Friendica:Oznámení] Máte nového sledovatele"
+msgstr "[Friendica:Oznámení] Máte nového sledujícího"
 
 #: include/enotify.php:347 include/enotify.php:348
 #, php-format
 msgid "You have a new follower at %2$s : %1$s"
-msgstr "Máte nového sledovatele na %2$s : %1$s"
+msgstr "Máte nového sledujícího na %2$s : %1$s"
 
 #: include/enotify.php:361
 msgid "[Friendica:Notify] Friend suggestion received"
@@ -1393,7 +1393,7 @@ msgstr "Normální účet"
 
 #: mod/admin.php:933
 msgid "Automatic Follower Account"
-msgstr "Účet s automatickými sledovateli"
+msgstr "Účet s automatickými sledujícími"
 
 #: mod/admin.php:934
 msgid "Public Forum Account"
@@ -4645,7 +4645,7 @@ msgid ""
 "The Directory page lets you find other people in this network or other "
 "federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
 "their profile page. Provide your own Identity Address if requested."
-msgstr "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. Najděte na jejich stránce odkaz <em>Spojit</em> nebo <em>Sledovat</em>. Uveďte svou vlastní adresu identity, je-li požadována."
+msgstr "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. Najděte na jejich stránce odkaz <em>Spojit se</em> nebo <em>Sledovat</em>. Uveďte svou vlastní adresu identity, je-li požadována."
 
 #: mod/newmember.php:42
 msgid "Finding New People"
@@ -5951,7 +5951,7 @@ msgstr "Normálně se systém snaží nalézt nejlepší odkaz pro přidání zk
 
 #: mod/settings.php:841
 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
-msgstr "Automaticky sledovat jakékoliv sledovatele/zmiňovatele na GNU social (OStatus) "
+msgstr "Automaticky sledovat jakékoliv sledující/zmiňující na GNU social (OStatus) "
 
 #: mod/settings.php:841
 msgid ""
@@ -6189,13 +6189,13 @@ msgstr "Účet pro osobní profil."
 msgid ""
 "Account for an organisation that automatically approves contact requests as "
 "\"Followers\"."
-msgstr "Účet pro organizaci, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledovatele“."
+msgstr "Účet pro organizaci, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledující“."
 
 #: mod/settings.php:1045
 msgid ""
 "Account for a news reflector that automatically approves contact requests as"
 " \"Followers\"."
-msgstr "Účet pro zpravodaje, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledovatele“."
+msgstr "Účet pro zpravodaje, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledující“."
 
 #: mod/settings.php:1049
 msgid "Account for community discussions."
@@ -6205,13 +6205,13 @@ msgstr "Účet pro komunitní diskuze."
 msgid ""
 "Account for a regular personal profile that requires manual approval of "
 "\"Friends\" and \"Followers\"."
-msgstr "Účet pro běžný osobní profil, který vyžaduje manuální potvrzení „Přátel“ a „Sledovatelů“."
+msgstr "Účet pro běžný osobní profil, který vyžaduje manuální potvrzení „Přátel“ a „Sledujících“."
 
 #: mod/settings.php:1057
 msgid ""
 "Account for a public profile that automatically approves contact requests as"
 " \"Followers\"."
-msgstr "Účet pro veřejný profil, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledovatele“."
+msgstr "Účet pro veřejný profil, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledující“."
 
 #: mod/settings.php:1061
 msgid "Automatically approves all contact requests."
@@ -6557,7 +6557,7 @@ msgstr "Znovu odeslat správu o přemístění Vašim kontaktům"
 #: mod/subthread.php:104
 #, php-format
 msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s sleduje %3$s uživatele %2$s"
+msgstr "%1$s sleduje %3$s uživatele %2$s"
 
 #: mod/suggest.php:39
 msgid "Do you really want to delete this suggestion?"
@@ -7195,7 +7195,7 @@ msgstr "Štítkový oblak"
 
 #: src/Content/Feature.php:116
 msgid "Provide a personal tag cloud on your profile page"
-msgstr "Poskytne na Vaší profilové stránce osobní \"štítkový oblak\""
+msgstr "Poskytne na Vaší profilové stránce osobní „štítkový oblak“"
 
 #: src/Content/Feature.php:117
 msgid "Display Membership Date"
@@ -8175,7 +8175,7 @@ msgstr "Požadavek o přátelství/spojení"
 
 #: src/Core/NotificationsManager.php:671
 msgid "New Follower"
-msgstr "Nový sledovatel"
+msgstr "Nový sledující"
 
 #: src/Core/System.php:133
 msgid "Error 400 - Bad Request"
index c0e63f884d635a0ad98d69417e05dd88b0dfe5a1..926909679d6edd5183a44316f3c42ab62a33d503 100644 (file)
@@ -181,8 +181,8 @@ $a->strings["You may visit their profile at %s"] = "Můžete navštívit jejich
 $a->strings["Please visit %s to approve or reject the introduction."] = "Prosím navštivte %s pro schválení či zamítnutí představení.";
 $a->strings["[Friendica:Notify] A new person is sharing with you"] = "[Friendica:Oznámení] Nový člověk s vámi sdílí";
 $a->strings["%1\$s is sharing with you at %2\$s"] = "Uživatel %1\$s s vámi sdílí na %2\$s";
-$a->strings["[Friendica:Notify] You have a new follower"] = "[Friendica:Oznámení] Máte nového sledovatele";
-$a->strings["You have a new follower at %2\$s : %1\$s"] = "Máte nového sledovatele na %2\$s : %1\$s";
+$a->strings["[Friendica:Notify] You have a new follower"] = "[Friendica:Oznámení] Máte nového sledujícího";
+$a->strings["You have a new follower at %2\$s : %1\$s"] = "Máte nového sledujícího na %2\$s : %1\$s";
 $a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Oznámení] Obdržen návrh přátelství";
 $a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Obdržel/a jste návrh přátelství od uživatele „%1\$s“ na %2\$s";
 $a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Obdržel/a jste [url=%1\$s]návrh přátelství[/url] s uživatelem %2\$s od uživatele %3\$s.";
@@ -326,7 +326,7 @@ $a->strings["The last worker execution was on %s UTC. This is older than one hou
 $a->strings["Friendica's configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for help with the transition."] = "Konfigurace Friendica je nyní uložena v souboru config/local.config.php, prosím zkopírujte soubor config/local-sample.config.php a přesuňte svou konfiguraci ze souboru <code>.htconfig.php</code>. Pro pomoc při přechodu navštivte <a href=\"%s\">stránku Config v sekci nápovědy</a>.";
 $a->strings["<a href=\"%s\">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href=\"%s\">the installation page</a> for help."] = "<a href=\"%s\">%s</a> není na Vašem systému dosažitelné. Tohle je závažná chyba konfigurace, která brání komunikaci mezi servery. Pro pomoc navštivte <a href=\"%s\">stránku instalace</a>.";
 $a->strings["Normal Account"] = "Normální účet";
-$a->strings["Automatic Follower Account"] = "Účet s automatickými sledovateli";
+$a->strings["Automatic Follower Account"] = "Účet s automatickými sledujícími";
 $a->strings["Public Forum Account"] = "Účet veřejného fóra";
 $a->strings["Automatic Friend Account"] = "Účet s automatickými přáteli";
 $a->strings["Blog Account"] = "Blogovací účet";
@@ -1047,7 +1047,7 @@ $a->strings["Enter your email access information on your Connector Settings page
 $a->strings["Go to Your Contacts Page"] = "Navštivte Vaši stránku s kontakty";
 $a->strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog."] = "Vaše stránka Kontakty je Vaše brána k nastavování přátelství a propojení s přáteli z dalších sítí. Typicky zadáte jejich emailovou adresu nebo URL adresu jejich serveru prostřednictvím dialogu <em>Přidat nový kontakt</em>.";
 $a->strings["Go to Your Site's Directory"] = "Navštivte adresář Vaší stránky";
-$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. Najděte na jejich stránce odkaz <em>Spojit</em> nebo <em>Sledovat</em>. Uveďte svou vlastní adresu identity, je-li požadována.";
+$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. Najděte na jejich stránce odkaz <em>Spojit se</em> nebo <em>Sledovat</em>. Uveďte svou vlastní adresu identity, je-li požadována.";
 $a->strings["Finding New People"] = "Nalezení nových lidí";
 $a->strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "Na bočním panelu stránky s kontakty je několik nástrojů k nalezení nových přátel. Porovnáme lidi dle zájmů, najdeme lidi podle jména nebo zájmu a poskytneme Vám návrhy založené na přátelství v síti přátel. Na zcela novém serveru se návrhy přátelství nabínou obvykle během 24 hodin.";
 $a->strings["Groups"] = "Skupiny";
@@ -1354,7 +1354,7 @@ $a->strings["Disable Content Warning"] = "Vypnout varování o obsahu";
 $a->strings["Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn't affect any other content filtering you eventually set up."] = "Uživatelé na sítích, jako je Mastodon nebo Pleroma, si mohou nastavit pole s varováním o obsahu, která ve výchozim nastavení skryje jejich příspěvek. Tato možnost vypíná automatické skrývání a nastavuje varování o obsahu jako titulek příspěvku. Toto se netýká žádného dalšího filtrování obsahu, které se rozhodnete nastavit.";
 $a->strings["Disable intelligent shortening"] = "Vypnout inteligentní zkracování";
 $a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "Normálně se systém snaží nalézt nejlepší odkaz pro přidání zkrácených příspěvků. Pokud je tato možnost aktivní, pak každý zkrácený příspěvek bude vždy ukazovat na originální příspěvek Friendica.";
-$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automaticky sledovat jakékoliv sledovatele/zmiňovatele na GNU social (OStatus) ";
+$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automaticky sledovat jakékoliv sledující/zmiňující na GNU social (OStatus) ";
 $a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "Pokud obdržíte zprávu od neznámého uživatele z OStatus, tato možnost rozhoduje o tom, co dělat. Pokud je zaškrtnuta, bude pro každého neznámého uživatele vytvořen nový kontakt.";
 $a->strings["Default group for OStatus contacts"] = "Výchozí skupina pro kontakty z OStatus";
 $a->strings["Your legacy GNU Social account"] = "Váš starý účet na GNU social";
@@ -1408,11 +1408,11 @@ $a->strings["Account Types"] = "Typy účtů";
 $a->strings["Personal Page Subtypes"] = "Podtypy osobních stránek";
 $a->strings["Community Forum Subtypes"] = "Podtypy komunitních fór";
 $a->strings["Account for a personal profile."] = "Účet pro osobní profil.";
-$a->strings["Account for an organisation that automatically approves contact requests as \"Followers\"."] = "Účet pro organizaci, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledovatele“.";
-$a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "Účet pro zpravodaje, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledovatele“.";
+$a->strings["Account for an organisation that automatically approves contact requests as \"Followers\"."] = "Účet pro organizaci, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledující“.";
+$a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "Účet pro zpravodaje, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledující“.";
 $a->strings["Account for community discussions."] = "Účet pro komunitní diskuze.";
-$a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "Účet pro běžný osobní profil, který vyžaduje manuální potvrzení „Přátel“ a „Sledovatelů“.";
-$a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "Účet pro veřejný profil, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledovatele“.";
+$a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "Účet pro běžný osobní profil, který vyžaduje manuální potvrzení „Přátel“ a „Sledujících“.";
+$a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "Účet pro veřejný profil, který automaticky potvrzuje požadavky o přidání kontaktu jako „Sledující“.";
 $a->strings["Automatically approves all contact requests."] = "Automaticky potvrzuje všechny žádosti o přidání kontaktu.";
 $a->strings["Account for a popular profile that automatically approves contact requests as \"Friends\"."] = "Účet pro populární profil, který automaticky potvrzuje požadavky o přidání kontaktu jako „Přátele“.";
 $a->strings["Private Forum [Experimental]"] = "Soukromé fórum [Experimentální]";
@@ -1491,7 +1491,7 @@ $a->strings["Change the behaviour of this account for special situations"] = "Zm
 $a->strings["Relocate"] = "Přemístit";
 $a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "Pokud jste přemístil/a tento profil z jiného serveru a nějaký z vašich kontaktů nedostává Vaše aktualizace, zkuste stisknout toto tlačítko.";
 $a->strings["Resend relocate message to contacts"] = "Znovu odeslat správu o přemístění Vašim kontaktům";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sleduje %3\$s uživatele %2\$s";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sleduje %3\$s uživatele %2\$s";
 $a->strings["Do you really want to delete this suggestion?"] = "Opravdu chcete smazat tento návrh?";
 $a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Nejsou dostupné žádné návrhy. Pokud je toto nový server, zkuste to znovu za 24 hodin.";
 $a->strings["Ignore/Hide"] = "Ignorovat/skrýt";
@@ -1642,7 +1642,7 @@ $a->strings["Advanced Profile Settings"] = "Pokročilá nastavení profilu";
 $a->strings["List Forums"] = "Vypsat fóra";
 $a->strings["Show visitors public community forums at the Advanced Profile Page"] = "Zobrazit návštěvníkům veřejná komunitní fóra na stránce pokročilého profilu";
 $a->strings["Tag Cloud"] = "Štítkový oblak";
-$a->strings["Provide a personal tag cloud on your profile page"] = "Poskytne na Vaší profilové stránce osobní \"štítkový oblak\"";
+$a->strings["Provide a personal tag cloud on your profile page"] = "Poskytne na Vaší profilové stránce osobní „štítkový oblak“";
 $a->strings["Display Membership Date"] = "Zobrazit datum členství";
 $a->strings["Display membership date in profile"] = "Zobrazit v profilu datum připojení";
 $a->strings["Forums"] = "Fóra";
@@ -1882,7 +1882,7 @@ $a->strings["%s may attend %s's event"] = "%s by se mohl/a zúčastnit události
 $a->strings["%s is now friends with %s"] = "%s se nyní přátelí s uživatelem %s";
 $a->strings["Friend Suggestion"] = "Návrh přátelství";
 $a->strings["Friend/Connect Request"] = "Požadavek o přátelství/spojení";
-$a->strings["New Follower"] = "Nový sledovatel";
+$a->strings["New Follower"] = "Nový sledující";
 $a->strings["Error 400 - Bad Request"] = "Chyba 400 - Špatný požadavek";
 $a->strings["Error 401 - Unauthorized"] = "Chyba 401 - Neautorizováno";
 $a->strings["Error 403 - Forbidden"] = "Chyba 403 - Zakázáno";
index a6d2a9ec2f12cee08106d31b6ee47d06a5b603c5..5e8900cf05615ad706a8adf06eb27f0bfa189a06 100644 (file)
@@ -44,8 +44,8 @@ msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-01-21 10:24-0500\n"
-"PO-Revision-Date: 2019-01-27 15:27+0000\n"
-"Last-Translator: Copiis Praeesse <richard@zsemberi.de>\n"
+"PO-Revision-Date: 2019-02-02 07:13+0000\n"
+"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
 "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -570,7 +570,7 @@ msgstr "Bitte besuche %s, um Deine privaten Nachrichten anzusehen und/oder zu be
 #: include/enotify.php:164
 #, php-format
 msgid "%1$s tagged you on [url=%2$s]a %3$s[/url]"
-msgstr "%1$s markierte dich auf [url=%2$s]a %3$s[/url]"
+msgstr "%1$s erwähnte dich in [url=%2$s] einem %3$s[/url]"
 
 #: include/enotify.php:170
 #, php-format
@@ -580,7 +580,7 @@ msgstr "%1$s kommentierte [url=%2$s]a %3$s[/url]"
 #: include/enotify.php:180
 #, php-format
 msgid "%1$s tagged you on [url=%2$s]%3$s's %4$s[/url]"
-msgstr "%1$s markierte dich auf  [url=%2$s]%3$s's %4$s[/url]"
+msgstr "%1$s erwähnte dich auf  [url=%2$s]%3$s's %4$s[/url]"
 
 #: include/enotify.php:187
 #, php-format
@@ -590,7 +590,7 @@ msgstr "%1$s kommentierte [url=%2$s]%3$ss %4$s[/url]"
 #: include/enotify.php:199
 #, php-format
 msgid "%1$s tagged you on [url=%2$s]your %3$s[/url]"
-msgstr "%1$s markierte dich auf [url=%2$s]a %3$s[/url]"
+msgstr "%1$s erwähnte dich auf [url=%2$s] deinem %3$s[/url]"
 
 #: include/enotify.php:205
 #, php-format
@@ -600,12 +600,12 @@ msgstr "%1$s kommentierte [url=%2$s]deinen %3$s[/url]"
 #: include/enotify.php:216
 #, php-format
 msgid "%1$s tagged you on [url=%2$s]their %3$s[/url]"
-msgstr "%1$s markierte dich auf [url=%2$s]a %3$s[/url]"
+msgstr "%1$s erwähnte dich im [url=%2$s]eigenen %3$s[/url]"
 
 #: include/enotify.php:222
 #, php-format
 msgid "%1$s commented on [url=%2$s]their %3$s[/url]"
-msgstr "%1$s kommentierte [url=%2$s]a %3$s[/url]"
+msgstr "%1$s kommentierte den [url=%2$s] eigenen %3$s[/url]"
 
 #: include/enotify.php:235
 #, php-format
@@ -1710,11 +1710,11 @@ msgstr "Regelt ob es sich bei dieser Instanz um eine ein Personen Installation o
 
 #: mod/admin.php:1580
 msgid "File storage backend"
-msgstr "Datenspeicher im Hintergrund"
+msgstr "Datenspeicher Backend"
 
 #: mod/admin.php:1580
 msgid "Backend used to store uploaded files data"
-msgstr "Benutzter Datenspeicher um hochgeladene Daten zu speichern"
+msgstr "Benutzter Datenspeicher um hochgeladene Dateien zu speichern"
 
 #: mod/admin.php:1582
 msgid "Maximum image size"
@@ -8704,13 +8704,13 @@ msgstr "Der Dateisystemspeicher konnte die Daten nicht in \"%s\", speichern. Üb
 
 #: src/Model/Storage/Filesystem.php:122
 msgid "Storage base path"
-msgstr "Speicherbasispfad"
+msgstr "Dateipfad zum Speicher"
 
 #: src/Model/Storage/Filesystem.php:124
 msgid ""
 "Folder were uploaded files are saved. For maximum security, This should be a"
 " path outside web server folder tree"
-msgstr "Ordner in die Dateien hochgeladen werden. Für maximale Sicherheit sollte dies ein Pfad außerhalb der Webserver-Ordnerstruktur sein"
+msgstr "Verzeichnis in das Dateien hochgeladen werden. Für maximale Sicherheit sollte dies ein Pfad außerhalb der Webserver-Verzeichnisstruktur sein"
 
 #: src/Model/Storage/Filesystem.php:134
 msgid "Enter a valid existing folder"
index 6cbb90f49c60406a9b5ca57cf09cf1cddf966b3f..c564336834d69655ca0b4195819b4d827b011747 100644 (file)
@@ -135,14 +135,14 @@ $a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s hat Dir e
 $a->strings["a private message"] = "eine private Nachricht";
 $a->strings["%1\$s sent you %2\$s."] = "%1\$s schickte Dir %2\$s.";
 $a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um Deine privaten Nachrichten anzusehen und/oder zu beantworten.";
-$a->strings["%1\$s tagged you on [url=%2\$s]a %3\$s[/url]"] = "%1\$s markierte dich auf [url=%2\$s]a %3\$s[/url]";
+$a->strings["%1\$s tagged you on [url=%2\$s]a %3\$s[/url]"] = "%1\$s erwähnte dich in [url=%2\$s] einem %3\$s[/url]";
 $a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]a %3\$s[/url]";
-$a->strings["%1\$s tagged you on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s markierte dich auf  [url=%2\$s]%3\$s's %4\$s[/url]";
+$a->strings["%1\$s tagged you on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s erwähnte dich auf  [url=%2\$s]%3\$s's %4\$s[/url]";
 $a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]%3\$ss %4\$s[/url]";
-$a->strings["%1\$s tagged you on [url=%2\$s]your %3\$s[/url]"] = "%1\$s markierte dich auf [url=%2\$s]a %3\$s[/url]";
+$a->strings["%1\$s tagged you on [url=%2\$s]your %3\$s[/url]"] = "%1\$s erwähnte dich auf [url=%2\$s] deinem %3\$s[/url]";
 $a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]deinen %3\$s[/url]";
-$a->strings["%1\$s tagged you on [url=%2\$s]their %3\$s[/url]"] = "%1\$s markierte dich auf [url=%2\$s]a %3\$s[/url]";
-$a->strings["%1\$s commented on [url=%2\$s]their %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]a %3\$s[/url]";
+$a->strings["%1\$s tagged you on [url=%2\$s]their %3\$s[/url]"] = "%1\$s erwähnte dich im [url=%2\$s]eigenen %3\$s[/url]";
+$a->strings["%1\$s commented on [url=%2\$s]their %3\$s[/url]"] = "%1\$s kommentierte den [url=%2\$s] eigenen %3\$s[/url]";
 $a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica-Meldung] %s hat Dich erwähnt";
 $a->strings["%1\$s tagged you at %2\$s"] = "%1\$s erwähnte Dich auf %2\$s";
 $a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica-Meldung] Kommentar zum Beitrag #%1\$d von %2\$s";
@@ -381,8 +381,8 @@ $a->strings["Hide help entry from navigation menu"] = "Verberge den Menüeintrag
 $a->strings["Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly."] = "Verbirgt den Menüeintrag für die Hilfe-Seiten im Navigationsmenü. Die Seiten können weiterhin über /help aufgerufen werden.";
 $a->strings["Single user instance"] = "Ein-Nutzer Instanz";
 $a->strings["Make this instance multi-user or single-user for the named user"] = "Regelt ob es sich bei dieser Instanz um eine ein Personen Installation oder eine Installation mit mehr als einem Nutzer handelt.";
-$a->strings["File storage backend"] = "Datenspeicher im Hintergrund";
-$a->strings["Backend used to store uploaded files data"] = "Benutzter Datenspeicher um hochgeladene Daten zu speichern";
+$a->strings["File storage backend"] = "Datenspeicher Backend";
+$a->strings["Backend used to store uploaded files data"] = "Benutzter Datenspeicher um hochgeladene Dateien zu speichern";
 $a->strings["Maximum image size"] = "Maximale Bildgröße";
 $a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Uploadgröße von Bildern in Bytes. Standard ist 0, d.h. ohne Limit.";
 $a->strings["Maximum image length"] = "Maximale Bildlänge";
@@ -1970,8 +1970,8 @@ $a->strings["Database storage failed to update %s"] = "Datenbankspeicher konnte
 $a->strings["Database storage failed to insert data"] = "Der Datenbankspeicher konnte keine Daten einfügen";
 $a->strings["Filesystem storage failed to create \"%s\". Check you write permissions."] = "Dateisystemspeicher konnte nicht erstellt werden \"%s\". Überprüfen Sie, ob Sie Schreibberechtigungen haben.";
 $a->strings["Filesystem storage failed to save data to \"%s\". Check your write permissions"] = "Der Dateisystemspeicher konnte die Daten nicht in \"%s\", speichern. Überprüfen Sie Ihre Schreibberechtigungen";
-$a->strings["Storage base path"] = "Speicherbasispfad";
-$a->strings["Folder were uploaded files are saved. For maximum security, This should be a path outside web server folder tree"] = "Ordner in die Dateien hochgeladen werden. Für maximale Sicherheit sollte dies ein Pfad außerhalb der Webserver-Ordnerstruktur sein";
+$a->strings["Storage base path"] = "Dateipfad zum Speicher";
+$a->strings["Folder were uploaded files are saved. For maximum security, This should be a path outside web server folder tree"] = "Verzeichnis in das Dateien hochgeladen werden. Für maximale Sicherheit sollte dies ein Pfad außerhalb der Webserver-Verzeichnisstruktur sein";
 $a->strings["Enter a valid existing folder"] = "Geben Sie einen gültigen, existierenden Ordner ein";
 $a->strings["Login failed"] = "Anmeldung fehlgeschlagen";
 $a->strings["Not enough information to authenticate"] = "Nicht genügend Informationen für die Authentifizierung";
index a186ee43469a98436c1037819a312fd96b80e80d..ae9d44b0a04f713e36cd9a77e3ea5b3a342469ef 100644 (file)
@@ -57,7 +57,7 @@ msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-01-21 10:24-0500\n"
-"PO-Revision-Date: 2019-01-24 20:24+0000\n"
+"PO-Revision-Date: 2019-02-01 08:22+0000\n"
 "Last-Translator: Waldemar Stoczkowski\n"
 "Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
 "MIME-Version: 1.0\n"
@@ -6422,7 +6422,7 @@ msgstr "Ustawienia hasła"
 msgid ""
 "Allowed characters are a-z, A-Z, 0-9 and special characters except white "
 "spaces, accentuated letters and colon (:)."
-msgstr ""
+msgstr "Dozwolone znaki to a-z, A-Z, 0-9 i znaki specjalne, z wyjątkiem białych znaków, podkreślonych liter i dwukropka (:)."
 
 #: mod/settings.php:1185
 msgid "Leave password fields blank unless changing"
@@ -7720,7 +7720,7 @@ msgid ""
 "The database configuration file \"config/local.config.php\" could not be "
 "written. Please use the enclosed text to create a configuration file in your"
 " web server root."
-msgstr ""
+msgstr "Plik konfiguracyjny bazy danych \"config/local.config.php\" nie mógł zostać zapisany. Proszę użyć załączonego tekstu, aby utworzyć plik konfiguracyjny w katalogu głównym serwera."
 
 #: src/Core/Installer.php:176
 msgid ""
@@ -7904,7 +7904,7 @@ msgstr "Jest to najczęściej ustawienie uprawnień, ponieważ serwer sieciowy m
 msgid ""
 "At the end of this procedure, we will give you a text to save in a file "
 "named local.config.php in your Friendica \"config\" folder."
-msgstr ""
+msgstr "Pod koniec tej procedury otrzymasz tekst do zapisania w pliku o nazwie local.config.php w folderze \"config\" Friendica."
 
 #: src/Core/Installer.php:471
 msgid ""
@@ -8737,7 +8737,7 @@ msgstr "OpenWebAuth: %1$s wita %2$s"
 #: src/Model/Storage/Database.php:37
 #, php-format
 msgid "Database storage failed to update %s"
-msgstr ""
+msgstr "Przechowywanie bazy danych nie powiodło się %s"
 
 #: src/Model/Storage/Database.php:44
 msgid "Database storage failed to insert data"
@@ -8767,7 +8767,7 @@ msgstr ""
 
 #: src/Model/Storage/Filesystem.php:134
 msgid "Enter a valid existing folder"
-msgstr ""
+msgstr "Wprowadź poprawny istniejący folder"
 
 #: src/Model/User.php:216
 msgid "Login failed"
@@ -9613,19 +9613,19 @@ msgstr "via Wall-To-Wall:"
 
 #: src/Object/Post.php:429
 msgid "Notifier task is pending"
-msgstr ""
+msgstr "Zadanie Notifier jest w toku"
 
 #: src/Object/Post.php:430
 msgid "Delivery to remote servers is pending"
-msgstr ""
+msgstr "Trwa przesyłanie do serwerów zdalnych"
 
 #: src/Object/Post.php:431
 msgid "Delivery to remote servers is underway"
-msgstr ""
+msgstr "Trwa dostawa do serwerów zdalnych"
 
 #: src/Object/Post.php:432
 msgid "Delivery to remote servers is mostly done"
-msgstr ""
+msgstr "Dostawa do zdalnych serwerów jest w większości wykonywana"
 
 #: src/Object/Post.php:451
 #, php-format
index a65f49b5dd43eab4e39701a279a7c4d6db1ce9da..80dbf020ff3463b9964073bbcafc2c4e16ea96ec 100644 (file)
@@ -1448,7 +1448,7 @@ $a->strings["Expire photos:"] = "Wygasanie zdjęć:";
 $a->strings["Only expire posts by others:"] = "Wygaszaj tylko te posty, które zostały napisane przez inne osoby:";
 $a->strings["Account Settings"] = "Ustawienia konta";
 $a->strings["Password Settings"] = "Ustawienia hasła";
-$a->strings["Allowed characters are a-z, A-Z, 0-9 and special characters except white spaces, accentuated letters and colon (:)."] = "";
+$a->strings["Allowed characters are a-z, A-Z, 0-9 and special characters except white spaces, accentuated letters and colon (:)."] = "Dozwolone znaki to a-z, A-Z, 0-9 i znaki specjalne, z wyjątkiem białych znaków, podkreślonych liter i dwukropka (:).";
 $a->strings["Leave password fields blank unless changing"] = "Pozostaw pole hasła puste, jeżeli nie chcesz go zmienić.";
 $a->strings["Current Password:"] = "Aktualne hasło:";
 $a->strings["Your current password to confirm the changes"] = "Wpisz aktualne hasło, aby potwierdzić zmiany";
@@ -1769,7 +1769,7 @@ $a->strings["Check for pending update actions."] = "Sprawdź oczekujące działa
 $a->strings["Done."] = "Gotowe.";
 $a->strings["Execute pending post updates."] = "Wykonaj oczekujące aktualizacje postów.";
 $a->strings["All pending post updates are done."] = "Wszystkie oczekujące aktualizacje postów są gotowe.";
-$a->strings["The database configuration file \"config/local.config.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "";
+$a->strings["The database configuration file \"config/local.config.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Plik konfiguracyjny bazy danych \"config/local.config.php\" nie mógł zostać zapisany. Proszę użyć załączonego tekstu, aby utworzyć plik konfiguracyjny w katalogu głównym serwera.";
 $a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Może być konieczne zaimportowanie pliku \"database.sql\" ręcznie, używając phpmyadmin lub mysql.";
 $a->strings["Please see the file \"INSTALL.txt\"."] = "Proszę przejrzeć plik \"INSTALL.txt\".";
 $a->strings["Could not find a command line version of PHP in the web server PATH."] = "Nie można znaleźć PHP dla wiersza poleceń w PATH serwera.";
@@ -1809,7 +1809,7 @@ $a->strings["JSON PHP module"] = "Moduł PHP JSON";
 $a->strings["Error: JSON PHP module required but not installed."] = "Błąd: wymagany jest moduł JSON PHP, ale nie jest zainstalowany.";
 $a->strings["The web installer needs to be able to create a file called \"local.config.php\" in the \"config\" folder of your web server and it is unable to do so."] = "Instalator internetowy musi mieć możliwość utworzenia pliku o nazwie \"local.config.php\" w folderze \"config\" serwera WWW i nie może tego zrobić.";
 $a->strings["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."] = "Jest to najczęściej ustawienie uprawnień, ponieważ serwer sieciowy może nie być w stanie zapisywać plików w folderze - nawet jeśli możesz.";
-$a->strings["At the end of this procedure, we will give you a text to save in a file named local.config.php in your Friendica \"config\" folder."] = "";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named local.config.php in your Friendica \"config\" folder."] = "Pod koniec tej procedury otrzymasz tekst do zapisania w pliku o nazwie local.config.php w folderze \"config\" Friendica.";
 $a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Alternatywnie można pominąć tę procedurę i wykonać ręczną instalację. Proszę zobaczyć plik 'INSTALL.txt' z instrukcjami.";
 $a->strings["config/local.config.php is writable"] = "config/local.config.php jest zapisywalny";
 $a->strings["Friendica uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Friendica używa silnika szablonów Smarty3 do renderowania swoich widoków. Smarty3 kompiluje szablony do PHP, aby przyspieszyć renderowanie.";
@@ -2006,13 +2006,13 @@ $a->strings["Profile Details"] = "Szczegóły profilu";
 $a->strings["Only You Can See This"] = "Tylko ty możesz to zobaczyć";
 $a->strings["Tips for New Members"] = "Wskazówki dla nowych użytkowników";
 $a->strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s wita %2\$s";
-$a->strings["Database storage failed to update %s"] = "";
+$a->strings["Database storage failed to update %s"] = "Przechowywanie bazy danych nie powiodło się %s";
 $a->strings["Database storage failed to insert data"] = "Magazyn bazy danych nie mógł wstawić danych";
 $a->strings["Filesystem storage failed to create \"%s\". Check you write permissions."] = "";
 $a->strings["Filesystem storage failed to save data to \"%s\". Check your write permissions"] = "";
 $a->strings["Storage base path"] = "";
 $a->strings["Folder were uploaded files are saved. For maximum security, This should be a path outside web server folder tree"] = "";
-$a->strings["Enter a valid existing folder"] = "";
+$a->strings["Enter a valid existing folder"] = "Wprowadź poprawny istniejący folder";
 $a->strings["Login failed"] = "Logowanie nieudane";
 $a->strings["Not enough information to authenticate"] = "Za mało informacji do uwierzytelnienia";
 $a->strings["Password can't be empty"] = "Hasło nie może być puste";
@@ -2209,10 +2209,10 @@ $a->strings["to"] = "do";
 $a->strings["via"] = "przez";
 $a->strings["Wall-to-Wall"] = "Wall-to-Wall";
 $a->strings["via Wall-To-Wall:"] = "via Wall-To-Wall:";
-$a->strings["Notifier task is pending"] = "";
-$a->strings["Delivery to remote servers is pending"] = "";
-$a->strings["Delivery to remote servers is underway"] = "";
-$a->strings["Delivery to remote servers is mostly done"] = "";
+$a->strings["Notifier task is pending"] = "Zadanie Notifier jest w toku";
+$a->strings["Delivery to remote servers is pending"] = "Trwa przesyłanie do serwerów zdalnych";
+$a->strings["Delivery to remote servers is underway"] = "Trwa dostawa do serwerów zdalnych";
+$a->strings["Delivery to remote servers is mostly done"] = "Dostawa do zdalnych serwerów jest w większości wykonywana";
 $a->strings["%d comment"] = [
        0 => "%d komentarz",
        1 => "%d komentarze",
index b6de382591c4b96d74150ed6b83c87fe2f88b763..d0f408ae377d1f13b031d26cd19904acf7973766 100644 (file)
@@ -9,14 +9,14 @@
 # mytbk <mytbk920423@gmail.com>, 2017
 # mytbk <mytbk920423@gmail.com>, 2017
 # Matthew Exon <transifex.mexon@spamgourmet.com>, 2012-2013
-# 朱陈锬 <tangenters@outlook.com>, 2018
+# 朱陈锬 <tangenters@outlook.com>, 2018-2019
 msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-08-25 15:34+0000\n"
-"PO-Revision-Date: 2018-09-08 06:12+0000\n"
-"Last-Translator: tomacat <hexuxin@foxmail.com>\n"
+"POT-Creation-Date: 2019-01-21 10:24-0500\n"
+"PO-Revision-Date: 2019-02-01 15:58+0000\n"
+"Last-Translator: 朱陈锬 <tangenters@outlook.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/Friendica/friendica/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,4016 +24,4096 @@ msgstr ""
 "Language: zh_CN\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: index.php:261 mod/apps.php:14
-msgid "You must be logged in to use addons. "
-msgstr "您用插件前要登录"
+#: include/api.php:1140
+#, php-format
+msgid "Daily posting limit of %d post reached. The post was rejected."
+msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
+msgstr[0] "达到每日 %d 发文限制。此文被拒绝发出。"
 
-#: index.php:308 mod/fetch.php:20 mod/fetch.php:47 mod/fetch.php:54
-#: mod/help.php:62
-msgid "Not Found"
-msgstr "未发现"
+#: include/api.php:1154
+#, php-format
+msgid "Weekly posting limit of %d post reached. The post was rejected."
+msgid_plural ""
+"Weekly posting limit of %d posts reached. The post was rejected."
+msgstr[0] "达到每周 %d 发文限制。此文被拒绝发出。"
 
-#: index.php:313 mod/viewcontacts.php:35 mod/dfrn_poll.php:486 mod/help.php:65
-#: mod/cal.php:44
-msgid "Page not found."
-msgstr "页发现。"
+#: include/api.php:1168
+#, php-format
+msgid "Monthly posting limit of %d post reached. The post was rejected."
+msgstr "达到每月 %d 发文限制。此文被拒绝发出。"
 
-#: index.php:431 mod/group.php:83 mod/profperm.php:29
-msgid "Permission denied"
-msgstr "权限不够"
+#: include/api.php:4352 mod/photos.php:93 mod/photos.php:201
+#: mod/photos.php:694 mod/photos.php:1125 mod/photos.php:1142
+#: mod/photos.php:1635 mod/profile_photo.php:86 mod/profile_photo.php:95
+#: mod/profile_photo.php:104 mod/profile_photo.php:218
+#: mod/profile_photo.php:308 mod/profile_photo.php:318 src/Model/User.php:681
+#: src/Model/User.php:689 src/Model/User.php:697
+msgid "Profile Photos"
+msgstr "简介照片"
 
-#: index.php:432 include/items.php:412 mod/crepair.php:100
-#: mod/wallmessage.php:16 mod/wallmessage.php:40 mod/wallmessage.php:79
-#: mod/wallmessage.php:103 mod/dfrn_confirm.php:66 mod/dirfind.php:27
-#: mod/manage.php:131 mod/settings.php:43 mod/settings.php:149
-#: mod/settings.php:665 mod/common.php:28 mod/network.php:34 mod/group.php:26
-#: mod/delegate.php:27 mod/delegate.php:45 mod/delegate.php:56
-#: mod/repair_ostatus.php:16 mod/viewcontacts.php:60 mod/unfollow.php:17
-#: mod/unfollow.php:59 mod/unfollow.php:93 mod/register.php:53
-#: mod/notifications.php:67 mod/message.php:60 mod/message.php:105
-#: mod/ostatus_subscribe.php:17 mod/nogroup.php:23 mod/suggest.php:61
-#: mod/wall_upload.php:104 mod/wall_upload.php:107 mod/api.php:35
-#: mod/api.php:40 mod/profile_photo.php:29 mod/profile_photo.php:176
-#: mod/profile_photo.php:198 mod/wall_attach.php:80 mod/wall_attach.php:83
-#: mod/item.php:166 mod/uimport.php:28 mod/cal.php:306 mod/regmod.php:108
-#: mod/editpost.php:19 mod/fsuggest.php:80 mod/allfriends.php:23
-#: mod/contacts.php:381 mod/events.php:193 mod/follow.php:54
-#: mod/follow.php:118 mod/attach.php:39 mod/poke.php:145 mod/invite.php:21
-#: mod/invite.php:112 mod/notes.php:32 mod/profiles.php:179
-#: mod/profiles.php:511 mod/photos.php:183 mod/photos.php:1065
-msgid "Permission denied."
-msgstr "权限不够。"
+#: include/conversation.php:156 include/conversation.php:292
+#: src/Model/Item.php:3221
+msgid "event"
+msgstr "事件"
 
-#: index.php:460
-msgid "toggle mobile"
-msgstr "切换移动设备"
+#: include/conversation.php:159 include/conversation.php:169
+#: include/conversation.php:295 include/conversation.php:304
+#: mod/subthread.php:88 mod/tagger.php:70
+msgid "status"
+msgstr "状态"
 
-#: view/theme/duepuntozero/config.php:54 src/Model/User.php:544
-msgid "default"
-msgstr "默认"
+#: include/conversation.php:164 include/conversation.php:300
+#: mod/subthread.php:88 mod/tagger.php:70 src/Model/Item.php:3223
+msgid "photo"
+msgstr "照片"
 
-#: view/theme/duepuntozero/config.php:55
-msgid "greenzero"
-msgstr "greenzero"
+#: include/conversation.php:176
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s 喜欢 %2$s 的 %3$s"
 
-#: view/theme/duepuntozero/config.php:56
-msgid "purplezero"
-msgstr "purplezero"
+#: include/conversation.php:178
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s 不喜欢 %2$s 的 %3$s"
 
-#: view/theme/duepuntozero/config.php:57
-msgid "easterbunny"
-msgstr "easterbunny"
+#: include/conversation.php:180
+#, php-format
+msgid "%1$s attends %2$s's %3$s"
+msgstr "%1$s 参加了 %2$s 的 %3$s"
 
-#: view/theme/duepuntozero/config.php:58
-msgid "darkzero"
-msgstr "darkzero"
+#: include/conversation.php:182
+#, php-format
+msgid "%1$s doesn't attend %2$s's %3$s"
+msgstr "%1$s 没有参加 %2$s 的 %3$s"
 
-#: view/theme/duepuntozero/config.php:59
-msgid "comix"
-msgstr "comix"
+#: include/conversation.php:184
+#, php-format
+msgid "%1$s attends maybe %2$s's %3$s"
+msgstr ""
 
-#: view/theme/duepuntozero/config.php:60
-msgid "slackr"
-msgstr "slackr"
+#: include/conversation.php:219
+#, php-format
+msgid "%1$s is now friends with %2$s"
+msgstr "%1$s是成为%2$s的朋友"
 
-#: view/theme/duepuntozero/config.php:71 view/theme/quattro/config.php:73
-#: view/theme/vier/config.php:119 view/theme/frio/config.php:118
-#: mod/crepair.php:150 mod/install.php:206 mod/install.php:244
-#: mod/manage.php:184 mod/message.php:264 mod/message.php:430
-#: mod/fsuggest.php:114 mod/contacts.php:630 mod/events.php:533
-#: mod/localtime.php:56 mod/poke.php:195 mod/invite.php:155
-#: mod/profiles.php:577 mod/photos.php:1094 mod/photos.php:1180
-#: mod/photos.php:1452 mod/photos.php:1497 mod/photos.php:1536
-#: mod/photos.php:1596 src/Object/Post.php:795
-msgid "Submit"
-msgstr "提交"
+#: include/conversation.php:260
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s把%2$s戳"
 
-#: view/theme/duepuntozero/config.php:73 view/theme/quattro/config.php:75
-#: view/theme/vier/config.php:121 view/theme/frio/config.php:120
-#: mod/settings.php:981
-msgid "Theme settings"
-msgstr "主题设置"
+#: include/conversation.php:314 mod/tagger.php:108
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s把%4$s标签%2$s的%3$s"
 
-#: view/theme/duepuntozero/config.php:74
-msgid "Variations"
-msgstr "变化"
+#: include/conversation.php:336
+msgid "post/item"
+msgstr "文章/项目"
 
-#: view/theme/quattro/config.php:76
-msgid "Alignment"
-msgstr "对齐"
+#: include/conversation.php:337
+#, php-format
+msgid "%1$s marked %2$s's %3$s as favorite"
+msgstr "%1$s标注%2$s的%3$s为偏爱"
 
-#: view/theme/quattro/config.php:76
-msgid "Left"
-msgstr "左边"
+#: include/conversation.php:551 mod/photos.php:1466 mod/profiles.php:356
+msgid "Likes"
+msgstr "å\96\9c欢"
 
-#: view/theme/quattro/config.php:76
-msgid "Center"
-msgstr "中é\97´"
+#: include/conversation.php:551 mod/photos.php:1466 mod/profiles.php:360
+msgid "Dislikes"
+msgstr "ä¸\8då\96\9c欢"
 
-#: view/theme/quattro/config.php:77
-msgid "Color scheme"
-msgstr "色彩方案"
+#: include/conversation.php:552 include/conversation.php:1484
+#: mod/photos.php:1467
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "正在参加"
 
-#: view/theme/quattro/config.php:78
-msgid "Posts font size"
-msgstr "æ\96\87ç« "
+#: include/conversation.php:552 mod/photos.php:1467
+msgid "Not attending"
+msgstr "ä¸\8då\9c¨å\8f\82å\8a "
 
-#: view/theme/quattro/config.php:79
-msgid "Textareas font size"
-msgstr "文本区字体大小"
+#: include/conversation.php:552 mod/photos.php:1467
+msgid "Might attend"
+msgstr "可以参加"
 
-#: view/theme/vier/config.php:75
-msgid "Comma separated list of helper forums"
-msgstr ""
+#: include/conversation.php:632 mod/photos.php:1523 src/Object/Post.php:204
+msgid "Select"
+msgstr "选择"
 
-#: view/theme/vier/config.php:115 src/Core/ACL.php:298
-msgid "don't show"
-msgstr "不要显示"
+#: include/conversation.php:633 mod/admin.php:2036 mod/photos.php:1524
+#: mod/settings.php:729 src/Module/Contact.php:830 src/Module/Contact.php:1105
+msgid "Delete"
+msgstr "删除"
 
-#: view/theme/vier/config.php:115 src/Core/ACL.php:297
-msgid "show"
-msgstr "显示"
+#: include/conversation.php:667 src/Object/Post.php:377
+#: src/Object/Post.php:378
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "看%s的简介@ %s"
 
-#: view/theme/vier/config.php:122
-msgid "Set style"
-msgstr "设置风格"
+#: include/conversation.php:679 src/Object/Post.php:365
+msgid "Categories:"
+msgstr "种类:"
 
-#: view/theme/vier/config.php:123
-msgid "Community Pages"
-msgstr "社会页"
+#: include/conversation.php:680 src/Object/Post.php:366
+msgid "Filed under:"
+msgstr "归档在:"
 
-#: view/theme/vier/config.php:124 view/theme/vier/theme.php:149
-msgid "Community Profiles"
-msgstr "社会简介"
+#: include/conversation.php:687 src/Object/Post.php:391
+#, php-format
+msgid "%s from %s"
+msgstr "%s从%s"
 
-#: view/theme/vier/config.php:125
-msgid "Help or @NewHere ?"
-msgstr "需要帮助或@第一次来这儿?"
+#: include/conversation.php:702
+msgid "View in context"
+msgstr "看在上下文"
 
-#: view/theme/vier/config.php:126 view/theme/vier/theme.php:386
-msgid "Connect Services"
-msgstr "连接服务"
+#: include/conversation.php:704 include/conversation.php:1152
+#: mod/editpost.php:107 mod/message.php:262 mod/message.php:444
+#: mod/photos.php:1439 mod/wallmessage.php:141 src/Object/Post.php:417
+msgid "Please wait"
+msgstr "请等一下"
 
-#: view/theme/vier/config.php:127
-msgid "Find Friends"
-msgstr "找朋友们"
+#: include/conversation.php:768
+msgid "remove"
+msgstr "删除"
 
-#: view/theme/vier/config.php:128 view/theme/vier/theme.php:179
-msgid "Last users"
-msgstr "上次用户"
+#: include/conversation.php:772
+msgid "Delete Selected Items"
+msgstr "删除选的项目"
 
-#: view/theme/vier/theme.php:197 src/Content/Widget.php:59
-msgid "Find People"
-msgstr "找人物"
+#: include/conversation.php:872 view/theme/frio/theme.php:356
+msgid "Follow Thread"
+msgstr ""
 
-#: view/theme/vier/theme.php:198 src/Content/Widget.php:60
-msgid "Enter name or interest"
-msgstr "输入名字或兴趣"
+#: include/conversation.php:873 src/Model/Contact.php:996
+msgid "View Status"
+msgstr "看现状"
 
-#: view/theme/vier/theme.php:199 include/conversation.php:881
-#: mod/dirfind.php:231 mod/match.php:90 mod/suggest.php:86
-#: mod/allfriends.php:76 mod/contacts.php:604 mod/contacts.php:610
-#: mod/follow.php:143 src/Model/Contact.php:933 src/Content/Widget.php:61
-msgid "Connect/Follow"
-msgstr "连接/关注"
+#: include/conversation.php:874 include/conversation.php:890
+#: mod/allfriends.php:74 mod/directory.php:167 mod/dirfind.php:228
+#: mod/match.php:84 mod/suggest.php:86 src/Model/Contact.php:936
+#: src/Model/Contact.php:989 src/Model/Contact.php:997
+msgid "View Profile"
+msgstr "看简介"
 
-#: view/theme/vier/theme.php:200 src/Content/Widget.php:62
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "比如:罗伯特·摩根斯坦,钓鱼"
+#: include/conversation.php:875 src/Model/Contact.php:998
+msgid "View Photos"
+msgstr "看照片"
 
-#: view/theme/vier/theme.php:201 mod/directory.php:214 mod/contacts.php:842
-#: src/Content/Widget.php:63
-msgid "Find"
-msgstr "搜索"
+#: include/conversation.php:876 src/Model/Contact.php:990
+#: src/Model/Contact.php:999
+msgid "Network Posts"
+msgstr "网络文章"
 
-#: view/theme/vier/theme.php:202 mod/suggest.php:117 src/Content/Widget.php:64
-msgid "Friend Suggestions"
-msgstr "朋友推荐"
+#: include/conversation.php:877 src/Model/Contact.php:991
+#: src/Model/Contact.php:1000
+msgid "View Contact"
+msgstr "查看联系人"
 
-#: view/theme/vier/theme.php:203 src/Content/Widget.php:65
-msgid "Similar Interests"
-msgstr "相似兴趣"
+#: include/conversation.php:878 src/Model/Contact.php:1002
+msgid "Send PM"
+msgstr "发送私信"
 
-#: view/theme/vier/theme.php:204 src/Content/Widget.php:66
-msgid "Random Profile"
-msgstr "随机简介"
+#: include/conversation.php:882 src/Model/Contact.php:1003
+msgid "Poke"
+msgstr ""
 
-#: view/theme/vier/theme.php:205 src/Content/Widget.php:67
-msgid "Invite Friends"
-msgstr "邀请朋友们"
+#: include/conversation.php:887 mod/allfriends.php:75 mod/dirfind.php:229
+#: mod/follow.php:148 mod/match.php:85 mod/suggest.php:87
+#: src/Content/Widget.php:63 src/Model/Contact.php:992
+#: src/Module/Contact.php:576 view/theme/vier/theme.php:201
+msgid "Connect/Follow"
+msgstr "连接/关注"
 
-#: view/theme/vier/theme.php:206 mod/directory.php:207
-#: src/Content/Widget.php:68
-msgid "Global Directory"
-msgstr "综合目录"
+#: include/conversation.php:1006
+#, php-format
+msgid "%s likes this."
+msgstr "%s喜欢这个."
 
-#: view/theme/vier/theme.php:208 src/Content/Widget.php:70
-msgid "Local Directory"
-msgstr "本地目录"
+#: include/conversation.php:1009
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s没有喜欢这个."
 
-#: view/theme/vier/theme.php:251 include/text.php:909 src/Content/Nav.php:151
-#: src/Content/ForumManager.php:125
-msgid "Forums"
-msgstr "论坛"
+#: include/conversation.php:1012
+#, php-format
+msgid "%s attends."
+msgstr "%s 参加。"
 
-#: view/theme/vier/theme.php:253 src/Content/ForumManager.php:127
-msgid "External link to forum"
-msgstr "到论坛的外链"
+#: include/conversation.php:1015
+#, php-format
+msgid "%s doesn't attend."
+msgstr "%s 不参加。"
 
-#: view/theme/vier/theme.php:256 include/items.php:489 src/Object/Post.php:429
-#: src/App.php:786 src/Content/Widget.php:310 src/Content/ForumManager.php:130
-msgid "show more"
-msgstr "显示更多"
+#: include/conversation.php:1018
+#, php-format
+msgid "%s attends maybe."
+msgstr ""
 
-#: view/theme/vier/theme.php:289
-msgid "Quick Start"
-msgstr "å¿«é\80\9få\85¥é\97¨"
+#: include/conversation.php:1029
+msgid "and"
+msgstr "å\92\8c"
 
-#: view/theme/vier/theme.php:295 mod/help.php:56 src/Content/Nav.php:134
-msgid "Help"
-msgstr "帮助"
+#: include/conversation.php:1035
+#, php-format
+msgid "and %d other people"
+msgstr "和 %d 个其他人"
 
-#: view/theme/frio/config.php:102
-msgid "Custom"
-msgstr ""
+#: include/conversation.php:1044
+#, php-format
+msgid "<span  %1$s>%2$d people</span> like this"
+msgstr "<span  %1$s>%2$d个人</span>喜欢"
 
-#: view/theme/frio/config.php:114
-msgid "Note"
-msgstr "便条"
+#: include/conversation.php:1045
+#, php-format
+msgid "%s like this."
+msgstr "%s 赞了这个。"
 
-#: view/theme/frio/config.php:114
-msgid "Check image permissions if all users are allowed to see the image"
-msgstr ""
+#: include/conversation.php:1048
+#, php-format
+msgid "<span  %1$s>%2$d people</span> don't like this"
+msgstr "<span  %1$s>%2$d个人</span>不喜欢"
 
-#: view/theme/frio/config.php:121
-msgid "Select color scheme"
-msgstr ""
+#: include/conversation.php:1049
+#, php-format
+msgid "%s don't like this."
+msgstr "%s 踩了这个。"
 
-#: view/theme/frio/config.php:122
-msgid "Navigation bar background color"
-msgstr ""
+#: include/conversation.php:1052
+#, php-format
+msgid "<span  %1$s>%2$d people</span> attend"
+msgstr "<span  %1$s>%2$d 人</span>参加"
 
-#: view/theme/frio/config.php:123
-msgid "Navigation bar icon color "
-msgstr ""
-
-#: view/theme/frio/config.php:124
-msgid "Link color"
-msgstr "链接颜色"
+#: include/conversation.php:1053
+#, php-format
+msgid "%s attend."
+msgstr "%s 参加。"
 
-#: view/theme/frio/config.php:125
-msgid "Set the background color"
-msgstr "设置背景色"
+#: include/conversation.php:1056
+#, php-format
+msgid "<span  %1$s>%2$d people</span> don't attend"
+msgstr "<span  %1$s>%2$d 人</span>不参加"
 
-#: view/theme/frio/config.php:126
-msgid "Content background opacity"
-msgstr ""
+#: include/conversation.php:1057
+#, php-format
+msgid "%s don't attend."
+msgstr "%s 不参加。"
 
-#: view/theme/frio/config.php:127
-msgid "Set the background image"
-msgstr "设置背景图片"
+#: include/conversation.php:1060
+#, php-format
+msgid "<span  %1$s>%2$d people</span> attend maybe"
+msgstr "<span  %1$s>%2$d人</span>可能参加"
 
-#: view/theme/frio/config.php:128
-msgid "Background image style"
+#: include/conversation.php:1061
+#, php-format
+msgid "%s attend maybe."
 msgstr ""
 
-#: view/theme/frio/config.php:133
-msgid "Login page background image"
-msgstr "登录页面背景图片"
-
-#: view/theme/frio/config.php:137
-msgid "Login page background color"
-msgstr "登录页面背景色"
-
-#: view/theme/frio/config.php:137
-msgid "Leave background image and color empty for theme defaults"
-msgstr ""
+#: include/conversation.php:1091
+msgid "Visible to <strong>everybody</strong>"
+msgstr "<strong>大家</strong>可见的"
 
-#: view/theme/frio/theme.php:248
-msgid "Guest"
+#: include/conversation.php:1092 src/Object/Post.php:828
+msgid "Please enter a image/video/audio/webpage URL:"
 msgstr ""
 
-#: view/theme/frio/theme.php:253
-msgid "Visitor"
-msgstr "访客"
+#: include/conversation.php:1093
+msgid "Tag term:"
+msgstr "标签:"
 
-#: view/theme/frio/theme.php:266 src/Module/Login.php:309
-#: src/Content/Nav.php:97
-msgid "Logout"
-msgstr "注销"
+#: include/conversation.php:1094 mod/filer.php:35
+msgid "Save to Folder:"
+msgstr "保存再文件夹:"
 
-#: view/theme/frio/theme.php:266 src/Content/Nav.php:97
-msgid "End this session"
-msgstr "结束此次会话"
+#: include/conversation.php:1095
+msgid "Where are you right now?"
+msgstr "你在哪里?"
 
-#: view/theme/frio/theme.php:269 mod/contacts.php:689 mod/contacts.php:877
-#: src/Model/Profile.php:875 src/Content/Nav.php:100
-msgid "Status"
-msgstr "状态"
+#: include/conversation.php:1096
+msgid "Delete item(s)?"
+msgstr "把项目删除吗?"
 
-#: view/theme/frio/theme.php:269 src/Content/Nav.php:100
-#: src/Content/Nav.php:186
-msgid "Your posts and conversations"
-msgstr "你的消息和交谈"
+#: include/conversation.php:1128
+msgid "New Post"
+msgstr ""
 
-#: view/theme/frio/theme.php:270 mod/newmember.php:24 mod/profperm.php:116
-#: mod/contacts.php:691 mod/contacts.php:893 src/Model/Profile.php:717
-#: src/Model/Profile.php:850 src/Model/Profile.php:883 src/Content/Nav.php:101
-msgid "Profile"
-msgstr "简介"
+#: include/conversation.php:1131
+msgid "Share"
+msgstr "分享"
 
-#: view/theme/frio/theme.php:270 src/Content/Nav.php:101
-msgid "Your profile page"
-msgstr "你的简介页"
+#: include/conversation.php:1132 mod/editpost.php:93 mod/message.php:260
+#: mod/message.php:441 mod/wallmessage.php:139
+msgid "Upload photo"
+msgstr "上传照片"
 
-#: view/theme/frio/theme.php:271 mod/fbrowser.php:35 src/Model/Profile.php:891
-#: src/Content/Nav.php:102
-msgid "Photos"
-msgstr "照片"
+#: include/conversation.php:1133 mod/editpost.php:94
+msgid "upload photo"
+msgstr "上传照片"
 
-#: view/theme/frio/theme.php:271 src/Content/Nav.php:102
-msgid "Your photos"
-msgstr "你的照片"
+#: include/conversation.php:1134 mod/editpost.php:95
+msgid "Attach file"
+msgstr "附上文件"
 
-#: view/theme/frio/theme.php:272 src/Model/Profile.php:899
-#: src/Model/Profile.php:902 src/Content/Nav.php:103
-msgid "Videos"
-msgstr "视频"
+#: include/conversation.php:1135 mod/editpost.php:96
+msgid "attach file"
+msgstr "附上文件"
 
-#: view/theme/frio/theme.php:272 src/Content/Nav.php:103
-msgid "Your videos"
-msgstr "你的视频"
+#: include/conversation.php:1136 src/Object/Post.php:820
+msgid "Bold"
+msgstr "粗体"
 
-#: view/theme/frio/theme.php:273 view/theme/frio/theme.php:277 mod/cal.php:276
-#: mod/events.php:390 src/Model/Profile.php:911 src/Model/Profile.php:922
-#: src/Content/Nav.php:104 src/Content/Nav.php:170
-msgid "Events"
-msgstr "事件"
+#: include/conversation.php:1137 src/Object/Post.php:821
+msgid "Italic"
+msgstr "斜体"
 
-#: view/theme/frio/theme.php:273 src/Content/Nav.php:104
-msgid "Your events"
-msgstr "ä½ ç\9a\84项ç\9b®"
+#: include/conversation.php:1138 src/Object/Post.php:822
+msgid "Underline"
+msgstr "ä¸\8bå\88\92线"
 
-#: view/theme/frio/theme.php:276 mod/admin.php:771
-#: src/Core/NotificationsManager.php:179 src/Content/Nav.php:183
-msgid "Network"
-msgstr "网络"
+#: include/conversation.php:1139 src/Object/Post.php:823
+msgid "Quote"
+msgstr "引语"
 
-#: view/theme/frio/theme.php:276 src/Content/Nav.php:183
-msgid "Conversations from your friends"
-msgstr "æ\9d¥è\87ªä½ ç\9a\84æ\9c\8bå\8f\8b们ç\9a\84交è°\88"
+#: include/conversation.php:1140 src/Object/Post.php:824
+msgid "Code"
+msgstr "æº\90代ç \81"
 
-#: view/theme/frio/theme.php:277 src/Model/Profile.php:914
-#: src/Model/Profile.php:925 src/Content/Nav.php:170
-msgid "Events and Calendar"
-msgstr "事件和日历"
+#: include/conversation.php:1141 src/Object/Post.php:825
+msgid "Image"
+msgstr "图片"
 
-#: view/theme/frio/theme.php:278 mod/message.php:127 src/Content/Nav.php:196
-msgid "Messages"
-msgstr "消息"
+#: include/conversation.php:1142 src/Object/Post.php:826
+msgid "Link"
+msgstr "链接"
 
-#: view/theme/frio/theme.php:278 src/Content/Nav.php:196
-msgid "Private mail"
-msgstr "私人的邮件"
+#: include/conversation.php:1143 src/Object/Post.php:827
+msgid "Link or Media"
+msgstr ""
 
-#: view/theme/frio/theme.php:279 mod/settings.php:131 mod/newmember.php:19
-#: mod/admin.php:2015 mod/admin.php:2285 src/Content/Nav.php:207
-msgid "Settings"
-msgstr "设置"
+#: include/conversation.php:1144 mod/editpost.php:103
+msgid "Set your location"
+msgstr "设定您的位置"
 
-#: view/theme/frio/theme.php:279 src/Content/Nav.php:207
-msgid "Account settings"
-msgstr "帐户设置"
+#: include/conversation.php:1145 mod/editpost.php:104
+msgid "set location"
+msgstr "指定位置"
 
-#: view/theme/frio/theme.php:280 include/text.php:906 mod/viewcontacts.php:125
-#: mod/contacts.php:836 mod/contacts.php:905 src/Model/Profile.php:954
-#: src/Model/Profile.php:957 src/Content/Nav.php:147 src/Content/Nav.php:213
-msgid "Contacts"
-msgstr "联系人"
+#: include/conversation.php:1146 mod/editpost.php:105
+msgid "Clear browser location"
+msgstr "清空浏览器位置"
 
-#: view/theme/frio/theme.php:280 src/Content/Nav.php:213
-msgid "Manage/edit friends and contacts"
-msgstr "管理/编辑朋友和联系人"
+#: include/conversation.php:1147 mod/editpost.php:106
+msgid "clear location"
+msgstr "清除位置"
 
-#: view/theme/frio/theme.php:367 include/conversation.php:866
-msgid "Follow Thread"
-msgstr ""
+#: include/conversation.php:1149 mod/editpost.php:121
+msgid "Set title"
+msgstr "指定标题"
 
-#: view/theme/frio/php/Image.php:24
-msgid "Top Banner"
-msgstr ""
+#: include/conversation.php:1151 mod/editpost.php:123
+msgid "Categories (comma-separated list)"
+msgstr "种类(逗号分隔单)"
 
-#: view/theme/frio/php/Image.php:24
-msgid ""
-"Resize image to the width of the screen and show background color below on "
-"long pages."
-msgstr ""
+#: include/conversation.php:1153 mod/editpost.php:108
+msgid "Permission settings"
+msgstr "权设置"
 
-#: view/theme/frio/php/Image.php:25
-msgid "Full screen"
-msgstr ""
+#: include/conversation.php:1154 mod/editpost.php:138
+msgid "permissions"
+msgstr "权利"
 
-#: view/theme/frio/php/Image.php:25
-msgid ""
-"Resize image to fill entire screen, clipping either the right or the bottom."
-msgstr ""
+#: include/conversation.php:1163 mod/editpost.php:118
+msgid "Public post"
+msgstr "公开的消息"
 
-#: view/theme/frio/php/Image.php:26
-msgid "Single row mosaic"
-msgstr ""
+#: include/conversation.php:1167 mod/editpost.php:129 mod/events.php:566
+#: mod/photos.php:1457 mod/photos.php:1496 mod/photos.php:1556
+#: src/Object/Post.php:829
+msgid "Preview"
+msgstr "预览"
 
-#: view/theme/frio/php/Image.php:26
-msgid ""
-"Resize image to repeat it on a single row, either vertical or horizontal."
-msgstr ""
+#: include/conversation.php:1171 include/items.php:398
+#: mod/dfrn_request.php:650 mod/editpost.php:132 mod/fbrowser.php:105
+#: mod/fbrowser.php:136 mod/follow.php:162 mod/message.php:153
+#: mod/photos.php:257 mod/photos.php:325 mod/settings.php:669
+#: mod/settings.php:695 mod/suggest.php:44 mod/tagrm.php:20 mod/tagrm.php:113
+#: mod/unfollow.php:132 mod/videos.php:106 src/Module/Contact.php:448
+msgid "Cancel"
+msgstr "取消"
 
-#: view/theme/frio/php/Image.php:27
-msgid "Mosaic"
-msgstr ""
+#: include/conversation.php:1176
+msgid "Post to Groups"
+msgstr "发到组"
 
-#: view/theme/frio/php/Image.php:27
-msgid "Repeat image to fill the screen."
-msgstr ""
+#: include/conversation.php:1177
+msgid "Post to Contacts"
+msgstr "发给联系人"
 
-#: update.php:194
-#, php-format
-msgid "%s: Updating author-id and owner-id in item and thread table. "
-msgstr ""
+#: include/conversation.php:1178
+msgid "Private post"
+msgstr "私人文章"
 
-#: update.php:240
-#, php-format
-msgid "%s: Updating post-type."
-msgstr ""
+#: include/conversation.php:1183 mod/editpost.php:136
+#: src/Model/Profile.php:364
+msgid "Message"
+msgstr "通知"
 
-#: include/items.php:355 mod/display.php:70 mod/display.php:245
-#: mod/display.php:341 mod/admin.php:283 mod/admin.php:1963 mod/admin.php:2211
-#: mod/notice.php:22 mod/viewsrc.php:22
-msgid "Item not found."
-msgstr "项目找不到。"
+#: include/conversation.php:1184 mod/editpost.php:137
+msgid "Browser"
+msgstr "浏览器"
 
-#: include/items.php:393
-msgid "Do you really want to delete this item?"
-msgstr "æ\82¨ç\9c\9fç\9a\84æ\83³å\88 é\99¤è¿\99个项ç\9b®å\90\97ï¼\9f"
+#: include/conversation.php:1455
+msgid "View all"
+msgstr "æ\9f¥ç\9c\8bå\85¨é\83¨"
 
-#: include/items.php:395 mod/settings.php:1100 mod/settings.php:1106
-#: mod/settings.php:1113 mod/settings.php:1117 mod/settings.php:1121
-#: mod/settings.php:1125 mod/settings.php:1129 mod/settings.php:1133
-#: mod/settings.php:1153 mod/settings.php:1154 mod/settings.php:1155
-#: mod/settings.php:1156 mod/settings.php:1157 mod/register.php:237
-#: mod/message.php:154 mod/suggest.php:40 mod/dfrn_request.php:645
-#: mod/api.php:110 mod/contacts.php:465 mod/follow.php:150
-#: mod/profiles.php:541 mod/profiles.php:544 mod/profiles.php:566
-msgid "Yes"
-msgstr "是"
+#: include/conversation.php:1478
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "喜欢"
 
-#: include/items.php:398 include/conversation.php:1179 mod/videos.php:146
-#: mod/settings.php:676 mod/settings.php:702 mod/unfollow.php:120
-#: mod/message.php:157 mod/tagrm.php:19 mod/tagrm.php:91 mod/suggest.php:43
-#: mod/dfrn_request.php:655 mod/editpost.php:140 mod/contacts.php:468
-#: mod/follow.php:161 mod/fbrowser.php:104 mod/fbrowser.php:135
-#: mod/photos.php:255 mod/photos.php:327
-msgid "Cancel"
-msgstr "取消"
+#: include/conversation.php:1481
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "不喜欢"
 
-#: include/items.php:483 src/Content/Feature.php:96
-msgid "Archives"
-msgstr "档案"
+#: include/conversation.php:1487
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "不在参加"
 
-#: include/conversation.php:151 include/conversation.php:287
-#: include/text.php:1611
-msgid "event"
-msgstr "事件"
+#: include/conversation.php:1490 src/Content/ContactSelector.php:163
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] "未决定的"
 
-#: include/conversation.php:154 include/conversation.php:164
-#: include/conversation.php:290 include/conversation.php:299 mod/tagger.php:70
-#: mod/subthread.php:87
-msgid "status"
-msgstr "现状"
+#: include/enotify.php:55
+msgid "Friendica Notification"
+msgstr "Friendica 通知"
 
-#: include/conversation.php:159 include/conversation.php:295
-#: include/text.php:1613 mod/tagger.php:70 mod/subthread.php:87
-msgid "photo"
-msgstr "照片"
+#: include/enotify.php:58
+msgid "Thank You,"
+msgstr "谢谢,"
 
-#: include/conversation.php:171
+#: include/enotify.php:61
 #, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s 喜欢 %2$s 的 %3$s"
+msgid "%1$s, %2$s Administrator"
+msgstr "%1$s, %2$s 的管理员"
 
-#: include/conversation.php:173
+#: include/enotify.php:63
 #, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s 不喜欢 %2$s 的 %3$s"
+msgid "%s Administrator"
+msgstr "%s管理员"
 
-#: include/conversation.php:175
+#: include/enotify.php:126
 #, php-format
-msgid "%1$s attends %2$s's %3$s"
-msgstr "%1$s 参加了 %2$s 的 %3$s"
+msgid "[Friendica:Notify] New mail received at %s"
+msgstr "[Friendica:Notify]收到新邮件在%s"
 
-#: include/conversation.php:177
+#: include/enotify.php:128
 #, php-format
-msgid "%1$s doesn't attend %2$s's %3$s"
-msgstr "%1$s 没有参加 %2$s 的 %3$s"
+msgid "%1$s sent you a new private message at %2$s."
+msgstr "%1$s发给您新私人通知在%2$s."
 
-#: include/conversation.php:179
+#: include/enotify.php:129
+msgid "a private message"
+msgstr "一条私人信息"
+
+#: include/enotify.php:129
 #, php-format
-msgid "%1$s attends maybe %2$s's %3$s"
-msgstr ""
+msgid "%1$s sent you %2$s."
+msgstr "%1$s发给您%2$s."
 
-#: include/conversation.php:214
+#: include/enotify.php:131
 #, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s是成为%2$s的朋友"
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "请访问 %s 来查看并且/或者回复你的私信。"
 
-#: include/conversation.php:255
+#: include/enotify.php:164
 #, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s把%2$s戳"
+msgid "%1$s tagged you on [url=%2$s]a %3$s[/url]"
+msgstr ""
 
-#: include/conversation.php:309 mod/tagger.php:108
+#: include/enotify.php:170
 #, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s把%4$s标签%2$s的%3$s"
+msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
+msgstr "%1$s于[url=%2$s]a %3$s[/url]评论了"
 
-#: include/conversation.php:331
-msgid "post/item"
-msgstr "文章/项目"
+#: include/enotify.php:180
+#, php-format
+msgid "%1$s tagged you on [url=%2$s]%3$s's %4$s[/url]"
+msgstr ""
 
-#: include/conversation.php:332
+#: include/enotify.php:187
 #, php-format
-msgid "%1$s marked %2$s's %3$s as favorite"
-msgstr "%1$s标注%2$s的%3$s为偏爱"
+msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
+msgstr "%1$s于[url=%2$s]%3$s的%4$s[/url]评论了"
 
-#: include/conversation.php:545 mod/profiles.php:352 mod/photos.php:1507
-msgid "Likes"
-msgstr "喜欢"
+#: include/enotify.php:199
+#, php-format
+msgid "%1$s tagged you on [url=%2$s]your %3$s[/url]"
+msgstr ""
 
-#: include/conversation.php:545 mod/profiles.php:356 mod/photos.php:1507
-msgid "Dislikes"
-msgstr "不喜欢"
+#: include/enotify.php:205
+#, php-format
+msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
+msgstr "%1$s于[url=%2$s]您的%3$s[/url]评论了"
 
-#: include/conversation.php:546 include/conversation.php:1492
-#: mod/photos.php:1508
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "正在参加"
+#: include/enotify.php:216
+#, php-format
+msgid "%1$s tagged you on [url=%2$s]their %3$s[/url]"
+msgstr ""
 
-#: include/conversation.php:546 mod/photos.php:1508
-msgid "Not attending"
-msgstr "不在参加"
+#: include/enotify.php:222
+#, php-format
+msgid "%1$s commented on [url=%2$s]their %3$s[/url]"
+msgstr ""
 
-#: include/conversation.php:546 mod/photos.php:1508
-msgid "Might attend"
-msgstr "可以参加"
+#: include/enotify.php:235
+#, php-format
+msgid "[Friendica:Notify] %s tagged you"
+msgstr "[Friendica:Notify] %s标签您"
 
-#: include/conversation.php:626 mod/photos.php:1564 src/Object/Post.php:195
-msgid "Select"
-msgstr "选择"
+#: include/enotify.php:237
+#, php-format
+msgid "%1$s tagged you at %2$s"
+msgstr "%1$s把您在%2$s标签"
 
-#: include/conversation.php:627 mod/settings.php:736 mod/admin.php:1906
-#: mod/contacts.php:852 mod/contacts.php:1130 mod/photos.php:1565
-msgid "Delete"
-msgstr "删除"
+#: include/enotify.php:239
+#, php-format
+msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Friendica:Notify]于交流#%1$d由%2$s评论"
 
-#: include/conversation.php:661 src/Object/Post.php:362
-#: src/Object/Post.php:363
+#: include/enotify.php:241
 #, php-format
-msgid "View %s's profile @ %s"
-msgstr "看%s的简介@ %s"
+msgid "%s commented on an item/conversation you have been following."
+msgstr "%s对你有兴趣的项目/ 交谈发表意见"
 
-#: include/conversation.php:673 src/Object/Post.php:350
-msgid "Categories:"
-msgstr "种类:"
+#: include/enotify.php:246 include/enotify.php:261 include/enotify.php:276
+#: include/enotify.php:295 include/enotify.php:311
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "请访问%s来查看并且/或者回复这个对话。"
 
-#: include/conversation.php:674 src/Object/Post.php:351
-msgid "Filed under:"
-msgstr "归档在:"
+#: include/enotify.php:253
+#, php-format
+msgid "[Friendica:Notify] %s posted to your profile wall"
+msgstr "[Friendica:Notify] %s贴在您的简介墙"
 
-#: include/conversation.php:681 src/Object/Post.php:376
+#: include/enotify.php:255
 #, php-format
-msgid "%s from %s"
-msgstr "%s从%s"
+msgid "%1$s posted to your profile wall at %2$s"
+msgstr "%1$s放在您的简介墙在%2$s"
 
-#: include/conversation.php:696
-msgid "View in context"
-msgstr "看在上下文"
+#: include/enotify.php:256
+#, php-format
+msgid "%1$s posted to [url=%2$s]your wall[/url]"
+msgstr "%1$s放在[url=%2$s]您的墙[/url]"
 
-#: include/conversation.php:698 include/conversation.php:1160
-#: mod/wallmessage.php:145 mod/message.php:263 mod/message.php:431
-#: mod/editpost.php:115 mod/photos.php:1480 src/Object/Post.php:401
-msgid "Please wait"
-msgstr "请等一下"
+#: include/enotify.php:268
+#, php-format
+msgid "[Friendica:Notify] %s shared a new post"
+msgstr "[Friendica:Notify] %s分享新的消息"
 
-#: include/conversation.php:762
-msgid "remove"
-msgstr "删除"
+#: include/enotify.php:270
+#, php-format
+msgid "%1$s shared a new post at %2$s"
+msgstr "%1$s分享新的消息在%2$s"
 
-#: include/conversation.php:766
-msgid "Delete Selected Items"
-msgstr "删除选的项目"
+#: include/enotify.php:271
+#, php-format
+msgid "%1$s [url=%2$s]shared a post[/url]."
+msgstr "%1$s [url=%2$s]分享一个消息[/url]."
 
-#: include/conversation.php:867 src/Model/Contact.php:937
-msgid "View Status"
-msgstr "看现状"
+#: include/enotify.php:283
+#, php-format
+msgid "[Friendica:Notify] %1$s poked you"
+msgstr "[Friendica:Notify]您被%1$s戳"
 
-#: include/conversation.php:868 include/conversation.php:884
-#: mod/dirfind.php:230 mod/directory.php:164 mod/match.php:89
-#: mod/suggest.php:85 mod/allfriends.php:75 src/Model/Contact.php:877
-#: src/Model/Contact.php:930 src/Model/Contact.php:938
-msgid "View Profile"
-msgstr "看简介"
+#: include/enotify.php:285
+#, php-format
+msgid "%1$s poked you at %2$s"
+msgstr "您被%1$s戳在%2$s"
 
-#: include/conversation.php:869 src/Model/Contact.php:939
-msgid "View Photos"
-msgstr "看照片"
+#: include/enotify.php:286
+#, php-format
+msgid "%1$s [url=%2$s]poked you[/url]."
+msgstr "%1$s[url=%2$s]把您戳[/url]。"
 
-#: include/conversation.php:870 src/Model/Contact.php:931
-#: src/Model/Contact.php:940
-msgid "Network Posts"
-msgstr "网络文章"
+#: include/enotify.php:303
+#, php-format
+msgid "[Friendica:Notify] %s tagged your post"
+msgstr "[Friendica:Notify] %s标前您的文章"
 
-#: include/conversation.php:871 src/Model/Contact.php:932
-#: src/Model/Contact.php:941
-msgid "View Contact"
-msgstr "查看联系人"
+#: include/enotify.php:305
+#, php-format
+msgid "%1$s tagged your post at %2$s"
+msgstr "%1$s把您的文章在%2$s标签"
 
-#: include/conversation.php:872 src/Model/Contact.php:943
-msgid "Send PM"
-msgstr "发送私信"
+#: include/enotify.php:306
+#, php-format
+msgid "%1$s tagged [url=%2$s]your post[/url]"
+msgstr "%1$s把[url=%2$s]您的文章[/url]标签"
 
-#: include/conversation.php:876 src/Model/Contact.php:944
-msgid "Poke"
-msgstr ""
+#: include/enotify.php:318
+msgid "[Friendica:Notify] Introduction received"
+msgstr "[Friendica:Notify] 收到介绍"
 
-#: include/conversation.php:999
+#: include/enotify.php:320
 #, php-format
-msgid "%s likes this."
-msgstr "%s喜欢这个."
+msgid "You've received an introduction from '%1$s' at %2$s"
+msgstr "您从「%1$s」受到一个介绍在%2$s"
 
-#: include/conversation.php:1002
+#: include/enotify.php:321
 #, php-format
-msgid "%s doesn't like this."
-msgstr "%s没有喜欢这个."
+msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
+msgstr "您从%2$s收到[url=%1$s]一个介绍[/url]。"
 
-#: include/conversation.php:1005
+#: include/enotify.php:326 include/enotify.php:372
 #, php-format
-msgid "%s attends."
-msgstr "%s 参加。"
+msgid "You may visit their profile at %s"
+msgstr "你能看他的简介在%s"
 
-#: include/conversation.php:1008
+#: include/enotify.php:328
 #, php-format
-msgid "%s doesn't attend."
-msgstr "%s 不参加。"
+msgid "Please visit %s to approve or reject the introduction."
+msgstr "请批准或拒绝介绍在%s"
+
+#: include/enotify.php:335
+msgid "[Friendica:Notify] A new person is sharing with you"
+msgstr "[Friendica:Notify] 一个新的人正在和你分享"
 
-#: include/conversation.php:1011
+#: include/enotify.php:337 include/enotify.php:338
 #, php-format
-msgid "%s attends maybe."
-msgstr ""
+msgid "%1$s is sharing with you at %2$s"
+msgstr "%1$s 正在 %2$s 和你分享"
 
-#: include/conversation.php:1022
-msgid "and"
-msgstr ""
+#: include/enotify.php:345
+msgid "[Friendica:Notify] You have a new follower"
+msgstr "[Friendica:Notify] 你有一个新的粉丝"
 
-#: include/conversation.php:1028
+#: include/enotify.php:347 include/enotify.php:348
 #, php-format
-msgid "and %d other people"
-msgstr "和 %d 个其他人"
+msgid "You have a new follower at %2$s : %1$s"
+msgstr "你在 %2$s 有一个新的关注者: %1$s"
 
-#: include/conversation.php:1037
-#, php-format
-msgid "<span  %1$s>%2$d people</span> like this"
-msgstr "<span  %1$s>%2$d个人</span>喜欢"
+#: include/enotify.php:361
+msgid "[Friendica:Notify] Friend suggestion received"
+msgstr "[Friendica:Notify] 收到朋友建议"
 
-#: include/conversation.php:1038
+#: include/enotify.php:363
 #, php-format
-msgid "%s like this."
-msgstr "%s 赞了这个。"
+msgid "You've received a friend suggestion from '%1$s' at %2$s"
+msgstr "您从「%2$s」收到[url=%1$s]一个朋友建议[/url]。"
 
-#: include/conversation.php:1041
+#: include/enotify.php:364
 #, php-format
-msgid "<span  %1$s>%2$d people</span> don't like this"
-msgstr "<span  %1$s>%2$d个人</span>不喜欢"
+msgid ""
+"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
+msgstr "您从%3$s收到[url=%1$s]一个朋友建议[/url]为%2$s。"
 
-#: include/conversation.php:1042
-#, php-format
-msgid "%s don't like this."
-msgstr "%s 踩了这个。"
+#: include/enotify.php:370
+msgid "Name:"
+msgstr "名字:"
 
-#: include/conversation.php:1045
+#: include/enotify.php:371
+msgid "Photo:"
+msgstr "照片:"
+
+#: include/enotify.php:374
 #, php-format
-msgid "<span  %1$s>%2$d people</span> attend"
-msgstr "<span  %1$s>%2$d 人</span>参加"
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "请访问%s来批准或拒绝这个建议。"
+
+#: include/enotify.php:382 include/enotify.php:397
+msgid "[Friendica:Notify] Connection accepted"
+msgstr "[Friendica:Notify] 连接被接受"
 
-#: include/conversation.php:1046
+#: include/enotify.php:384 include/enotify.php:399
 #, php-format
-msgid "%s attend."
-msgstr "%s å\8f\82å\8a ã\80\82"
+msgid "'%1$s' has accepted your connection request at %2$s"
+msgstr "â\80\9c%1$sâ\80\9då·²ç»\8få\9c¨ %2$s æ\8e¥å\8f\97äº\86æ\82¨ç\9a\84è¿\9eæ\8e¥è¯·æ±\82"
 
-#: include/conversation.php:1049
+#: include/enotify.php:385 include/enotify.php:400
 #, php-format
-msgid "<span  %1$s>%2$d people</span> don't attend"
-msgstr "<span  %1$s>%2$d 人</span>不参加"
+msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
+msgstr "%2$s 已经接受了你的[url=%1$s]连接请求[/url]。"
+
+#: include/enotify.php:390
+msgid ""
+"You are now mutual friends and may exchange status updates, photos, and "
+"email without restriction."
+msgstr "你们现在已经互为朋友了,可以不受限制地交换状态更新、照片和邮件。"
 
-#: include/conversation.php:1050
+#: include/enotify.php:392
 #, php-format
-msgid "%s don't attend."
-msgstr "%s 不参加。"
+msgid "Please visit %s if you wish to make any changes to this relationship."
+msgstr "请访问%s如果你希望对这个关系做任何改变。"
 
-#: include/conversation.php:1053
+#: include/enotify.php:405
 #, php-format
-msgid "<span  %1$s>%2$d people</span> attend maybe"
-msgstr "<span  %1$s>%2$d人</span>可能参加"
+msgid ""
+"'%1$s' has chosen to accept you a fan, which restricts some forms of "
+"communication - such as private messaging and some profile interactions. If "
+"this is a celebrity or community page, these settings were applied "
+"automatically."
+msgstr ""
 
-#: include/conversation.php:1054
+#: include/enotify.php:407
 #, php-format
-msgid "%s attend maybe."
+msgid ""
+"'%1$s' may choose to extend this into a two-way or more permissive "
+"relationship in the future."
 msgstr ""
 
-#: include/conversation.php:1084 include/conversation.php:1100
-msgid "Visible to <strong>everybody</strong>"
-msgstr "<strong>大家</strong>可见的"
+#: include/enotify.php:409
+#, php-format
+msgid "Please visit %s  if you wish to make any changes to this relationship."
+msgstr "请访问 %s  如果你希望对修改这个关系。"
 
-#: include/conversation.php:1085 include/conversation.php:1101
-#: mod/wallmessage.php:120 mod/wallmessage.php:127 mod/message.php:199
-#: mod/message.php:206 mod/message.php:344 mod/message.php:351
-msgid "Please enter a link URL:"
-msgstr "请输入一个链接 URL:"
+#: include/enotify.php:419 mod/removeme.php:47
+msgid "[Friendica System Notify]"
+msgstr ""
 
-#: include/conversation.php:1086 include/conversation.php:1102
-msgid "Please enter a video link/URL:"
-msgstr "请输入视频连接/URL:"
+#: include/enotify.php:419
+msgid "registration request"
+msgstr "注册请求"
 
-#: include/conversation.php:1087 include/conversation.php:1103
-msgid "Please enter an audio link/URL:"
-msgstr "请输入音响连接/URL:"
+#: include/enotify.php:421
+#, php-format
+msgid "You've received a registration request from '%1$s' at %2$s"
+msgstr ""
 
-#: include/conversation.php:1088 include/conversation.php:1104
-msgid "Tag term:"
-msgstr "标签:"
+#: include/enotify.php:422
+#, php-format
+msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
+msgstr ""
 
-#: include/conversation.php:1089 include/conversation.php:1105
-#: mod/filer.php:34
-msgid "Save to Folder:"
-msgstr "保存再文件夹:"
+#: include/enotify.php:427
+#, php-format
+msgid ""
+"Full Name:\t%s\n"
+"Site Location:\t%s\n"
+"Login Name:\t%s (%s)"
+msgstr ""
 
-#: include/conversation.php:1090 include/conversation.php:1106
-msgid "Where are you right now?"
-msgstr "你在哪里?"
-
-#: include/conversation.php:1091
-msgid "Delete item(s)?"
-msgstr "把项目删除吗?"
+#: include/enotify.php:433
+#, php-format
+msgid "Please visit %s to approve or reject the request."
+msgstr "请访问%s来批准或拒绝这个请求。"
 
-#: include/conversation.php:1138
-msgid "New Post"
-msgstr ""
+#: include/items.php:355 mod/admin.php:296 mod/admin.php:2094
+#: mod/admin.php:2340 mod/notice.php:21 mod/viewsrc.php:22
+msgid "Item not found."
+msgstr "项目找不到。"
 
-#: include/conversation.php:1141
-msgid "Share"
-msgstr "分享"
+#: include/items.php:393
+msgid "Do you really want to delete this item?"
+msgstr "您真的想删除这个项目吗?"
 
-#: include/conversation.php:1142 mod/wallmessage.php:143 mod/message.php:261
-#: mod/message.php:428 mod/editpost.php:101
-msgid "Upload photo"
-msgstr "上传照片"
+#: include/items.php:395 mod/api.php:112 mod/dfrn_request.php:640
+#: mod/follow.php:151 mod/message.php:150 mod/profiles.php:542
+#: mod/profiles.php:545 mod/profiles.php:567 mod/register.php:232
+#: mod/settings.php:1088 mod/settings.php:1094 mod/settings.php:1101
+#: mod/settings.php:1105 mod/settings.php:1109 mod/settings.php:1113
+#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1141
+#: mod/settings.php:1142 mod/settings.php:1143 mod/settings.php:1144
+#: mod/settings.php:1145 mod/suggest.php:41 src/Module/Contact.php:445
+msgid "Yes"
+msgstr "是"
 
-#: include/conversation.php:1143 mod/editpost.php:102
-msgid "upload photo"
-msgstr "上传照片"
+#: include/items.php:445 mod/allfriends.php:22 mod/api.php:37 mod/api.php:42
+#: mod/cal.php:304 mod/common.php:27 mod/crepair.php:101 mod/delegate.php:31
+#: mod/delegate.php:49 mod/delegate.php:60 mod/dfrn_confirm.php:66
+#: mod/dirfind.php:29 mod/editpost.php:22 mod/events.php:207 mod/follow.php:58
+#: mod/follow.php:122 mod/fsuggest.php:81 mod/group.php:30 mod/invite.php:25
+#: mod/invite.php:111 mod/item.php:167 mod/manage.php:129 mod/message.php:56
+#: mod/message.php:101 mod/network.php:35 mod/nogroup.php:23 mod/notes.php:33
+#: mod/notifications.php:70 mod/ostatus_subscribe.php:18 mod/photos.php:186
+#: mod/photos.php:1019 mod/poke.php:141 mod/profiles.php:183
+#: mod/profiles.php:515 mod/profile_photo.php:33 mod/profile_photo.php:178
+#: mod/profile_photo.php:205 mod/register.php:53 mod/regmod.php:89
+#: mod/repair_ostatus.php:16 mod/settings.php:48 mod/settings.php:154
+#: mod/settings.php:658 mod/suggest.php:62 mod/uimport.php:17
+#: mod/unfollow.php:22 mod/unfollow.php:77 mod/unfollow.php:109
+#: mod/viewcontacts.php:56 mod/wallmessage.php:19 mod/wallmessage.php:43
+#: mod/wallmessage.php:82 mod/wallmessage.php:106 mod/wall_attach.php:79
+#: mod/wall_attach.php:82 mod/wall_upload.php:106 mod/wall_upload.php:109
+#: src/App.php:1823 src/Module/Attach.php:42 src/Module/Contact.php:361
+msgid "Permission denied."
+msgstr "权限不够。"
 
-#: include/conversation.php:1144 mod/editpost.php:103
-msgid "Attach file"
-msgstr "附上文件"
+#: include/items.php:516 src/Content/Feature.php:95
+msgid "Archives"
+msgstr "档案"
 
-#: include/conversation.php:1145 mod/editpost.php:104
-msgid "attach file"
-msgstr "附上文件"
+#: include/items.php:522 src/App.php:823 src/Content/ForumManager.php:131
+#: src/Content/Widget.php:321 src/Object/Post.php:454
+#: view/theme/vier/theme.php:255
+msgid "show more"
+msgstr "显示更多"
 
-#: include/conversation.php:1146 mod/wallmessage.php:144 mod/message.php:262
-#: mod/message.php:429 mod/editpost.php:105
-msgid "Insert web link"
-msgstr "插入网页链接"
+#: mod/admin.php:117
+msgid "Theme settings updated."
+msgstr "主题设置更新了。"
 
-#: include/conversation.php:1147 mod/editpost.php:106
-msgid "web link"
-msgstr "网页链接"
+#: mod/admin.php:190 src/Content/Nav.php:224
+msgid "Information"
+msgstr "资料"
 
-#: include/conversation.php:1148 mod/editpost.php:107
-msgid "Insert video link"
-msgstr "æ\8f\92å\85¥è§\86é¢\91é\93¾æ\8e¥"
+#: mod/admin.php:191
+msgid "Overview"
+msgstr "æ¦\82è§\88"
 
-#: include/conversation.php:1149 mod/editpost.php:108
-msgid "video link"
-msgstr "è§\86é¢\91é\93¾æ\8e¥"
+#: mod/admin.php:192 mod/admin.php:763
+msgid "Federation Statistics"
+msgstr "è\81\94é\82¦ç½\91ç»\9cç»\9f计"
 
-#: include/conversation.php:1150 mod/editpost.php:109
-msgid "Insert audio link"
-msgstr "插入音频链接"
+#: mod/admin.php:193
+msgid "Configuration"
+msgstr "配置"
 
-#: include/conversation.php:1151 mod/editpost.php:110
-msgid "audio link"
-msgstr "音频链接"
+#: mod/admin.php:194 mod/admin.php:1549
+msgid "Site"
+msgstr "网站"
 
-#: include/conversation.php:1152 mod/editpost.php:111
-msgid "Set your location"
-msgstr "设定您的位置"
+#: mod/admin.php:195 mod/admin.php:1453 mod/admin.php:2026 mod/admin.php:2043
+msgid "Users"
+msgstr "用户"
 
-#: include/conversation.php:1153 mod/editpost.php:112
-msgid "set location"
-msgstr "æ\8c\87å®\9aä½\8dç½®"
+#: mod/admin.php:196 mod/admin.php:2142 mod/admin.php:2202 mod/settings.php:99
+msgid "Addons"
+msgstr "æ\8f\92件"
 
-#: include/conversation.php:1154 mod/editpost.php:113
-msgid "Clear browser location"
-msgstr "清空浏览器位置"
+#: mod/admin.php:197 mod/admin.php:2398 mod/admin.php:2442
+msgid "Themes"
+msgstr "主题"
 
-#: include/conversation.php:1155 mod/editpost.php:114
-msgid "clear location"
-msgstr "清除位置"
+#: mod/admin.php:198 mod/settings.php:77
+msgid "Additional features"
+msgstr "附加的特点"
 
-#: include/conversation.php:1157 mod/editpost.php:129
-msgid "Set title"
-msgstr "指定标题"
+#: mod/admin.php:199 mod/admin.php:322 mod/register.php:280
+#: src/Content/Nav.php:227 src/Module/Tos.php:71
+msgid "Terms of Service"
+msgstr "服务条款"
 
-#: include/conversation.php:1159 mod/editpost.php:131
-msgid "Categories (comma-separated list)"
-msgstr "种类(逗号分隔单)"
+#: mod/admin.php:200
+msgid "Database"
+msgstr "数据库"
 
-#: include/conversation.php:1161 mod/editpost.php:116
-msgid "Permission settings"
-msgstr "æ\9d\83设置"
+#: mod/admin.php:201
+msgid "DB updates"
+msgstr "æ\95°æ\8d®åº\93æ\9b´æ\96°"
 
-#: include/conversation.php:1162 mod/editpost.php:146
-msgid "permissions"
-msgstr "æ\9d\83å\88©"
+#: mod/admin.php:202 mod/admin.php:806
+msgid "Inspect Queue"
+msgstr "æ£\80æ\9f¥é\98\9få\88\97"
 
-#: include/conversation.php:1171 mod/editpost.php:126
-msgid "Public post"
-msgstr "公开的消息"
+#: mod/admin.php:203
+msgid "Inspect Deferred Workers"
+msgstr ""
 
-#: include/conversation.php:1175 mod/editpost.php:137 mod/events.php:531
-#: mod/photos.php:1498 mod/photos.php:1537 mod/photos.php:1597
-#: src/Object/Post.php:804
-msgid "Preview"
-msgstr "预览"
+#: mod/admin.php:204
+msgid "Inspect worker Queue"
+msgstr ""
 
-#: include/conversation.php:1184
-msgid "Post to Groups"
-msgstr "å\8f\91å\88°ç»\84"
+#: mod/admin.php:205
+msgid "Tools"
+msgstr "å·¥å\85·"
 
-#: include/conversation.php:1185
-msgid "Post to Contacts"
-msgstr "发给联系人"
+#: mod/admin.php:206
+msgid "Contact Blocklist"
+msgstr "联系人屏蔽列表"
 
-#: include/conversation.php:1186
-msgid "Private post"
-msgstr "私人文章"
+#: mod/admin.php:207 mod/admin.php:386
+msgid "Server Blocklist"
+msgstr "服务器屏蔽列表"
 
-#: include/conversation.php:1191 mod/editpost.php:144
-#: src/Model/Profile.php:344
-msgid "Message"
-msgstr "通知"
+#: mod/admin.php:208 mod/admin.php:544
+msgid "Delete Item"
+msgstr "删除项目"
 
-#: include/conversation.php:1192 mod/editpost.php:145
-msgid "Browser"
-msgstr "浏览器"
+#: mod/admin.php:209 mod/admin.php:210 mod/admin.php:2517
+msgid "Logs"
+msgstr "记录"
 
-#: include/conversation.php:1463
-msgid "View all"
-msgstr "查看全部"
+#: mod/admin.php:211 mod/admin.php:2584
+msgid "View Logs"
+msgstr "查看日志"
 
-#: include/conversation.php:1486
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "喜欢"
+#: mod/admin.php:213
+msgid "Diagnostics"
+msgstr "诊断"
 
-#: include/conversation.php:1489
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "不喜欢"
+#: mod/admin.php:214
+msgid "PHP Info"
+msgstr "PHP Info"
 
-#: include/conversation.php:1495
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "不在参加"
+#: mod/admin.php:215
+msgid "probe address"
+msgstr "探测地址"
 
-#: include/conversation.php:1498 src/Content/ContactSelector.php:122
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] "未决定的"
+#: mod/admin.php:216
+msgid "check webfinger"
+msgstr "检查 webfinger"
 
-#: include/security.php:83
-msgid "Welcome "
-msgstr "欢迎"
+#: mod/admin.php:236 src/Content/Nav.php:267
+msgid "Admin"
+msgstr "管理"
 
-#: include/security.php:84
-msgid "Please upload a profile photo."
-msgstr "请上传一张简介照片"
+#: mod/admin.php:237
+msgid "Addon Features"
+msgstr "插件特性"
 
-#: include/security.php:86
-msgid "Welcome back "
-msgstr "欢迎回来"
+#: mod/admin.php:238
+msgid "User registrations waiting for confirmation"
+msgstr "用户注册等确认"
 
-#: include/security.php:424
-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 "表格安全令牌不对。最可能因为表格开着太久(三个小时以上)提交前。"
+#: mod/admin.php:321 mod/admin.php:385 mod/admin.php:501 mod/admin.php:543
+#: mod/admin.php:762 mod/admin.php:805 mod/admin.php:856 mod/admin.php:974
+#: mod/admin.php:1548 mod/admin.php:2025 mod/admin.php:2141 mod/admin.php:2201
+#: mod/admin.php:2397 mod/admin.php:2441 mod/admin.php:2516 mod/admin.php:2583
+msgid "Administration"
+msgstr "管理"
 
-#: include/enotify.php:52
-msgid "Friendica Notification"
-msgstr "Friendica 通知"
+#: mod/admin.php:323
+msgid "Display Terms of Service"
+msgstr "显示服务条款"
 
-#: include/enotify.php:55
-msgid "Thank You,"
-msgstr "谢谢,"
+#: mod/admin.php:323
+msgid ""
+"Enable the Terms of Service page. If this is enabled a link to the terms "
+"will be added to the registration form and the general information page."
+msgstr ""
 
-#: include/enotify.php:58
-#, php-format
-msgid "%1$s, %2$s Administrator"
-msgstr "%1$s, %2$s 的管理员"
+#: mod/admin.php:324
+msgid "Display Privacy Statement"
+msgstr "显示隐私说明"
 
-#: include/enotify.php:60
+#: mod/admin.php:324
 #, php-format
-msgid "%s Administrator"
-msgstr "%s管理员"
+msgid ""
+"Show some informations regarding the needed information to operate the node "
+"according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."
+msgstr ""
 
-#: include/enotify.php:123
-#, php-format
-msgid "[Friendica:Notify] New mail received at %s"
-msgstr "[Friendica:Notify]收到新邮件在%s"
+#: mod/admin.php:325
+msgid "Privacy Statement Preview"
+msgstr "隐私声明预览"
 
-#: include/enotify.php:125
-#, php-format
-msgid "%1$s sent you a new private message at %2$s."
-msgstr "%1$s发给您新私人通知在%2$s."
+#: mod/admin.php:327
+msgid "The Terms of Service"
+msgstr "服务条款"
 
-#: include/enotify.php:126
-msgid "a private message"
-msgstr "一条私人信息"
+#: mod/admin.php:327
+msgid ""
+"Enter the Terms of Service for your node here. You can use BBCode. Headers "
+"of sections should be [h2] and below."
+msgstr ""
 
-#: include/enotify.php:126
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s发给您%2$s."
+#: mod/admin.php:329 mod/admin.php:1550 mod/admin.php:2203 mod/admin.php:2443
+#: mod/admin.php:2518 mod/admin.php:2665 mod/delegate.php:176
+#: mod/settings.php:668 mod/settings.php:775 mod/settings.php:863
+#: mod/settings.php:952 mod/settings.php:1177
+msgid "Save Settings"
+msgstr "保存设置"
 
-#: include/enotify.php:128
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "请访é\97® %s æ\9d¥æ\9f¥ç\9c\8b并ä¸\94\88\96è\80\85å\9b\9eå¤\8dä½ ç\9a\84ç§\81ä¿¡ã\80\82"
+#: mod/admin.php:377 mod/admin.php:395 mod/dfrn_request.php:346
+#: mod/friendica.php:123 src/Model/Contact.php:1653
+msgid "Blocked domain"
+msgstr "被å°\81ç¦\81ç\9a\84å\9f\9få\90\8d"
 
-#: include/enotify.php:161
-#, php-format
-msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
-msgstr "%1$s于[url=%2$s]a %3$s[/url]评论了"
+#: mod/admin.php:377
+msgid "The blocked domain"
+msgstr "被封禁的域名"
 
-#: include/enotify.php:169
-#, php-format
-msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
-msgstr "%1$s于[url=%2$s]%3$s的%4$s[/url]评论了"
+#: mod/admin.php:378 mod/admin.php:396 mod/friendica.php:123
+msgid "Reason for the block"
+msgstr "封禁原因"
 
-#: include/enotify.php:179
-#, php-format
-msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
-msgstr "%1$s于[url=%2$s]您的%3$s[/url]评论了"
+#: mod/admin.php:378 mod/admin.php:391
+msgid "The reason why you blocked this domain."
+msgstr "封禁这个域名的原因。"
 
-#: include/enotify.php:191
-#, php-format
-msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Friendica:Notify]于交流#%1$d由%2$s评论"
+#: mod/admin.php:379
+msgid "Delete domain"
+msgstr "删除域名"
 
-#: include/enotify.php:193
-#, php-format
-msgid "%s commented on an item/conversation you have been following."
-msgstr "%s对你有兴趣的项目/ 交谈发表意见"
+#: mod/admin.php:379
+msgid "Check to delete this entry from the blocklist"
+msgstr "选中以从列表中删除此条目"
 
-#: include/enotify.php:196 include/enotify.php:211 include/enotify.php:226
-#: include/enotify.php:241 include/enotify.php:260 include/enotify.php:276
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "请访问%s来查看并且/或者回复这个对话。"
+#: mod/admin.php:387
+msgid ""
+"This page can be used to define a black list of servers from the federated "
+"network that are not allowed to interact with your node. For all entered "
+"domains you should also give a reason why you have blocked the remote "
+"server."
+msgstr ""
 
-#: include/enotify.php:203
-#, php-format
-msgid "[Friendica:Notify] %s posted to your profile wall"
-msgstr "[Friendica:Notify] %s贴在您的简介墙"
-
-#: include/enotify.php:205
-#, php-format
-msgid "%1$s posted to your profile wall at %2$s"
-msgstr "%1$s放在您的简介墙在%2$s"
-
-#: include/enotify.php:206
-#, php-format
-msgid "%1$s posted to [url=%2$s]your wall[/url]"
-msgstr "%1$s放在[url=%2$s]您的墙[/url]"
-
-#: include/enotify.php:218
-#, php-format
-msgid "[Friendica:Notify] %s tagged you"
-msgstr "[Friendica:Notify] %s标签您"
+#: mod/admin.php:388
+msgid ""
+"The list of blocked servers will be made publically available on the "
+"/friendica page so that your users and people investigating communication "
+"problems can find the reason easily."
+msgstr ""
 
-#: include/enotify.php:220
-#, php-format
-msgid "%1$s tagged you at %2$s"
-msgstr "%1$s把您在%2$s标签"
+#: mod/admin.php:389
+msgid "Add new entry to block list"
+msgstr "添加新条目到屏蔽列表"
 
-#: include/enotify.php:221
-#, php-format
-msgid "%1$s [url=%2$s]tagged you[/url]."
-msgstr "%1$s[url=%2$s]把您标签[/url]."
+#: mod/admin.php:390
+msgid "Server Domain"
+msgstr "服务器域名"
 
-#: include/enotify.php:233
-#, php-format
-msgid "[Friendica:Notify] %s shared a new post"
-msgstr "[Friendica:Notify] %s分享新的消息"
+#: mod/admin.php:390
+msgid ""
+"The domain of the new server to add to the block list. Do not include the "
+"protocol."
+msgstr "需要添加到服务器屏蔽列表的服务器的域名。请勿包括协议。"
 
-#: include/enotify.php:235
-#, php-format
-msgid "%1$s shared a new post at %2$s"
-msgstr "%1$s分享新的消息在%2$s"
+#: mod/admin.php:391
+msgid "Block reason"
+msgstr "封禁原因"
 
-#: include/enotify.php:236
-#, php-format
-msgid "%1$s [url=%2$s]shared a post[/url]."
-msgstr "%1$s [url=%2$s]分享一个消息[/url]."
+#: mod/admin.php:392
+msgid "Add Entry"
+msgstr "添加条目"
 
-#: include/enotify.php:248
-#, php-format
-msgid "[Friendica:Notify] %1$s poked you"
-msgstr "[Friendica:Notify]您被%1$s戳"
+#: mod/admin.php:393
+msgid "Save changes to the blocklist"
+msgstr "保存变更到屏蔽列表"
 
-#: include/enotify.php:250
-#, php-format
-msgid "%1$s poked you at %2$s"
-msgstr "您被%1$s戳在%2$s"
+#: mod/admin.php:394
+msgid "Current Entries in the Blocklist"
+msgstr "屏蔽列表中的当前条目"
 
-#: include/enotify.php:251
-#, php-format
-msgid "%1$s [url=%2$s]poked you[/url]."
-msgstr "%1$s[url=%2$s]把您戳[/url]。"
+#: mod/admin.php:397
+msgid "Delete entry from blocklist"
+msgstr "删除屏蔽列表中的条目"
 
-#: include/enotify.php:268
-#, php-format
-msgid "[Friendica:Notify] %s tagged your post"
-msgstr "[Friendica:Notify] %s标前您的文章"
+#: mod/admin.php:400
+msgid "Delete entry from blocklist?"
+msgstr "从屏蔽列表删除条目?"
 
-#: include/enotify.php:270
-#, php-format
-msgid "%1$s tagged your post at %2$s"
-msgstr "%1$s把您的文章在%2$s标签"
+#: mod/admin.php:426
+msgid "Server added to blocklist."
+msgstr "服务器已添加到屏蔽列表。"
 
-#: include/enotify.php:271
-#, php-format
-msgid "%1$s tagged [url=%2$s]your post[/url]"
-msgstr "%1$s把[url=%2$s]您的文章[/url]标签"
+#: mod/admin.php:442
+msgid "Site blocklist updated."
+msgstr "站点屏蔽列表已更新。"
 
-#: include/enotify.php:283
-msgid "[Friendica:Notify] Introduction received"
-msgstr "[Friendica:Notify] 收到介绍"
+#: mod/admin.php:465 src/Core/Console/GlobalCommunityBlock.php:68
+msgid "The contact has been blocked from the node"
+msgstr "该联系人已被本节点屏蔽。"
 
-#: include/enotify.php:285
+#: mod/admin.php:467 src/Core/Console/GlobalCommunityBlock.php:65
 #, php-format
-msgid "You've received an introduction from '%1$s' at %2$s"
-msgstr "您从「%1$s」受到一个介绍在%2$s"
+msgid "Could not find any contact entry for this URL (%s)"
+msgstr ""
 
-#: include/enotify.php:286
+#: mod/admin.php:474
 #, php-format
-msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
-msgstr "您从%2$s收到[url=%1$s]一个介绍[/url]。"
+msgid "%s contact unblocked"
+msgid_plural "%s contacts unblocked"
+msgstr[0] ""
 
-#: include/enotify.php:291 include/enotify.php:337
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "你能看他的简介在%s"
+#: mod/admin.php:502
+msgid "Remote Contact Blocklist"
+msgstr ""
 
-#: include/enotify.php:293
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr "请批准或拒绝介绍在%s"
+#: mod/admin.php:503
+msgid ""
+"This page allows you to prevent any message from a remote contact to reach "
+"your node."
+msgstr ""
 
-#: include/enotify.php:300
-msgid "[Friendica:Notify] A new person is sharing with you"
-msgstr "[Friendica:Notify] 一个新的人正在和你分享"
+#: mod/admin.php:504
+msgid "Block Remote Contact"
+msgstr ""
 
-#: include/enotify.php:302 include/enotify.php:303
-#, php-format
-msgid "%1$s is sharing with you at %2$s"
-msgstr "%1$s 正在 %2$s 和你分享"
+#: mod/admin.php:505 mod/admin.php:2028
+msgid "select all"
+msgstr "全选"
 
-#: include/enotify.php:310
-msgid "[Friendica:Notify] You have a new follower"
-msgstr "[Friendica:Notify] 你有一个新的粉丝"
+#: mod/admin.php:506
+msgid "select none"
+msgstr ""
 
-#: include/enotify.php:312 include/enotify.php:313
-#, php-format
-msgid "You have a new follower at %2$s : %1$s"
-msgstr "你在 %2$s 有一个新的关注者: %1$s"
+#: mod/admin.php:507 mod/admin.php:2037 src/Module/Contact.php:623
+#: src/Module/Contact.php:827 src/Module/Contact.php:1080
+msgid "Block"
+msgstr "屏蔽"
 
-#: include/enotify.php:326
-msgid "[Friendica:Notify] Friend suggestion received"
-msgstr "[Friendica:Notify] 收到朋友建议"
+#: mod/admin.php:508 mod/admin.php:2039 src/Module/Contact.php:623
+#: src/Module/Contact.php:827 src/Module/Contact.php:1080
+msgid "Unblock"
+msgstr "解除屏蔽"
 
-#: include/enotify.php:328
-#, php-format
-msgid "You've received a friend suggestion from '%1$s' at %2$s"
-msgstr "您从「%2$s」收到[url=%1$s]一个朋友建议[/url]。"
+#: mod/admin.php:509
+msgid "No remote contact is blocked from this node."
+msgstr ""
 
-#: include/enotify.php:329
-#, php-format
-msgid ""
-"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
-msgstr "您从%3$s收到[url=%1$s]一个朋友建议[/url]为%2$s。"
+#: mod/admin.php:511
+msgid "Blocked Remote Contacts"
+msgstr ""
 
-#: include/enotify.php:335
-msgid "Name:"
-msgstr "名字:"
+#: mod/admin.php:512
+msgid "Block New Remote Contact"
+msgstr ""
 
-#: include/enotify.php:336
-msgid "Photo:"
-msgstr "照片"
+#: mod/admin.php:513
+msgid "Photo"
+msgstr "照片"
 
-#: include/enotify.php:339
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "请访问%s来批准或拒绝这个建议。"
+#: mod/admin.php:513 mod/admin.php:2020 mod/admin.php:2031 mod/admin.php:2045
+#: mod/admin.php:2061 mod/crepair.php:161 mod/settings.php:670
+#: mod/settings.php:696
+msgid "Name"
+msgstr "名字"
 
-#: include/enotify.php:347 include/enotify.php:362
-msgid "[Friendica:Notify] Connection accepted"
-msgstr "[Friendica:Notify] 连接被接受"
+#: mod/admin.php:513 mod/profiles.php:395
+msgid "Address"
+msgstr "地址"
 
-#: include/enotify.php:349 include/enotify.php:364
-#, php-format
-msgid "'%1$s' has accepted your connection request at %2$s"
-msgstr "“%1$s”已经在 %2$s 接受了您的连接请求"
+#: mod/admin.php:513 mod/admin.php:523 mod/follow.php:167
+#: mod/notifications.php:177 mod/notifications.php:261 mod/unfollow.php:137
+#: src/Module/Contact.php:642
+msgid "Profile URL"
+msgstr "简介 URL"
 
-#: include/enotify.php:350 include/enotify.php:365
+#: mod/admin.php:521
 #, php-format
-msgid "%2$s has accepted your [url=%1$s]connection request[/url]."
-msgstr "%2$s 已经接受了你的[url=%1$s]连接请求[/url]。"
+msgid "%s total blocked contact"
+msgid_plural "%s total blocked contacts"
+msgstr[0] ""
 
-#: include/enotify.php:355
-msgid ""
-"You are now mutual friends and may exchange status updates, photos, and "
-"email without restriction."
-msgstr "你们现在已经互为朋友了,可以不受限制地交换状态更新、照片和邮件。"
+#: mod/admin.php:523
+msgid "URL of the remote contact to block."
+msgstr ""
 
-#: include/enotify.php:357
-#, php-format
-msgid "Please visit %s if you wish to make any changes to this relationship."
-msgstr "请访问%s如果你希望对这个关系做任何改变。"
+#: mod/admin.php:545
+msgid "Delete this Item"
+msgstr "删除这个项目"
 
-#: include/enotify.php:370
-#, php-format
+#: mod/admin.php:546
 msgid ""
-"'%1$s' has chosen to accept you a fan, which restricts some forms of "
-"communication - such as private messaging and some profile interactions. If "
-"this is a celebrity or community page, these settings were applied "
-"automatically."
+"On this page you can delete an item from your node. If the item is a top "
+"level posting, the entire thread will be deleted."
 msgstr ""
 
-#: include/enotify.php:372
-#, php-format
+#: mod/admin.php:547
 msgid ""
-"'%1$s' may choose to extend this into a two-way or more permissive "
-"relationship in the future."
+"You need to know the GUID of the item. You can find it e.g. by looking at "
+"the display URL. The last part of http://example.com/display/123456 is the "
+"GUID, here 123456."
 msgstr ""
 
-#: include/enotify.php:374
-#, php-format
-msgid "Please visit %s  if you wish to make any changes to this relationship."
-msgstr "请访问 %s  如果你希望对修改这个关系。"
+#: mod/admin.php:548
+msgid "GUID"
+msgstr "GUID"
 
-#: include/enotify.php:384 mod/removeme.php:47
-msgid "[Friendica System Notify]"
-msgstr ""
+#: mod/admin.php:548
+msgid "The GUID of the item you want to delete."
+msgstr "你想要删除的项目的 GUID."
 
-#: include/enotify.php:384
-msgid "registration request"
-msgstr "注å\86\8c请æ±\82"
+#: mod/admin.php:582
+msgid "Item marked for deletion."
+msgstr "被æ \87记为è¦\81å\88 é\99¤ç\9a\84项ç\9b®ã\80\82"
 
-#: include/enotify.php:386
-#, php-format
-msgid "You've received a registration request from '%1$s' at %2$s"
+#: mod/admin.php:653
+msgid "unknown"
+msgstr "未知"
+
+#: mod/admin.php:756
+msgid ""
+"This page offers you some numbers to the known part of the federated social "
+"network your Friendica node is part of. These numbers are not complete but "
+"only reflect the part of the network your node is aware of."
 msgstr ""
 
-#: include/enotify.php:387
-#, php-format
-msgid "You've received a [url=%1$s]registration request[/url] from %2$s."
+#: mod/admin.php:757
+msgid ""
+"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
+"will improve the data displayed here."
 msgstr ""
 
-#: include/enotify.php:392
+#: mod/admin.php:769
 #, php-format
 msgid ""
-"Full Name:\t%s\n"
-"Site Location:\t%s\n"
-"Login Name:\t%s (%s)"
+"Currently this node is aware of %d nodes with %d registered users from the "
+"following platforms:"
 msgstr ""
 
-#: include/enotify.php:398
-#, php-format
-msgid "Please visit %s to approve or reject the request."
-msgstr "请访问%s来批准或拒绝这个请求。"
+#: mod/admin.php:808 mod/admin.php:859
+msgid "ID"
+msgstr "ID"
 
-#: include/text.php:302
-msgid "newer"
-msgstr "æ\9b´æ\96°"
+#: mod/admin.php:809
+msgid "Recipient Name"
+msgstr "æ\8e¥æ\94¶è\80\85ç\9a\84å\90\8då­\97"
 
-#: include/text.php:303
-msgid "older"
-msgstr "æ\9b´æ\97§"
+#: mod/admin.php:810
+msgid "Recipient Profile"
+msgstr "æ\8e¥æ\94¶è\80\85ç\9a\84ç®\80ä»\8b"
 
-#: include/text.php:308
-msgid "first"
-msgstr "首先"
+#: mod/admin.php:811 src/Content/Nav.php:232
+#: src/Core/NotificationsManager.php:178 view/theme/frio/theme.php:267
+msgid "Network"
+msgstr "网络"
 
-#: include/text.php:309
-msgid "prev"
-msgstr "上个"
+#: mod/admin.php:812 mod/admin.php:861
+msgid "Created"
+msgstr "已创建"
 
-#: include/text.php:343
-msgid "next"
-msgstr "ä¸\8b个"
+#: mod/admin.php:813
+msgid "Last Tried"
+msgstr "ä¸\8a次å°\9dè¯\95"
 
-#: include/text.php:344
-msgid "last"
-msgstr "最后"
+#: mod/admin.php:814
+msgid ""
+"This page lists the content of the queue for outgoing postings. These are "
+"postings the initial delivery failed for. They will be resend later and "
+"eventually deleted if the delivery fails permanently."
+msgstr ""
 
-#: include/text.php:398
-msgid "Loading more entries..."
-msgstr "没有项目..."
+#: mod/admin.php:835
+msgid "Inspect Deferred Worker Queue"
+msgstr ""
 
-#: include/text.php:399
-msgid "The end"
+#: mod/admin.php:836
+msgid ""
+"This page lists the deferred worker jobs. This are jobs that couldn't be "
+"executed at the first time."
 msgstr ""
 
-#: include/text.php:767
-msgid "No contacts"
-msgstr "没有联系人"
+#: mod/admin.php:839
+msgid "Inspect Worker Queue"
+msgstr ""
 
-#: include/text.php:791
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] "%d 联系人"
+#: mod/admin.php:840
+msgid ""
+"This page lists the currently queued worker jobs. These jobs are handled by "
+"the worker cronjob you've set up during install."
+msgstr ""
 
-#: include/text.php:804
-msgid "View Contacts"
-msgstr "查看联系人"
+#: mod/admin.php:860
+msgid "Job Parameters"
+msgstr ""
 
-#: include/text.php:889 mod/filer.php:35 mod/editpost.php:100 mod/notes.php:54
-msgid "Save"
-msgstr "保存"
+#: mod/admin.php:862
+msgid "Priority"
+msgstr ""
 
-#: include/text.php:889
-msgid "Follow"
-msgstr "关注"
+#: mod/admin.php:887
+#, php-format
+msgid ""
+"Your DB still runs with MyISAM tables. You should change the engine type to "
+"InnoDB. As Friendica will use InnoDB only features in the future, you should"
+" change this! See <a href=\"%s\">here</a> for a guide that may be helpful "
+"converting the table engines. You may also use the command <tt>php "
+"bin/console.php dbstructure toinnodb</tt> of your Friendica installation for"
+" an automatic conversion.<br />"
+msgstr ""
 
-#: include/text.php:895 mod/search.php:162 src/Content/Nav.php:142
-msgid "Search"
-msgstr "搜索"
+#: mod/admin.php:894
+#, php-format
+msgid ""
+"There is a new version of Friendica available for download. Your current "
+"version is %1$s, upstream version is %2$s"
+msgstr "有新的 Friendica 版本可供下载。您当前的版本为 %1$s,上游版本为 %2$s"
 
-#: include/text.php:898 src/Content/Nav.php:58
-msgid "@name, !forum, #tags, content"
+#: mod/admin.php:904
+msgid ""
+"The database update failed. Please run \"php bin/console.php dbstructure "
+"update\" from the command line and have a look at the errors that might "
+"appear."
 msgstr ""
 
-#: include/text.php:904 src/Content/Nav.php:145
-msgid "Full Text"
-msgstr "全文"
+#: mod/admin.php:910
+msgid "The worker was never executed. Please check your database structure!"
+msgstr ""
 
-#: include/text.php:905 src/Content/Nav.php:146
-#: src/Content/Widget/TagCloud.php:53
-msgid "Tags"
-msgstr "标签:"
+#: mod/admin.php:913
+#, php-format
+msgid ""
+"The last worker execution was on %s UTC. This is older than one hour. Please"
+" check your crontab settings."
+msgstr ""
 
-#: include/text.php:953
-msgid "poke"
-msgstr "戳"
+#: mod/admin.php:919
+#, php-format
+msgid ""
+"Friendica's configuration now is stored in config/local.config.php, please "
+"copy config/local-sample.config.php and move your config from "
+"<code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for "
+"help with the transition."
+msgstr ""
 
-#: include/text.php:953
-msgid "poked"
-msgstr "戳了"
+#: mod/admin.php:926
+#, php-format
+msgid ""
+"<a href=\"%s\">%s</a> is not reachable on your system. This is a severe "
+"configuration issue that prevents server to server communication. See <a "
+"href=\"%s\">the installation page</a> for help."
+msgstr ""
 
-#: include/text.php:954
-msgid "ping"
-msgstr ""
+#: mod/admin.php:932
+msgid "Normal Account"
+msgstr "正常帐户"
 
-#: include/text.php:954
-msgid "pinged"
-msgstr "砰了"
+#: mod/admin.php:933
+msgid "Automatic Follower Account"
+msgstr ""
 
-#: include/text.php:955
-msgid "prod"
-msgstr "柔戳"
+#: mod/admin.php:934
+msgid "Public Forum Account"
+msgstr ""
 
-#: include/text.php:955
-msgid "prodded"
-msgstr "柔戳了"
+#: mod/admin.php:935
+msgid "Automatic Friend Account"
+msgstr "自动朋友帐户"
 
-#: include/text.php:956
-msgid "slap"
-msgstr "掌击"
+#: mod/admin.php:936
+msgid "Blog Account"
+msgstr "博客账户"
 
-#: include/text.php:956
-msgid "slapped"
-msgstr "掌击了"
+#: mod/admin.php:937
+msgid "Private Forum Account"
+msgstr ""
 
-#: include/text.php:957
-msgid "finger"
-msgstr ""
+#: mod/admin.php:960
+msgid "Message queues"
+msgstr "通知排队"
 
-#: include/text.php:957
-msgid "fingered"
-msgstr "指了"
+#: mod/admin.php:966
+msgid "Server Settings"
+msgstr ""
 
-#: include/text.php:958
-msgid "rebuff"
-msgstr "æ\8b\92ç»\9d"
+#: mod/admin.php:975
+msgid "Summary"
+msgstr "æ¦\82è¦\81"
 
-#: include/text.php:958
-msgid "rebuffed"
-msgstr "已拒绝"
+#: mod/admin.php:977
+msgid "Registered users"
+msgstr "注册的用户"
 
-#: include/text.php:972 mod/settings.php:941 src/Model/Event.php:388
-msgid "Monday"
-msgstr "æ\98\9fæ\9c\9fä¸\80"
+#: mod/admin.php:979
+msgid "Pending registrations"
+msgstr "æ\9cªå\86³ç\9a\84注å\86\8c"
 
-#: include/text.php:972 src/Model/Event.php:389
-msgid "Tuesday"
-msgstr "星期二"
+#: mod/admin.php:980
+msgid "Version"
+msgstr "版本"
 
-#: include/text.php:972 src/Model/Event.php:390
-msgid "Wednesday"
-msgstr "æ\98\9fæ\9c\9fä¸\89"
+#: mod/admin.php:985
+msgid "Active addons"
+msgstr "æ¿\80æ´»æ\8f\92件"
 
-#: include/text.php:972 src/Model/Event.php:391
-msgid "Thursday"
-msgstr "星期四"
+#: mod/admin.php:1017
+msgid "Can not parse base url. Must have at least <scheme>://<domain>"
+msgstr "不能分析基础URL。至少要<scheme>://<domain>"
 
-#: include/text.php:972 src/Model/Event.php:392
-msgid "Friday"
-msgstr "星期五"
+#: mod/admin.php:1387
+msgid "Site settings updated."
+msgstr "网站设置更新了。"
 
-#: include/text.php:972 src/Model/Event.php:393
-msgid "Saturday"
-msgstr "æ\98\9fæ\9c\9få\85­"
+#: mod/admin.php:1415 mod/settings.php:896
+msgid "No special theme for mobile devices"
+msgstr "没ä¸\93é\97¨é\80\82å\90\88æ\89\8bæ\9cºç\9a\84主é¢\98"
 
-#: include/text.php:972 mod/settings.php:941 src/Model/Event.php:387
-msgid "Sunday"
-msgstr "星期天"
+#: mod/admin.php:1444
+msgid "No community page for local users"
+msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:408
-msgid "January"
-msgstr "一月"
+#: mod/admin.php:1445
+msgid "No community page"
+msgstr "没有社会页"
 
-#: include/text.php:976 src/Model/Event.php:409
-msgid "February"
-msgstr "二月"
+#: mod/admin.php:1446
+msgid "Public postings from users of this site"
+msgstr "本网站用户的公开文章"
 
-#: include/text.php:976 src/Model/Event.php:410
-msgid "March"
-msgstr "三月"
+#: mod/admin.php:1447
+msgid "Public postings from the federated network"
+msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:411
-msgid "April"
-msgstr "四月"
+#: mod/admin.php:1448
+msgid "Public postings from local users and the federated network"
+msgstr ""
 
-#: include/text.php:976 include/text.php:993 src/Model/Event.php:399
-#: src/Model/Event.php:412
-msgid "May"
-msgstr "五月"
+#: mod/admin.php:1452 mod/admin.php:1650 mod/admin.php:1660
+#: src/Module/Contact.php:548
+msgid "Disabled"
+msgstr "已停用"
 
-#: include/text.php:976 src/Model/Event.php:413
-msgid "June"
-msgstr "六月"
+#: mod/admin.php:1454
+msgid "Users, Global Contacts"
+msgstr "用户,全球联系人"
 
-#: include/text.php:976 src/Model/Event.php:414
-msgid "July"
-msgstr "七月"
+#: mod/admin.php:1455
+msgid "Users, Global Contacts/fallback"
+msgstr ""
 
-#: include/text.php:976 src/Model/Event.php:415
-msgid "August"
-msgstr "月"
+#: mod/admin.php:1459
+msgid "One month"
+msgstr "一个月"
 
-#: include/text.php:976 src/Model/Event.php:416
-msgid "September"
-msgstr "ä¹\9d月"
+#: mod/admin.php:1460
+msgid "Three months"
+msgstr "ä¸\89个月"
 
-#: include/text.php:976 src/Model/Event.php:417
-msgid "October"
-msgstr "å\8d\81æ\9c\88"
+#: mod/admin.php:1461
+msgid "Half a year"
+msgstr "å\8d\8aå¹´"
 
-#: include/text.php:976 src/Model/Event.php:418
-msgid "November"
-msgstr "十一月"
+#: mod/admin.php:1462
+msgid "One year"
+msgstr "一年"
 
-#: include/text.php:976 src/Model/Event.php:419
-msgid "December"
-msgstr "å\8d\81äº\8cæ\9c\88"
+#: mod/admin.php:1467
+msgid "Multi user instance"
+msgstr "å¤\9aç\94¨æ\88·ç½\91ç«\99"
 
-#: include/text.php:990 src/Model/Event.php:380
-msgid "Mon"
-msgstr "星期一"
+#: mod/admin.php:1491
+msgid "Closed"
+msgstr "关闭"
 
-#: include/text.php:990 src/Model/Event.php:381
-msgid "Tue"
-msgstr "星期二"
+#: mod/admin.php:1492
+msgid "Requires approval"
+msgstr "要批准"
 
-#: include/text.php:990 src/Model/Event.php:382
-msgid "Wed"
-msgstr "æ\98\9fæ\9c\9fä¸\89"
+#: mod/admin.php:1493
+msgid "Open"
+msgstr "æ\89\93å¼\80"
 
-#: include/text.php:990 src/Model/Event.php:383
-msgid "Thu"
-msgstr "æ\98\9fæ\9c\9få\9b\9b"
+#: mod/admin.php:1497
+msgid "No SSL policy, links will track page SSL state"
+msgstr "没SSLæ\96¹é\92\88ï¼\8cç\8e¯è\8a\82å°\86追踪页SSLç\8e°ç\8a"
 
-#: include/text.php:990 src/Model/Event.php:384
-msgid "Fri"
-msgstr "星期五"
+#: mod/admin.php:1498
+msgid "Force all links to use SSL"
+msgstr "强制所有链接使用 SSL"
 
-#: include/text.php:990 src/Model/Event.php:385
-msgid "Sat"
-msgstr "星期六"
+#: mod/admin.php:1499
+msgid "Self-signed certificate, use SSL for local links only (discouraged)"
+msgstr "自签证书,只在本地链接使用 SSL(不推荐)"
 
-#: include/text.php:990 src/Model/Event.php:379
-msgid "Sun"
-msgstr "æ\98\9fæ\9c\9fæ\97¥"
+#: mod/admin.php:1503
+msgid "Don't check"
+msgstr "请å\8b¿æ£\80æ\9f¥"
 
-#: include/text.php:993 src/Model/Event.php:395
-msgid "Jan"
-msgstr "ä¸\80æ\9c\88"
+#: mod/admin.php:1504
+msgid "check the stable version"
+msgstr "æ£\80æ\9f¥ç¨³å®\9aç\89\88"
 
-#: include/text.php:993 src/Model/Event.php:396
-msgid "Feb"
-msgstr "二月"
+#: mod/admin.php:1505
+msgid "check the development version"
+msgstr "检查开发版本"
 
-#: include/text.php:993 src/Model/Event.php:397
-msgid "Mar"
-msgstr "三月"
+#: mod/admin.php:1524 mod/settings.php:856 mod/settings.php:861
+msgid "None"
+msgstr "没有"
 
-#: include/text.php:993 src/Model/Event.php:398
-msgid "Apr"
-msgstr "四月"
-
-#: include/text.php:993 src/Model/Event.php:401
-msgid "Jul"
-msgstr "七月"
-
-#: include/text.php:993 src/Model/Event.php:402
-msgid "Aug"
-msgstr "八月"
-
-#: include/text.php:993
-msgid "Sep"
+#: mod/admin.php:1551
+msgid "Republish users to directory"
 msgstr ""
 
-#: include/text.php:993 src/Model/Event.php:404
-msgid "Oct"
-msgstr "十月"
-
-#: include/text.php:993 src/Model/Event.php:405
-msgid "Nov"
-msgstr "十一月"
+#: mod/admin.php:1552 mod/register.php:257
+msgid "Registration"
+msgstr "注册"
 
-#: include/text.php:993 src/Model/Event.php:406
-msgid "Dec"
-msgstr "十二月"
+#: mod/admin.php:1553
+msgid "File upload"
+msgstr "文件上传"
 
-#: include/text.php:1139
-#, php-format
-msgid "Content warning: %s"
-msgstr "内容警告:%s"
+#: mod/admin.php:1554
+msgid "Policies"
+msgstr "政策"
 
-#: include/text.php:1204 mod/videos.php:375
-msgid "View Video"
-msgstr "察看视频"
+#: mod/admin.php:1555 mod/events.php:570 src/Model/Profile.php:883
+#: src/Module/Contact.php:905
+msgid "Advanced"
+msgstr "高级"
 
-#: include/text.php:1221
-msgid "bytes"
-msgstr "字节"
+#: mod/admin.php:1556
+msgid "Auto Discovered Contact Directory"
+msgstr ""
 
-#: include/text.php:1254 include/text.php:1265 include/text.php:1300
-msgid "Click to open/close"
-msgstr "点击为开关"
+#: mod/admin.php:1557
+msgid "Performance"
+msgstr "性能"
 
-#: include/text.php:1415
-msgid "View on separate page"
-msgstr "在另一页面中查看"
+#: mod/admin.php:1558
+msgid "Worker"
+msgstr ""
 
-#: include/text.php:1416
-msgid "view on separate page"
-msgstr "在另一页面中查看"
+#: mod/admin.php:1559
+msgid "Message Relay"
+msgstr "讯息中继"
 
-#: include/text.php:1421 include/text.php:1428 src/Model/Event.php:609
-msgid "link to source"
-msgstr "链接到来源"
+#: mod/admin.php:1560
+msgid "Relocate Instance"
+msgstr ""
 
-#: include/text.php:1615
-msgid "activity"
-msgstr "活动"
+#: mod/admin.php:1561
+msgid "Warning! Advanced function. Could make this server unreachable."
+msgstr ""
 
-#: include/text.php:1617 src/Object/Post.php:428 src/Object/Post.php:440
-msgid "comment"
-msgid_plural "comments"
-msgstr[0] "评论"
+#: mod/admin.php:1565
+msgid "Site name"
+msgstr "网页名字"
 
-#: include/text.php:1620
-msgid "post"
-msgstr "æ\96\87ç« "
+#: mod/admin.php:1566
+msgid "Host name"
+msgstr "æ\9c\8då\8a¡å\99¨å\90\8d"
 
-#: include/text.php:1775
-msgid "Item filed"
-msgstr "把项目归档了"
+#: mod/admin.php:1567
+msgid "Sender Email"
+msgstr "寄主邮件"
 
-#: include/api.php:1138
-#, php-format
-msgid "Daily posting limit of %d post reached. The post was rejected."
-msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
-msgstr[0] "达到每日 %d 发文限制。此文被拒绝发出。"
+#: mod/admin.php:1567
+msgid ""
+"The email address your server shall use to send notification emails from."
+msgstr ""
 
-#: include/api.php:1152
-#, php-format
-msgid "Weekly posting limit of %d post reached. The post was rejected."
-msgid_plural ""
-"Weekly posting limit of %d posts reached. The post was rejected."
-msgstr[0] "达到每周 %d 发文限制。此文被拒绝发出。"
+#: mod/admin.php:1568
+msgid "Banner/Logo"
+msgstr "标题/标志"
 
-#: include/api.php:1166
-#, php-format
-msgid "Monthly posting limit of %d post reached. The post was rejected."
-msgstr "达到每月 %d 发文限制。此文被拒绝发出。"
+#: mod/admin.php:1569
+msgid "Shortcut icon"
+msgstr "捷径小图片"
 
-#: include/api.php:4233 mod/profile_photo.php:84 mod/profile_photo.php:93
-#: mod/profile_photo.php:102 mod/profile_photo.php:211
-#: mod/profile_photo.php:300 mod/profile_photo.php:310 mod/photos.php:90
-#: mod/photos.php:198 mod/photos.php:735 mod/photos.php:1169
-#: mod/photos.php:1186 mod/photos.php:1678 src/Model/User.php:595
-#: src/Model/User.php:603 src/Model/User.php:611
-msgid "Profile Photos"
-msgstr "简介照片"
+#: mod/admin.php:1569
+msgid "Link to an icon that will be used for browsers."
+msgstr ""
 
-#: mod/crepair.php:89
-msgid "Contact settings applied."
-msgstr "è\81\94系人设置已åº\94ç\94¨ã\80\82"
+#: mod/admin.php:1570
+msgid "Touch icon"
+msgstr "触æ\91¸å°\8få\9b¾ç\89\87"
 
-#: mod/crepair.php:91
-msgid "Contact update failed."
-msgstr "联系人更新失败。"
+#: mod/admin.php:1570
+msgid "Link to an icon that will be used for tablets and mobiles."
+msgstr ""
 
-#: mod/crepair.php:112 mod/redir.php:29 mod/redir.php:127
-#: mod/dfrn_confirm.php:127 mod/fsuggest.php:30 mod/fsuggest.php:96
-msgid "Contact not found."
-msgstr "没有找到联系人。"
+#: mod/admin.php:1571
+msgid "Additional Info"
+msgstr "别的消息"
 
-#: mod/crepair.php:116
+#: mod/admin.php:1571
+#, php-format
 msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr "<strong>警告:此为进阶</strong>,如果您输入不正确的信息,您也许无法与这位联系人的正常通讯。"
+"For public servers: you can add additional information here that will be "
+"listed at %s/servers."
+msgstr ""
 
-#: mod/crepair.php:117
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "请<strong>立即</strong>用后退按钮如果您不确定怎么用这页"
+#: mod/admin.php:1572
+msgid "System language"
+msgstr "系统语言"
 
-#: mod/crepair.php:131 mod/crepair.php:133
-msgid "No mirroring"
-msgstr "没有复制"
+#: mod/admin.php:1573
+msgid "System theme"
+msgstr "系统主题"
 
-#: mod/crepair.php:131
-msgid "Mirror as forwarded posting"
-msgstr "复制为传达文章"
+#: mod/admin.php:1573
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "默认系统主题-会被用户简介超驰-<a href='#' id='cnftheme'>把主题设置变化</a>"
 
-#: mod/crepair.php:131 mod/crepair.php:133
-msgid "Mirror as my own posting"
-msgstr "复制为我自己的文章"
+#: mod/admin.php:1574
+msgid "Mobile system theme"
+msgstr "手机系统主题"
 
-#: mod/crepair.php:146
-msgid "Return to contact editor"
-msgstr "返回到联系人编辑器"
+#: mod/admin.php:1574
+msgid "Theme for mobile devices"
+msgstr "用于移动设备的主题"
 
-#: mod/crepair.php:148
-msgid "Refetch contact data"
-msgstr "重新获取联系人数据"
+#: mod/admin.php:1575
+msgid "SSL link policy"
+msgstr "SSL环节方针"
 
-#: mod/crepair.php:151
-msgid "Remote Self"
-msgstr "遥远的自身"
+#: mod/admin.php:1575
+msgid "Determines whether generated links should be forced to use SSL"
+msgstr "决定产生的链接是否应该强制使用 SSL"
 
-#: mod/crepair.php:154
-msgid "Mirror postings from this contact"
-msgstr "把这个熟人的文章复制。"
+#: mod/admin.php:1576
+msgid "Force SSL"
+msgstr "强制使用 SSL"
 
-#: mod/crepair.php:156
+#: mod/admin.php:1576
 msgid ""
-"Mark this contact as remote_self, this will cause friendica to repost new "
-"entries from this contact."
-msgstr "表明这个熟人当遥远的自身。Friendica要把这个熟人的新的文章复制。"
-
-#: mod/crepair.php:160 mod/settings.php:677 mod/settings.php:703
-#: mod/admin.php:500 mod/admin.php:1890 mod/admin.php:1901 mod/admin.php:1915
-#: mod/admin.php:1931
-msgid "Name"
-msgstr "名字"
+"Force all Non-SSL requests to SSL - Attention: on some systems it could lead"
+" to endless loops."
+msgstr "强逼所有非SSL的要求用SSL。注意:在有的系统会导致无限循环"
 
-#: mod/crepair.php:161
-msgid "Account Nickname"
-msgstr "å¸\90æ\88·æ\98µç§°"
+#: mod/admin.php:1577
+msgid "Hide help entry from navigation menu"
+msgstr "å\9c¨å¯¼è\88ªè\8f\9cå\8d\95é\9a\90è\97\8f帮å\8a©æ\9d¡ç\9b®"
 
-#: mod/crepair.php:162
-msgid "@Tagname - overrides Name/Nickname"
-msgstr "@Tagname越过名/昵称"
+#: mod/admin.php:1577
+msgid ""
+"Hides the menu entry for the Help pages from the navigation menu. You can "
+"still access it calling /help directly."
+msgstr "在导航菜单中隐藏帮助页面的菜单条目。您仍然可以通过输入「/help」直接访问。"
 
-#: mod/crepair.php:163
-msgid "Account URL"
-msgstr "å¸\90æ\88·URL"
+#: mod/admin.php:1578
+msgid "Single user instance"
+msgstr "å\8d\95ç\94¨æ\88·ç½\91ç«\99"
 
-#: mod/crepair.php:164
-msgid "Friend Request URL"
-msgstr "朋友请求URL"
+#: mod/admin.php:1578
+msgid "Make this instance multi-user or single-user for the named user"
+msgstr "弄这网站多用户或单用户为选择的用户"
 
-#: mod/crepair.php:165
-msgid "Friend Confirm URL"
-msgstr "朋友确认URL"
+#: mod/admin.php:1580
+msgid "File storage backend"
+msgstr ""
 
-#: mod/crepair.php:166
-msgid "Notification Endpoint URL"
-msgstr "通知端URL"
+#: mod/admin.php:1580
+msgid "Backend used to store uploaded files data"
+msgstr ""
 
-#: mod/crepair.php:167
-msgid "Poll/Feed URL"
-msgstr "å\96\82URL"
+#: mod/admin.php:1582
+msgid "Maximum image size"
+msgstr "å\9b¾ç\89\87æ\9c\80大尺寸"
 
-#: mod/crepair.php:168
-msgid "New photo from this URL"
-msgstr "新照片从这个URL"
+#: mod/admin.php:1582
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "最多上传照相的字节。默认是零,意思是无限。"
 
-#: mod/wallmessage.php:49 mod/wallmessage.php:112
-#, php-format
-msgid "Number of daily wall messages for %s exceeded. Message failed."
-msgstr "一天最多墙通知给%s超过了。通知没有通过 。"
+#: mod/admin.php:1583
+msgid "Maximum image length"
+msgstr "最大图片大小"
 
-#: mod/wallmessage.php:57 mod/message.php:74
-msgid "No recipient selected."
-msgstr "没有选择的接受者。"
+#: mod/admin.php:1583
+msgid ""
+"Maximum length in pixels of the longest side of uploaded images. Default is "
+"-1, which means no limits."
+msgstr "最多像素在上传图片的长度。默认-1,意思是无限。"
 
-#: mod/wallmessage.php:60
-msgid "Unable to check your home location."
-msgstr "核对不了您的主页。"
+#: mod/admin.php:1584
+msgid "JPEG image quality"
+msgstr "JPEG 图片质量"
 
-#: mod/wallmessage.php:63 mod/message.php:81
-msgid "Message could not be sent."
-msgstr "消息发不了。"
+#: mod/admin.php:1584
+msgid ""
+"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
+"100, which is full quality."
+msgstr "上传的JPEG被用这质量[0-100]保存。默认100,最高。"
 
-#: mod/wallmessage.php:66 mod/message.php:84
-msgid "Message collection failure."
-msgstr "通信受到错误。"
+#: mod/admin.php:1586
+msgid "Register policy"
+msgstr "注册政策"
 
-#: mod/wallmessage.php:69 mod/message.php:87
-msgid "Message sent."
-msgstr "消息发了"
+#: mod/admin.php:1587
+msgid "Maximum Daily Registrations"
+msgstr "一天最多注册"
 
-#: mod/wallmessage.php:86 mod/wallmessage.php:95
-msgid "No recipient."
-msgstr "没有接受者。"
+#: mod/admin.php:1587
+msgid ""
+"If registration is permitted above, this sets the maximum number of new user"
+" registrations to accept per day.  If register is set to closed, this "
+"setting has no effect."
+msgstr "如果注册上边许可的,这个选择一天最多新用户注册会接待。如果注册关闭了,这个设置没有印象。"
 
-#: mod/wallmessage.php:132 mod/message.php:249
-msgid "Send Private Message"
-msgstr "发私人的通信"
+#: mod/admin.php:1588
+msgid "Register text"
+msgstr "注册正文"
 
-#: mod/wallmessage.php:133
-#, php-format
+#: mod/admin.php:1588
 msgid ""
-"If you wish for %s to respond, please check that the privacy settings on "
-"your site allow private mail from unknown senders."
-msgstr "如果您想%s回答,请核对您网站的隐私设置允许生发送人的私人邮件。"
-
-#: mod/wallmessage.php:134 mod/message.php:250 mod/message.php:419
-msgid "To:"
-msgstr "到:"
+"Will be displayed prominently on the registration page. You can use BBCode "
+"here."
+msgstr ""
 
-#: mod/wallmessage.php:135 mod/message.php:254 mod/message.php:421
-msgid "Subject:"
-msgstr "题目:"
+#: mod/admin.php:1589
+msgid "Forbidden Nicknames"
+msgstr ""
 
-#: mod/wallmessage.php:141 mod/message.php:258 mod/message.php:424
-#: mod/invite.php:150
-msgid "Your message:"
-msgstr "你的消息:"
-
-#: mod/lockview.php:42 mod/lockview.php:50
-msgid "Remote privacy information not available."
-msgstr "摇隐私信息无效"
+#: mod/admin.php:1589
+msgid ""
+"Comma separated list of nicknames that are forbidden from registration. "
+"Preset is a list of role names according RFC 2142."
+msgstr ""
 
-#: mod/lockview.php:59
-msgid "Visible to:"
-msgstr "可见给:"
+#: mod/admin.php:1590
+msgid "Accounts abandoned after x days"
+msgstr "账户丢弃X天后"
 
-#: mod/install.php:100
-msgid "Friendica Communications Server - Setup"
-msgstr "Friendica沟通服务器-安装"
+#: mod/admin.php:1590
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "拒绝浪费系统资源看外网站找丢弃的账户。输入0为无时限。"
 
-#: mod/install.php:106
-msgid "Could not connect to database."
-msgstr "解不了数据库。"
+#: mod/admin.php:1591
+msgid "Allowed friend domains"
+msgstr "允许的朋友域"
 
-#: mod/install.php:110
-msgid "Could not create table."
-msgstr "无法创建表格。"
+#: mod/admin.php:1591
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "逗号分隔的域名许根这个网站结友谊。通配符行。空的允许所有的域名。"
 
-#: mod/install.php:116
-msgid "Your Friendica site database has been installed."
-msgstr "您Friendica网站数据库被安装了。"
+#: mod/admin.php:1592
+msgid "Allowed email domains"
+msgstr "允许的电子邮件域"
 
-#: mod/install.php:121
+#: mod/admin.php:1592
 msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
-msgstr "您可能要手工地进口文件「database.sql」用phpmyadmin或mysql。"
-
-#: mod/install.php:122 mod/install.php:166 mod/install.php:274
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "请看文件「INSTALL.txt」"
+"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 "逗号分隔的域名可接受在邮件地址为这网站的注册。通配符行。空的允许所有的域名。"
 
-#: mod/install.php:134
-msgid "Database already in use."
-msgstr "数据库已经被使用。"
+#: mod/admin.php:1593
+msgid "No OEmbed rich content"
+msgstr ""
 
-#: mod/install.php:163
-msgid "System check"
-msgstr "系统检测"
+#: mod/admin.php:1593
+msgid ""
+"Don't show the rich content (e.g. embedded PDF), except from the domains "
+"listed below."
+msgstr ""
 
-#: mod/install.php:167 mod/cal.php:279 mod/events.php:394
-msgid "Next"
-msgstr ""
+#: mod/admin.php:1594
+msgid "Allowed OEmbed domains"
+msgstr ""
 
-#: mod/install.php:168
-msgid "Check again"
-msgstr "再检测"
+#: mod/admin.php:1594
+msgid ""
+"Comma separated list of domains which oembed content is allowed to be "
+"displayed. Wildcards are accepted."
+msgstr ""
 
-#: mod/install.php:187
-msgid "Database connection"
-msgstr "数据库接通"
+#: mod/admin.php:1595
+msgid "Block public"
+msgstr ""
 
-#: mod/install.php:188
+#: mod/admin.php:1595
 msgid ""
-"In order to install Friendica we need to know how to connect to your "
-"database."
-msgstr "为安装Friendica我们要知道怎么连接您的数据库。"
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr ""
 
-#: mod/install.php:189
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "你有关于这些设置有问题的话,请给互联网托管服务或者网页管理联系。"
+#: mod/admin.php:1596
+msgid "Force publish"
+msgstr "强行发布"
 
-#: mod/install.php:190
+#: mod/admin.php:1596
 msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "您下边指定的数据库应该已经存在。如果还没有,请创建后继续。"
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "让所有这网站的的简介表明在网站目录。"
 
-#: mod/install.php:194
-msgid "Database Server Name"
-msgstr "数据库服务器名"
+#: mod/admin.php:1596
+msgid "Enabling this may violate privacy laws like the GDPR"
+msgstr "启用此项可能会违反隐私法律,譬如 GDPR 等"
 
-#: mod/install.php:195
-msgid "Database Login Name"
-msgstr "数据库登录名"
+#: mod/admin.php:1597
+msgid "Global directory URL"
+msgstr ""
 
-#: mod/install.php:196
-msgid "Database Login Password"
-msgstr "数据库登录密码"
+#: mod/admin.php:1597
+msgid ""
+"URL to the global directory. If this is not set, the global directory is "
+"completely unavailable to the application."
+msgstr ""
 
-#: mod/install.php:196
-msgid "For security reasons the password must not be empty"
-msgstr "由于安全的原因,密码不能为空"
+#: mod/admin.php:1598
+msgid "Private posts by default for new users"
+msgstr "新用户默认写私人文章"
 
-#: mod/install.php:197
-msgid "Database Name"
-msgstr "数据库名字"
+#: mod/admin.php:1598
+msgid ""
+"Set default post permissions for all new members to the default privacy "
+"group rather than public."
+msgstr "默认新用户文章批准使默认隐私组,没有公开。"
 
-#: mod/install.php:198 mod/install.php:235
-msgid "Site administrator email address"
-msgstr "网站行政人员邮件地址"
+#: mod/admin.php:1599
+msgid "Don't include post content in email notifications"
+msgstr "别包含文章内容在邮件消息"
 
-#: mod/install.php:198 mod/install.php:235
+#: mod/admin.php:1599
 msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "您账户邮件地址必要符合这个为用网站处理仪表板"
+"Don't include the content of a post/comment/private message/etc. in the "
+"email notifications that are sent out from this site, as a privacy measure."
+msgstr "别包含文章/谈论/私消息/等的内容在文件消息被这个网站寄出,为了隐私。"
 
-#: mod/install.php:200 mod/install.php:238
-msgid "Please select a default timezone for your website"
-msgstr "请选择您网站的默认时区"
+#: mod/admin.php:1600
+msgid "Disallow public access to addons listed in the apps menu."
+msgstr "不允许插件的公众使用权在应用选单。"
 
-#: mod/install.php:225
-msgid "Site settings"
-msgstr "网站设置"
+#: mod/admin.php:1600
+msgid ""
+"Checking this box will restrict addons listed in the apps menu to members "
+"only."
+msgstr "复选这个框为把应用选内插件限制仅成员"
 
-#: mod/install.php:239
-msgid "System Language:"
-msgstr "系统语言:"
+#: mod/admin.php:1601
+msgid "Don't embed private images in posts"
+msgstr "别嵌入私人图案在文章里"
 
-#: mod/install.php:239
+#: mod/admin.php:1601
 msgid ""
-"Set the default language for your Friendica installation interface and to "
-"send emails."
-msgstr "为 Friendica 安装界面及邮件发送设置默认语言。"
+"Don't replace locally-hosted private photos in posts with an embedded copy "
+"of the image. This means that contacts who receive posts containing private "
+"photos will have to authenticate and load each image, which may take a "
+"while."
+msgstr "别把复制嵌入的照相代替本网站的私人照相在文章里。结果是收包括私人照相的熟人要认证才卸载个张照片,会花许久。"
+
+#: mod/admin.php:1602
+msgid "Explicit Content"
+msgstr ""
 
-#: mod/install.php:255
+#: mod/admin.php:1602
 msgid ""
-"The database configuration file \"config/local.ini.php\" could not be "
-"written. Please use the enclosed text to create a configuration file in your"
-" web server root."
+"Set this to announce that your node is used mostly for explicit content that"
+" might not be suited for minors. This information will be published in the "
+"node information and might be used, e.g. by the global directory, to filter "
+"your node from listings of nodes to join. Additionally a note about this "
+"will be shown at the user registration page."
 msgstr ""
 
-#: mod/install.php:272
-msgid "<h1>What next</h1>"
-msgstr "<h1>下步是什么</h1>"
+#: mod/admin.php:1603
+msgid "Allow Users to set remote_self"
+msgstr "允许用户用遥远的自身"
 
-#: mod/install.php:273
+#: mod/admin.php:1603
 msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"worker."
+"With checking this, every user is allowed to mark every contact as a "
+"remote_self in the repair contact dialog. Setting this flag on a contact "
+"causes mirroring every posting of that contact in the users stream."
+msgstr "选择这个之后,用户们允许表明熟人当遥远的自身在熟人修理页。遥远的自身所有文章被复制到用户文章流。"
+
+#: mod/admin.php:1604
+msgid "Block multiple registrations"
+msgstr "阻止多次注册"
+
+#: mod/admin.php:1604
+msgid "Disallow users to register additional accounts for use as pages."
+msgstr "不允许用户注册别的账户为当页。"
+
+#: mod/admin.php:1605
+msgid "Disable OpenID"
 msgstr ""
 
-#: mod/install.php:276
-#, php-format
-msgid ""
-"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
-"and register as new user. Remember to use the same email you have entered as"
-" administrator email. This will allow you to enter the site admin panel."
+#: mod/admin.php:1605
+msgid "Disable OpenID support for registration and logins."
 msgstr ""
 
-#: mod/dfrn_confirm.php:72 mod/profiles.php:38 mod/profiles.php:148
-#: mod/profiles.php:193 mod/profiles.php:523
-msgid "Profile not found."
-msgstr "找不到简介。"
+#: mod/admin.php:1606
+msgid "No Fullname check"
+msgstr ""
 
-#: mod/dfrn_confirm.php:128
+#: mod/admin.php:1606
 msgid ""
-"This may occasionally happen if contact was requested by both persons and it"
-" has already been approved."
-msgstr "这会偶尔地发生熟人双方都要求和已经批准的时候。"
+"Allow users to register without a space between the first name and the last "
+"name in their full name."
+msgstr ""
 
-#: mod/dfrn_confirm.php:238
-msgid "Response from remote site was not understood."
-msgstr "遥网站的回答明白不了。"
+#: mod/admin.php:1607
+msgid "Community pages for visitors"
+msgstr ""
 
-#: mod/dfrn_confirm.php:245 mod/dfrn_confirm.php:251
-msgid "Unexpected response from remote site: "
-msgstr "居然回答从遥网站:"
+#: mod/admin.php:1607
+msgid ""
+"Which community pages should be available for visitors. Local users always "
+"see both pages."
+msgstr ""
 
-#: mod/dfrn_confirm.php:260
-msgid "Confirmation completed successfully."
-msgstr "确认成功完成。"
+#: mod/admin.php:1608
+msgid "Posts per user on community page"
+msgstr "个用户文章数量在社会页"
 
-#: mod/dfrn_confirm.php:272
-msgid "Temporary failure. Please wait and try again."
-msgstr "临时失败。请等一会,再试。"
+#: mod/admin.php:1608
+msgid ""
+"The maximum number of posts per user on the community page. (Not valid for "
+"'Global Community')"
+msgstr "一个用户最多文章在社会页。(无效在“全球社会”)"
 
-#: mod/dfrn_confirm.php:275
-msgid "Introduction failed or was revoked."
-msgstr "介绍失败或被吊销。"
+#: mod/admin.php:1609
+msgid "Disable OStatus support"
+msgstr ""
 
-#: mod/dfrn_confirm.php:280
-msgid "Remote site reported: "
-msgstr "远程站点报告:"
+#: mod/admin.php:1609
+msgid ""
+"Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
+"communications in OStatus are public, so privacy warnings will be "
+"occasionally displayed."
+msgstr ""
 
-#: mod/dfrn_confirm.php:392
-msgid "Unable to set contact photo."
-msgstr "无法设置联系人照片。"
+#: mod/admin.php:1610
+msgid "Only import OStatus/ActivityPub threads from our contacts"
+msgstr ""
 
-#: mod/dfrn_confirm.php:450
-#, php-format
-msgid "No user record found for '%s' "
-msgstr "找不到「%s」的用户记录"
+#: mod/admin.php:1610
+msgid ""
+"Normally we import every content from our OStatus and ActivityPub contacts. "
+"With this option we only store threads that are started by a contact that is"
+" known on our system."
+msgstr ""
 
-#: mod/dfrn_confirm.php:460
-msgid "Our site encryption key is apparently messed up."
-msgstr "看起来我们的加密钥匙失灵了。"
+#: mod/admin.php:1611
+msgid "OStatus support can only be enabled if threading is enabled."
+msgstr ""
 
-#: mod/dfrn_confirm.php:471
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr "空的URL供应,或URL解不了码。"
+#: mod/admin.php:1613
+msgid ""
+"Diaspora support can't be enabled because Friendica was installed into a sub"
+" directory."
+msgstr "Diaspora 支持无法启用,因为 Friendica 被安装到了一个子目录。"
 
-#: mod/dfrn_confirm.php:487
-msgid "Contact record was not found for you on our site."
-msgstr "无法在本站点为您找到联系人记录。"
+#: mod/admin.php:1614
+msgid "Enable Diaspora support"
+msgstr "启用 Diaspora 支持"
 
-#: mod/dfrn_confirm.php:501
-#, php-format
-msgid "Site public key not available in contact record for URL %s."
-msgstr "没有网站公开钥匙在熟人记录在URL%s。"
+#: mod/admin.php:1614
+msgid "Provide built-in Diaspora network compatibility."
+msgstr "提供内置的 Diaspora 网络兼容性。"
 
-#: mod/dfrn_confirm.php:517
-msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr "身份证明由您的系统是在我们的重做。你再试应该运行。"
+#: mod/admin.php:1615
+msgid "Only allow Friendica contacts"
+msgstr "只允许 Friendica 联系人"
 
-#: mod/dfrn_confirm.php:528
-msgid "Unable to set your contact credentials on our system."
-msgstr "不能创作您的熟人证件在我们的系统。"
+#: mod/admin.php:1615
+msgid ""
+"All contacts must use Friendica protocols. All other built-in communication "
+"protocols disabled."
+msgstr "所有联系人必须使用 Friendica 协议 。所有其他内置沟通协议都已停用。"
 
-#: mod/dfrn_confirm.php:584
-msgid "Unable to update your contact profile details on our system"
-msgstr "不能更新您的熟人简介消息在我们的系统"
+#: mod/admin.php:1616
+msgid "Verify SSL"
+msgstr "验证 SSL"
 
-#: mod/dfrn_confirm.php:614 mod/dfrn_request.php:561
-#: src/Model/Contact.php:1891
-msgid "[Name Withheld]"
-msgstr "[名字拒给]"
+#: mod/admin.php:1616
+msgid ""
+"If you wish, you can turn on strict certificate checking. This will mean you"
+" cannot connect (at all) to self-signed SSL sites."
+msgstr "你想的话,您会使严格证书核实可用。意思是您不能根自签的SSL网站交流。"
 
-#: mod/dirfind.php:53
-#, php-format
-msgid "People Search - %s"
-msgstr "搜索人 - %s"
+#: mod/admin.php:1617
+msgid "Proxy user"
+msgstr "代理用户"
 
-#: mod/dirfind.php:64
-#, php-format
-msgid "Forum Search - %s"
-msgstr "搜索论坛 - %s"
+#: mod/admin.php:1618
+msgid "Proxy URL"
+msgstr "代理URL"
 
-#: mod/dirfind.php:221 mod/match.php:105 mod/suggest.php:104
-#: mod/allfriends.php:92 src/Model/Profile.php:292 src/Content/Widget.php:37
-msgid "Connect"
-msgstr "连接"
+#: mod/admin.php:1619
+msgid "Network timeout"
+msgstr "网络超时"
 
-#: mod/dirfind.php:265 mod/match.php:125
-msgid "No matches"
-msgstr "没有结果"
+#: mod/admin.php:1619
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "输入秒数。输入零为无限(不推荐的)。"
 
-#: mod/manage.php:180
-msgid "Manage Identities and/or Pages"
-msgstr "管理身份或页"
+#: mod/admin.php:1620
+msgid "Maximum Load Average"
+msgstr "最大平均负荷"
 
-#: mod/manage.php:181
+#: mod/admin.php:1620
 msgid ""
-"Toggle between different identities or community/group pages which share "
-"your account details or which you have been granted \"manage\" permissions"
-msgstr "交替不同同一人或社会/组页合用您的账户或给您「管理」批准"
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "系统负荷平均以上转播和检查行程会被耽误-默认50。"
 
-#: mod/manage.php:182
-msgid "Select an identity to manage: "
-msgstr "选择同一个人管理:"
+#: mod/admin.php:1621
+msgid "Maximum Load Average (Frontend)"
+msgstr ""
 
-#: mod/videos.php:138
-msgid "Do you really want to delete this video?"
-msgstr "你真的想删除这个视频吗?"
+#: mod/admin.php:1621
+msgid "Maximum system load before the frontend quits service - default 50."
+msgstr ""
 
-#: mod/videos.php:143
-msgid "Delete Video"
-msgstr "删除视频"
+#: mod/admin.php:1622
+msgid "Minimal Memory"
+msgstr "最少内存"
 
-#: mod/videos.php:198 mod/webfinger.php:16 mod/directory.php:42
-#: mod/search.php:105 mod/search.php:111 mod/viewcontacts.php:48
-#: mod/display.php:194 mod/dfrn_request.php:599 mod/probe.php:13
-#: mod/community.php:28 mod/photos.php:945
-msgid "Public access denied."
-msgstr "拒绝公开访问"
+#: mod/admin.php:1622
+msgid ""
+"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
+"default 0 (deactivated)."
+msgstr ""
 
-#: mod/videos.php:206
-msgid "No videos selected"
-msgstr "没有视频被选择"
+#: mod/admin.php:1623
+msgid "Maximum table size for optimization"
+msgstr ""
 
-#: mod/videos.php:307 mod/photos.php:1050
-msgid "Access to this item is restricted."
-msgstr "这个项目使用权限的。"
+#: mod/admin.php:1623
+msgid ""
+"Maximum table size (in MB) for the automatic optimization. Enter -1 to "
+"disable it."
+msgstr ""
 
-#: mod/videos.php:382 mod/photos.php:1699
-msgid "View Album"
-msgstr "看照片册"
+#: mod/admin.php:1624
+msgid "Minimum level of fragmentation"
+msgstr ""
 
-#: mod/videos.php:390
-msgid "Recent Videos"
-msgstr "最近的视频"
+#: mod/admin.php:1624
+msgid ""
+"Minimum fragmenation level to start the automatic optimization - default "
+"value is 30%."
+msgstr ""
 
-#: mod/videos.php:392
-msgid "Upload New Videos"
-msgstr "上传新视频"
+#: mod/admin.php:1626
+msgid "Periodical check of global contacts"
+msgstr "定期检查全球联系人"
 
-#: mod/webfinger.php:17 mod/probe.php:14
-msgid "Only logged in users are permitted to perform a probing."
-msgstr "只有已登录用户才被允许进行探测。"
+#: mod/admin.php:1626
+msgid ""
+"If enabled, the global contacts are checked periodically for missing or "
+"outdated data and the vitality of the contacts and servers."
+msgstr ""
 
-#: mod/directory.php:151 mod/notifications.php:253 mod/contacts.php:680
-#: mod/events.php:521 src/Model/Event.php:66 src/Model/Event.php:93
-#: src/Model/Event.php:430 src/Model/Event.php:915 src/Model/Profile.php:417
-msgid "Location:"
-msgstr "位置:"
+#: mod/admin.php:1627
+msgid "Days between requery"
+msgstr "重新查询间隔天数"
 
-#: mod/directory.php:156 mod/notifications.php:259 src/Model/Profile.php:420
-#: src/Model/Profile.php:732
-msgid "Gender:"
-msgstr "性别:"
+#: mod/admin.php:1627
+msgid "Number of days after which a server is requeried for his contacts."
+msgstr ""
 
-#: mod/directory.php:157 src/Model/Profile.php:421 src/Model/Profile.php:756
-msgid "Status:"
-msgstr "现状:"
+#: mod/admin.php:1628
+msgid "Discover contacts from other servers"
+msgstr "从其他服务器上发现联系人"
 
-#: mod/directory.php:158 src/Model/Profile.php:422 src/Model/Profile.php:773
-msgid "Homepage:"
-msgstr "主页:"
+#: mod/admin.php:1628
+msgid ""
+"Periodically query other servers for contacts. You can choose between "
+"'users': the users on the remote system, 'Global Contacts': active contacts "
+"that are known on the system. The fallback is meant for Redmatrix servers "
+"and older friendica servers, where global contacts weren't available. The "
+"fallback increases the server load, so the recommened setting is 'Users, "
+"Global Contacts'."
+msgstr ""
 
-#: mod/directory.php:159 mod/notifications.php:255 mod/contacts.php:684
-#: src/Model/Profile.php:423 src/Model/Profile.php:793
-msgid "About:"
-msgstr "关于:"
+#: mod/admin.php:1629
+msgid "Timeframe for fetching global contacts"
+msgstr ""
 
-#: mod/directory.php:209
-msgid "Find on this site"
-msgstr "找在这网站"
+#: mod/admin.php:1629
+msgid ""
+"When the discovery is activated, this value defines the timeframe for the "
+"activity of the global contacts that are fetched from other servers."
+msgstr ""
 
-#: mod/directory.php:211
-msgid "Results for:"
-msgstr "结果:"
+#: mod/admin.php:1630
+msgid "Search the local directory"
+msgstr "搜索本地目录"
 
-#: mod/directory.php:213
-msgid "Site Directory"
-msgstr "网站目录"
+#: mod/admin.php:1630
+msgid ""
+"Search the local directory instead of the global directory. When searching "
+"locally, every search will be executed on the global directory in the "
+"background. This improves the search results when the search is repeated."
+msgstr ""
 
-#: mod/directory.php:218
-msgid "No entries (some entries may be hidden)."
-msgstr "没有文章(有的文章会被隐藏)。"
+#: mod/admin.php:1632
+msgid "Publish server information"
+msgstr "发布服务器信息"
 
-#: mod/match.php:48
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "没有符合的关键字。请在您的默认简介加关键字。"
+#: mod/admin.php:1632
+msgid ""
+"If enabled, general server and usage data will be published. The data "
+"contains the name and version of the server, number of users with public "
+"profiles, number of posts and the activated protocols and connectors. See <a"
+" href='http://the-federation.info/'>the-federation.info</a> for details."
+msgstr ""
 
-#: mod/match.php:104
-msgid "is interested in:"
-msgstr "æ\84\9få\85´è¶£å¯¹ï¼\9a"
+#: mod/admin.php:1634
+msgid "Check upstream version"
+msgstr "æ£\80æ\9f¥ä¸\8a游ç\89\88æ\9c¬"
 
-#: mod/match.php:120
-msgid "Profile Match"
-msgstr "简介符合"
+#: mod/admin.php:1634
+msgid ""
+"Enables checking for new Friendica versions at github. If there is a new "
+"version, you will be informed in the admin panel overview."
+msgstr "启用在 github 上检查新的 Friendica 版本。如果发现新版本,您将在管理员概要面板得到通知。"
 
-#: mod/settings.php:51 mod/photos.php:134
-msgid "everybody"
-msgstr "每人"
+#: mod/admin.php:1635
+msgid "Suppress Tags"
+msgstr "压制标签"
 
-#: mod/settings.php:56
-msgid "Account"
-msgstr "帐户"
+#: mod/admin.php:1635
+msgid "Suppress showing a list of hashtags at the end of the posting."
+msgstr "不在文章末尾显示主题标签列表。"
 
-#: mod/settings.php:64 src/Model/Profile.php:372 src/Content/Nav.php:210
-msgid "Profiles"
-msgstr "简介"
+#: mod/admin.php:1636
+msgid "Clean database"
+msgstr "清理数据库"
 
-#: mod/settings.php:72 mod/admin.php:190
-msgid "Additional features"
-msgstr "附加的特点"
+#: mod/admin.php:1636
+msgid ""
+"Remove old remote items, orphaned database records and old content from some"
+" other helper tables."
+msgstr ""
 
-#: mod/settings.php:80
-msgid "Display"
-msgstr "显示"
+#: mod/admin.php:1637
+msgid "Lifespan of remote items"
+msgstr ""
 
-#: mod/settings.php:87 mod/settings.php:840
-msgid "Social Networks"
-msgstr "社会化网络"
+#: mod/admin.php:1637
+msgid ""
+"When the database cleanup is enabled, this defines the days after which "
+"remote items will be deleted. Own items, and marked or filed items are "
+"always kept. 0 disables this behaviour."
+msgstr ""
 
-#: mod/settings.php:94 mod/admin.php:188 mod/admin.php:2013 mod/admin.php:2073
-msgid "Addons"
-msgstr "插件"
+#: mod/admin.php:1638
+msgid "Lifespan of unclaimed items"
+msgstr ""
 
-#: mod/settings.php:101 src/Content/Nav.php:205
-msgid "Delegations"
-msgstr "代表"
+#: mod/admin.php:1638
+msgid ""
+"When the database cleanup is enabled, this defines the days after which "
+"unclaimed remote items (mostly content from the relay) will be deleted. "
+"Default value is 90 days. Defaults to the general lifespan value of remote "
+"items if set to 0."
+msgstr ""
 
-#: mod/settings.php:108
-msgid "Connected apps"
-msgstr "连接着应用"
+#: mod/admin.php:1639
+msgid "Lifespan of raw conversation data"
+msgstr ""
 
-#: mod/settings.php:115 mod/uexport.php:52
-msgid "Export personal data"
-msgstr "导出个人信息"
+#: mod/admin.php:1639
+msgid ""
+"The conversation data is used for ActivityPub and OStatus, as well as for "
+"debug purposes. It should be safe to remove it after 14 days, default is 90 "
+"days."
+msgstr ""
 
-#: mod/settings.php:122
-msgid "Remove account"
-msgstr "删除账户"
+#: mod/admin.php:1640
+msgid "Path to item cache"
+msgstr "路线到项目缓存"
 
-#: mod/settings.php:174
-msgid "Missing some important data!"
-msgstr "缺失一些重要数据!"
+#: mod/admin.php:1640
+msgid "The item caches buffers generated bbcode and external images."
+msgstr ""
 
-#: mod/settings.php:176 mod/settings.php:701 mod/contacts.php:848
-msgid "Update"
-msgstr "更新"
+#: mod/admin.php:1641
+msgid "Cache duration in seconds"
+msgstr "缓存时间秒"
 
-#: mod/settings.php:285
-msgid "Failed to connect with email account using the settings provided."
-msgstr "不能连接电子邮件账户用输入的设置。"
+#: mod/admin.php:1641
+msgid ""
+"How long should the cache files be hold? Default value is 86400 seconds (One"
+" day). To disable the item cache, set the value to -1."
+msgstr "高速缓存要存文件多久?默认是86400秒钟(一天)。停用高速缓存,输入-1。"
 
-#: mod/settings.php:290
-msgid "Email settings updated."
-msgstr "电子邮件设置更新了"
+#: mod/admin.php:1642
+msgid "Maximum numbers of comments per post"
+msgstr "文件最多评论"
 
-#: mod/settings.php:306
-msgid "Features updated"
-msgstr "特点更新了"
+#: mod/admin.php:1642
+msgid "How much comments should be shown for each post? Default value is 100."
+msgstr ""
 
-#: mod/settings.php:379
-msgid "Relocate message has been send to your contacts"
-msgstr "调动消息已发送给您的联系人"
+#: mod/admin.php:1643
+msgid "Temp path"
+msgstr "临时文件路线"
 
-#: mod/settings.php:391 src/Model/User.php:377
-msgid "Passwords do not match. Password unchanged."
-msgstr "密码不匹配。密码没改变。"
+#: mod/admin.php:1643
+msgid ""
+"If you have a restricted system where the webserver can't access the system "
+"temp path, enter another path here."
+msgstr ""
 
-#: mod/settings.php:396
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "空的密码禁止。密码没未改变的。"
+#: mod/admin.php:1644
+msgid "Base path to installation"
+msgstr "基础安装路线"
 
-#: mod/settings.php:401 src/Core/Console/NewPassword.php:82
+#: mod/admin.php:1644
 msgid ""
-"The new password has been exposed in a public data dump, please choose "
-"another."
-msgstr "新密码已暴露在公共数据转储中,请务必另选密码。"
+"If the system cannot detect the correct path to your installation, enter the"
+" correct path here. This setting should only be set if you are using a "
+"restricted system and symbolic links to your webroot."
+msgstr "如果您的系统无法为您检测到正确的安装路径,请在这里输入正确的路径。此配置仅在您使用设有限制的系统时符号链接到网页服务器根目录使用。"
 
-#: mod/settings.php:407
-msgid "Wrong password."
-msgstr "å¯\86ç \81ä¸\8d正确ã\80\82"
+#: mod/admin.php:1645
+msgid "Disable picture proxy"
+msgstr "å\81\9cç\94¨å\9b¾ç\89\87代ç\90\86"
 
-#: mod/settings.php:414 src/Core/Console/NewPassword.php:89
-msgid "Password changed."
-msgstr "密码变化了。"
-
-#: mod/settings.php:416 src/Core/Console/NewPassword.php:86
-msgid "Password update failed. Please try again."
-msgstr "密码更新失败了。请再试。"
-
-#: mod/settings.php:500
-msgid " Please use a shorter name."
-msgstr " 请用一个更短的名字。"
-
-#: mod/settings.php:503
-msgid " Name too short."
-msgstr " 名字过短。"
-
-#: mod/settings.php:511
-msgid "Wrong Password"
-msgstr "密码不正确"
-
-#: mod/settings.php:516
-msgid "Invalid email."
-msgstr "无效的邮箱。"
-
-#: mod/settings.php:522
-msgid "Cannot change to that email."
-msgstr "无法更改到此电子邮件地址。"
-
-#: mod/settings.php:572
-msgid "Private forum has no privacy permissions. Using default privacy group."
-msgstr "私人评坛没有隐私批准。默认隐私组用者。"
-
-#: mod/settings.php:575
-msgid "Private forum has no privacy permissions and no default privacy group."
-msgstr "私人评坛没有隐私批准或默认隐私组。"
-
-#: mod/settings.php:615
-msgid "Settings updated."
-msgstr "设置更新了。"
-
-#: mod/settings.php:674 mod/settings.php:700 mod/settings.php:734
-msgid "Add application"
-msgstr "加入应用"
-
-#: mod/settings.php:675 mod/settings.php:782 mod/settings.php:870
-#: mod/settings.php:959 mod/settings.php:1189 mod/delegate.php:170
-#: mod/admin.php:317 mod/admin.php:1426 mod/admin.php:2074 mod/admin.php:2328
-#: mod/admin.php:2403 mod/admin.php:2550
-msgid "Save Settings"
-msgstr "保存设置"
-
-#: mod/settings.php:678 mod/settings.php:704
-msgid "Consumer Key"
-msgstr "钥匙(Consumer Key)"
-
-#: mod/settings.php:679 mod/settings.php:705
-msgid "Consumer Secret"
-msgstr "密码(Consumer Secret)"
-
-#: mod/settings.php:680 mod/settings.php:706
-msgid "Redirect"
-msgstr "重定向"
-
-#: mod/settings.php:681 mod/settings.php:707
-msgid "Icon url"
-msgstr "图符URL"
+#: mod/admin.php:1645
+msgid ""
+"The picture proxy increases performance and privacy. It shouldn't be used on"
+" systems with very low bandwidth."
+msgstr ""
 
-#: mod/settings.php:692
-msgid "You can't edit this application."
-msgstr "您不能编辑这个应用。"
+#: mod/admin.php:1646
+msgid "Only search in tags"
+msgstr "只在标签项内搜索"
 
-#: mod/settings.php:733
-msgid "Connected Apps"
-msgstr "连接着应用"
+#: mod/admin.php:1646
+msgid "On large systems the text search can slow down the system extremely."
+msgstr "在大型系统中,正文搜索会极大降低系统运行速度。"
 
-#: mod/settings.php:735 src/Object/Post.php:158 src/Object/Post.php:160
-msgid "Edit"
-msgstr "编辑"
+#: mod/admin.php:1648
+msgid "New base url"
+msgstr "新基础URL"
 
-#: mod/settings.php:737
-msgid "Client key starts with"
-msgstr "客户钥匙头字是"
+#: mod/admin.php:1648
+msgid ""
+"Change base url for this server. Sends relocate message to all Friendica and"
+" Diaspora* contacts of all users."
+msgstr ""
 
-#: mod/settings.php:738
-msgid "No name"
-msgstr "无名"
+#: mod/admin.php:1650
+msgid "RINO Encryption"
+msgstr "RINO 加密"
 
-#: mod/settings.php:739
-msgid "Remove authorization"
-msgstr "撤消权能"
+#: mod/admin.php:1650
+msgid "Encryption layer between nodes."
+msgstr "节点之间的加密层。"
 
-#: mod/settings.php:750
-msgid "No Addon settings configured"
-msgstr "无插件设置配置完成"
+#: mod/admin.php:1650
+msgid "Enabled"
+msgstr "已启用"
 
-#: mod/settings.php:759
-msgid "Addon Settings"
-msgstr "插件设置"
+#: mod/admin.php:1652
+msgid "Maximum number of parallel workers"
+msgstr ""
 
-#: mod/settings.php:773 mod/admin.php:2539 mod/admin.php:2540
-msgid "Off"
-msgstr "关"
+#: mod/admin.php:1652
+#, php-format
+msgid ""
+"On shared hosters set this to %d. On larger systems, values of %d are great."
+" Default value is %d."
+msgstr ""
 
-#: mod/settings.php:773 mod/admin.php:2539 mod/admin.php:2540
-msgid "On"
-msgstr ""
+#: mod/admin.php:1653
+msgid "Don't use 'proc_open' with the worker"
+msgstr ""
 
-#: mod/settings.php:780
-msgid "Additional Features"
-msgstr "附加特性"
+#: mod/admin.php:1653
+msgid ""
+"Enable this if your system doesn't allow the use of 'proc_open'. This can "
+"happen on shared hosters. If this is enabled you should increase the "
+"frequency of worker calls in your crontab."
+msgstr ""
 
-#: mod/settings.php:803 src/Content/ContactSelector.php:82
-msgid "Diaspora"
-msgstr "Diaspora"
+#: mod/admin.php:1654
+msgid "Enable fastlane"
+msgstr "启用快车道模式"
 
-#: mod/settings.php:803 mod/settings.php:804
-msgid "enabled"
-msgstr "能够做的"
+#: mod/admin.php:1654
+msgid ""
+"When enabed, the fastlane mechanism starts an additional worker if processes"
+" with higher priority are blocked by processes of lower priority."
+msgstr ""
 
-#: mod/settings.php:803 mod/settings.php:804
-msgid "disabled"
-msgstr "已停用"
+#: mod/admin.php:1655
+msgid "Enable frontend worker"
+msgstr ""
 
-#: mod/settings.php:803 mod/settings.php:804
+#: mod/admin.php:1655
 #, php-format
-msgid "Built-in support for %s connectivity is %s"
-msgstr "包括的支持为%s连通性是%s"
-
-#: mod/settings.php:804
-msgid "GNU Social (OStatus)"
-msgstr "GNU Social (OStatus)"
+msgid ""
+"When enabled the Worker process is triggered when backend access is "
+"performed \\x28e.g. messages being delivered\\x29. On smaller sites you "
+"might want to call %s/worker on a regular basis via an external cron job. "
+"You should only enable this option if you cannot utilize cron/scheduled jobs"
+" on your server."
+msgstr ""
 
-#: mod/settings.php:835
-msgid "Email access is disabled on this site."
-msgstr "电子邮件访问在这个站上被禁用。"
+#: mod/admin.php:1657
+msgid "Subscribe to relay"
+msgstr ""
 
-#: mod/settings.php:845
-msgid "General Social Media Settings"
-msgstr "通用社交媒体设置"
+#: mod/admin.php:1657
+msgid ""
+"Enables the receiving of public posts from the relay. They will be included "
+"in the search, subscribed tags and on the global community page."
+msgstr ""
 
-#: mod/settings.php:846
-msgid "Disable Content Warning"
-msgstr "禁用内容警告"
+#: mod/admin.php:1658
+msgid "Relay server"
+msgstr "中继服务器"
 
-#: mod/settings.php:846
+#: mod/admin.php:1658
 msgid ""
-"Users on networks like Mastodon or Pleroma are able to set a content warning"
-" field which collapse their post by default. This disables the automatic "
-"collapsing and sets the content warning as the post title. Doesn't affect "
-"any other content filtering you eventually set up."
+"Address of the relay server where public posts should be send to. For "
+"example https://relay.diasp.org"
 msgstr ""
 
-#: mod/settings.php:847
-msgid "Disable intelligent shortening"
+#: mod/admin.php:1659
+msgid "Direct relay transfer"
 msgstr ""
 
-#: mod/settings.php:847
+#: mod/admin.php:1659
 msgid ""
-"Normally the system tries to find the best link to add to shortened posts. "
-"If this option is enabled then every shortened post will always point to the"
-" original friendica post."
+"Enables the direct transfer to other servers without using the relay servers"
 msgstr ""
 
-#: mod/settings.php:848
-msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
-msgstr "自动关注任何 GNU Social (OStatus) 关注者/提及者"
+#: mod/admin.php:1660
+msgid "Relay scope"
+msgstr ""
 
-#: mod/settings.php:848
+#: mod/admin.php:1660
 msgid ""
-"If you receive a message from an unknown OStatus user, this option decides "
-"what to do. If it is checked, a new contact will be created for every "
-"unknown user."
+"Can be 'all' or 'tags'. 'all' means that every public post should be "
+"received. 'tags' means that only posts with selected tags should be "
+"received."
 msgstr ""
 
-#: mod/settings.php:849
-msgid "Default group for OStatus contacts"
-msgstr "用于 OStatus 联系人的默认组"
+#: mod/admin.php:1660
+msgid "all"
+msgstr "所有"
 
-#: mod/settings.php:850
-msgid "Your legacy GNU Social account"
-msgstr "您遗留的 GNU Social 账户"
+#: mod/admin.php:1660
+msgid "tags"
+msgstr ""
 
-#: mod/settings.php:850
-msgid ""
-"If you enter your old GNU Social/Statusnet account name here (in the format "
-"user@domain.tld), your contacts will be added automatically. The field will "
-"be emptied when done."
-msgstr "如果您在这里输入您旧的 GNU Social/Statusnet 账号名 (格式示例 user@domain.tld) ,您的联系人列表将会被自动添加。完成后该字段将被清空。"
+#: mod/admin.php:1661
+msgid "Server tags"
+msgstr ""
 
-#: mod/settings.php:853
-msgid "Repair OStatus subscriptions"
-msgstr "修复 OStatus 订阅"
+#: mod/admin.php:1661
+msgid "Comma separated list of tags for the 'tags' subscription."
+msgstr ""
 
-#: mod/settings.php:857
-msgid "Email/Mailbox Setup"
-msgstr "邮件收件箱设置"
+#: mod/admin.php:1662
+msgid "Allow user tags"
+msgstr ""
 
-#: mod/settings.php:858
+#: mod/admin.php:1662
 msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
-msgstr "如果您想用这股服务(可选的)跟邮件熟人交流,请指定怎么连通您的收件箱。"
-
-#: mod/settings.php:859
-msgid "Last successful email check:"
-msgstr "上个成功收件箱检查:"
+"If enabled, the tags from the saved searches will used for the 'tags' "
+"subscription in addition to the 'relay_server_tags'."
+msgstr ""
 
-#: mod/settings.php:861
-msgid "IMAP server name:"
-msgstr "IMAP服务器名字:"
+#: mod/admin.php:1665
+msgid "Start Relocation"
+msgstr ""
 
-#: mod/settings.php:862
-msgid "IMAP port:"
-msgstr "IMAP服务器端口:"
+#: mod/admin.php:1691
+msgid "Update has been marked successful"
+msgstr "更新当成功标签了"
 
-#: mod/settings.php:863
-msgid "Security:"
-msgstr "安全:"
+#: mod/admin.php:1698
+#, php-format
+msgid "Database structure update %s was successfully applied."
+msgstr ""
 
-#: mod/settings.php:863 mod/settings.php:868
-msgid "None"
-msgstr "没有"
+#: mod/admin.php:1702
+#, php-format
+msgid "Executing of database structure update %s failed with error: %s"
+msgstr ""
 
-#: mod/settings.php:864
-msgid "Email login name:"
-msgstr "邮件登录名:"
+#: mod/admin.php:1718
+#, php-format
+msgid "Executing %s failed with error: %s"
+msgstr "执行 %s 失败,错误:%s"
 
-#: mod/settings.php:865
-msgid "Email password:"
-msgstr "邮件密码:"
+#: mod/admin.php:1720
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "把%s更新成功地实行。"
 
-#: mod/settings.php:866
-msgid "Reply-to address:"
-msgstr "回答地址:"
+#: mod/admin.php:1723
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "%s更新没回答现状。不知道是否成功。"
 
-#: mod/settings.php:867
-msgid "Send public posts to all email contacts:"
-msgstr "发送公开文章给所有的邮件联系人:"
+#: mod/admin.php:1726
+#, php-format
+msgid "There was no additional update function %s that needed to be called."
+msgstr ""
 
-#: mod/settings.php:868
-msgid "Action after import:"
-msgstr "进口后行动:"
+#: mod/admin.php:1749
+msgid "No failed updates."
+msgstr "没有不通过地更新。"
 
-#: mod/settings.php:868 src/Content/Nav.php:193
-msgid "Mark as seen"
-msgstr "æ \87注ç\9c\8bè¿\87"
+#: mod/admin.php:1750
+msgid "Check database structure"
+msgstr "æ£\80æ\9f¥æ\95°æ\8d®åº\93ç»\93æ\9e\84"
 
-#: mod/settings.php:868
-msgid "Move to folder"
-msgstr "æ\90¬å\88°æ\96\87件夹"
+#: mod/admin.php:1755
+msgid "Failed Updates"
+msgstr "没é\80\9aè¿\87ç\9a\84æ\9b´æ\96°"
 
-#: mod/settings.php:869
-msgid "Move to folder:"
-msgstr "搬到文件夹:"
+#: mod/admin.php:1756
+msgid ""
+"This does not include updates prior to 1139, which did not return a status."
+msgstr "这个不包括1139号更新之前,它们没回答装线。"
 
-#: mod/settings.php:903 mod/admin.php:1316
-msgid "No special theme for mobile devices"
-msgstr "没ä¸\93é\97¨é\80\82å\90\88æ\89\8bæ\9cºç\9a\84主é¢\98"
+#: mod/admin.php:1757
+msgid "Mark success (if update was manually applied)"
+msgstr "æ \87注æ\88\90å\8a\9fï¼\88å¦\82æ\9e\9cæ\89\8bå\8a¨å\9c°æ\8a\8aæ\9b´æ\96°å®\9eè¡\8cäº\86ï¼\89"
 
-#: mod/settings.php:912
-#, php-format
-msgid "%s - (Unsupported)"
-msgstr "%s - (不支持的)"
+#: mod/admin.php:1758
+msgid "Attempt to execute this update step automatically"
+msgstr "试图自动地把这步更新实行"
 
-#: mod/settings.php:914
+#: mod/admin.php:1797
 #, php-format
-msgid "%s - (Experimental)"
-msgstr "%s - (实验性)"
-
-#: mod/settings.php:957
-msgid "Display Settings"
-msgstr "表示设置"
-
-#: mod/settings.php:963 mod/settings.php:987
-msgid "Display Theme:"
-msgstr "显示主题:"
-
-#: mod/settings.php:964
-msgid "Mobile Theme:"
-msgstr "手机主题:"
-
-#: mod/settings.php:965
-msgid "Suppress warning of insecure networks"
+msgid ""
+"\n"
+"\t\t\tDear %1$s,\n"
+"\t\t\t\tthe administrator of %2$s has set up an account for you."
 msgstr ""
 
-#: mod/settings.php:965
+#: mod/admin.php:1800
+#, php-format
 msgid ""
-"Should the system suppress the warning that the current group contains "
-"members of networks that can't receive non public postings."
+"\n"
+"\t\t\tThe login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%1$s\n"
+"\t\t\tLogin Name:\t\t%2$s\n"
+"\t\t\tPassword:\t\t%3$s\n"
+"\n"
+"\t\t\tYou may change your password from your account \"Settings\" page after logging\n"
+"\t\t\tin.\n"
+"\n"
+"\t\t\tPlease take a few moments to review the other account settings on that page.\n"
+"\n"
+"\t\t\tYou may also wish to add some basic information to your default profile\n"
+"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
+"\n"
+"\t\t\tWe recommend setting your full name, adding a profile photo,\n"
+"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n"
+"\t\t\tperhaps what country you live in; if you do not wish to be more specific\n"
+"\t\t\tthan that.\n"
+"\n"
+"\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n"
+"\t\t\tIf you are new and do not know anybody here, they may help\n"
+"\t\t\tyou to make some new and interesting friends.\n"
+"\n"
+"\t\t\tIf you ever want to delete your account, you can do so at %1$s/removeme\n"
+"\n"
+"\t\t\tThank you and welcome to %4$s."
 msgstr ""
 
-#: mod/settings.php:966
-msgid "Update browser every xx seconds"
-msgstr "更新游览器每XX秒"
-
-#: mod/settings.php:966
-msgid "Minimum of 10 seconds. Enter -1 to disable it."
-msgstr "至少 10 秒。输入 -1 禁用。"
-
-#: mod/settings.php:967
-msgid "Number of items to display per page:"
-msgstr "每页表示多少项目:"
-
-#: mod/settings.php:967 mod/settings.php:968
-msgid "Maximum of 100 items"
-msgstr "最多100项目"
-
-#: mod/settings.php:968
-msgid "Number of items to display per page when viewed from mobile device:"
-msgstr "用手机看一页展示多少项目:"
-
-#: mod/settings.php:969
-msgid "Don't show emoticons"
-msgstr "不显示表情符号"
-
-#: mod/settings.php:970
-msgid "Calendar"
-msgstr "日历"
-
-#: mod/settings.php:971
-msgid "Beginning of week:"
-msgstr "一周的开始:"
-
-#: mod/settings.php:972
-msgid "Don't show notices"
-msgstr "不显示提示"
-
-#: mod/settings.php:973
-msgid "Infinite scroll"
-msgstr "无限的滚动"
-
-#: mod/settings.php:974
-msgid "Automatic updates only at the top of the network page"
-msgstr "仅在返回到网页头部时自动更新"
+#: mod/admin.php:1837 src/Model/User.php:802
+#, php-format
+msgid "Registration details for %s"
+msgstr "注册信息为%s"
 
-#: mod/settings.php:974
-msgid ""
-"When disabled, the network page is updated all the time, which could be "
-"confusing while reading."
-msgstr "禁用后,网页将会一直更新,这可能会对阅读造成干扰。"
+#: mod/admin.php:1847
+#, php-format
+msgid "%s user blocked/unblocked"
+msgid_plural "%s users blocked/unblocked"
+msgstr[0] ""
 
-#: mod/settings.php:975
-msgid "Bandwidth Saver Mode"
+#: mod/admin.php:1854 mod/admin.php:1907
+msgid "You can't remove yourself"
 msgstr ""
 
-#: mod/settings.php:975
-msgid ""
-"When enabled, embedded content is not displayed on automatic updates, they "
-"only show on page reload."
-msgstr "当启用时,嵌入的内容不会在自动更新时显示,它们只在页面重载时显示。"
-
-#: mod/settings.php:976
-msgid "Smart Threading"
-msgstr ""
+#: mod/admin.php:1857
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%s 用户被删除了"
 
-#: mod/settings.php:976
-msgid ""
-"When enabled, suppress extraneous thread indentation while keeping it where "
-"it matters. Only works if threading is available and enabled."
-msgstr ""
+#: mod/admin.php:1905
+#, php-format
+msgid "User '%s' deleted"
+msgstr "用户 '%s' 被删除了"
 
-#: mod/settings.php:978
-msgid "General Theme Settings"
-msgstr "通用主题设置"
+#: mod/admin.php:1916
+#, php-format
+msgid "User '%s' unblocked"
+msgstr "用户“%s”已解除屏蔽"
 
-#: mod/settings.php:979
-msgid "Custom Theme Settings"
-msgstr "自定义主题设置"
+#: mod/admin.php:1916
+#, php-format
+msgid "User '%s' blocked"
+msgstr "用户“%s”已屏蔽"
 
-#: mod/settings.php:980
-msgid "Content Settings"
-msgstr "内容设置"
+#: mod/admin.php:1964 mod/settings.php:1052
+msgid "Normal Account Page"
+msgstr "标准账户页面"
 
-#: mod/settings.php:1000
-msgid "Unable to find your profile. Please contact your admin."
-msgstr "æ\97 æ³\95æ\89¾å\88°æ\82¨ç\9a\84ç®\80ä»\8bã\80\82请è\81\94ç³»æ\82¨ç\9a\84管ç\90\86å\91\98ã\80\82"
+#: mod/admin.php:1965 mod/settings.php:1056
+msgid "Soapbox Page"
+msgstr "æ¼\94讲å\8f°é¡µ"
 
-#: mod/settings.php:1039
-msgid "Account Types"
-msgstr "账户类型"
+#: mod/admin.php:1966 mod/settings.php:1060
+msgid "Public Forum"
+msgstr "公共论坛"
 
-#: mod/settings.php:1040
-msgid "Personal Page Subtypes"
-msgstr ""
+#: mod/admin.php:1967 mod/settings.php:1064
+msgid "Automatic Friend Page"
+msgstr "自动朋友页"
 
-#: mod/settings.php:1041
-msgid "Community Forum Subtypes"
+#: mod/admin.php:1968
+msgid "Private Forum"
 msgstr ""
 
-#: mod/settings.php:1048 mod/admin.php:1841
+#: mod/admin.php:1971 mod/settings.php:1036
 msgid "Personal Page"
 msgstr "个人页面"
 
-#: mod/settings.php:1049
-msgid "Account for a personal profile."
-msgstr ""
-
-#: mod/settings.php:1052 mod/admin.php:1842
+#: mod/admin.php:1972 mod/settings.php:1040
 msgid "Organisation Page"
 msgstr "组织页面"
 
-#: mod/settings.php:1053
-msgid ""
-"Account for an organisation that automatically approves contact requests as "
-"\"Followers\"."
-msgstr ""
-
-#: mod/settings.php:1056 mod/admin.php:1843
+#: mod/admin.php:1973 mod/settings.php:1044
 msgid "News Page"
 msgstr "新闻页面"
 
-#: mod/settings.php:1057
-msgid ""
-"Account for a news reflector that automatically approves contact requests as"
-" \"Followers\"."
-msgstr ""
-
-#: mod/settings.php:1060 mod/admin.php:1844
+#: mod/admin.php:1974 mod/settings.php:1048
 msgid "Community Forum"
 msgstr "社区论坛"
 
-#: mod/settings.php:1061
-msgid "Account for community discussions."
-msgstr ""
+#: mod/admin.php:2020 mod/admin.php:2031 mod/admin.php:2045 mod/admin.php:2063
+#: src/Content/ContactSelector.php:83
+msgid "Email"
+msgstr "电子邮件"
 
-#: mod/settings.php:1064 mod/admin.php:1834
-msgid "Normal Account Page"
-msgstr "æ \87å\87\86è´¦æ\88·é¡µé\9d¢"
+#: mod/admin.php:2020 mod/admin.php:2045
+msgid "Register date"
+msgstr "注å\86\8cæ\97¥æ\9c\9f"
 
-#: mod/settings.php:1065
-msgid ""
-"Account for a regular personal profile that requires manual approval of "
-"\"Friends\" and \"Followers\"."
-msgstr ""
+#: mod/admin.php:2020 mod/admin.php:2045
+msgid "Last login"
+msgstr "上次登录"
 
-#: mod/settings.php:1068 mod/admin.php:1835
-msgid "Soapbox Page"
-msgstr "演讲台页"
+#: mod/admin.php:2020 mod/admin.php:2045
+msgid "Last item"
+msgstr "上项目"
 
-#: mod/settings.php:1069
-msgid ""
-"Account for a public profile that automatically approves contact requests as"
-" \"Followers\"."
+#: mod/admin.php:2020
+msgid "Type"
 msgstr ""
 
-#: mod/settings.php:1072 mod/admin.php:1836
-msgid "Public Forum"
-msgstr "公共论坛"
-
-#: mod/settings.php:1073
-msgid "Automatically approves all contact requests."
-msgstr "自动批准所有联系人请求。"
+#: mod/admin.php:2027
+msgid "Add User"
+msgstr "添加用户"
 
-#: mod/settings.php:1076 mod/admin.php:1837
-msgid "Automatic Friend Page"
-msgstr "自动朋友页"
+#: mod/admin.php:2029
+msgid "User registrations waiting for confirm"
+msgstr "用户注册等待确认"
 
-#: mod/settings.php:1077
-msgid ""
-"Account for a popular profile that automatically approves contact requests "
-"as \"Friends\"."
-msgstr ""
+#: mod/admin.php:2030
+msgid "User waiting for permanent deletion"
+msgstr "用户等待长久删除"
 
-#: mod/settings.php:1080
-msgid "Private Forum [Experimental]"
-msgstr "隐私评坛[实验性的 ]"
+#: mod/admin.php:2031
+msgid "Request date"
+msgstr "要求日期"
 
-#: mod/settings.php:1081
-msgid "Requires manual approval of contact requests."
-msgstr "需要人工批准联系人请求。"
+#: mod/admin.php:2032
+msgid "No registrations."
+msgstr "没有注册。"
 
-#: mod/settings.php:1092
-msgid "OpenID:"
-msgstr "OpenID:"
+#: mod/admin.php:2033
+msgid "Note from the user"
+msgstr ""
 
-#: mod/settings.php:1092
-msgid "(Optional) Allow this OpenID to login to this account."
-msgstr "(可选的) 允许这个 OpenID 登录这个账户。"
+#: mod/admin.php:2034 mod/notifications.php:181 mod/notifications.php:267
+msgid "Approve"
+msgstr "批准"
 
-#: mod/settings.php:1100
-msgid "Publish your default profile in your local site directory?"
-msgstr "å\87ºç\89\88æ\82¨é»\98认ç®\80ä»\8bå\9c¨æ\82¨å½\93å\9c°ç\9a\84ç½\91ç«\99ç\9b®å½\95ï¼\9f"
+#: mod/admin.php:2035
+msgid "Deny"
+msgstr "å\90¦å®\9a"
 
-#: mod/settings.php:1100
-#, php-format
-msgid ""
-"Your profile will be published in this node's <a href=\"%s\">local "
-"directory</a>. Your profile details may be publicly visible depending on the"
-" system settings."
+#: mod/admin.php:2038
+msgid "User blocked"
 msgstr ""
 
-#: mod/settings.php:1100 mod/settings.php:1106 mod/settings.php:1113
-#: mod/settings.php:1117 mod/settings.php:1121 mod/settings.php:1125
-#: mod/settings.php:1129 mod/settings.php:1133 mod/settings.php:1153
-#: mod/settings.php:1154 mod/settings.php:1155 mod/settings.php:1156
-#: mod/settings.php:1157 mod/register.php:238 mod/dfrn_request.php:645
-#: mod/api.php:111 mod/follow.php:150 mod/profiles.php:541
-#: mod/profiles.php:545 mod/profiles.php:566
-msgid "No"
-msgstr "否"
+#: mod/admin.php:2040
+msgid "Site admin"
+msgstr "网站管理员"
 
-#: mod/settings.php:1106
-msgid "Publish your default profile in the global social directory?"
-msgstr "出版您默认简介在综合社会目录?"
-
-#: mod/settings.php:1106
-#, php-format
-msgid ""
-"Your profile will be published in the global friendica directories (e.g. <a "
-"href=\"%s\">%s</a>). Your profile will be visible in public."
-msgstr ""
-
-#: mod/settings.php:1113
-msgid "Hide your contact/friend list from viewers of your default profile?"
-msgstr "在您的默认简介中向访问者隐藏您的联系人/朋友列表?"
-
-#: mod/settings.php:1113
-msgid ""
-"Your contact list won't be shown in your default profile page. You can "
-"decide to show your contact list separately for each additional profile you "
-"create"
-msgstr "您的联系人列表将不会在您的默认简介页面展示。您可以决定在您自建的各附加简介中分别展示您的联系人列表"
+#: mod/admin.php:2041
+msgid "Account expired"
+msgstr "帐户过期了"
 
-#: mod/settings.php:1117
-msgid "Hide your profile details from anonymous viewers?"
-msgstr "对匿名访问者隐藏详细简介?"
+#: mod/admin.php:2044
+msgid "New User"
+msgstr "新用户"
 
-#: mod/settings.php:1117
-msgid ""
-"Anonymous visitors will only see your profile picture, your display name and"
-" the nickname you are using on your profile page. Your public posts and "
-"replies will still be accessible by other means."
+#: mod/admin.php:2045
+msgid "Permanent deletion"
 msgstr ""
 
-#: mod/settings.php:1121
-msgid "Allow friends to post to your profile page?"
-msgstr "允许朋友们贴文章在您的简介页?"
-
-#: mod/settings.php:1121
+#: mod/admin.php:2050
 msgid ""
-"Your contacts may write posts on your profile wall. These posts will be "
-"distributed to your contacts"
-msgstr ""
-
-#: mod/settings.php:1125
-msgid "Allow friends to tag your posts?"
-msgstr "允许朋友们标签您的文章?"
+"Selected users will be deleted!\\n\\nEverything these users had posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "特定的用户被删除!\\n\\n什么这些用户放在这个网站被永远删除!\\n\\n您肯定吗?"
 
-#: mod/settings.php:1125
-msgid "Your contacts can add additional tags to your posts."
-msgstr "您的联系人可以为您的帖子添加额外的标签。"
+#: mod/admin.php:2051
+msgid ""
+"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
+"site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "用户{0}将被删除!\\n\\n什么这个用户放在这个网站被永远删除!\\n\\n您肯定吗?"
 
-#: mod/settings.php:1129
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "允许我们建议您潜力朋友给新成员?"
+#: mod/admin.php:2061
+msgid "Name of the new user."
+msgstr "新用户的名字。"
 
-#: mod/settings.php:1129
-msgid ""
-"If you like, Friendica may suggest new members to add you as a contact."
-msgstr "如果您愿意,Friendica 可能会建议新成员将您添加为联系人。"
+#: mod/admin.php:2062
+msgid "Nickname"
+msgstr "昵称"
 
-#: mod/settings.php:1133
-msgid "Permit unknown people to send you private mail?"
-msgstr "允许生人寄给您私人邮件?"
+#: mod/admin.php:2062
+msgid "Nickname of the new user."
+msgstr "新用户的昵称。"
 
-#: mod/settings.php:1133
-msgid ""
-"Friendica network users may send you private messages even if they are not "
-"in your contact list."
-msgstr "Friendica 网络用户可能会向您发送私人信息,即使他们不在您的联系人列表中。"
+#: mod/admin.php:2063
+msgid "Email address of the new user."
+msgstr "新用户的邮件地址。"
 
-#: mod/settings.php:1137
-msgid "Profile is <strong>not published</strong>."
-msgstr "简介<strong>未发布</strong>。"
+#: mod/admin.php:2104
+#, php-format
+msgid "Addon %s disabled."
+msgstr "插件 %s 已禁用。"
 
-#: mod/settings.php:1143
+#: mod/admin.php:2107
 #, php-format
-msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
-msgstr "你的身份地址是 <strong>'%s'</strong> 或者 '%s'."
+msgid "Addon %s enabled."
+msgstr "插件 %s 已启用。"
 
-#: mod/settings.php:1150
-msgid "Automatically expire posts after this many days:"
-msgstr "å\9c¨è¿\99æ\95°å¤©å\90\8eè\87ªå\8a¨ä½¿æ\96\87ç« è¿\87æ\9c\9fï¼\9a"
+#: mod/admin.php:2118 mod/admin.php:2367
+msgid "Disable"
+msgstr "å\81\9cç\94¨"
 
-#: mod/settings.php:1150
-msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr "如果为空,文章不会过期。过期的文章将被删除"
+#: mod/admin.php:2121 mod/admin.php:2370
+msgid "Enable"
+msgstr "使能用"
 
-#: mod/settings.php:1151
-msgid "Advanced expiration settings"
-msgstr "高级过期设置"
+#: mod/admin.php:2143 mod/admin.php:2399
+msgid "Toggle"
+msgstr "肘节"
 
-#: mod/settings.php:1152
-msgid "Advanced Expiration"
-msgstr "先进的过期"
+#: mod/admin.php:2144 mod/admin.php:2400 mod/newmember.php:20
+#: mod/settings.php:136 src/Content/Nav.php:256 view/theme/frio/theme.php:270
+msgid "Settings"
+msgstr "设置"
 
-#: mod/settings.php:1153
-msgid "Expire posts:"
-msgstr "把文章过期:"
+#: mod/admin.php:2151 mod/admin.php:2408
+msgid "Author: "
+msgstr "作者:"
 
-#: mod/settings.php:1154
-msgid "Expire personal notes:"
-msgstr "把私人便条过期:"
+#: mod/admin.php:2152 mod/admin.php:2409
+msgid "Maintainer: "
+msgstr "维护者:"
 
-#: mod/settings.php:1155
-msgid "Expire starred posts:"
-msgstr "把星的文章过期:"
+#: mod/admin.php:2204
+msgid "Reload active addons"
+msgstr "重新加载可用插件"
 
-#: mod/settings.php:1156
-msgid "Expire photos:"
-msgstr "把照片过期:"
+#: mod/admin.php:2209
+#, php-format
+msgid ""
+"There are currently no addons available on your node. You can find the "
+"official addon repository at %1$s and might find other interesting addons in"
+" the open addon registry at %2$s"
+msgstr "目前您的节点上没有可用插件。您可以在 %1$s 找到官方插件库,或者到开放的插件登记处 %2$s 也能找到其他有趣的插件"
 
-#: mod/settings.php:1157
-msgid "Only expire posts by others:"
-msgstr "只别人的文章过期:"
+#: mod/admin.php:2329
+msgid "No themes found."
+msgstr "找不到主题。"
 
-#: mod/settings.php:1187
-msgid "Account Settings"
-msgstr "帐户设置"
+#: mod/admin.php:2390
+msgid "Screenshot"
+msgstr "截图"
 
-#: mod/settings.php:1195
-msgid "Password Settings"
-msgstr "密码设置"
+#: mod/admin.php:2444
+msgid "Reload active themes"
+msgstr "重载活动的主题"
 
-#: mod/settings.php:1196 mod/register.php:275
-msgid "New Password:"
-msgstr "新密码:"
+#: mod/admin.php:2449
+#, php-format
+msgid "No themes found on the system. They should be placed in %1$s"
+msgstr "未在系统中发现主题。它们应该被放置在 %1$s"
 
-#: mod/settings.php:1197 mod/register.php:276
-msgid "Confirm:"
-msgstr "确认:"
+#: mod/admin.php:2450
+msgid "[Experimental]"
+msgstr "[试验]"
 
-#: mod/settings.php:1197
-msgid "Leave password fields blank unless changing"
-msgstr "留空密码字段,除非要修改"
+#: mod/admin.php:2451
+msgid "[Unsupported]"
+msgstr "[没支持]"
 
-#: mod/settings.php:1198
-msgid "Current Password:"
-msgstr "当前密码:"
+#: mod/admin.php:2475
+msgid "Log settings updated."
+msgstr "日志设置更新了。"
 
-#: mod/settings.php:1198 mod/settings.php:1199
-msgid "Your current password to confirm the changes"
-msgstr "你的当前密码,来确认修改"
+#: mod/admin.php:2508
+msgid "PHP log currently enabled."
+msgstr "PHP 日志已启用。"
 
-#: mod/settings.php:1199
-msgid "Password:"
-msgstr "密码:"
+#: mod/admin.php:2510
+msgid "PHP log currently disabled."
+msgstr "PHP 日志已禁用。"
 
-#: mod/settings.php:1203
-msgid "Basic Settings"
-msgstr "基础设置"
+#: mod/admin.php:2519
+msgid "Clear"
+msgstr "清理出"
 
-#: mod/settings.php:1204 src/Model/Profile.php:725
-msgid "Full Name:"
-msgstr "å\85¨å\90\8dï¼\9a"
+#: mod/admin.php:2523
+msgid "Enable Debugging"
+msgstr "å\90¯ç\94¨è°\83è¯\95"
 
-#: mod/settings.php:1205
-msgid "Email Address:"
-msgstr "电子邮件地址:"
+#: mod/admin.php:2524
+msgid "Log file"
+msgstr "日志文件"
 
-#: mod/settings.php:1206
-msgid "Your Timezone:"
-msgstr "你的时区:"
+#: mod/admin.php:2524
+msgid ""
+"Must be writable by web server. Relative to your Friendica top-level "
+"directory."
+msgstr "必要被网页服务器可写的。相对Friendica主文件夹。"
 
-#: mod/settings.php:1207
-msgid "Your Language:"
-msgstr "你的语言:"
+#: mod/admin.php:2525
+msgid "Log level"
+msgstr "日志级别"
+
+#: mod/admin.php:2527
+msgid "PHP logging"
+msgstr "PHP 日志"
 
-#: mod/settings.php:1207
+#: mod/admin.php:2528
 msgid ""
-"Set the language we use to show you friendica interface and to send you "
-"emails"
+"To temporarily enable logging of PHP errors and warnings you can prepend the"
+" following to the index.php file of your installation. The filename set in "
+"the 'error_log' line is relative to the friendica top-level directory and "
+"must be writeable by the web server. The option '1' for 'log_errors' and "
+"'display_errors' is to enable these options, set to '0' to disable them."
 msgstr ""
 
-#: mod/settings.php:1208
-msgid "Default Post Location:"
-msgstr "默认文章位置:"
-
-#: mod/settings.php:1209
-msgid "Use Browser Location:"
-msgstr "使用浏览器位置:"
+#: mod/admin.php:2559
+#, php-format
+msgid ""
+"Error trying to open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see "
+"if file %1$s exist and is readable."
+msgstr "打开  <strong>%1$s</strong> 日志文件出错。\\r\\n <br/> 请检查 %1$s 文件是否存在并且可读。"
 
-#: mod/settings.php:1212
-msgid "Security and Privacy Settings"
-msgstr "安全和隐私设置"
+#: mod/admin.php:2563
+#, php-format
+msgid ""
+"Couldn't open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see if file"
+" %1$s is readable."
+msgstr "无法打开 <strong>%1$s</strong> 日志文件。\\r\\n <br/> 请检查 %1$s 文件是否可读。"
 
-#: mod/settings.php:1214
-msgid "Maximum Friend Requests/Day:"
-msgstr "每天最大朋友请求数:"
+#: mod/admin.php:2654 mod/admin.php:2655 mod/settings.php:766
+msgid "Off"
+msgstr ""
 
-#: mod/settings.php:1214 mod/settings.php:1243
-msgid "(to prevent spam abuse)"
-msgstr "(用于防止垃圾信息滥用)"
+#: mod/admin.php:2654 mod/admin.php:2655 mod/settings.php:766
+msgid "On"
+msgstr ""
 
-#: mod/settings.php:1215
-msgid "Default Post Permissions"
-msgstr "默认文章权限"
+#: mod/admin.php:2655
+#, php-format
+msgid "Lock feature %s"
+msgstr "锁定特性 %s"
 
-#: mod/settings.php:1216
-msgid "(click to open/close)"
-msgstr "(点击来打开/关闭)"
+#: mod/admin.php:2663
+msgid "Manage Additional Features"
+msgstr "管理附加特性"
 
-#: mod/settings.php:1224 mod/photos.php:1126 mod/photos.php:1456
-msgid "Show to Groups"
-msgstr "给组表示"
+#: mod/allfriends.php:52
+msgid "No friends to display."
+msgstr "没有朋友展示。"
 
-#: mod/settings.php:1225 mod/photos.php:1127 mod/photos.php:1457
-msgid "Show to Contacts"
-msgstr "展示给联系人"
+#: mod/allfriends.php:91 mod/dirfind.php:219 mod/match.php:99
+#: mod/suggest.php:105 src/Content/Widget.php:39 src/Model/Profile.php:307
+msgid "Connect"
+msgstr "连接"
 
-#: mod/settings.php:1226
-msgid "Default Private Post"
-msgstr "默认私人文章"
+#: mod/api.php:87 mod/api.php:109
+msgid "Authorize application connection"
+msgstr "授权应用连接"
 
-#: mod/settings.php:1227
-msgid "Default Public Post"
-msgstr "默认公开文章"
+#: mod/api.php:88
+msgid "Return to your app and insert this Securty Code:"
+msgstr "回归您的应用和输入这个安全密码:"
 
-#: mod/settings.php:1231
-msgid "Default Permissions for New Posts"
-msgstr "新文章的默认权限"
+#: mod/api.php:97
+msgid "Please login to continue."
+msgstr "请登录以继续。"
 
-#: mod/settings.php:1243
-msgid "Maximum private messages per day from unknown people:"
-msgstr "每天来自未知的人的私信:"
+#: mod/api.php:111
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "你要授权这个应用访问你的文章和联系人,及/或为你创建新的文章吗?"
 
-#: mod/settings.php:1246
-msgid "Notification Settings"
-msgstr "通知设置"
-
-#: mod/settings.php:1247
-msgid "Send a notification email when:"
-msgstr "发一个消息要是:"
-
-#: mod/settings.php:1248
-msgid "You receive an introduction"
-msgstr "你收到一份介绍"
-
-#: mod/settings.php:1249
-msgid "Your introductions are confirmed"
-msgstr "你的介绍被确认了"
-
-#: mod/settings.php:1250
-msgid "Someone writes on your profile wall"
-msgstr "某人写在你的简历墙"
-
-#: mod/settings.php:1251
-msgid "Someone writes a followup comment"
-msgstr "某人写一个后续的评论"
-
-#: mod/settings.php:1252
-msgid "You receive a private message"
-msgstr "你收到一封私信"
+#: mod/api.php:113 mod/dfrn_request.php:640 mod/follow.php:151
+#: mod/profiles.php:542 mod/profiles.php:546 mod/profiles.php:567
+#: mod/register.php:233 mod/settings.php:1088 mod/settings.php:1094
+#: mod/settings.php:1101 mod/settings.php:1105 mod/settings.php:1109
+#: mod/settings.php:1113 mod/settings.php:1117 mod/settings.php:1121
+#: mod/settings.php:1141 mod/settings.php:1142 mod/settings.php:1143
+#: mod/settings.php:1144 mod/settings.php:1145
+msgid "No"
+msgstr "否"
 
-#: mod/settings.php:1253
-msgid "You receive a friend suggestion"
-msgstr "你受到一个朋友建议"
+#: mod/apps.php:15 src/App.php:1692
+msgid "You must be logged in to use addons. "
+msgstr "您用插件前要登录"
 
-#: mod/settings.php:1254
-msgid "You are tagged in a post"
-msgstr "你被在新闻标签"
+#: mod/apps.php:20
+msgid "Applications"
+msgstr "应用"
 
-#: mod/settings.php:1255
-msgid "You are poked/prodded/etc. in a post"
-msgstr "æ\82¨å\9c¨æ\96\87章被æ\88³"
+#: mod/apps.php:25
+msgid "No installed applications."
+msgstr "没æ\9c\89å®\89è£\85ç\9a\84åº\94ç\94¨"
 
-#: mod/settings.php:1257
-msgid "Activate desktop notifications"
-msgstr "å\90¯ç\94¨æ¡\8cé\9d¢é\80\9aç\9f¥"
+#: mod/babel.php:25
+msgid "Source input"
+msgstr "æº\90ç \81è¾\93å\85¥"
 
-#: mod/settings.php:1257
-msgid "Show desktop popup on new notifications"
-msgstr "在有新的提示时显示桌面弹出窗口"
+#: mod/babel.php:31
+msgid "BBCode::toPlaintext"
+msgstr ""
 
-#: mod/settings.php:1259
-msgid "Text-only notification emails"
-msgstr "纯文本通知邮件"
+#: mod/babel.php:37
+msgid "BBCode::convert (raw HTML)"
+msgstr ""
 
-#: mod/settings.php:1261
-msgid "Send text only notification emails, without the html part"
-msgstr "发送纯文本通知邮件,无 html 部分"
+#: mod/babel.php:42
+msgid "BBCode::convert"
+msgstr ""
 
-#: mod/settings.php:1263
-msgid "Show detailled notifications"
-msgstr "显示详细通知"
+#: mod/babel.php:48
+msgid "BBCode::convert => HTML::toBBCode"
+msgstr ""
 
-#: mod/settings.php:1265
-msgid ""
-"Per default, notifications are condensed to a single notification per item. "
-"When enabled every notification is displayed."
+#: mod/babel.php:54
+msgid "BBCode::toMarkdown"
 msgstr ""
 
-#: mod/settings.php:1267
-msgid "Advanced Account/Page Type Settings"
-msgstr "专家账户/页种设置"
+#: mod/babel.php:60
+msgid "BBCode::toMarkdown => Markdown::convert"
+msgstr ""
 
-#: mod/settings.php:1268
-msgid "Change the behaviour of this account for special situations"
-msgstr "把这个账户特别情况的时候行动变化"
+#: mod/babel.php:66
+msgid "BBCode::toMarkdown => Markdown::toBBCode"
+msgstr ""
 
-#: mod/settings.php:1271
-msgid "Relocate"
-msgstr "调动"
+#: mod/babel.php:72
+msgid "BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"
+msgstr ""
 
-#: mod/settings.php:1272
-msgid ""
-"If you have moved this profile from another server, and some of your "
-"contacts don't receive your updates, try pushing this button."
-msgstr "如果您调动这个简介从别的服务器但有的熟人没收到您的更新,尝试按这个钮。"
+#: mod/babel.php:79
+msgid "Source input (Diaspora format)"
+msgstr ""
 
-#: mod/settings.php:1273
-msgid "Resend relocate message to contacts"
-msgstr "把调动信息寄给熟人"
+#: mod/babel.php:85
+msgid "Markdown::convert (raw HTML)"
+msgstr ""
 
-#: mod/ping.php:289
-msgid "{0} wants to be your friend"
-msgstr "{0}想成为您的朋友"
+#: mod/babel.php:90
+msgid "Markdown::convert"
+msgstr ""
 
-#: mod/ping.php:305
-msgid "{0} sent you a message"
-msgstr "{0}发给您一个通信"
+#: mod/babel.php:96
+msgid "Markdown::toBBCode"
+msgstr ""
 
-#: mod/ping.php:321
-msgid "{0} requested registration"
-msgstr "{0}要求注册"
+#: mod/babel.php:103
+msgid "Raw HTML input"
+msgstr "原始 HTML 输入"
 
-#: mod/search.php:39 mod/network.php:194
-msgid "Remove term"
-msgstr "删除关键字"
+#: mod/babel.php:108
+msgid "HTML Input"
+msgstr "HTML 输入"
 
-#: mod/search.php:48 mod/network.php:201 src/Content/Feature.php:100
-msgid "Saved Searches"
-msgstr "保存的搜索"
+#: mod/babel.php:114
+msgid "HTML::toBBCode"
+msgstr ""
 
-#: mod/search.php:112
-msgid "Only logged in users are permitted to perform a search."
-msgstr "只有已登录的用户被允许进行搜索。"
+#: mod/babel.php:120
+msgid "HTML::toBBCode => BBCode::convert"
+msgstr ""
 
-#: mod/search.php:136
-msgid "Too Many Requests"
-msgstr "过多请求"
+#: mod/babel.php:125
+msgid "HTML::toBBCode => BBCode::convert (raw HTML)"
+msgstr ""
 
-#: mod/search.php:137
-msgid "Only one search per minute is permitted for not logged in users."
-msgstr "对未登录的用户,每分钟只允许一条搜索。"
+#: mod/babel.php:131
+msgid "HTML::toMarkdown"
+msgstr ""
 
-#: mod/search.php:240 mod/community.php:161
-msgid "No results."
-msgstr "没有结果。"
+#: mod/babel.php:137
+msgid "HTML::toPlaintext"
+msgstr ""
 
-#: mod/search.php:246
-#, php-format
-msgid "Items tagged with: %s"
-msgstr "项目标记为:%s"
+#: mod/babel.php:145
+msgid "Source text"
+msgstr "源文本"
 
-#: mod/search.php:248 mod/contacts.php:841
-#, php-format
-msgid "Results for: %s"
+#: mod/babel.php:146
+msgid "BBCode"
 msgstr ""
 
-#: mod/common.php:93
-msgid "No contacts in common."
-msgstr "没有共同的联系人。"
+#: mod/babel.php:147
+msgid "Markdown"
+msgstr "Markdown"
 
-#: mod/common.php:142 mod/contacts.php:916
-msgid "Common Friends"
-msgstr "普通朋友们"
+#: mod/babel.php:148
+msgid "HTML"
+msgstr "HTML"
 
-#: mod/bookmarklet.php:24 src/Module/Login.php:310 src/Content/Nav.php:114
+#: mod/bookmarklet.php:22 src/Content/Nav.php:163 src/Module/Login.php:319
 msgid "Login"
 msgstr "登录"
 
-#: mod/bookmarklet.php:52
+#: mod/bookmarklet.php:32
+msgid "Bad Request"
+msgstr ""
+
+#: mod/bookmarklet.php:54
 msgid "The post was created"
 msgstr "文章创建了"
 
-#: mod/network.php:202 src/Model/Group.php:401
-msgid "add"
-msgstr "添加"
-
-#: mod/network.php:548
-#, php-format
-msgid ""
-"Warning: This group contains %s member from a network that doesn't allow non"
-" public messages."
-msgid_plural ""
-"Warning: This group contains %s members from a network that doesn't allow "
-"non public messages."
-msgstr[0] "警告:这个组包含 %s 来自不允许非公开消息的网络的成员。"
+#: mod/cal.php:35 mod/cal.php:39 mod/community.php:38 mod/follow.php:21
+#: mod/viewcontacts.php:23 mod/viewcontacts.php:27 mod/viewsrc.php:13
+msgid "Access denied."
+msgstr "没有用权。"
 
-#: mod/network.php:551
-msgid "Messages in this group won't be send to these receivers."
-msgstr "这个组中的消息不会被发送至这些接收者。"
+#: mod/cal.php:47 mod/dfrn_poll.php:490 mod/help.php:67
+#: mod/viewcontacts.php:34 src/App.php:1743
+msgid "Page not found."
+msgstr "页发现。"
 
-#: mod/network.php:620
-msgid "No such group"
-msgstr "没有这个组"
+#: mod/cal.php:142 mod/display.php:313 mod/profile.php:155
+msgid "Access to this profile has been restricted."
+msgstr "使用权这个简介被限制了."
 
-#: mod/network.php:641 mod/group.php:247
-msgid "Group is empty"
-msgstr "组没有成员"
+#: mod/cal.php:274 mod/events.php:399 src/Content/Nav.php:153
+#: src/Content/Nav.php:219 src/Model/Profile.php:942 src/Model/Profile.php:953
+#: view/theme/frio/theme.php:264 view/theme/frio/theme.php:268
+msgid "Events"
+msgstr "事件"
 
-#: mod/network.php:645
-#, php-format
-msgid "Group: %s"
-msgstr "组:%s"
+#: mod/cal.php:275 mod/events.php:400
+msgid "View"
+msgstr "查看"
 
-#: mod/network.php:671
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr "私人通信给这个人回被公开。"
+#: mod/cal.php:276 mod/events.php:402
+msgid "Previous"
+msgstr ""
 
-#: mod/network.php:674
-msgid "Invalid contact."
-msgstr "无效的联系人。"
+#: mod/cal.php:277 mod/events.php:403 src/Module/Install.php:135
+msgid "Next"
+msgstr ""
 
-#: mod/network.php:945
-msgid "Commented Order"
-msgstr "评论时间顺序"
+#: mod/cal.php:280 mod/events.php:408 src/Model/Event.php:426
+msgid "today"
+msgstr "今天"
 
-#: mod/network.php:948
-msgid "Sort by Comment Date"
-msgstr "按评论日期顺序排列"
+#: mod/cal.php:281 mod/events.php:409 src/Model/Event.php:427
+#: src/Util/Temporal.php:309
+msgid "month"
+msgstr "月"
 
-#: mod/network.php:953
-msgid "Posted Order"
-msgstr "发布时间顺序"
+#: mod/cal.php:282 mod/events.php:410 src/Model/Event.php:428
+#: src/Util/Temporal.php:310
+msgid "week"
+msgstr "星期"
 
-#: mod/network.php:956
-msgid "Sort by Post Date"
-msgstr "按发布日期顺序排列"
+#: mod/cal.php:283 mod/events.php:411 src/Model/Event.php:429
+#: src/Util/Temporal.php:311
+msgid "day"
+msgstr "日"
 
-#: mod/network.php:964 mod/profiles.php:594
-#: src/Core/NotificationsManager.php:186
-msgid "Personal"
-msgstr "私人"
+#: mod/cal.php:284 mod/events.php:412
+msgid "list"
+msgstr "列表"
 
-#: mod/network.php:967
-msgid "Posts that mention or involve you"
-msgstr "æ\8f\90å\8f\8aä½ æ\88\96ä½ å\8f\82ä¸\8eç\9a\84æ\96\87ç« "
+#: mod/cal.php:297 src/Core/Console/NewPassword.php:67 src/Model/User.php:269
+msgid "User not found"
+msgstr "æ\89¾ä¸\8då\88°ç\94¨æ\88·"
 
-#: mod/network.php:975
-msgid "New"
-msgstr ""
+#: mod/cal.php:313
+msgid "This calendar format is not supported"
+msgstr "这个日历格式不被支持"
 
-#: mod/network.php:978
-msgid "Activity Stream - by date"
-msgstr "æ´»å\8a¨æµ\81ï¼\8dæ\8c\89æ\97¥æ\9c\9f"
+#: mod/cal.php:315
+msgid "No exportable data found"
+msgstr "æ\89¾ä¸\8då\88°å\8f¯å¯¼å\87ºç\9a\84æ\95°æ\8d®"
 
-#: mod/network.php:986
-msgid "Shared Links"
-msgstr "共享的链接"
+#: mod/cal.php:332
+msgid "calendar"
+msgstr "日历"
 
-#: mod/network.php:989
-msgid "Interesting Links"
-msgstr "æ\9c\89æ\84\8fæ\80\9dç\9a\84è¶\85é\93¾æ\8e¥"
+#: mod/common.php:90
+msgid "No contacts in common."
+msgstr "没æ\9c\89å\85±å\90\8cç\9a\84è\81\94系人ã\80\82"
 
-#: mod/network.php:997
-msgid "Starred"
-msgstr "被星"
+#: mod/common.php:141 src/Module/Contact.php:895
+msgid "Common Friends"
+msgstr "普通朋友们"
 
-#: mod/network.php:1000
-msgid "Favourite Posts"
-msgstr "最喜欢的文章"
+#: mod/community.php:31 mod/dfrn_request.php:597 mod/directory.php:43
+#: mod/display.php:213 mod/photos.php:902 mod/probe.php:13 mod/search.php:97
+#: mod/search.php:103 mod/videos.php:148 mod/viewcontacts.php:46
+#: mod/webfinger.php:16
+msgid "Public access denied."
+msgstr "拒绝公开访问"
 
-#: mod/group.php:36
-msgid "Group created."
-msgstr "群ç»\84å·²å\88\9b建。"
+#: mod/community.php:74
+msgid "Community option not available."
+msgstr "社å\8cºé\80\89项ä¸\8då\8f¯ç\94¨。"
 
-#: mod/group.php:42
-msgid "Could not create group."
-msgstr "无法创建群组。"
+#: mod/community.php:91
+msgid "Not available."
+msgstr "不可用的"
 
-#: mod/group.php:56 mod/group.php:187
-msgid "Group not found."
-msgstr "组找不到。"
+#: mod/community.php:101
+msgid "Local Community"
+msgstr "本地社区"
 
-#: mod/group.php:70
-msgid "Group name changed."
-msgstr "组名变化了。"
+#: mod/community.php:104
+msgid "Posts from local users on this server"
+msgstr ""
 
-#: mod/group.php:101
-msgid "Save Group"
-msgstr "保存组"
+#: mod/community.php:112
+msgid "Global Community"
+msgstr "全球社区"
 
-#: mod/group.php:102
-msgid "Filter"
+#: mod/community.php:115
+msgid "Posts from users of the whole federated network"
 msgstr ""
 
-#: mod/group.php:107
-msgid "Create a group of contacts/friends."
-msgstr "创建一组联系人/朋友。"
+#: mod/community.php:161 mod/search.php:230
+msgid "No results."
+msgstr "没有结果。"
 
-#: mod/group.php:108 mod/group.php:134 mod/group.php:229
-#: src/Model/Group.php:410
-msgid "Group Name: "
-msgstr "组名:"
+#: mod/community.php:205
+msgid ""
+"This community stream shows all public posts received by this node. They may"
+" not reflect the opinions of this node’s users."
+msgstr ""
 
-#: mod/group.php:125 src/Model/Group.php:407
-msgid "Contacts not in any group"
-msgstr "不在任何组的联系人"
+#: mod/credits.php:19
+msgid "Credits"
+msgstr "贡献"
 
-#: mod/group.php:157
-msgid "Group removed."
-msgstr "组删除了。"
+#: mod/credits.php:20
+msgid ""
+"Friendica is a community project, that would not be possible without the "
+"help of many people. Here is a list of those who have contributed to the "
+"code or the translation of Friendica. Thank you all!"
+msgstr "Friendica 是一个社区项目,如果没有许多人的努力她将无法实现。这里列出了那些为代码作出贡献或者参与本地化翻译的人们。感谢大家的努力!"
 
-#: mod/group.php:159
-msgid "Unable to remove group."
-msgstr "不能删除组。"
+#: mod/crepair.php:90
+msgid "Contact settings applied."
+msgstr "联系人设置已应用。"
 
-#: mod/group.php:222
-msgid "Delete Group"
-msgstr "删除群组"
+#: mod/crepair.php:92
+msgid "Contact update failed."
+msgstr "联系人更新失败。"
 
-#: mod/group.php:233
-msgid "Edit Group Name"
-msgstr "编辑群组名称"
+#: mod/crepair.php:113 mod/dfrn_confirm.php:127 mod/fsuggest.php:31
+#: mod/fsuggest.php:97 mod/redir.php:32 mod/redir.php:138
+msgid "Contact not found."
+msgstr "没有找到联系人。"
 
-#: mod/group.php:244
-msgid "Members"
-msgstr "成员"
+#: mod/crepair.php:117
+msgid ""
+"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
+" information your communications with this contact may stop working."
+msgstr "<strong>警告:此为进阶</strong>,如果您输入不正确的信息,您也许无法与这位联系人的正常通讯。"
 
-#: mod/group.php:246 mod/contacts.php:739
-msgid "All Contacts"
-msgstr "所有联系人"
+#: mod/crepair.php:118
+msgid ""
+"Please use your browser 'Back' button <strong>now</strong> if you are "
+"uncertain what to do on this page."
+msgstr "请<strong>立即</strong>用后退按钮如果您不确定怎么用这页"
 
-#: mod/group.php:260
-msgid "Remove contact from group"
-msgstr ""
+#: mod/crepair.php:132 mod/crepair.php:134
+msgid "No mirroring"
+msgstr "没有复制"
 
-#: mod/group.php:278 mod/profperm.php:118
-msgid "Click on a contact to add or remove."
-msgstr "å\8d\95å\87»è\81\94系人以添å\8a æ\88\96å\88 é\99¤ã\80\82"
+#: mod/crepair.php:132
+msgid "Mirror as forwarded posting"
+msgstr "å¤\8då\88¶ä¸ºä¼ è¾¾æ\96\87ç« "
 
-#: mod/group.php:292
-msgid "Add contact to group"
-msgstr ""
+#: mod/crepair.php:132 mod/crepair.php:134
+msgid "Mirror as my own posting"
+msgstr "复制为我自己的文章"
+
+#: mod/crepair.php:147
+msgid "Return to contact editor"
+msgstr "返回到联系人编辑器"
+
+#: mod/crepair.php:149
+msgid "Refetch contact data"
+msgstr "重新获取联系人数据"
+
+#: mod/crepair.php:151 mod/events.php:568 mod/fsuggest.php:115
+#: mod/invite.php:154 mod/localtime.php:56 mod/manage.php:182
+#: mod/message.php:263 mod/message.php:443 mod/photos.php:1048
+#: mod/photos.php:1136 mod/photos.php:1411 mod/photos.php:1456
+#: mod/photos.php:1495 mod/photos.php:1555 mod/poke.php:188
+#: mod/profiles.php:578 src/Module/Contact.php:596 src/Module/Install.php:189
+#: src/Module/Install.php:224 src/Object/Post.php:819
+#: view/theme/duepuntozero/config.php:72 view/theme/frio/config.php:119
+#: view/theme/quattro/config.php:74 view/theme/vier/config.php:120
+msgid "Submit"
+msgstr "提交"
 
-#: mod/delegate.php:39
+#: mod/crepair.php:152
+msgid "Remote Self"
+msgstr "遥远的自身"
+
+#: mod/crepair.php:155
+msgid "Mirror postings from this contact"
+msgstr "把这个熟人的文章复制。"
+
+#: mod/crepair.php:157
+msgid ""
+"Mark this contact as remote_self, this will cause friendica to repost new "
+"entries from this contact."
+msgstr "表明这个熟人当遥远的自身。Friendica要把这个熟人的新的文章复制。"
+
+#: mod/crepair.php:162
+msgid "Account Nickname"
+msgstr "帐户昵称"
+
+#: mod/crepair.php:163
+msgid "@Tagname - overrides Name/Nickname"
+msgstr "@Tagname越过名/昵称"
+
+#: mod/crepair.php:164
+msgid "Account URL"
+msgstr "帐户URL"
+
+#: mod/crepair.php:165
+msgid "Friend Request URL"
+msgstr "朋友请求URL"
+
+#: mod/crepair.php:166
+msgid "Friend Confirm URL"
+msgstr "朋友确认URL"
+
+#: mod/crepair.php:167
+msgid "Notification Endpoint URL"
+msgstr "通知端URL"
+
+#: mod/crepair.php:168
+msgid "Poll/Feed URL"
+msgstr "喂URL"
+
+#: mod/crepair.php:169
+msgid "New photo from this URL"
+msgstr "新照片从这个URL"
+
+#: mod/delegate.php:43
 msgid "Parent user not found."
 msgstr "未找到家长账户。"
 
-#: mod/delegate.php:146
+#: mod/delegate.php:150
 msgid "No parent user"
 msgstr "无家长账户"
 
-#: mod/delegate.php:161
+#: mod/delegate.php:165
 msgid "Parent Password:"
 msgstr "家长密码:"
 
-#: mod/delegate.php:161
+#: mod/delegate.php:165
 msgid ""
 "Please enter the password of the parent account to legitimize your request."
 msgstr "请为家长账户设置密码以使您的请求有效化。"
 
-#: mod/delegate.php:166
+#: mod/delegate.php:172
 msgid "Parent User"
 msgstr "家长账户"
 
-#: mod/delegate.php:169
+#: mod/delegate.php:175
 msgid ""
 "Parent users have total control about this account, including the account "
 "settings. Please double check whom you give this access."
 msgstr ""
 
-#: mod/delegate.php:171 src/Content/Nav.php:205
+#: mod/delegate.php:177 src/Content/Nav.php:254
 msgid "Delegate Page Management"
 msgstr "页代表管理"
 
-#: mod/delegate.php:172
+#: mod/delegate.php:178
 msgid "Delegates"
 msgstr "代表"
 
-#: mod/delegate.php:174
+#: mod/delegate.php:180
 msgid ""
 "Delegates are able to manage all aspects of this account/page except for "
 "basic account settings. Please do not delegate your personal account to "
 "anybody that you do not trust completely."
 msgstr "代表会管理所有的方面这个账户/页除了基础账户配置以外。请别代表您私人账户给您没完全信的人。"
 
-#: mod/delegate.php:175
+#: mod/delegate.php:181
 msgid "Existing Page Delegates"
 msgstr "目前页代表"
 
-#: mod/delegate.php:177
+#: mod/delegate.php:183
 msgid "Potential Delegates"
 msgstr "潜力的代表"
 
-#: mod/delegate.php:179 mod/tagrm.php:90
+#: mod/delegate.php:185 mod/tagrm.php:112
 msgid "Remove"
 msgstr "移走"
 
-#: mod/delegate.php:180
+#: mod/delegate.php:186
 msgid "Add"
 msgstr "加"
 
-#: mod/delegate.php:181
+#: mod/delegate.php:187
 msgid "No entries."
 msgstr "没有项目。"
 
-#: mod/uexport.php:44
-msgid "Export account"
-msgstr "导出账户"
+#: mod/dfrn_confirm.php:72 mod/profiles.php:42 mod/profiles.php:152
+#: mod/profiles.php:197 mod/profiles.php:527
+msgid "Profile not found."
+msgstr "找不到简介。"
 
-#: mod/uexport.php:44
+#: mod/dfrn_confirm.php:128
 msgid ""
-"Export your account info and contacts. Use this to make a backup of your "
-"account and/or to move it to another server."
-msgstr "导出你的账户信息和联系人。用这个功能来生成一个你的账户的备份,并且/或者把它移到另外一个服务器。"
-
-#: mod/uexport.php:45
-msgid "Export all"
-msgstr "导出全部"
+"This may occasionally happen if contact was requested by both persons and it"
+" has already been approved."
+msgstr "这会偶尔地发生熟人双方都要求和已经批准的时候。"
 
-#: mod/uexport.php:45
-msgid ""
-"Export your accout info, contacts and all your items as json. Could be a "
-"very big file, and could take a lot of time. Use this to make a full backup "
-"of your account (photos are not exported)"
-msgstr "导出你的账户信息、联系人和所有你的项目为 json 格式。可能会是一个很大的文件,并可能花费很多时间。用这个功能来做一个你的账户的全备份(照片不会被导出)"
+#: mod/dfrn_confirm.php:238
+msgid "Response from remote site was not understood."
+msgstr "遥网站的回答明白不了。"
 
-#: mod/repair_ostatus.php:21
-msgid "Resubscribing to OStatus contacts"
-msgstr "重新订阅 OStatus 联系人"
+#: mod/dfrn_confirm.php:245 mod/dfrn_confirm.php:251
+msgid "Unexpected response from remote site: "
+msgstr "居然回答从遥网站:"
 
-#: mod/repair_ostatus.php:37
-msgid "Error"
-msgstr "错误"
+#: mod/dfrn_confirm.php:260
+msgid "Confirmation completed successfully."
+msgstr "确认成功完成。"
 
-#: mod/repair_ostatus.php:52 mod/ostatus_subscribe.php:65
-msgid "Done"
-msgstr "完成"
+#: mod/dfrn_confirm.php:272
+msgid "Temporary failure. Please wait and try again."
+msgstr "临时失败。请等一会,再试。"
 
-#: mod/repair_ostatus.php:58 mod/ostatus_subscribe.php:89
-msgid "Keep this window open until done."
-msgstr "ä¿\9dæ\8c\81çª\97å\8f£æ\89\93å¼\80ç\9b´å\88°å®\8cæ\88\90。"
+#: mod/dfrn_confirm.php:275
+msgid "Introduction failed or was revoked."
+msgstr "ä»\8bç»\8d失败æ\88\96被å\90\8aé\94\80。"
 
-#: mod/viewcontacts.php:20 mod/viewcontacts.php:24 mod/cal.php:32
-#: mod/cal.php:36 mod/follow.php:19 mod/community.php:35 mod/viewsrc.php:13
-msgid "Access denied."
-msgstr "没有用权。"
+#: mod/dfrn_confirm.php:280
+msgid "Remote site reported: "
+msgstr "远程站点报告:"
 
-#: mod/viewcontacts.php:90
-msgid "No contacts."
-msgstr "没æ\9c\89è\81\94系人。"
+#: mod/dfrn_confirm.php:386
+msgid "Unable to set contact photo."
+msgstr "æ\97 æ³\95设置è\81\94系人ç\85§ç\89\87。"
 
-#: mod/viewcontacts.php:106 mod/contacts.php:639 mod/contacts.php:1052
+#: mod/dfrn_confirm.php:448
 #, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "看%s的简介[%s]"
+msgid "No user record found for '%s' "
+msgstr "找不到「%s」的用户记录"
 
-#: mod/unfollow.php:36
-msgid "Contact wasn't found or can't be unfollowed."
-msgstr "找不到联系人或者不能关注联系人。"
+#: mod/dfrn_confirm.php:458
+msgid "Our site encryption key is apparently messed up."
+msgstr "看起来我们的加密钥匙失灵了。"
 
-#: mod/unfollow.php:49
-msgid "Contact unfollowed"
-msgstr "取消关注了的联系人"
+#: mod/dfrn_confirm.php:469
+msgid "Empty site URL was provided or URL could not be decrypted by us."
+msgstr "空的URL供应,或URL解不了码。"
 
-#: mod/unfollow.php:67 mod/dfrn_request.php:654 mod/follow.php:62
-msgid "Submit Request"
-msgstr "æ\8f\90交è¦\81æ±\82"
+#: mod/dfrn_confirm.php:485
+msgid "Contact record was not found for you on our site."
+msgstr "æ\97 æ³\95å\9c¨æ\9c¬ç«\99ç\82¹ä¸ºæ\82¨æ\89¾å\88°è\81\94系人记å½\95ã\80\82"
 
-#: mod/unfollow.php:76
-msgid "You aren't a friend of this contact."
-msgstr "你不是这个联系人的朋友。"
+#: mod/dfrn_confirm.php:499
+#, php-format
+msgid "Site public key not available in contact record for URL %s."
+msgstr "没有网站公开钥匙在熟人记录在URL%s。"
 
-#: mod/unfollow.php:82
-msgid "Unfollowing is currently not supported by your network."
-msgstr "取消关注现在不被你的网络支持。"
+#: mod/dfrn_confirm.php:515
+msgid ""
+"The ID provided by your system is a duplicate on our system. It should work "
+"if you try again."
+msgstr "身份证明由您的系统是在我们的重做。你再试应该运行。"
 
-#: mod/unfollow.php:103 mod/contacts.php:601
-msgid "Disconnect/Unfollow"
-msgstr "断开连接/取消关注"
+#: mod/dfrn_confirm.php:526
+msgid "Unable to set your contact credentials on our system."
+msgstr "不能创作您的熟人证件在我们的系统。"
 
-#: mod/unfollow.php:116 mod/dfrn_request.php:652 mod/follow.php:157
-msgid "Your Identity Address:"
-msgstr "ä½ ç\9a\84身份å\9c°å\9d\80ï¼\9a"
+#: mod/dfrn_confirm.php:582
+msgid "Unable to update your contact profile details on our system"
+msgstr "ä¸\8dè\83½æ\9b´æ\96°æ\82¨ç\9a\84ç\86\9f人ç®\80ä»\8bæ¶\88æ\81¯å\9c¨æ\88\91们ç\9a\84ç³»ç»\9f"
 
-#: mod/unfollow.php:125 mod/notifications.php:174 mod/notifications.php:263
-#: mod/admin.php:500 mod/admin.php:510 mod/contacts.php:676 mod/follow.php:166
-msgid "Profile URL"
-msgstr "简介 URL"
+#: mod/dfrn_confirm.php:612 mod/dfrn_request.php:560
+#: src/Model/Contact.php:1976
+msgid "[Name Withheld]"
+msgstr "[名字拒给]"
 
-#: mod/unfollow.php:135 mod/contacts.php:888 mod/follow.php:189
-#: src/Model/Profile.php:878
-msgid "Status Messages and Posts"
-msgstr "现状通知和文章"
+#: mod/dfrn_poll.php:126 mod/dfrn_poll.php:534
+#, php-format
+msgid "%1$s welcomes %2$s"
+msgstr "%1$s欢迎%2$s"
 
-#: mod/update_notes.php:36 mod/update_network.php:33
-#: mod/update_contacts.php:24 mod/update_profile.php:35
-#: mod/update_community.php:23 mod/update_display.php:24
-msgid "[Embedded content - reload page to view]"
-msgstr "[嵌入内容-重新加载页为看]"
+#: mod/dfrn_request.php:95
+msgid "This introduction has already been accepted."
+msgstr "这个介绍已经接受了。"
 
-#: mod/register.php:99
-msgid ""
-"Registration successful. Please check your email for further instructions."
-msgstr "注册成功了。请咨询说明再您的收件箱。"
+#: mod/dfrn_request.php:113 mod/dfrn_request.php:354
+msgid "Profile location is not valid or does not contain profile information."
+msgstr "简介位置失效或不包含简介信息。"
 
-#: mod/register.php:103
-#, php-format
-msgid ""
-"Failed to send email message. Here your accout details:<br> login: %s<br> "
-"password: %s<br><br>You can change your password after login."
-msgstr "发送邮件失败。你的账户消息是:<br>用户名:%s<br> 密码: %s<br><br>。登录后能改密码。"
+#: mod/dfrn_request.php:117 mod/dfrn_request.php:358
+msgid "Warning: profile location has no identifiable owner name."
+msgstr "警告:简介位置没有可设别的主名。"
 
-#: mod/register.php:110
-msgid "Registration successful."
-msgstr "注册成功。"
+#: mod/dfrn_request.php:120 mod/dfrn_request.php:361
+msgid "Warning: profile location has no profile photo."
+msgstr "警告:简介位置没有简介图。"
 
-#: mod/register.php:115
-msgid "Your registration can not be processed."
-msgstr "处理不了您的注册。"
+#: mod/dfrn_request.php:124 mod/dfrn_request.php:365
+#, php-format
+msgid "%d required parameter was not found at the given location"
+msgid_plural "%d required parameters were not found at the given location"
+msgstr[0] "%d需要的参数没找到在输入的位置。"
 
-#: mod/register.php:162
-msgid "Your registration is pending approval by the site owner."
-msgstr "您的注册等网页主的批准。"
+#: mod/dfrn_request.php:162
+msgid "Introduction complete."
+msgstr "介绍完成的。"
 
-#: mod/register.php:191 mod/uimport.php:55
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "这个网站超过一天最多账户注册。请明天再试。"
+#: mod/dfrn_request.php:198
+msgid "Unrecoverable protocol error."
+msgstr "不能恢复的协议错误"
 
-#: mod/register.php:220
-msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking 'Register'."
-msgstr "您会(可选的)用OpenID填这个表格通过提供您的OpenID和点击「注册」。"
+#: mod/dfrn_request.php:225
+msgid "Profile unavailable."
+msgstr "简介无效"
 
-#: mod/register.php:221
-msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
-msgstr "如果您没熟悉OpenID,请留空这个栏和填另些栏。"
+#: mod/dfrn_request.php:247
+#, php-format
+msgid "%s has received too many connection requests today."
+msgstr "%s今天已经受到了太多联络要求"
 
-#: mod/register.php:222
-msgid "Your OpenID (optional): "
-msgstr "您的OpenID(可选的):"
+#: mod/dfrn_request.php:248
+msgid "Spam protection measures have been invoked."
+msgstr "垃圾保护措施被用了。"
 
-#: mod/register.php:234
-msgid "Include your profile in member directory?"
-msgstr "æ\94¾æ\82¨ç\9a\84ç®\80ä»\8bå\86\8då\91\98ç\9b®å½\95ï¼\9f"
+#: mod/dfrn_request.php:249
+msgid "Friends are advised to please try again in 24 hours."
+msgstr "æ\9c\8bå\8f\8b们被建议请24å°\8fæ\97¶å\90\8eå\86\8dè¯\95ã\80\82"
 
-#: mod/register.php:261
-msgid "Note for the admin"
-msgstr "给管理员的便条"
+#: mod/dfrn_request.php:275
+msgid "Invalid locator"
+msgstr "无效找到物"
 
-#: mod/register.php:261
-msgid "Leave a message for the admin, why you want to join this node"
-msgstr "给管理员留条消息,为什么你想加入这个节点"
+#: mod/dfrn_request.php:311
+msgid "You have already introduced yourself here."
+msgstr "您已经自我介绍这儿。"
 
-#: mod/register.php:262
-msgid "Membership on this site is by invitation only."
-msgstr "会员身份在这个网站是光通过邀请。"
+#: mod/dfrn_request.php:314
+#, php-format
+msgid "Apparently you are already friends with %s."
+msgstr "看上去您已经是%s的朋友。"
 
-#: mod/register.php:263
-msgid "Your invitation code: "
-msgstr "æ\82¨ç\9a\84é\82\80请ç \81ï¼\9a"
+#: mod/dfrn_request.php:334
+msgid "Invalid profile URL."
+msgstr "æ\97 æ\95\88ç\9a\84ç®\80ä»\8bURLã\80\82"
 
-#: mod/register.php:266 mod/admin.php:1428
-msgid "Registration"
-msgstr "注册"
+#: mod/dfrn_request.php:340 src/Model/Contact.php:1648
+msgid "Disallowed profile URL."
+msgstr "不允许的简介地址."
 
-#: mod/register.php:272
-msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
-msgstr "你的全名 (比如张三,真名或看起来是真名):"
+#: mod/dfrn_request.php:413 src/Module/Contact.php:236
+msgid "Failed to update contact record."
+msgstr "更新联系人记录失败。"
+
+#: mod/dfrn_request.php:433
+msgid "Your introduction has been sent."
+msgstr "您的介绍发布了。"
 
-#: mod/register.php:273
+#: mod/dfrn_request.php:471
 msgid ""
-"Your Email Address: (Initial information will be send there, so this has to "
-"be an existing address.)"
-msgstr "æ\82¨ç\9a\84ç\94µå­\90é\82®ä»¶å\9c°å\9d\80ï¼\9a\88\9då§\8bä¿¡æ\81¯å°\86å\8f\91é\80\81å\88°è¿\99é\87\8cï¼\8cæ\89\80以è¿\99å¿\85é¡»æ\98¯ä¸\80个å­\98å\9c¨ç\9a\84å\9c°å\9d\80ã\80\82)"
+"Remote subscription can't be done for your network. Please subscribe "
+"directly on your system."
+msgstr "æ\97 æ³\95为æ\82¨ç\9a\84ç½\91ç»\9cå®\8cæ\88\90è¿\9cç¨\8b订é\98\85ã\80\82请ç\9b´æ\8e¥å\9c¨æ\82¨ç\9a\84ç³»ç»\9fä¸\8a订é\98\85ã\80\82"
 
-#: mod/register.php:275
-msgid "Leave empty for an auto generated password."
-msgstr "留空以使用自动生成的密码。"
+#: mod/dfrn_request.php:487
+msgid "Please login to confirm introduction."
+msgstr "请登录以确认介绍。"
 
-#: mod/register.php:277
-#, php-format
+#: mod/dfrn_request.php:495
 msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be '<strong>nickname@%s</strong>'."
-msgstr ""
+"Incorrect identity currently logged in. Please login to "
+"<strong>this</strong> profile."
+msgstr "当前登录的身份不正确。请登录到<strong>这个</strong>用户。"
 
-#: mod/register.php:278
-msgid "Choose a nickname: "
-msgstr "选择昵称:"
+#: mod/dfrn_request.php:509 mod/dfrn_request.php:524
+msgid "Confirm"
+msgstr "确认"
 
-#: mod/register.php:281 src/Module/Login.php:281 src/Content/Nav.php:128
-msgid "Register"
-msgstr "注册"
+#: mod/dfrn_request.php:520
+msgid "Hide this contact"
+msgstr "隐藏这个联系人"
 
-#: mod/register.php:287 mod/uimport.php:70
-msgid "Import"
-msgstr ""
+#: mod/dfrn_request.php:522
+#, php-format
+msgid "Welcome home %s."
+msgstr "欢迎%s。"
 
-#: mod/register.php:288
-msgid "Import your profile to this friendica instance"
-msgstr "进口您的简介到这个friendica服务器"
+#: mod/dfrn_request.php:523
+#, php-format
+msgid "Please confirm your introduction/connection request to %s."
+msgstr "请确认您的介绍/联络要求给%s。"
 
-#: mod/register.php:290 mod/admin.php:191 mod/admin.php:310
-#: src/Module/Tos.php:70 src/Content/Nav.php:178
-msgid "Terms of Service"
-msgstr "服务条款"
+#: mod/dfrn_request.php:632
+msgid ""
+"Please enter your 'Identity Address' from one of the following supported "
+"communications networks:"
+msgstr "请从以下支持的通信网络之一输入你的 “身份地址”:"
 
-#: mod/register.php:296
-msgid "Note: This node explicitly contains adult content"
-msgstr ""
+#: mod/dfrn_request.php:634
+#, php-format
+msgid ""
+"If you are not yet a member of the free social web, <a href=\"%s\">follow "
+"this link to find a public Friendica site and join us today</a>."
+msgstr "如果您还不是自由社交网络用户中的一员,<a href=\"%s\"> 请通过此链接查找公共 Friendica 站点并在今天加入我们吧 </a>。"
 
-#: mod/notifications.php:35
-msgid "Invalid request identifier."
-msgstr "æ\97 æ\95\88è¦\81æ±\82身份å\8f·ã\80\82"
+#: mod/dfrn_request.php:637
+msgid "Friend/Connection Request"
+msgstr "æ\9c\8bå\8f\8b/è¿\9eæ\8e¥è¯·æ±\82"
 
-#: mod/notifications.php:44 mod/notifications.php:183
-#: mod/notifications.php:235 mod/message.php:114
-msgid "Discard"
-msgstr "丢弃"
+#: mod/dfrn_request.php:638
+msgid ""
+"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
+"testuser@gnusocial.de"
+msgstr "例如:jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"
 
-#: mod/notifications.php:57 mod/notifications.php:182
-#: mod/notifications.php:271 mod/contacts.php:658 mod/contacts.php:850
-#: mod/contacts.php:1113
-msgid "Ignore"
-msgstr "忽视"
+#: mod/dfrn_request.php:639 mod/follow.php:150
+msgid "Please answer the following:"
+msgstr "请回答下述的:"
 
-#: mod/notifications.php:93 src/Content/Nav.php:191
-msgid "Notifications"
-msgstr "通知"
+#: mod/dfrn_request.php:640 mod/follow.php:151
+#, php-format
+msgid "Does %s know you?"
+msgstr "%s是否认识你?"
 
-#: mod/notifications.php:101
-msgid "Network Notifications"
-msgstr "网络通知"
+#: mod/dfrn_request.php:641 mod/follow.php:152
+msgid "Add a personal note:"
+msgstr "添加一个个人便条:"
 
-#: mod/notifications.php:106 mod/notify.php:81
-msgid "System Notifications"
-msgstr "系统通知"
+#: mod/dfrn_request.php:643
+msgid "Friendica"
+msgstr "Friendica"
 
-#: mod/notifications.php:111
-msgid "Personal Notifications"
-msgstr "私人通知"
+#: mod/dfrn_request.php:644
+msgid "GNU Social (Pleroma, Mastodon)"
+msgstr "GNU Social (Pleroma, Mastodon)"
 
-#: mod/notifications.php:116
-msgid "Home Notifications"
-msgstr "主页通知"
+#: mod/dfrn_request.php:645
+msgid "Diaspora (Socialhome, Hubzilla)"
+msgstr "Diaspora (Socialhome, Hubzilla)"
 
-#: mod/notifications.php:148
-msgid "Show Ignored Requests"
-msgstr "显示被忽视的请求"
+#: mod/dfrn_request.php:646
+#, php-format
+msgid ""
+" - please do not use this form.  Instead, enter %s into your Diaspora search"
+" bar."
+msgstr " - 请别用这个表格。而是在你的 Diaspora 搜索栏输入 %s."
 
-#: mod/notifications.php:148
-msgid "Hide Ignored Requests"
-msgstr "隐藏被忽视的请求"
+#: mod/dfrn_request.php:647 mod/follow.php:158 mod/unfollow.php:128
+msgid "Your Identity Address:"
+msgstr "你的身份地址:"
 
-#: mod/notifications.php:161 mod/notifications.php:243
-msgid "Notification type:"
-msgstr ""
+#: mod/dfrn_request.php:649 mod/follow.php:66 mod/unfollow.php:131
+msgid "Submit Request"
+msgstr "提交要求"
 
-#: mod/notifications.php:164
-msgid "Suggested by:"
-msgstr ""
+#: mod/directory.php:154 mod/events.php:556 mod/notifications.php:251
+#: src/Model/Event.php:66 src/Model/Event.php:93 src/Model/Event.php:435
+#: src/Model/Event.php:926 src/Model/Profile.php:437
+#: src/Module/Contact.php:646
+msgid "Location:"
+msgstr "位置:"
 
-#: mod/notifications.php:176 mod/notifications.php:260 mod/contacts.php:666
-msgid "Hide this contact from others"
-msgstr "对其他人隐藏这个联系人"
+#: mod/directory.php:159 mod/notifications.php:257 src/Model/Profile.php:440
+#: src/Model/Profile.php:763
+msgid "Gender:"
+msgstr "性别:"
 
-#: mod/notifications.php:179 mod/notifications.php:269 mod/admin.php:1904
-msgid "Approve"
-msgstr "批准"
+#: mod/directory.php:160 src/Model/Profile.php:441 src/Model/Profile.php:787
+msgid "Status:"
+msgstr "现状:"
 
-#: mod/notifications.php:202
-msgid "Claims to be known to you: "
-msgstr "声称被您认识:"
+#: mod/directory.php:161 src/Model/Profile.php:442 src/Model/Profile.php:804
+msgid "Homepage:"
+msgstr "主页:"
 
-#: mod/notifications.php:203
-msgid "yes"
-msgstr "是"
+#: mod/directory.php:162 mod/notifications.php:253 src/Model/Profile.php:443
+#: src/Model/Profile.php:824 src/Module/Contact.php:650
+msgid "About:"
+msgstr "关于:"
 
-#: mod/notifications.php:203
-msgid "no"
-msgstr "否"
+#: mod/directory.php:210 src/Content/Widget.php:70
+#: view/theme/vier/theme.php:208
+msgid "Global Directory"
+msgstr "综合目录"
 
-#: mod/notifications.php:204 mod/notifications.php:209
-msgid "Shall your connection be bidirectional or not?"
-msgstr "æ\98¯å\90¦å\90¯ç\94¨å\8f\8cå\90\91è¿\9eæ\8e¥ï¼\9f"
+#: mod/directory.php:212
+msgid "Find on this site"
+msgstr "æ\89¾å\9c¨è¿\99ç½\91ç«\99"
 
-#: mod/notifications.php:205 mod/notifications.php:210
-#, php-format
-msgid ""
-"Accepting %s as a friend allows %s to subscribe to your posts, and you will "
-"also receive updates from them in your news feed."
-msgstr ""
+#: mod/directory.php:214
+msgid "Results for:"
+msgstr "结果:"
+
+#: mod/directory.php:216
+msgid "Site Directory"
+msgstr "网站目录"
+
+#: mod/directory.php:217 src/Content/Widget.php:65 src/Module/Contact.php:820
+#: view/theme/vier/theme.php:203
+msgid "Find"
+msgstr "搜索"
+
+#: mod/directory.php:221
+msgid "No entries (some entries may be hidden)."
+msgstr "没有文章(有的文章会被隐藏)。"
 
-#: mod/notifications.php:206
+#: mod/dirfind.php:55
 #, php-format
-msgid ""
-"Accepting %s as a subscriber allows them to subscribe to your posts, but you"
-" will not receive updates from them in your news feed."
-msgstr ""
+msgid "People Search - %s"
+msgstr "搜索人 - %s"
 
-#: mod/notifications.php:211
+#: mod/dirfind.php:66
 #, php-format
-msgid ""
-"Accepting %s as a sharer allows them to subscribe to your posts, but you "
-"will not receive updates from them in your news feed."
-msgstr ""
+msgid "Forum Search - %s"
+msgstr "搜索论坛 - %s"
 
-#: mod/notifications.php:222
-msgid "Friend"
-msgstr "æ\9c\8bå\8f\8b"
+#: mod/dirfind.php:261 mod/match.php:127
+msgid "No matches"
+msgstr "没æ\9c\89ç»\93æ\9e\9c"
 
-#: mod/notifications.php:223
-msgid "Sharer"
-msgstr "分享者"
+#: mod/editpost.php:29 mod/editpost.php:39
+msgid "Item not found"
+msgstr "项目没找到"
 
-#: mod/notifications.php:223
-msgid "Subscriber"
-msgstr "订阅者"
+#: mod/editpost.php:46
+msgid "Edit post"
+msgstr "编辑文章"
 
-#: mod/notifications.php:257 mod/contacts.php:686 mod/follow.php:177
-#: src/Model/Profile.php:781
-msgid "Tags:"
-msgstr "标签:"
+#: mod/editpost.php:92 mod/filer.php:36 mod/notes.php:52
+#: src/Content/Text/HTML.php:962
+msgid "Save"
+msgstr "保存"
 
-#: mod/notifications.php:266 mod/contacts.php:76 src/Model/Profile.php:520
-msgid "Network:"
-msgstr "网络"
+#: mod/editpost.php:97 mod/message.php:261 mod/message.php:442
+#: mod/wallmessage.php:140
+msgid "Insert web link"
+msgstr "插入网页链接"
 
-#: mod/notifications.php:280
-msgid "No introductions."
-msgstr "没有介绍。"
+#: mod/editpost.php:98
+msgid "web link"
+msgstr "网页链接"
 
-#: mod/notifications.php:318
-msgid "Show unread"
-msgstr "æ\98¾ç¤ºæ\9cªè¯»"
+#: mod/editpost.php:99
+msgid "Insert video link"
+msgstr "æ\8f\92å\85¥è§\86é¢\91é\93¾æ\8e¥"
 
-#: mod/notifications.php:318
-msgid "Show all"
-msgstr "显示全部"
+#: mod/editpost.php:100
+msgid "video link"
+msgstr "视频链接"
 
-#: mod/notifications.php:323
-#, php-format
-msgid "No more %s notifications."
-msgstr "没有更多的 %s 通知。"
+#: mod/editpost.php:101
+msgid "Insert audio link"
+msgstr "插入音频链接"
 
-#: mod/message.php:31 mod/message.php:120 src/Content/Nav.php:199
-msgid "New Message"
-msgstr "新的消息"
+#: mod/editpost.php:102
+msgid "audio link"
+msgstr "音频链接"
 
-#: mod/message.php:78
-msgid "Unable to locate contact information."
-msgstr "æ\97 æ³\95æ\89¾å\88°è\81\94系人信æ\81¯ã\80\82"
+#: mod/editpost.php:117 src/Core/ACL.php:303
+msgid "CC: email addresses"
+msgstr "æ\8a\84é\80\81: ç\94µå­\90é\82®ä»¶å\9c°å\9d\80"
 
-#: mod/message.php:152
-msgid "Do you really want to delete this message?"
-msgstr "æ\82¨ç\9c\9fç\9a\84æ\83³å\88 é\99¤è¿\99个é\80\9aç\9f¥å\90\97ï¼\9f"
+#: mod/editpost.php:124 src/Core/ACL.php:304
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "æ¯\94å¦\82: li@example.com, wang@example.com"
 
-#: mod/message.php:169
-msgid "Message deleted."
-msgstr "消息删除了。"
-
-#: mod/message.php:184
-msgid "Conversation removed."
-msgstr "交流删除了。"
-
-#: mod/message.php:290
-msgid "No messages."
-msgstr "没有消息"
-
-#: mod/message.php:331
-msgid "Message not available."
-msgstr "通信不可用的"
-
-#: mod/message.php:395
-msgid "Delete message"
-msgstr "删除消息"
-
-#: mod/message.php:397 mod/message.php:498
-msgid "D, d M Y - g:i A"
-msgstr "D, d M Y - g:i A"
+#: mod/events.php:117 mod/events.php:119
+msgid "Event can not end before it has started."
+msgstr "事件不能在开始前结束。"
 
-#: mod/message.php:412 mod/message.php:495
-msgid "Delete conversation"
-msgstr "删除交谈"
+#: mod/events.php:126 mod/events.php:128
+msgid "Event title and start time are required."
+msgstr "项目标题和开始时间是必须的。"
 
-#: mod/message.php:414
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "没可用的安全交通。您<strong>可能</strong>会在发送人的简介页会回答。"
+#: mod/events.php:401
+msgid "Create New Event"
+msgstr "创建新的事件"
 
-#: mod/message.php:418
-msgid "Send Reply"
-msgstr "发回答"
+#: mod/events.php:524
+msgid "Event details"
+msgstr "事件细节"
 
-#: mod/message.php:469
-#, php-format
-msgid "Unknown sender - %s"
-msgstr "生发送人-%s"
+#: mod/events.php:525
+msgid "Starting date and Title are required."
+msgstr "需要开始日期和标题。"
 
-#: mod/message.php:471
-#, php-format
-msgid "You and %s"
-msgstr "您和%s"
+#: mod/events.php:526 mod/events.php:531
+msgid "Event Starts:"
+msgstr "事件开始:"
 
-#: mod/message.php:473
-#, php-format
-msgid "%s and You"
-msgstr "%s和您"
+#: mod/events.php:526 mod/events.php:558 mod/profiles.php:608
+msgid "Required"
+msgstr "必须的"
 
-#: mod/message.php:501
-#, php-format
-msgid "%d message"
-msgid_plural "%d messages"
-msgstr[0] "%d通知"
+#: mod/events.php:539 mod/events.php:564
+msgid "Finish date/time is not known or not relevant"
+msgstr "结束日期/时间未知或无关"
 
-#: mod/hcard.php:19
-msgid "No profile"
-msgstr "无简介"
+#: mod/events.php:541 mod/events.php:546
+msgid "Event Finishes:"
+msgstr "事件结束:"
 
-#: mod/ostatus_subscribe.php:22
-msgid "Subscribing to OStatus contacts"
-msgstr "æ­£å\9c¨è®¢é\98\85 OStatus è\81\94系人"
+#: mod/events.php:552 mod/events.php:565
+msgid "Adjust for viewer timezone"
+msgstr "è°\83æ\95´ä¸ºæµ\8fè§\88è\80\85ç\9a\84æ\97¶å\8cº"
 
-#: mod/ostatus_subscribe.php:34
-msgid "No contact provided."
-msgstr "æ\9cªæ\8f\90ä¾\9bè\81\94系人ã\80\82"
+#: mod/events.php:554
+msgid "Description:"
+msgstr "æ\8f\8fè¿°ï¼\9a"
 
-#: mod/ostatus_subscribe.php:41
-msgid "Couldn't fetch information for contact."
-msgstr "æ\97 æ³\95è\8e·å\8f\96è\81\94系人信æ\81¯ã\80\82"
+#: mod/events.php:558 mod/events.php:560
+msgid "Title:"
+msgstr "æ \87é¢\98ï¼\9a"
 
-#: mod/ostatus_subscribe.php:51
-msgid "Couldn't fetch friends for contact."
-msgstr "无法取得联系人的朋友信息。"
+#: mod/events.php:561 mod/events.php:562
+msgid "Share this event"
+msgstr "分享这个事件"
 
-#: mod/ostatus_subscribe.php:79
-msgid "success"
-msgstr "成功"
+#: mod/events.php:569 src/Model/Profile.php:882
+msgid "Basic"
+msgstr "基本"
 
-#: mod/ostatus_subscribe.php:81
-msgid "failed"
-msgstr "失败"
+#: mod/events.php:571 mod/photos.php:1066 mod/photos.php:1407
+#: src/Core/ACL.php:306
+msgid "Permissions"
+msgstr "权限"
 
-#: mod/ostatus_subscribe.php:84 src/Object/Post.php:264
-msgid "ignored"
-msgstr "已忽è§\86ç\9a\84"
+#: mod/events.php:587
+msgid "Failed to remove event"
+msgstr "å\88 é\99¤äº\8b件失败"
 
-#: mod/dfrn_poll.php:126 mod/dfrn_poll.php:549
-#, php-format
-msgid "%1$s welcomes %2$s"
-msgstr "%1$s欢迎%2$s"
+#: mod/events.php:589
+msgid "Event removed"
+msgstr "事件已删除"
 
-#: mod/removeme.php:47
-msgid "User deleted their account"
-msgstr ""
+#: mod/fbrowser.php:36 src/Content/Nav.php:151 src/Model/Profile.php:922
+#: view/theme/frio/theme.php:262
+msgid "Photos"
+msgstr "照片"
 
-#: mod/removeme.php:48
-msgid ""
-"On your Friendica node an user deleted their account. Please ensure that "
-"their data is removed from the backups."
-msgstr ""
+#: mod/fbrowser.php:45 mod/fbrowser.php:70 mod/photos.php:201
+#: mod/photos.php:1030 mod/photos.php:1125 mod/photos.php:1142
+#: mod/photos.php:1609 mod/photos.php:1624 src/Model/Photo.php:528
+#: src/Model/Photo.php:537
+msgid "Contact Photos"
+msgstr "联系人照片"
 
-#: mod/removeme.php:49
-#, php-format
-msgid "The user id is %d"
-msgstr "用户 id 为 %d"
+#: mod/fbrowser.php:107 mod/fbrowser.php:138 mod/profile_photo.php:255
+msgid "Upload"
+msgstr "上传"
 
-#: mod/removeme.php:81 mod/removeme.php:84
-msgid "Remove My Account"
-msgstr "删除我的账户"
+#: mod/fbrowser.php:133
+msgid "Files"
+msgstr "文件"
 
-#: mod/removeme.php:82
-msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
-msgstr "这要完全删除您的账户。这一做过,就不能恢复。"
+#: mod/feedtest.php:18
+msgid "You must be logged in to use this module"
+msgstr "您必须登录才能使用此模块"
 
-#: mod/removeme.php:83
-msgid "Please enter your password for verification:"
-msgstr "请输入密码为确认:"
+#: mod/feedtest.php:45
+msgid "Source URL"
+msgstr "源链接"
 
-#: mod/tagrm.php:43
-msgid "Tag removed"
-msgstr "标签去除了"
+#: mod/filer.php:35
+msgid "- select -"
+msgstr "-选择-"
 
-#: mod/tagrm.php:77
-msgid "Remove Item Tag"
-msgstr "去除项目标签"
+#: mod/follow.php:47
+msgid "The contact could not be added."
+msgstr "无法添加此联系人。"
 
-#: mod/tagrm.php:79
-msgid "Select a tag to remove: "
-msgstr "选择删除一个标签: "
+#: mod/follow.php:77
+msgid "You already added this contact."
+msgstr "您已添加此联系人。"
 
-#: mod/home.php:39
-#, php-format
-msgid "Welcome to %s"
-msgstr "%s欢迎你"
+#: mod/follow.php:87
+msgid "Diaspora support isn't enabled. Contact can't be added."
+msgstr "Diaspora 支持没被启用。无法添加联系人。"
 
-#: mod/suggest.php:38
-msgid "Do you really want to delete this suggestion?"
-msgstr "您真的想删除这个建议吗?"
+#: mod/follow.php:94
+msgid "OStatus support is disabled. Contact can't be added."
+msgstr "OStatus 支持没被启用。无法添加联系人。"
 
-#: mod/suggest.php:74
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "没有建议。如果这是新网站,请24小时后再试。"
+#: mod/follow.php:101
+msgid "The network type couldn't be detected. Contact can't be added."
+msgstr "网络类型无法被检测。无法添加联系人。"
 
-#: mod/suggest.php:87 mod/suggest.php:107
-msgid "Ignore/Hide"
-msgstr "忽视/隐藏"
+#: mod/follow.php:171 mod/notifications.php:255 src/Model/Profile.php:812
+#: src/Module/Contact.php:652
+msgid "Tags:"
+msgstr "标签:"
 
-#: mod/filer.php:34
-msgid "- select -"
-msgstr "-选择-"
+#: mod/follow.php:183 mod/unfollow.php:147 src/Model/Profile.php:909
+#: src/Module/Contact.php:867
+msgid "Status Messages and Posts"
+msgstr "现状通知和文章"
 
-#: mod/friendica.php:78
+#: mod/friendica.php:80
 #, php-format
 msgid ""
 "This is Friendica, version %s that is running at the web location %s. The "
 "database version is %s, the post update version is %s."
 msgstr ""
 
-#: mod/friendica.php:84
+#: mod/friendica.php:86
 msgid ""
 "Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more "
 "about the Friendica project."
 msgstr "请浏览 <a href=\"https://friendi.ca\">Friendi.ca</a> 以了解更多关于 Friendica 项目的信息。"
 
-#: mod/friendica.php:88
+#: mod/friendica.php:90
 msgid "Bug reports and issues: please visit"
 msgstr "Bug 及 issues 报告:请访问"
 
-#: mod/friendica.php:88
+#: mod/friendica.php:90
 msgid "the bugtracker at github"
 msgstr "在 github 上的错误追踪系统"
 
-#: mod/friendica.php:91
+#: mod/friendica.php:93
 msgid "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
 msgstr ""
 
-#: mod/friendica.php:105
+#: mod/friendica.php:98
 msgid "Installed addons/apps:"
 msgstr "已安装的插件/应用:"
 
-#: mod/friendica.php:119
+#: mod/friendica.php:112
 msgid "No installed addons/apps"
 msgstr "没有已安装的插件或应用"
 
-#: mod/friendica.php:124
+#: mod/friendica.php:117
 #, php-format
 msgid "Read about the <a href=\"%1$s/tos\">Terms of Service</a> of this node."
 msgstr "阅读此节点的<a href=\"%1$s/tos\">服务条款</a>。"
 
-#: mod/friendica.php:129
+#: mod/friendica.php:122
 msgid "On this server the following remote servers are blocked."
 msgstr "在这个服务器上以下远程服务器被封禁了。"
 
-#: mod/friendica.php:130 mod/admin.php:363 mod/admin.php:381
-#: mod/dfrn_request.php:345 src/Model/Contact.php:1582
-msgid "Blocked domain"
-msgstr "被封禁的域名"
-
-#: mod/friendica.php:130 mod/admin.php:364 mod/admin.php:382
-msgid "Reason for the block"
-msgstr "封禁原因"
-
-#: mod/display.php:303 mod/cal.php:144 mod/profile.php:175
-msgid "Access to this profile has been restricted."
-msgstr "使用权这个简介被限制了."
+#: mod/fsuggest.php:73
+msgid "Friend suggestion sent."
+msgstr "朋友建议发送了。"
 
-#: mod/wall_upload.php:39 mod/wall_upload.php:55 mod/wall_upload.php:113
-#: mod/wall_upload.php:164 mod/wall_upload.php:167 mod/wall_attach.php:27
-#: mod/wall_attach.php:34 mod/wall_attach.php:89
-msgid "Invalid request."
-msgstr "无效请求。"
+#: mod/fsuggest.php:102
+msgid "Suggest Friends"
+msgstr "推荐的朋友们"
 
-#: mod/wall_upload.php:195 mod/profile_photo.php:151 mod/photos.php:776
-#: mod/photos.php:779 mod/photos.php:808
+#: mod/fsuggest.php:104
 #, php-format
-msgid "Image exceeds size limit of %s"
-msgstr "图片超过 %s 的大小限制"
+msgid "Suggest a friend for %s"
+msgstr "给 %s 推荐朋友"
 
-#: mod/wall_upload.php:209 mod/profile_photo.php:160 mod/photos.php:831
-msgid "Unable to process image."
-msgstr "处理不了图像."
+#: mod/group.php:40
+msgid "Group created."
+msgstr "群组已创建。"
 
-#: mod/wall_upload.php:240 mod/item.php:473 src/Object/Image.php:966
-#: src/Object/Image.php:982 src/Object/Image.php:990 src/Object/Image.php:1015
-msgid "Wall Photos"
-msgstr "墙照片"
+#: mod/group.php:46
+msgid "Could not create group."
+msgstr "无法创建群组。"
 
-#: mod/wall_upload.php:248 mod/profile_photo.php:305 mod/photos.php:860
-msgid "Image upload failed."
-msgstr "图像上载失败了."
+#: mod/group.php:60 mod/group.php:186
+msgid "Group not found."
+msgstr "组找不到。"
 
-#: mod/newmember.php:11
-msgid "Welcome to Friendica"
-msgstr "Friendica欢迎你"
+#: mod/group.php:74
+msgid "Group name changed."
+msgstr "组名变化了。"
 
-#: mod/newmember.php:12
-msgid "New Member Checklist"
-msgstr "æ\96°æ\88\90å\91\98æ¸\85å\8d\95"
+#: mod/group.php:87 mod/profperm.php:30 src/App.php:1822
+msgid "Permission denied"
+msgstr "æ\9d\83é\99\90ä¸\8då¤\9f"
 
-#: mod/newmember.php:14
-msgid ""
-"We would like to offer some tips and links to help make your experience "
-"enjoyable. Click any item to visit the relevant page. A link to this page "
-"will be visible from your home page for two weeks after your initial "
-"registration and then will quietly disappear."
-msgstr "我们想提供一些建议和链接以助于让你有愉快的经历。点击任意一项访问相应的网页。在你注册之后,到这个页面的链接会在你的主页显示两周,之后悄声地消失。"
+#: mod/group.php:105
+msgid "Save Group"
+msgstr "保存组"
 
-#: mod/newmember.php:15
-msgid "Getting Started"
-msgstr "入门"
+#: mod/group.php:106
+msgid "Filter"
+msgstr ""
 
-#: mod/newmember.php:17
-msgid "Friendica Walk-Through"
-msgstr "Friendica 漫游"
+#: mod/group.php:111
+msgid "Create a group of contacts/friends."
+msgstr "创建一组联系人/朋友。"
 
-#: mod/newmember.php:17
-msgid ""
-"On your <em>Quick Start</em> page - find a brief introduction to your "
-"profile and network tabs, make some new connections, and find some groups to"
-" join."
-msgstr "在你的<em>快速上手</em>页-找到一个简要的对你的简介和网络标签的介绍,创建一些新的连接,并找一些群组加入。"
+#: mod/group.php:112 mod/group.php:135 mod/group.php:226
+#: src/Model/Group.php:413
+msgid "Group Name: "
+msgstr "组名:"
 
-#: mod/newmember.php:21
-msgid "Go to Your Settings"
-msgstr "您的设置"
+#: mod/group.php:127 src/Model/Group.php:410
+msgid "Contacts not in any group"
+msgstr "不在任何组的联系人"
 
-#: mod/newmember.php:21
-msgid ""
-"On your <em>Settings</em> page -  change your initial password. Also make a "
-"note of your Identity Address. This looks just like an email address - and "
-"will be useful in making friends on the free social web."
-msgstr "在你的<em>设置</em>页 - 改变你最初的密码。同时也记住你的身份地址。这看起来像一个电子邮件地址 - 并且在这个自由的社交网络交友时会有用。"
+#: mod/group.php:158
+msgid "Group removed."
+msgstr "组删除了。"
 
-#: mod/newmember.php:22
-msgid ""
-"Review the other settings, particularly the privacy settings. An unpublished"
-" directory listing is like having an unlisted phone number. In general, you "
-"should probably publish your listing - unless all of your friends and "
-"potential friends know exactly how to find you."
-msgstr "校对别的设置,特别是隐私设置。一个未发布的目录项目是跟未出版的电话号码一样。平时,你可能应该出版你的目录项目-除非都你的朋友们和可交的朋友们已经知道确切地怎么找你。"
+#: mod/group.php:160
+msgid "Unable to remove group."
+msgstr "不能删除组。"
 
-#: mod/newmember.php:26 mod/profile_photo.php:246 mod/profiles.php:598
-msgid "Upload Profile Photo"
-msgstr "上传简历照片"
+#: mod/group.php:219
+msgid "Delete Group"
+msgstr "删除群组"
 
-#: mod/newmember.php:26
-msgid ""
-"Upload a profile photo if you have not done so already. Studies have shown "
-"that people with real photos of themselves are ten times more likely to make"
-" friends than people who do not."
-msgstr "上传一张简历照片除非你已经做过。研究表明有真正自己的照片的人比没有的交朋友们可能多十倍。"
+#: mod/group.php:230
+msgid "Edit Group Name"
+msgstr "编辑群组名称"
 
-#: mod/newmember.php:27
-msgid "Edit Your Profile"
-msgstr "编辑您的简介"
+#: mod/group.php:241
+msgid "Members"
+msgstr "成员"
 
-#: mod/newmember.php:27
-msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown"
-" visitors."
-msgstr "随意编你的<strong>公开的</strong>简历。评论设置为藏起来你的朋友表和简历过陌生来客。"
+#: mod/group.php:243 src/Module/Contact.php:707
+msgid "All Contacts"
+msgstr "所有联系人"
 
-#: mod/newmember.php:28
-msgid "Profile Keywords"
-msgstr "ç®\80ä»\8bå\85³é\94®å­\97"
+#: mod/group.php:244 mod/network.php:650
+msgid "Group is empty"
+msgstr "ç»\84没æ\9c\89æ\88\90å\91\98"
 
-#: mod/newmember.php:28
-msgid ""
-"Set some public keywords for your default profile which describe your "
-"interests. We may be able to find other people with similar interests and "
-"suggest friendships."
-msgstr "指定一些公开关键字在您的默认简介描述您兴趣。我们可能找得了别人有相似兴趣和建议友谊。"
+#: mod/group.php:257
+msgid "Remove contact from group"
+msgstr ""
 
-#: mod/newmember.php:30
-msgid "Connecting"
-msgstr "连接着"
+#: mod/group.php:275 mod/profperm.php:119
+msgid "Click on a contact to add or remove."
+msgstr "单击联系人以添加或删除。"
 
-#: mod/newmember.php:36
-msgid "Importing Emails"
-msgstr "进口着邮件"
+#: mod/group.php:289
+msgid "Add contact to group"
+msgstr ""
+
+#: mod/hcard.php:19
+msgid "No profile"
+msgstr "无简介"
+
+#: mod/help.php:51
+msgid "Help:"
+msgstr "帮助:"
+
+#: mod/help.php:58 src/Content/Nav.php:183 view/theme/vier/theme.php:294
+msgid "Help"
+msgstr "帮助"
+
+#: mod/help.php:64 src/App.php:1740
+msgid "Not Found"
+msgstr "未发现"
+
+#: mod/home.php:40
+#, php-format
+msgid "Welcome to %s"
+msgstr "%s欢迎你"
+
+#: mod/invite.php:38
+msgid "Total invitation limit exceeded."
+msgstr "邀请限超过了。"
+
+#: mod/invite.php:60
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : 不是效的电子邮件地址."
+
+#: mod/invite.php:87
+msgid "Please join us on Friendica"
+msgstr "请加入我们再Friendica"
+
+#: mod/invite.php:96
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "邀请限超过了。请联系您的网站管理员。"
+
+#: mod/invite.php:100
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : 送消息失败了。"
+
+#: mod/invite.php:104
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d消息传送了。"
+
+#: mod/invite.php:122
+msgid "You have no more invitations available"
+msgstr "您没有别的邀请"
 
-#: mod/newmember.php:36
+#: mod/invite.php:130
+#, php-format
 msgid ""
-"Enter your email access information on your Connector Settings page if you "
-"wish to import and interact with friends or mailing lists from your email "
-"INBOX"
-msgstr "输入你电子邮件使用信息在插销设置页,要是你想用你的电子邮件进口和互动朋友们或邮件表。"
+"Visit %s for a list of public sites that you can join. Friendica members on "
+"other sites can all connect with each other, as well as with members of many"
+" other social networks."
+msgstr "参观%s看一单公开网站您会加入。Friendica成员在别的网站都会互相连接,再跟很多别的社会网络。"
 
-#: mod/newmember.php:39
-msgid "Go to Your Contacts Page"
-msgstr "转到您的联系人页面"
+#: mod/invite.php:132
+#, php-format
+msgid ""
+"To accept this invitation, please visit and register at %s or any other "
+"public Friendica website."
+msgstr "为接受这个邀请,请再%s或什么别的Friendica网站注册。"
 
-#: mod/newmember.php:39
+#: mod/invite.php:133
+#, php-format
 msgid ""
-"Your Contacts page is your gateway to managing friendships and connecting "
-"with friends on other networks. Typically you enter their address or site "
-"URL in the <em>Add New Contact</em> dialog."
-msgstr "您熟人页是您门口为管理熟人和连接朋友们在别的网络。典型您输入他的地址或者网站URL在<em>添加新熟人</em>对话框。"
+"Friendica sites all inter-connect to create a huge privacy-enhanced social "
+"web that is owned and controlled by its members. They can also connect with "
+"many traditional social networks. See %s for a list of alternate Friendica "
+"sites you can join."
+msgstr "Friendica 站点互相连接来创建一个增强隐私的由他们的成员拥有并控制的社交网络。它们也能跟多传统的社交网络连接。看 %s 来获取一份你可以选择加入的 Friendica 站点。"
 
-#: mod/newmember.php:40
-msgid "Go to Your Site's Directory"
-msgstr "您网站的目录"
+#: mod/invite.php:137
+msgid ""
+"Our apologies. This system is not currently configured to connect with other"
+" public sites or invite members."
+msgstr "不好意思。这个系统目前没设置跟别的公开网站连接或邀请成员。"
 
-#: mod/newmember.php:40
+#: mod/invite.php:141
 msgid ""
-"The Directory page lets you find other people in this network or other "
-"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
-"their profile page. Provide your own Identity Address if requested."
-msgstr "目录页让你在这个网络或者其他的联邦的站点找到其他人。在他们的简介页找一个<em>连接</em>或<em>关注</em>链接。如果需要,提供你自己的身份地址。"
+"Friendica sites all inter-connect to create a huge privacy-enhanced social "
+"web that is owned and controlled by its members. They can also connect with "
+"many traditional social networks."
+msgstr "各 Friendica 站点相互连接以创造出一个由其组成成员控制拥有的有强大隐私保护能力的大型社交网络。各站点同时也能够接入许多传统社交网络。"
 
-#: mod/newmember.php:41
-msgid "Finding New People"
-msgstr "找新人"
+#: mod/invite.php:140
+#, php-format
+msgid "To accept this invitation, please visit and register at %s."
+msgstr "要接受这个邀请,请在 %s 访问并注册。"
 
-#: mod/newmember.php:41
+#: mod/invite.php:147
+msgid "Send invitations"
+msgstr "发请柬"
+
+#: mod/invite.php:148
+msgid "Enter email addresses, one per line:"
+msgstr "输入电子邮件地址,一行一个:"
+
+#: mod/invite.php:149 mod/message.php:257 mod/message.php:437
+#: mod/wallmessage.php:137
+msgid "Your message:"
+msgstr "你的消息:"
+
+#: mod/invite.php:149
 msgid ""
-"On the side panel of the Contacts page are several tools to find new "
-"friends. We can match people by interest, look up people by name or "
-"interest, and provide suggestions based on network relationships. On a brand"
-" new site, friend suggestions will usually begin to be populated within 24 "
-"hours."
-msgstr "在熟人页的工具栏有一些工具为找新朋友们。我们会使人们相配按名或兴趣,和以网络关系作为提醒建议的根据。在新网站,朋友建议平常开始24小时后。"
+"You are cordially invited to join me and other close friends on Friendica - "
+"and help us to create a better social web."
+msgstr "在 Friendica,你被诚挚地邀请来加入我和其他亲密的朋友-并帮助我们创建更好的社会网络。"
 
-#: mod/newmember.php:43 src/Model/Group.php:402
-msgid "Groups"
-msgstr ""
+#: mod/invite.php:151
+msgid "You will need to supply this invitation code: $invite_code"
+msgstr "您要输入这个邀请密码:$invite_code"
 
-#: mod/newmember.php:45
-msgid "Group Your Contacts"
-msgstr "给你的联系人分组"
+#: mod/invite.php:151
+msgid ""
+"Once you have registered, please connect with me via my profile page at:"
+msgstr "您一注册,请页跟我连接,用我的简介在:"
 
-#: mod/newmember.php:45
+#: mod/invite.php:153
 msgid ""
-"Once you have made some friends, organize them into private conversation "
-"groups from the sidebar of your Contacts page and then you can interact with"
-" each group privately on your Network page."
-msgstr "您交朋友们后,组织他们分私人交流组在您熟人页的边栏,您会私下地跟组交流在您的网络页。"
+"For more information about the Friendica project and why we feel it is "
+"important, please visit http://friendi.ca"
+msgstr "欲了解更多关于 Friendica 项目的信息以及为什么我们认为这很重要,请访问 http://friendi.ca"
 
-#: mod/newmember.php:48
-msgid "Why Aren't My Posts Public?"
-msgstr "æ\88\91æ\96\87ç« æ\80\8eä¹\88没å\85¬å¼\80ç\9a\84ï¼\9f"
+#: mod/item.php:118
+msgid "Unable to locate original post."
+msgstr "æ\89¾ä¸\8då\88°å½\93å\88\9dç\9a\84æ\96°é\97»"
 
-#: mod/newmember.php:48
+#: mod/item.php:286
+msgid "Empty post discarded."
+msgstr "空帖子被丢弃了。"
+
+#: mod/item.php:809
+#, php-format
 msgid ""
-"Friendica respects your privacy. By default, your posts will only show up to"
-" people you've added as friends. For more information, see the help section "
-"from the link above."
-msgstr "Friendica尊敬您的隐私。默认是您文章只被您朋友们看。更多消息在帮助部分在上面的链接。"
+"This message was sent to you by %s, a member of the Friendica social "
+"network."
+msgstr "这个新闻是由%s,Friendica社会化网络成员之一,发给你。"
 
-#: mod/newmember.php:52
-msgid "Getting Help"
-msgstr "获取帮助"
+#: mod/item.php:811
+#, php-format
+msgid "You may visit them online at %s"
+msgstr "你可以网上拜访他在%s"
 
-#: mod/newmember.php:54
-msgid "Go to the Help Section"
-msgstr "看帮助部分"
+#: mod/item.php:812
+msgid ""
+"Please contact the sender by replying to this post if you do not wish to "
+"receive these messages."
+msgstr "你不想受到这些新闻的话,请回答这个新闻给发者联系。"
+
+#: mod/item.php:816
+#, php-format
+msgid "%s posted an update."
+msgstr "%s贴上一个新闻。"
+
+#: mod/localtime.php:19 src/Model/Event.php:34 src/Model/Event.php:840
+msgid "l F d, Y \\@ g:i A"
+msgstr "l F d, Y \\@ g:i A"
+
+#: mod/localtime.php:33
+msgid "Time Conversion"
+msgstr "时间装换"
 
-#: mod/newmember.php:54
+#: mod/localtime.php:35
 msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program"
-" features and resources."
-msgstr "我们<strong>帮助</strong>页可查阅到详情关于别的编程特点和资源。"
+"Friendica provides this service for sharing events with other networks and "
+"friends in unknown timezones."
+msgstr "Friendica提供这个服务目的是分享项目跟别的网络和朋友们在别的时区。"
+
+#: mod/localtime.php:39
+#, php-format
+msgid "UTC time: %s"
+msgstr "UTC时间: %s"
+
+#: mod/localtime.php:42
+#, php-format
+msgid "Current timezone: %s"
+msgstr "现在时区: %s"
+
+#: mod/localtime.php:46
+#, php-format
+msgid "Converted localtime: %s"
+msgstr "装换的当地时间:%s"
+
+#: mod/localtime.php:52
+msgid "Please select your timezone:"
+msgstr "请选择你的时区:"
+
+#: mod/lockview.php:46 mod/lockview.php:57
+msgid "Remote privacy information not available."
+msgstr "摇隐私信息无效"
+
+#: mod/lockview.php:66
+msgid "Visible to:"
+msgstr "可见给:"
 
-#: mod/lostpass.php:28
+#: mod/lostpass.php:26
 msgid "No valid account found."
 msgstr "找不到效的账户。"
 
-#: mod/lostpass.php:40
+#: mod/lostpass.php:38
 msgid "Password reset request issued. Check your email."
 msgstr "重设密码要求发布了。核对您的收件箱。"
 
-#: mod/lostpass.php:46
+#: mod/lostpass.php:44
 #, php-format
 msgid ""
 "\n"
@@ -4049,7 +4129,7 @@ msgid ""
 "\t\tissued this request."
 msgstr ""
 
-#: mod/lostpass.php:57
+#: mod/lostpass.php:55
 #, php-format
 msgid ""
 "\n"
@@ -4066,66 +4146,66 @@ msgid ""
 "\t\tLogin Name:\t%3$s"
 msgstr ""
 
-#: mod/lostpass.php:76
+#: mod/lostpass.php:74
 #, php-format
 msgid "Password reset requested at %s"
 msgstr "重设密码要求被发布%s"
 
-#: mod/lostpass.php:92
+#: mod/lostpass.php:90
 msgid ""
 "Request could not be verified. (You may have previously submitted it.) "
 "Password reset failed."
 msgstr "要求确认不了。(您可能已经提交它。)重设密码失败了。"
 
-#: mod/lostpass.php:105
+#: mod/lostpass.php:103
 msgid "Request has expired, please make a new one."
 msgstr "请求超时,请重试。"
 
-#: mod/lostpass.php:120
+#: mod/lostpass.php:118
 msgid "Forgot your Password?"
 msgstr "忘记你的密码吗?"
 
-#: mod/lostpass.php:121
+#: mod/lostpass.php:119
 msgid ""
 "Enter your email address and submit to have your password reset. Then check "
 "your email for further instructions."
 msgstr "输入您的邮件地址和提交为重置密码。然后核对收件箱看别的说明。"
 
-#: mod/lostpass.php:122 src/Module/Login.php:312
+#: mod/lostpass.php:120 src/Module/Login.php:321
 msgid "Nickname or Email: "
 msgstr "昵称或邮件地址:"
 
-#: mod/lostpass.php:123
+#: mod/lostpass.php:121
 msgid "Reset"
 msgstr "复位"
 
-#: mod/lostpass.php:139 src/Module/Login.php:324
+#: mod/lostpass.php:137 src/Module/Login.php:333
 msgid "Password Reset"
 msgstr "复位密码"
 
-#: mod/lostpass.php:140
+#: mod/lostpass.php:138
 msgid "Your password has been reset as requested."
 msgstr "您的密码被重设如要求的。"
 
-#: mod/lostpass.php:141
+#: mod/lostpass.php:139
 msgid "Your new password is"
 msgstr "你的新的密码是"
 
-#: mod/lostpass.php:142
+#: mod/lostpass.php:140
 msgid "Save or copy your new password - and then"
 msgstr "保存或复制新密码-之后"
 
-#: mod/lostpass.php:143
+#: mod/lostpass.php:141
 msgid "click here to login"
 msgstr "点击这里登录"
 
-#: mod/lostpass.php:144
+#: mod/lostpass.php:142
 msgid ""
 "Your password may be changed from the <em>Settings</em> page after "
 "successful login."
 msgstr "您的密码可以在成功登录后在<em>设置</em>页修改。"
 
-#: mod/lostpass.php:152
+#: mod/lostpass.php:150
 #, php-format
 msgid ""
 "\n"
@@ -4136,7 +4216,7 @@ msgid ""
 "\t\t"
 msgstr ""
 
-#: mod/lostpass.php:158
+#: mod/lostpass.php:156
 #, php-format
 msgid ""
 "\n"
@@ -4150,3642 +4230,3418 @@ msgid ""
 "\t\t"
 msgstr ""
 
-#: mod/lostpass.php:174
+#: mod/lostpass.php:172
 #, php-format
 msgid "Your password has been changed at %s"
 msgstr "您密码被变化在%s"
 
-#: mod/babel.php:22
-msgid "Source input"
-msgstr "源码输入"
+#: mod/maintenance.php:26
+msgid "System down for maintenance"
+msgstr "系统关闭为了维持"
 
-#: mod/babel.php:28
-msgid "BBCode::toPlaintext"
-msgstr ""
+#: mod/manage.php:178
+msgid "Manage Identities and/or Pages"
+msgstr "管理身份或页"
 
-#: mod/babel.php:34
-msgid "BBCode::convert (raw HTML)"
-msgstr ""
+#: mod/manage.php:179
+msgid ""
+"Toggle between different identities or community/group pages which share "
+"your account details or which you have been granted \"manage\" permissions"
+msgstr "交替不同同一人或社会/组页合用您的账户或给您「管理」批准"
 
-#: mod/babel.php:39
-msgid "BBCode::convert"
-msgstr ""
+#: mod/manage.php:180
+msgid "Select an identity to manage: "
+msgstr "选择同一个人管理:"
 
-#: mod/babel.php:45
-msgid "BBCode::convert => HTML::toBBCode"
-msgstr ""
+#: mod/match.php:46
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "没有符合的关键字。请在您的默认简介加关键字。"
 
-#: mod/babel.php:51
-msgid "BBCode::toMarkdown"
-msgstr ""
+#: mod/match.php:112 src/Content/Pager.php:196
+msgid "first"
+msgstr "首先"
 
-#: mod/babel.php:57
-msgid "BBCode::toMarkdown => Markdown::convert"
-msgstr ""
+#: mod/match.php:117 src/Content/Pager.php:256
+msgid "next"
+msgstr "下个"
 
-#: mod/babel.php:63
-msgid "BBCode::toMarkdown => Markdown::toBBCode"
-msgstr ""
+#: mod/match.php:132
+msgid "Profile Match"
+msgstr "简介符合"
 
-#: mod/babel.php:69
-msgid "BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"
-msgstr ""
+#: mod/message.php:33 mod/message.php:116 src/Content/Nav.php:248
+msgid "New Message"
+msgstr "新的消息"
 
-#: mod/babel.php:76
-msgid "Source input \\x28Diaspora format\\x29"
-msgstr ""
+#: mod/message.php:70 mod/wallmessage.php:60
+msgid "No recipient selected."
+msgstr "没有选择的接受者。"
 
-#: mod/babel.php:82
-msgid "Markdown::toBBCode"
-msgstr ""
+#: mod/message.php:74
+msgid "Unable to locate contact information."
+msgstr "无法找到联系人信息。"
 
-#: mod/babel.php:89
-msgid "Raw HTML input"
-msgstr "原始 HTML 输入"
+#: mod/message.php:77 mod/wallmessage.php:66
+msgid "Message could not be sent."
+msgstr "消息发不了。"
 
-#: mod/babel.php:94
-msgid "HTML Input"
-msgstr "HTML 输入"
+#: mod/message.php:80 mod/wallmessage.php:69
+msgid "Message collection failure."
+msgstr "通信受到错误。"
 
-#: mod/babel.php:100
-msgid "HTML::toBBCode"
-msgstr ""
+#: mod/message.php:83 mod/wallmessage.php:72
+msgid "Message sent."
+msgstr "消息发了"
 
-#: mod/babel.php:106
-msgid "HTML::toPlaintext"
-msgstr ""
+#: mod/message.php:110 mod/notifications.php:47 mod/notifications.php:185
+#: mod/notifications.php:233
+msgid "Discard"
+msgstr "丢弃"
 
-#: mod/babel.php:114
-msgid "Source text"
-msgstr "æº\90æ\96\87æ\9c¬"
+#: mod/message.php:123 src/Content/Nav.php:245 view/theme/frio/theme.php:269
+msgid "Messages"
+msgstr "æ\88æ\81¯"
 
-#: mod/babel.php:115
-msgid "BBCode"
+#: mod/message.php:148
+msgid "Do you really want to delete this message?"
+msgstr "您真的想删除这个通知吗?"
+
+#: mod/message.php:166
+msgid "Conversation not found."
 msgstr ""
 
-#: mod/babel.php:116
-msgid "Markdown"
-msgstr "Markdown"
+#: mod/message.php:171
+msgid "Message deleted."
+msgstr "消息删除了。"
 
-#: mod/babel.php:117
-msgid "HTML"
-msgstr "HTML"
+#: mod/message.php:176 mod/message.php:191
+msgid "Conversation removed."
+msgstr "交流删除了。"
 
-#: mod/admin.php:109
-msgid "Theme settings updated."
-msgstr "主题设置更新了。"
+#: mod/message.php:205 mod/message.php:362 mod/wallmessage.php:123
+msgid "Please enter a link URL:"
+msgstr "请输入一个链接 URL:"
 
-#: mod/admin.php:182 src/Content/Nav.php:175
-msgid "Information"
-msgstr "资料"
+#: mod/message.php:248 mod/wallmessage.php:128
+msgid "Send Private Message"
+msgstr "发私人的通信"
 
-#: mod/admin.php:183
-msgid "Overview"
-msgstr "概览"
+#: mod/message.php:249 mod/message.php:432 mod/wallmessage.php:130
+msgid "To:"
+msgstr "到:"
 
-#: mod/admin.php:184 mod/admin.php:723
-msgid "Federation Statistics"
-msgstr "联邦网络统计"
+#: mod/message.php:253 mod/message.php:434 mod/wallmessage.php:131
+msgid "Subject:"
+msgstr "题目:"
 
-#: mod/admin.php:185
-msgid "Configuration"
-msgstr "配置"
+#: mod/message.php:291
+msgid "No messages."
+msgstr "没有消息"
 
-#: mod/admin.php:186 mod/admin.php:1425
-msgid "Site"
-msgstr "网站"
+#: mod/message.php:354
+msgid "Message not available."
+msgstr "通信不可用的"
 
-#: mod/admin.php:187 mod/admin.php:1354 mod/admin.php:1896 mod/admin.php:1913
-msgid "Users"
-msgstr "用户"
+#: mod/message.php:408
+msgid "Delete message"
+msgstr "删除消息"
 
-#: mod/admin.php:189 mod/admin.php:2283 mod/admin.php:2327
-msgid "Themes"
-msgstr "主题"
+#: mod/message.php:410 mod/message.php:542
+msgid "D, d M Y - g:i A"
+msgstr "D, d M Y - g:i A"
 
-#: mod/admin.php:192
-msgid "Database"
-msgstr "数据库"
+#: mod/message.php:425 mod/message.php:539
+msgid "Delete conversation"
+msgstr "删除交谈"
 
-#: mod/admin.php:193
-msgid "DB updates"
-msgstr "数据库更新"
+#: mod/message.php:427
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "没可用的安全交通。您<strong>可能</strong>会在发送人的简介页会回答。"
 
-#: mod/admin.php:194 mod/admin.php:766
-msgid "Inspect Queue"
-msgstr "检查队列"
+#: mod/message.php:431
+msgid "Send Reply"
+msgstr "发回答"
 
-#: mod/admin.php:195
-msgid "Inspect worker Queue"
-msgstr ""
+#: mod/message.php:514
+#, php-format
+msgid "Unknown sender - %s"
+msgstr "生发送人-%s"
 
-#: mod/admin.php:196
-msgid "Tools"
-msgstr "工具"
+#: mod/message.php:516
+#, php-format
+msgid "You and %s"
+msgstr "您和%s"
 
-#: mod/admin.php:197
-msgid "Contact Blocklist"
-msgstr "联系人屏蔽列表"
+#: mod/message.php:518
+#, php-format
+msgid "%s and You"
+msgstr "%s和您"
 
-#: mod/admin.php:198 mod/admin.php:372
-msgid "Server Blocklist"
-msgstr "服务器屏蔽列表"
+#: mod/message.php:545
+#, php-format
+msgid "%d message"
+msgid_plural "%d messages"
+msgstr[0] "%d通知"
 
-#: mod/admin.php:199 mod/admin.php:531
-msgid "Delete Item"
-msgstr "删除项目"
+#: mod/network.php:183 mod/search.php:39
+msgid "Remove term"
+msgstr "删除关键字"
 
-#: mod/admin.php:200 mod/admin.php:201 mod/admin.php:2402
-msgid "Logs"
-msgstr "记录"
+#: mod/network.php:190 mod/search.php:48
+msgid "Saved Searches"
+msgstr "保存的搜索"
 
-#: mod/admin.php:202 mod/admin.php:2469
-msgid "View Logs"
-msgstr "æ\9f¥ç\9c\8bæ\97¥å¿\97"
+#: mod/network.php:191 src/Model/Group.php:404
+msgid "add"
+msgstr "æ·»å\8a "
 
-#: mod/admin.php:204
-msgid "Diagnostics"
-msgstr "诊断"
+#: mod/network.php:558
+#, php-format
+msgid ""
+"Warning: This group contains %s member from a network that doesn't allow non"
+" public messages."
+msgid_plural ""
+"Warning: This group contains %s members from a network that doesn't allow "
+"non public messages."
+msgstr[0] "警告:这个组包含 %s 来自不允许非公开消息的网络的成员。"
 
-#: mod/admin.php:205
-msgid "PHP Info"
-msgstr "PHP Info"
+#: mod/network.php:561
+msgid "Messages in this group won't be send to these receivers."
+msgstr "这个组中的消息不会被发送至这些接收者。"
 
-#: mod/admin.php:206
-msgid "probe address"
-msgstr "æ\8e¢æµ\8bå\9c°å\9d\80"
+#: mod/network.php:629
+msgid "No such group"
+msgstr "没æ\9c\89è¿\99个ç»\84"
 
-#: mod/admin.php:207
-msgid "check webfinger"
-msgstr "检查 webfinger"
+#: mod/network.php:654
+#, php-format
+msgid "Group: %s"
+msgstr "组:%s"
 
-#: mod/admin.php:226 src/Content/Nav.php:218
-msgid "Admin"
-msgstr "管ç\90\86"
+#: mod/network.php:680
+msgid "Private messages to this person are at risk of public disclosure."
+msgstr "ç§\81人é\80\9aä¿¡ç»\99è¿\99个人å\9b\9e被å\85¬å¼\80ã\80\82"
 
-#: mod/admin.php:227
-msgid "Addon Features"
-msgstr "æ\8f\92件ç\89¹æ\80§"
+#: mod/network.php:683
+msgid "Invalid contact."
+msgstr "æ\97 æ\95\88ç\9a\84è\81\94系人ã\80\82"
 
-#: mod/admin.php:228
-msgid "User registrations waiting for confirmation"
-msgstr "用户注册等确认"
+#: mod/network.php:961
+msgid "Commented Order"
+msgstr "评论时间顺序"
 
-#: mod/admin.php:309 mod/admin.php:371 mod/admin.php:488 mod/admin.php:530
-#: mod/admin.php:722 mod/admin.php:765 mod/admin.php:806 mod/admin.php:914
-#: mod/admin.php:1424 mod/admin.php:1895 mod/admin.php:2012 mod/admin.php:2072
-#: mod/admin.php:2282 mod/admin.php:2326 mod/admin.php:2401 mod/admin.php:2468
-msgid "Administration"
-msgstr "管理"
+#: mod/network.php:964
+msgid "Sort by Comment Date"
+msgstr "按评论日期顺序排列"
 
-#: mod/admin.php:311
-msgid "Display Terms of Service"
-msgstr "显示服务条款"
+#: mod/network.php:969
+msgid "Posted Order"
+msgstr "发布时间顺序"
 
-#: mod/admin.php:311
-msgid ""
-"Enable the Terms of Service page. If this is enabled a link to the terms "
-"will be added to the registration form and the general information page."
-msgstr ""
+#: mod/network.php:972
+msgid "Sort by Post Date"
+msgstr "按发布日期顺序排列"
 
-#: mod/admin.php:312
-msgid "Display Privacy Statement"
-msgstr "显示隐私说明"
+#: mod/network.php:979 mod/profiles.php:595
+#: src/Core/NotificationsManager.php:185
+msgid "Personal"
+msgstr "私人"
 
-#: mod/admin.php:312
-#, php-format
-msgid ""
-"Show some informations regarding the needed information to operate the node "
-"according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."
-msgstr ""
+#: mod/network.php:982
+msgid "Posts that mention or involve you"
+msgstr "提及你或你参与的文章"
 
-#: mod/admin.php:313
-msgid "Privacy Statement Preview"
-msgstr "隐私声明预览"
+#: mod/network.php:989
+msgid "New"
+msgstr ""
 
-#: mod/admin.php:315
-msgid "The Terms of Service"
-msgstr "æ\9c\8då\8a¡æ\9d¡æ¬¾"
+#: mod/network.php:992
+msgid "Activity Stream - by date"
+msgstr "æ´»å\8a¨æµ\81ï¼\8dæ\8c\89æ\97¥æ\9c\9f"
 
-#: mod/admin.php:315
-msgid ""
-"Enter the Terms of Service for your node here. You can use BBCode. Headers "
-"of sections should be [h2] and below."
-msgstr ""
+#: mod/network.php:1000
+msgid "Shared Links"
+msgstr "共享的链接"
 
-#: mod/admin.php:363
-msgid "The blocked domain"
-msgstr "被封禁的域名"
+#: mod/network.php:1003
+msgid "Interesting Links"
+msgstr "有意思的超链接"
 
-#: mod/admin.php:364 mod/admin.php:377
-msgid "The reason why you blocked this domain."
-msgstr "封禁这个域名的原因。"
+#: mod/network.php:1010
+msgid "Starred"
+msgstr "被星"
 
-#: mod/admin.php:365
-msgid "Delete domain"
-msgstr "删除域名"
+#: mod/network.php:1013
+msgid "Favourite Posts"
+msgstr "最喜欢的文章"
 
-#: mod/admin.php:365
-msgid "Check to delete this entry from the blocklist"
-msgstr "选中以从列表中删除此条目"
+#: mod/newmember.php:12
+msgid "Welcome to Friendica"
+msgstr "Friendica欢迎你"
 
-#: mod/admin.php:373
-msgid ""
-"This page can be used to define a black list of servers from the federated "
-"network that are not allowed to interact with your node. For all entered "
-"domains you should also give a reason why you have blocked the remote "
-"server."
-msgstr ""
+#: mod/newmember.php:13
+msgid "New Member Checklist"
+msgstr "新成员清单"
 
-#: mod/admin.php:374
+#: mod/newmember.php:15
 msgid ""
-"The list of blocked servers will be made publically available on the "
-"/friendica page so that your users and people investigating communication "
-"problems can find the reason easily."
-msgstr ""
+"We would like to offer some tips and links to help make your experience "
+"enjoyable. Click any item to visit the relevant page. A link to this page "
+"will be visible from your home page for two weeks after your initial "
+"registration and then will quietly disappear."
+msgstr "我们想提供一些建议和链接以助于让你有愉快的经历。点击任意一项访问相应的网页。在你注册之后,到这个页面的链接会在你的主页显示两周,之后悄声地消失。"
 
-#: mod/admin.php:375
-msgid "Add new entry to block list"
-msgstr "æ·»å\8a æ\96°æ\9d¡ç\9b®å\88°å±\8fè\94½å\88\97表"
+#: mod/newmember.php:16
+msgid "Getting Started"
+msgstr "å\85¥é\97¨"
 
-#: mod/admin.php:376
-msgid "Server Domain"
-msgstr "服务器域名"
+#: mod/newmember.php:18
+msgid "Friendica Walk-Through"
+msgstr "Friendica 漫游"
 
-#: mod/admin.php:376
+#: mod/newmember.php:18
 msgid ""
-"The domain of the new server to add to the block list. Do not include the "
-"protocol."
-msgstr "需要添加到服务器屏蔽列表的服务器的域名。请勿包括协议。"
+"On your <em>Quick Start</em> page - find a brief introduction to your "
+"profile and network tabs, make some new connections, and find some groups to"
+" join."
+msgstr "在你的<em>快速上手</em>页-找到一个简要的对你的简介和网络标签的介绍,创建一些新的连接,并找一些群组加入。"
 
-#: mod/admin.php:377
-msgid "Block reason"
-msgstr "封禁原因"
+#: mod/newmember.php:22
+msgid "Go to Your Settings"
+msgstr "您的设置"
 
-#: mod/admin.php:378
-msgid "Add Entry"
-msgstr "添加条目"
+#: mod/newmember.php:22
+msgid ""
+"On your <em>Settings</em> page -  change your initial password. Also make a "
+"note of your Identity Address. This looks just like an email address - and "
+"will be useful in making friends on the free social web."
+msgstr "在你的<em>设置</em>页 - 改变你最初的密码。同时也记住你的身份地址。这看起来像一个电子邮件地址 - 并且在这个自由的社交网络交友时会有用。"
 
-#: mod/admin.php:379
-msgid "Save changes to the blocklist"
-msgstr "保存变更到屏蔽列表"
+#: mod/newmember.php:23
+msgid ""
+"Review the other settings, particularly the privacy settings. An unpublished"
+" directory listing is like having an unlisted phone number. In general, you "
+"should probably publish your listing - unless all of your friends and "
+"potential friends know exactly how to find you."
+msgstr "校对别的设置,特别是隐私设置。一个未发布的目录项目是跟未出版的电话号码一样。平时,你可能应该出版你的目录项目-除非都你的朋友们和可交的朋友们已经知道确切地怎么找你。"
 
-#: mod/admin.php:380
-msgid "Current Entries in the Blocklist"
-msgstr "屏蔽列表中的当前条目"
+#: mod/newmember.php:25 mod/profperm.php:117 src/Content/Nav.php:150
+#: src/Model/Profile.php:748 src/Model/Profile.php:881
+#: src/Model/Profile.php:914 src/Module/Contact.php:657
+#: src/Module/Contact.php:872 view/theme/frio/theme.php:261
+msgid "Profile"
+msgstr "简介"
 
-#: mod/admin.php:383
-msgid "Delete entry from blocklist"
-msgstr "删除屏蔽列表中的条目"
+#: mod/newmember.php:27 mod/profiles.php:599 mod/profile_photo.php:254
+msgid "Upload Profile Photo"
+msgstr "上传简历照片"
 
-#: mod/admin.php:386
-msgid "Delete entry from blocklist?"
-msgstr "从屏蔽列表删除条目?"
+#: mod/newmember.php:27
+msgid ""
+"Upload a profile photo if you have not done so already. Studies have shown "
+"that people with real photos of themselves are ten times more likely to make"
+" friends than people who do not."
+msgstr "上传一张简历照片除非你已经做过。研究表明有真正自己的照片的人比没有的交朋友们可能多十倍。"
 
-#: mod/admin.php:412
-msgid "Server added to blocklist."
-msgstr "服务器已添加到屏蔽列表。"
+#: mod/newmember.php:28
+msgid "Edit Your Profile"
+msgstr "编辑您的简介"
 
-#: mod/admin.php:428
-msgid "Site blocklist updated."
-msgstr "站点屏蔽列表已更新。"
+#: mod/newmember.php:28
+msgid ""
+"Edit your <strong>default</strong> profile to your liking. Review the "
+"settings for hiding your list of friends and hiding the profile from unknown"
+" visitors."
+msgstr "随意编你的<strong>公开的</strong>简历。评论设置为藏起来你的朋友表和简历过陌生来客。"
 
-#: mod/admin.php:451 src/Core/Console/GlobalCommunityBlock.php:68
-msgid "The contact has been blocked from the node"
-msgstr "该联系人已被本节点屏蔽。"
+#: mod/newmember.php:29
+msgid "Profile Keywords"
+msgstr "简介关键字"
 
-#: mod/admin.php:453 src/Core/Console/GlobalCommunityBlock.php:65
-#, php-format
-msgid "Could not find any contact entry for this URL (%s)"
-msgstr ""
+#: mod/newmember.php:29
+msgid ""
+"Set some public keywords for your default profile which describe your "
+"interests. We may be able to find other people with similar interests and "
+"suggest friendships."
+msgstr "指定一些公开关键字在您的默认简介描述您兴趣。我们可能找得了别人有相似兴趣和建议友谊。"
 
-#: mod/admin.php:460
-#, php-format
-msgid "%s contact unblocked"
-msgid_plural "%s contacts unblocked"
-msgstr[0] ""
+#: mod/newmember.php:31
+msgid "Connecting"
+msgstr "连接着"
 
-#: mod/admin.php:489
-msgid "Remote Contact Blocklist"
-msgstr ""
+#: mod/newmember.php:37
+msgid "Importing Emails"
+msgstr "进口着邮件"
 
-#: mod/admin.php:490
+#: mod/newmember.php:37
 msgid ""
-"This page allows you to prevent any message from a remote contact to reach "
-"your node."
-msgstr ""
-
-#: mod/admin.php:491
-msgid "Block Remote Contact"
-msgstr ""
+"Enter your email access information on your Connector Settings page if you "
+"wish to import and interact with friends or mailing lists from your email "
+"INBOX"
+msgstr "输入你电子邮件使用信息在插销设置页,要是你想用你的电子邮件进口和互动朋友们或邮件表。"
 
-#: mod/admin.php:492 mod/admin.php:1898
-msgid "select all"
-msgstr "全选"
+#: mod/newmember.php:40
+msgid "Go to Your Contacts Page"
+msgstr "转到您的联系人页面"
 
-#: mod/admin.php:493
-msgid "select none"
-msgstr ""
+#: mod/newmember.php:40
+msgid ""
+"Your Contacts page is your gateway to managing friendships and connecting "
+"with friends on other networks. Typically you enter their address or site "
+"URL in the <em>Add New Contact</em> dialog."
+msgstr "您熟人页是您门口为管理熟人和连接朋友们在别的网络。典型您输入他的地址或者网站URL在<em>添加新熟人</em>对话框。"
 
-#: mod/admin.php:494 mod/admin.php:1907 mod/contacts.php:657
-#: mod/contacts.php:849 mod/contacts.php:1105
-msgid "Block"
-msgstr "屏蔽"
+#: mod/newmember.php:41
+msgid "Go to Your Site's Directory"
+msgstr "您网站的目录"
 
-#: mod/admin.php:495 mod/admin.php:1909 mod/contacts.php:657
-#: mod/contacts.php:849 mod/contacts.php:1105
-msgid "Unblock"
-msgstr "解除屏蔽"
+#: mod/newmember.php:41
+msgid ""
+"The Directory page lets you find other people in this network or other "
+"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
+"their profile page. Provide your own Identity Address if requested."
+msgstr "目录页让你在这个网络或者其他的联邦的站点找到其他人。在他们的简介页找一个<em>连接</em>或<em>关注</em>链接。如果需要,提供你自己的身份地址。"
 
-#: mod/admin.php:496
-msgid "No remote contact is blocked from this node."
-msgstr ""
+#: mod/newmember.php:42
+msgid "Finding New People"
+msgstr "找新人"
 
-#: mod/admin.php:498
-msgid "Blocked Remote Contacts"
-msgstr ""
+#: mod/newmember.php:42
+msgid ""
+"On the side panel of the Contacts page are several tools to find new "
+"friends. We can match people by interest, look up people by name or "
+"interest, and provide suggestions based on network relationships. On a brand"
+" new site, friend suggestions will usually begin to be populated within 24 "
+"hours."
+msgstr "在熟人页的工具栏有一些工具为找新朋友们。我们会使人们相配按名或兴趣,和以网络关系作为提醒建议的根据。在新网站,朋友建议平常开始24小时后。"
 
-#: mod/admin.php:499
-msgid "Block New Remote Contact"
-msgstr ""
+#: mod/newmember.php:44 src/Model/Group.php:405 src/Module/Contact.php:755
+msgid "Groups"
+msgstr ""
 
-#: mod/admin.php:500
-msgid "Photo"
-msgstr "ç\85§ç\89\87"
+#: mod/newmember.php:46
+msgid "Group Your Contacts"
+msgstr "ç»\99ä½ ç\9a\84è\81\94系人å\88\86ç»\84"
 
-#: mod/admin.php:500 mod/profiles.php:391
-msgid "Address"
-msgstr "地址"
+#: mod/newmember.php:46
+msgid ""
+"Once you have made some friends, organize them into private conversation "
+"groups from the sidebar of your Contacts page and then you can interact with"
+" each group privately on your Network page."
+msgstr "您交朋友们后,组织他们分私人交流组在您熟人页的边栏,您会私下地跟组交流在您的网络页。"
 
-#: mod/admin.php:508
-#, php-format
-msgid "%s total blocked contact"
-msgid_plural "%s total blocked contacts"
-msgstr[0] ""
+#: mod/newmember.php:49
+msgid "Why Aren't My Posts Public?"
+msgstr "我文章怎么没公开的?"
 
-#: mod/admin.php:510
-msgid "URL of the remote contact to block."
-msgstr ""
+#: mod/newmember.php:49
+msgid ""
+"Friendica respects your privacy. By default, your posts will only show up to"
+" people you've added as friends. For more information, see the help section "
+"from the link above."
+msgstr "Friendica尊敬您的隐私。默认是您文章只被您朋友们看。更多消息在帮助部分在上面的链接。"
 
-#: mod/admin.php:532
-msgid "Delete this Item"
-msgstr "删除这个项目"
+#: mod/newmember.php:53
+msgid "Getting Help"
+msgstr "获取帮助"
 
-#: mod/admin.php:533
-msgid ""
-"On this page you can delete an item from your node. If the item is a top "
-"level posting, the entire thread will be deleted."
-msgstr ""
+#: mod/newmember.php:55
+msgid "Go to the Help Section"
+msgstr "看帮助部分"
 
-#: mod/admin.php:534
+#: mod/newmember.php:55
 msgid ""
-"You need to know the GUID of the item. You can find it e.g. by looking at "
-"the display URL. The last part of http://example.com/display/123456 is the "
-"GUID, here 123456."
-msgstr ""
+"Our <strong>help</strong> pages may be consulted for detail on other program"
+" features and resources."
+msgstr "我们<strong>帮助</strong>页可查阅到详情关于别的编程特点和资源。"
 
-#: mod/admin.php:535
-msgid "GUID"
-msgstr "GUID"
+#: mod/notes.php:40 src/Model/Profile.php:964
+msgid "Personal Notes"
+msgstr "私人便条"
 
-#: mod/admin.php:535
-msgid "The GUID of the item you want to delete."
-msgstr "你想要删除的项目的 GUID."
+#: mod/notifications.php:38
+msgid "Invalid request identifier."
+msgstr "无效要求身份号。"
 
-#: mod/admin.php:569
-msgid "Item marked for deletion."
-msgstr "被标记为要删除的项目。"
+#: mod/notifications.php:60 mod/notifications.php:184
+#: mod/notifications.php:269 src/Module/Contact.php:624
+#: src/Module/Contact.php:828 src/Module/Contact.php:1088
+msgid "Ignore"
+msgstr "忽视"
 
-#: mod/admin.php:640
-msgid "unknown"
-msgstr "知"
+#: mod/notifications.php:93 src/Content/Nav.php:240
+msgid "Notifications"
+msgstr "知"
 
-#: mod/admin.php:716
-msgid ""
-"This page offers you some numbers to the known part of the federated social "
-"network your Friendica node is part of. These numbers are not complete but "
-"only reflect the part of the network your node is aware of."
-msgstr ""
+#: mod/notifications.php:105
+msgid "Network Notifications"
+msgstr "网络通知"
 
-#: mod/admin.php:717
-msgid ""
-"The <em>Auto Discovered Contact Directory</em> feature is not enabled, it "
-"will improve the data displayed here."
-msgstr ""
+#: mod/notifications.php:110 mod/notify.php:82
+msgid "System Notifications"
+msgstr "系统通知"
 
-#: mod/admin.php:729
-#, php-format
-msgid ""
-"Currently this node is aware of %d nodes with %d registered users from the "
-"following platforms:"
-msgstr ""
+#: mod/notifications.php:115
+msgid "Personal Notifications"
+msgstr "私人通知"
 
-#: mod/admin.php:768 mod/admin.php:809
-msgid "ID"
-msgstr "ID"
+#: mod/notifications.php:120
+msgid "Home Notifications"
+msgstr "主页通知"
 
-#: mod/admin.php:769
-msgid "Recipient Name"
-msgstr "æ\8e¥æ\94¶è\80\85ç\9a\84å\90\8då­\97"
+#: mod/notifications.php:140
+msgid "Show unread"
+msgstr "æ\98¾ç¤ºæ\9cªè¯»"
 
-#: mod/admin.php:770
-msgid "Recipient Profile"
-msgstr "æ\8e¥æ\94¶è\80\85ç\9a\84ç®\80ä»\8b"
+#: mod/notifications.php:140
+msgid "Show all"
+msgstr "æ\98¾ç¤ºå\85¨é\83¨"
 
-#: mod/admin.php:772 mod/admin.php:811
-msgid "Created"
-msgstr "已创建"
+#: mod/notifications.php:151
+msgid "Show Ignored Requests"
+msgstr "显示被忽视的请求"
 
-#: mod/admin.php:773
-msgid "Last Tried"
-msgstr "上次尝试"
+#: mod/notifications.php:151
+msgid "Hide Ignored Requests"
+msgstr "隐藏被忽视的请求"
 
-#: mod/admin.php:774
-msgid ""
-"This page lists the content of the queue for outgoing postings. These are "
-"postings the initial delivery failed for. They will be resend later and "
-"eventually deleted if the delivery fails permanently."
+#: mod/notifications.php:164 mod/notifications.php:241
+msgid "Notification type:"
 msgstr ""
 
-#: mod/admin.php:807
-msgid "Inspect Worker Queue"
+#: mod/notifications.php:167
+msgid "Suggested by:"
 msgstr ""
 
-#: mod/admin.php:810
-msgid "Job Parameters"
-msgstr ""
+#: mod/notifications.php:179 mod/notifications.php:258
+#: src/Module/Contact.php:632
+msgid "Hide this contact from others"
+msgstr "对其他人隐藏这个联系人"
 
-#: mod/admin.php:812
-msgid "Priority"
-msgstr ""
+#: mod/notifications.php:201
+msgid "Claims to be known to you: "
+msgstr "声称被您认识:"
 
-#: mod/admin.php:813
-msgid ""
-"This page lists the currently queued worker jobs. These jobs are handled by "
-"the worker cronjob you've set up during install."
-msgstr ""
-
-#: mod/admin.php:837
-#, php-format
-msgid ""
-"Your DB still runs with MyISAM tables. You should change the engine type to "
-"InnoDB. As Friendica will use InnoDB only features in the future, you should"
-" change this! See <a href=\"%s\">here</a> for a guide that may be helpful "
-"converting the table engines. You may also use the command <tt>php "
-"bin/console.php dbstructure toinnodb</tt> of your Friendica installation for"
-" an automatic conversion.<br />"
-msgstr ""
-
-#: mod/admin.php:844
-#, php-format
-msgid ""
-"There is a new version of Friendica available for download. Your current "
-"version is %1$s, upstream version is %2$s"
-msgstr "有新的 Friendica 版本可供下载。您当前的版本为 %1$s,上游版本为 %2$s"
+#: mod/notifications.php:202
+msgid "yes"
+msgstr "是"
 
-#: mod/admin.php:854
-msgid ""
-"The database update failed. Please run \"php bin/console.php dbstructure "
-"update\" from the command line and have a look at the errors that might "
-"appear."
-msgstr ""
+#: mod/notifications.php:202
+msgid "no"
+msgstr "否"
 
-#: mod/admin.php:860
-msgid "The worker was never executed. Please check your database structure!"
-msgstr ""
+#: mod/notifications.php:203 mod/notifications.php:207
+msgid "Shall your connection be bidirectional or not?"
+msgstr "是否启用双向连接?"
 
-#: mod/admin.php:863
+#: mod/notifications.php:204 mod/notifications.php:208
 #, php-format
 msgid ""
-"The last worker execution was on %s UTC. This is older than one hour. Please"
-" check your crontab settings."
+"Accepting %s as a friend allows %s to subscribe to your posts, and you will "
+"also receive updates from them in your news feed."
 msgstr ""
 
-#: mod/admin.php:869
+#: mod/notifications.php:205
 #, php-format
 msgid ""
-"Friendica's configuration now is stored in config/local.ini.php, please copy"
-" config/local-sample.ini.php and move your config from "
-"<code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for "
-"help with the transition."
+"Accepting %s as a subscriber allows them to subscribe to your posts, but you"
+" will not receive updates from them in your news feed."
 msgstr ""
 
-#: mod/admin.php:876
+#: mod/notifications.php:209
 #, php-format
 msgid ""
-"<a href=\"%s\">%s</a> is not reachable on your system. This is a servere "
-"configuration issue that prevents the communication.. See <a href=\"%s\">the"
-" installation page</a> for help."
+"Accepting %s as a sharer allows them to subscribe to your posts, but you "
+"will not receive updates from them in your news feed."
 msgstr ""
 
-#: mod/admin.php:882
-msgid "Normal Account"
-msgstr "正常å¸\90æ\88·"
+#: mod/notifications.php:220
+msgid "Friend"
+msgstr "æ\9c\8bå\8f\8b"
 
-#: mod/admin.php:883
-msgid "Automatic Follower Account"
-msgstr ""
+#: mod/notifications.php:221
+msgid "Sharer"
+msgstr "分享者"
 
-#: mod/admin.php:884
-msgid "Public Forum Account"
-msgstr ""
+#: mod/notifications.php:221
+msgid "Subscriber"
+msgstr "订阅者"
 
-#: mod/admin.php:885
-msgid "Automatic Friend Account"
-msgstr "自动朋友帐户"
+#: mod/notifications.php:264 src/Model/Profile.php:542
+#: src/Module/Contact.php:89
+msgid "Network:"
+msgstr "网络"
 
-#: mod/admin.php:886
-msgid "Blog Account"
-msgstr "博客账户"
+#: mod/notifications.php:277
+msgid "No introductions."
+msgstr "没有介绍。"
 
-#: mod/admin.php:887
-msgid "Private Forum Account"
-msgstr ""
+#: mod/notifications.php:311
+#, php-format
+msgid "No more %s notifications."
+msgstr "没有更多的 %s 通知。"
 
-#: mod/admin.php:909
-msgid "Message queues"
-msgstr "通知排队"
+#: mod/notify.php:78
+msgid "No more system notifications."
+msgstr "没别系统通知。"
 
-#: mod/admin.php:915
-msgid "Summary"
-msgstr "概要"
+#: mod/oexchange.php:32
+msgid "Post successful."
+msgstr "评论发表了。"
 
-#: mod/admin.php:917
-msgid "Registered users"
-msgstr "注册的用户"
+#: mod/openid.php:32
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID协议错误。没ID还。 "
 
-#: mod/admin.php:919
-msgid "Pending registrations"
-msgstr "未决的注册"
+#: mod/openid.php:68
+msgid ""
+"Account not found and OpenID registration is not permitted on this site."
+msgstr "找不到账户和OpenID注册不允许。"
 
-#: mod/admin.php:920
-msgid "Version"
-msgstr "ç\89\88æ\9c¬"
+#: mod/openid.php:118 src/Module/Login.php:91 src/Module/Login.php:141
+msgid "Login failed."
+msgstr "ç\99»å½\95失败ã\80\82"
 
-#: mod/admin.php:925
-msgid "Active addons"
-msgstr "æ¿\80æ´»æ\8f\92件"
+#: mod/ostatus_subscribe.php:23
+msgid "Subscribing to OStatus contacts"
+msgstr "æ­£å\9c¨è®¢é\98\85 OStatus è\81\94系人"
 
-#: mod/admin.php:956
-msgid "Can not parse base url. Must have at least <scheme>://<domain>"
-msgstr "不能分析基础URL。至少要<scheme>://<domain>"
+#: mod/ostatus_subscribe.php:35
+msgid "No contact provided."
+msgstr "未提供联系人。"
 
-#: mod/admin.php:1289
-msgid "Site settings updated."
-msgstr "网站设置更新了。"
+#: mod/ostatus_subscribe.php:42
+msgid "Couldn't fetch information for contact."
+msgstr "无法获取联系人信息。"
 
-#: mod/admin.php:1345
-msgid "No community page for local users"
-msgstr ""
+#: mod/ostatus_subscribe.php:52
+msgid "Couldn't fetch friends for contact."
+msgstr "无法取得联系人的朋友信息。"
 
-#: mod/admin.php:1346
-msgid "No community page"
-msgstr "没有社会页"
+#: mod/ostatus_subscribe.php:70 mod/repair_ostatus.php:52
+msgid "Done"
+msgstr "完成"
 
-#: mod/admin.php:1347
-msgid "Public postings from users of this site"
-msgstr "æ\9c¬ç½\91ç«\99ç\94¨æ\88·ç\9a\84å\85¬å¼\80æ\96\87ç« "
+#: mod/ostatus_subscribe.php:84
+msgid "success"
+msgstr "æ\88\90å\8a\9f"
 
-#: mod/admin.php:1348
-msgid "Public postings from the federated network"
-msgstr ""
+#: mod/ostatus_subscribe.php:86
+msgid "failed"
+msgstr "失败"
 
-#: mod/admin.php:1349
-msgid "Public postings from local users and the federated network"
-msgstr ""
+#: mod/ostatus_subscribe.php:89 src/Object/Post.php:280
+msgid "ignored"
+msgstr "已忽视的"
 
-#: mod/admin.php:1353 mod/admin.php:1520 mod/admin.php:1530
-#: mod/contacts.php:577
-msgid "Disabled"
-msgstr "已停用"
+#: mod/ostatus_subscribe.php:94 mod/repair_ostatus.php:58
+msgid "Keep this window open until done."
+msgstr "保持窗口打开直到完成。"
 
-#: mod/admin.php:1355
-msgid "Users, Global Contacts"
-msgstr "ç\94¨æ\88·ï¼\8cå\85¨ç\90\83è\81\94系人"
+#: mod/photos.php:115 src/Model/Profile.php:925
+msgid "Photo Albums"
+msgstr "ç\9b¸å\86\8c"
 
-#: mod/admin.php:1356
-msgid "Users, Global Contacts/fallback"
-msgstr ""
+#: mod/photos.php:116 mod/photos.php:1664
+msgid "Recent Photos"
+msgstr "最近的照片"
 
-#: mod/admin.php:1360
-msgid "One month"
-msgstr "ä¸\80个æ\9c\88"
+#: mod/photos.php:119 mod/photos.php:1186 mod/photos.php:1666
+msgid "Upload New Photos"
+msgstr "ä¸\8aä¼ æ\96°ç\85§ç\89\87"
 
-#: mod/admin.php:1361
-msgid "Three months"
-msgstr "三个月"
+#: mod/photos.php:137 mod/settings.php:56
+msgid "everybody"
+msgstr "每人"
 
-#: mod/admin.php:1362
-msgid "Half a year"
-msgstr "半年"
+#: mod/photos.php:193
+msgid "Contact information unavailable"
+msgstr "联系人信息不可用"
 
-#: mod/admin.php:1363
-msgid "One year"
-msgstr "一年"
+#: mod/photos.php:212
+msgid "Album not found."
+msgstr "取回不了相册."
 
-#: mod/admin.php:1368
-msgid "Multi user instance"
-msgstr "å¤\9aç\94¨æ\88·ç½\91ç«\99"
+#: mod/photos.php:241 mod/photos.php:254 mod/photos.php:1137
+msgid "Delete Album"
+msgstr "å\88 é\99¤ç\9b¸å\86\8c"
 
-#: mod/admin.php:1394
-msgid "Closed"
-msgstr "关闭"
+#: mod/photos.php:252
+msgid "Do you really want to delete this photo album and all its photos?"
+msgstr "您真的想删除这个相册和所有里面的照相吗?"
 
-#: mod/admin.php:1395
-msgid "Requires approval"
-msgstr "要批准"
+#: mod/photos.php:310 mod/photos.php:322 mod/photos.php:1412
+msgid "Delete Photo"
+msgstr "删除照片"
 
-#: mod/admin.php:1396
-msgid "Open"
-msgstr "æ\89\93å¼\80"
+#: mod/photos.php:320
+msgid "Do you really want to delete this photo?"
+msgstr "æ\82¨ç\9c\9fç\9a\84æ\83³å\88 é\99¤è¿\99个ç\85§ç\9b¸å\90\97ï¼\9f"
 
-#: mod/admin.php:1400
-msgid "No SSL policy, links will track page SSL state"
-msgstr "没SSL方针,环节将追踪页SSL现状"
+#: mod/photos.php:644
+msgid "a photo"
+msgstr "一张照片"
 
-#: mod/admin.php:1401
-msgid "Force all links to use SSL"
-msgstr "强制所有链接使用 SSL"
+#: mod/photos.php:644
+#, php-format
+msgid "%1$s was tagged in %2$s by %3$s"
+msgstr "%1$s被%3$s标签在%2$s"
 
-#: mod/admin.php:1402
-msgid "Self-signed certificate, use SSL for local links only (discouraged)"
-msgstr "自签证书,只在本地链接使用 SSL(不推荐)"
+#: mod/photos.php:737 mod/photos.php:740 mod/photos.php:769
+#: mod/profile_photo.php:153 mod/wall_upload.php:197
+#, php-format
+msgid "Image exceeds size limit of %s"
+msgstr "图片超过 %s 的大小限制"
 
-#: mod/admin.php:1406
-msgid "Don't check"
-msgstr "请勿检查"
+#: mod/photos.php:743
+msgid "Image upload didn't complete, please try again"
+msgstr "图片上传未完成,请重试"
 
-#: mod/admin.php:1407
-msgid "check the stable version"
-msgstr "检查稳定版"
+#: mod/photos.php:746
+msgid "Image file is missing"
+msgstr "缺少图片文件"
 
-#: mod/admin.php:1408
-msgid "check the development version"
-msgstr "检查开发版本"
+#: mod/photos.php:751
+msgid ""
+"Server can't accept new file upload at this time, please contact your "
+"administrator"
+msgstr "服务器目前无法接受新的上传文件,请联系您的管理员"
 
-#: mod/admin.php:1427
-msgid "Republish users to directory"
-msgstr ""
+#: mod/photos.php:777
+msgid "Image file is empty."
+msgstr "图片文件空的。"
 
-#: mod/admin.php:1429
-msgid "File upload"
-msgstr "文件上传"
+#: mod/photos.php:792 mod/profile_photo.php:162 mod/wall_upload.php:211
+msgid "Unable to process image."
+msgstr "处理不了图像."
 
-#: mod/admin.php:1430
-msgid "Policies"
-msgstr "政策"
+#: mod/photos.php:821 mod/profile_photo.php:313 mod/wall_upload.php:250
+msgid "Image upload failed."
+msgstr "图像上载失败了."
 
-#: mod/admin.php:1431 mod/contacts.php:926 mod/events.php:535
-#: src/Model/Profile.php:852
-msgid "Advanced"
-msgstr "高级"
+#: mod/photos.php:907
+msgid "No photos selected"
+msgstr "没有照片挑选了"
 
-#: mod/admin.php:1432
-msgid "Auto Discovered Contact Directory"
-msgstr ""
+#: mod/photos.php:1004 mod/videos.php:254
+msgid "Access to this item is restricted."
+msgstr "这个项目使用权限的。"
 
-#: mod/admin.php:1433
-msgid "Performance"
-msgstr "性能"
+#: mod/photos.php:1058
+msgid "Upload Photos"
+msgstr "上传照片"
 
-#: mod/admin.php:1434
-msgid "Worker"
+#: mod/photos.php:1062 mod/photos.php:1132
+msgid "New album name: "
+msgstr "新册名:"
+
+#: mod/photos.php:1063
+msgid "or select existing album:"
 msgstr ""
 
-#: mod/admin.php:1435
-msgid "Message Relay"
-msgstr "讯息中继"
+#: mod/photos.php:1064
+msgid "Do not show a status post for this upload"
+msgstr "别显示现状报到关于这个上传"
 
-#: mod/admin.php:1436
-msgid ""
-"Relocate - WARNING: advanced function. Could make this server unreachable."
-msgstr "重定位 - 警告:高级功能。可能会让这个服务器不可达。"
+#: mod/photos.php:1080 mod/photos.php:1415 mod/settings.php:1212
+msgid "Show to Groups"
+msgstr "给组表示"
 
-#: mod/admin.php:1439
-msgid "Site name"
-msgstr "网页名字"
+#: mod/photos.php:1081 mod/photos.php:1416 mod/settings.php:1213
+msgid "Show to Contacts"
+msgstr "展示给联系人"
 
-#: mod/admin.php:1440
-msgid "Host name"
-msgstr "服务器名"
+#: mod/photos.php:1143
+msgid "Edit Album"
+msgstr "编照片册"
 
-#: mod/admin.php:1441
-msgid "Sender Email"
-msgstr "å¯\84主é\82®ä»¶"
+#: mod/photos.php:1148
+msgid "Show Newest First"
+msgstr "å\85\88表示æ\9c\80æ\96°ç\9a\84"
 
-#: mod/admin.php:1441
-msgid ""
-"The email address your server shall use to send notification emails from."
-msgstr ""
+#: mod/photos.php:1150
+msgid "Show Oldest First"
+msgstr "先表示最老的"
 
-#: mod/admin.php:1442
-msgid "Banner/Logo"
-msgstr "标题/标志"
+#: mod/photos.php:1171 mod/photos.php:1649
+msgid "View Photo"
+msgstr "看照片"
 
-#: mod/admin.php:1443
-msgid "Shortcut icon"
-msgstr "捷径小图片"
-
-#: mod/admin.php:1443
-msgid "Link to an icon that will be used for browsers."
-msgstr ""
-
-#: mod/admin.php:1444
-msgid "Touch icon"
-msgstr "触摸小图片"
-
-#: mod/admin.php:1444
-msgid "Link to an icon that will be used for tablets and mobiles."
-msgstr ""
-
-#: mod/admin.php:1445
-msgid "Additional Info"
-msgstr "别的消息"
-
-#: mod/admin.php:1445
-#, php-format
-msgid ""
-"For public servers: you can add additional information here that will be "
-"listed at %s/servers."
-msgstr ""
-
-#: mod/admin.php:1446
-msgid "System language"
-msgstr "系统语言"
-
-#: mod/admin.php:1447
-msgid "System theme"
-msgstr "系统主题"
-
-#: mod/admin.php:1447
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "默认系统主题-会被用户简介超驰-<a href='#' id='cnftheme'>把主题设置变化</a>"
-
-#: mod/admin.php:1448
-msgid "Mobile system theme"
-msgstr "手机系统主题"
-
-#: mod/admin.php:1448
-msgid "Theme for mobile devices"
-msgstr "用于移动设备的主题"
-
-#: mod/admin.php:1449
-msgid "SSL link policy"
-msgstr "SSL环节方针"
-
-#: mod/admin.php:1449
-msgid "Determines whether generated links should be forced to use SSL"
-msgstr "决定产生的链接是否应该强制使用 SSL"
-
-#: mod/admin.php:1450
-msgid "Force SSL"
-msgstr "强制使用 SSL"
-
-#: mod/admin.php:1450
-msgid ""
-"Force all Non-SSL requests to SSL - Attention: on some systems it could lead"
-" to endless loops."
-msgstr "强逼所有非SSL的要求用SSL。注意:在有的系统会导致无限循环"
-
-#: mod/admin.php:1451
-msgid "Hide help entry from navigation menu"
-msgstr "在导航菜单隐藏帮助条目"
-
-#: mod/admin.php:1451
-msgid ""
-"Hides the menu entry for the Help pages from the navigation menu. You can "
-"still access it calling /help directly."
-msgstr "在导航菜单中隐藏帮助页面的菜单条目。您仍然可以通过输入「/help」直接访问。"
-
-#: mod/admin.php:1452
-msgid "Single user instance"
-msgstr "单用户网站"
-
-#: mod/admin.php:1452
-msgid "Make this instance multi-user or single-user for the named user"
-msgstr "弄这网站多用户或单用户为选择的用户"
-
-#: mod/admin.php:1453
-msgid "Maximum image size"
-msgstr "图片最大尺寸"
-
-#: mod/admin.php:1453
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "最多上传照相的字节。默认是零,意思是无限。"
-
-#: mod/admin.php:1454
-msgid "Maximum image length"
-msgstr "最大图片大小"
+#: mod/photos.php:1212
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "无权利。用这个项目可能受限制。"
 
-#: mod/admin.php:1454
-msgid ""
-"Maximum length in pixels of the longest side of uploaded images. Default is "
-"-1, which means no limits."
-msgstr "最多像素在上传图片的长度。默认-1,意思是无限。"
+#: mod/photos.php:1214
+msgid "Photo not available"
+msgstr "不可获得的照片"
 
-#: mod/admin.php:1455
-msgid "JPEG image quality"
-msgstr "JPEG 图片质量"
+#: mod/photos.php:1289
+msgid "View photo"
+msgstr "看照片"
 
-#: mod/admin.php:1455
-msgid ""
-"Uploaded JPEGS will be saved at this quality setting [0-100]. Default is "
-"100, which is full quality."
-msgstr "上传的JPEG被用这质量[0-100]保存。默认100,最高。"
+#: mod/photos.php:1289
+msgid "Edit photo"
+msgstr "编辑照片"
 
-#: mod/admin.php:1457
-msgid "Register policy"
-msgstr "注册政策"
+#: mod/photos.php:1290
+msgid "Use as profile photo"
+msgstr "用为资料图"
 
-#: mod/admin.php:1458
-msgid "Maximum Daily Registrations"
-msgstr "一天最多注册"
+#: mod/photos.php:1296 src/Object/Post.php:153
+msgid "Private Message"
+msgstr "私人的新闻"
 
-#: mod/admin.php:1458
-msgid ""
-"If registration is permitted above, this sets the maximum number of new user"
-" registrations to accept per day.  If register is set to closed, this "
-"setting has no effect."
-msgstr "如果注册上边许可的,这个选择一天最多新用户注册会接待。如果注册关闭了,这个设置没有印象。"
+#: mod/photos.php:1316
+msgid "View Full Size"
+msgstr "看全尺寸"
 
-#: mod/admin.php:1459
-msgid "Register text"
-msgstr "注å\86\8cæ­£æ\96\87"
+#: mod/photos.php:1380
+msgid "Tags: "
+msgstr "æ \87ç­¾ï¼\9a"
 
-#: mod/admin.php:1459
-msgid ""
-"Will be displayed prominently on the registration page. You can use BBCode "
-"here."
+#: mod/photos.php:1383
+msgid "[Select tags to remove]"
 msgstr ""
 
-#: mod/admin.php:1460
-msgid "Forbidden Nicknames"
-msgstr ""
+#: mod/photos.php:1398
+msgid "New album name"
+msgstr "新册名"
 
-#: mod/admin.php:1460
-msgid ""
-"Comma separated list of nicknames that are forbidden from registration. "
-"Preset is a list of role names according RFC 2142."
-msgstr ""
+#: mod/photos.php:1399
+msgid "Caption"
+msgstr "字幕"
 
-#: mod/admin.php:1461
-msgid "Accounts abandoned after x days"
-msgstr "账户丢弃X天后"
+#: mod/photos.php:1400
+msgid "Add a Tag"
+msgstr "加标签"
 
-#: mod/admin.php:1461
+#: mod/photos.php:1400
 msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "拒绝浪费系统资源看外网站找丢弃的账户。输入0为无时限。"
-
-#: mod/admin.php:1462
-msgid "Allowed friend domains"
-msgstr "允许的朋友域"
+"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr "例子:@zhang, @Zhang_San, @li@example.com, #Beijing, #ktv"
 
-#: mod/admin.php:1462
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "逗号分隔的域名许根这个网站结友谊。通配符行。空的允许所有的域名。"
+#: mod/photos.php:1401
+msgid "Do not rotate"
+msgstr "不要旋转"
 
-#: mod/admin.php:1463
-msgid "Allowed email domains"
-msgstr "允许的电子邮件域"
+#: mod/photos.php:1402
+msgid "Rotate CW (right)"
+msgstr "顺时针地转动(左)"
 
-#: mod/admin.php:1463
-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 "逗号分隔的域名可接受在邮件地址为这网站的注册。通配符行。空的允许所有的域名。"
+#: mod/photos.php:1403
+msgid "Rotate CCW (left)"
+msgstr "反顺时针地转动(右)"
 
-#: mod/admin.php:1464
-msgid "No OEmbed rich content"
-msgstr ""
+#: mod/photos.php:1437 src/Object/Post.php:308
+msgid "I like this (toggle)"
+msgstr "我喜欢这(交替)"
 
-#: mod/admin.php:1464
-msgid ""
-"Don't show the rich content (e.g. embedded PDF), except from the domains "
-"listed below."
-msgstr ""
+#: mod/photos.php:1438 src/Object/Post.php:309
+msgid "I don't like this (toggle)"
+msgstr "我不喜欢这(交替)"
 
-#: mod/admin.php:1465
-msgid "Allowed OEmbed domains"
-msgstr ""
+#: mod/photos.php:1453 mod/photos.php:1492 mod/photos.php:1552
+#: src/Module/Contact.php:1021 src/Object/Post.php:816
+msgid "This is you"
+msgstr "这是你"
 
-#: mod/admin.php:1465
-msgid ""
-"Comma separated list of domains which oembed content is allowed to be "
-"displayed. Wildcards are accepted."
-msgstr ""
+#: mod/photos.php:1455 mod/photos.php:1494 mod/photos.php:1554
+#: src/Object/Post.php:414 src/Object/Post.php:818
+msgid "Comment"
+msgstr "评论"
 
-#: mod/admin.php:1466
-msgid "Block public"
-msgstr ""
+#: mod/photos.php:1584
+msgid "Map"
+msgstr "地图"
 
-#: mod/admin.php:1466
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr ""
+#: mod/photos.php:1655 mod/videos.php:331
+msgid "View Album"
+msgstr "看照片册"
 
-#: mod/admin.php:1467
-msgid "Force publish"
-msgstr "强行发布"
+#: mod/ping.php:271
+msgid "{0} wants to be your friend"
+msgstr "{0}想成为您的朋友"
 
-#: mod/admin.php:1467
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "让所有这网站的的简介表明在网站目录。"
+#: mod/ping.php:287
+msgid "{0} requested registration"
+msgstr "{0}要求注册"
 
-#: mod/admin.php:1467
-msgid "Enabling this may violate privacy laws like the GDPR"
-msgstr "启用此项可能会违反隐私法律,譬如 GDPR 等"
+#: mod/poke.php:181
+msgid "Poke/Prod"
+msgstr ""
 
-#: mod/admin.php:1468
-msgid "Global directory URL"
-msgstr ""
+#: mod/poke.php:182
+msgid "poke, prod or do other things to somebody"
+msgstr "把人家戳或别的行动"
 
-#: mod/admin.php:1468
-msgid ""
-"URL to the global directory. If this is not set, the global directory is "
-"completely unavailable to the application."
-msgstr ""
+#: mod/poke.php:183
+msgid "Recipient"
+msgstr "接受者"
 
-#: mod/admin.php:1469
-msgid "Private posts by default for new users"
-msgstr "新用户默认写私人文章"
+#: mod/poke.php:184
+msgid "Choose what you wish to do to recipient"
+msgstr "选择您想把别人作"
 
-#: mod/admin.php:1469
-msgid ""
-"Set default post permissions for all new members to the default privacy "
-"group rather than public."
-msgstr "默认新用户文章批准使默认隐私组,没有公开。"
+#: mod/poke.php:187
+msgid "Make this post private"
+msgstr "使这个文章私人"
 
-#: mod/admin.php:1470
-msgid "Don't include post content in email notifications"
-msgstr "å\88«å\8c\85å\90«æ\96\87ç« å\86\85容å\9c¨é\82®ä»¶æ¶\88æ\81¯"
+#: mod/probe.php:14 mod/webfinger.php:17
+msgid "Only logged in users are permitted to perform a probing."
+msgstr "å\8fªæ\9c\89å·²ç\99»å½\95ç\94¨æ\88·æ\89\8d被å\85\81许è¿\9bè¡\8cæ\8e¢æµ\8bã\80\82"
 
-#: mod/admin.php:1470
-msgid ""
-"Don't include the content of a post/comment/private message/etc. in the "
-"email notifications that are sent out from this site, as a privacy measure."
-msgstr "别包含文章/谈论/私消息/等的内容在文件消息被这个网站寄出,为了隐私。"
+#: mod/profile.php:86 mod/profile.php:89 src/Protocol/OStatus.php:1287
+#, php-format
+msgid "%s's timeline"
+msgstr "%s 的时间线"
 
-#: mod/admin.php:1471
-msgid "Disallow public access to addons listed in the apps menu."
-msgstr "不允许插件的公众使用权在应用选单。"
+#: mod/profile.php:87 src/Protocol/OStatus.php:1291
+#, php-format
+msgid "%s's posts"
+msgstr "%s的帖子"
 
-#: mod/admin.php:1471
-msgid ""
-"Checking this box will restrict addons listed in the apps menu to members "
-"only."
-msgstr "复选这个框为把应用选内插件限制仅成员"
+#: mod/profile.php:88 src/Protocol/OStatus.php:1294
+#, php-format
+msgid "%s's comments"
+msgstr "%s 的评论"
 
-#: mod/admin.php:1472
-msgid "Don't embed private images in posts"
-msgstr "别嵌入私人图案在文章里"
+#: mod/profiles.php:61
+msgid "Profile deleted."
+msgstr "简介删除了。"
 
-#: mod/admin.php:1472
-msgid ""
-"Don't replace locally-hosted private photos in posts with an embedded copy "
-"of the image. This means that contacts who receive posts containing private "
-"photos will have to authenticate and load each image, which may take a "
-"while."
-msgstr "别把复制嵌入的照相代替本网站的私人照相在文章里。结果是收包括私人照相的熟人要认证才卸载个张照片,会花许久。"
+#: mod/profiles.php:77 mod/profiles.php:113
+msgid "Profile-"
+msgstr "简介-"
 
-#: mod/admin.php:1473
-msgid "Explicit Content"
-msgstr ""
+#: mod/profiles.php:96 mod/profiles.php:135
+msgid "New profile created."
+msgstr "新的简介已创建。"
 
-#: mod/admin.php:1473
-msgid ""
-"Set this to announce that your node is used mostly for explicit content that"
-" might not be suited for minors. This information will be published in the "
-"node information and might be used, e.g. by the global directory, to filter "
-"your node from listings of nodes to join. Additionally a note about this "
-"will be shown at the user registration page."
-msgstr ""
+#: mod/profiles.php:119
+msgid "Profile unavailable to clone."
+msgstr "简介不可用为复制。"
 
-#: mod/admin.php:1474
-msgid "Allow Users to set remote_self"
-msgstr "å\85\81许ç\94¨æ\88·ç\94¨é\81¥è¿\9cç\9a\84è\87ªèº«"
+#: mod/profiles.php:207
+msgid "Profile Name is required."
+msgstr "å¿\85è¦\81ç®\80ä»\8bå\90\8d"
 
-#: mod/admin.php:1474
-msgid ""
-"With checking this, every user is allowed to mark every contact as a "
-"remote_self in the repair contact dialog. Setting this flag on a contact "
-"causes mirroring every posting of that contact in the users stream."
-msgstr "选择这个之后,用户们允许表明熟人当遥远的自身在熟人修理页。遥远的自身所有文章被复制到用户文章流。"
+#: mod/profiles.php:348
+msgid "Marital Status"
+msgstr "婚姻状况 "
 
-#: mod/admin.php:1475
-msgid "Block multiple registrations"
-msgstr "阻止多次注册"
+#: mod/profiles.php:352
+msgid "Romantic Partner"
+msgstr "情人"
 
-#: mod/admin.php:1475
-msgid "Disallow users to register additional accounts for use as pages."
-msgstr "不允许用户注册别的账户为当页。"
+#: mod/profiles.php:364
+msgid "Work/Employment"
+msgstr "工作"
 
-#: mod/admin.php:1476
-msgid "OpenID support"
-msgstr "OpenID 支持"
+#: mod/profiles.php:367
+msgid "Religion"
+msgstr "宗教"
 
-#: mod/admin.php:1476
-msgid "OpenID support for registration and logins."
-msgstr "æ\94¯æ\8c\81使ç\94¨ OpenID æ³¨å\86\8cå\92\8cç\99»å½\95ã\80\82"
+#: mod/profiles.php:371
+msgid "Political Views"
+msgstr "æ\94¿æ²»è§\82念"
 
-#: mod/admin.php:1477
-msgid "Fullname check"
-msgstr "全名核实"
+#: mod/profiles.php:375
+msgid "Gender"
+msgstr "性别"
 
-#: mod/admin.php:1477
-msgid ""
-"Force users to register with a space between firstname and lastname in Full "
-"name, as an antispam measure"
-msgstr "让用户注册的时候放空格姓名中间,省得垃圾注册。"
+#: mod/profiles.php:379
+msgid "Sexual Preference"
+msgstr "性取向"
 
-#: mod/admin.php:1478
-msgid "Community pages for visitors"
-msgstr ""
+#: mod/profiles.php:383
+msgid "XMPP"
+msgstr "XMPP"
 
-#: mod/admin.php:1478
-msgid ""
-"Which community pages should be available for visitors. Local users always "
-"see both pages."
-msgstr ""
+#: mod/profiles.php:387
+msgid "Homepage"
+msgstr "主页"
 
-#: mod/admin.php:1479
-msgid "Posts per user on community page"
-msgstr "个用户文章数量在社会页"
+#: mod/profiles.php:391 mod/profiles.php:594
+msgid "Interests"
+msgstr "兴趣"
 
-#: mod/admin.php:1479
-msgid ""
-"The maximum number of posts per user on the community page. (Not valid for "
-"'Global Community')"
-msgstr "一个用户最多文章在社会页。(无效在“全球社会”)"
+#: mod/profiles.php:402 mod/profiles.php:590
+msgid "Location"
+msgstr "位置"
 
-#: mod/admin.php:1480
-msgid "Enable OStatus support"
-msgstr "启用 OStatus 支持"
+#: mod/profiles.php:485
+msgid "Profile updated."
+msgstr "简介更新了。"
 
-#: mod/admin.php:1480
-msgid ""
-"Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All "
-"communications in OStatus are public, so privacy warnings will be "
-"occasionally displayed."
-msgstr "提供内置的 OStatus(StatusNet、GNU Social 等)兼容性。所有 OStatus 的通信是公开的,所以会偶尔显示隐私警告。"
+#: mod/profiles.php:539
+msgid "Hide contacts and friends:"
+msgstr "隐藏联系人和朋友:"
 
-#: mod/admin.php:1481
-msgid "Only import OStatus threads from our contacts"
-msgstr ""
+#: mod/profiles.php:544
+msgid "Hide your contact/friend list from viewers of this profile?"
+msgstr "藏起来发现您的熟人/朋友单不让这个简介看着看?"
 
-#: mod/admin.php:1481
-msgid ""
-"Normally we import every content from our OStatus contacts. With this option"
-" we only store threads that are started by a contact that is known on our "
-"system."
-msgstr ""
+#: mod/profiles.php:564
+msgid "Show more profile fields:"
+msgstr "显示更多简介内容:"
 
-#: mod/admin.php:1482
-msgid "OStatus support can only be enabled if threading is enabled."
+#: mod/profiles.php:576
+msgid "Profile Actions"
 msgstr ""
 
-#: mod/admin.php:1484
-msgid ""
-"Diaspora support can't be enabled because Friendica was installed into a sub"
-" directory."
-msgstr "Diaspora 支持无法启用,因为 Friendica 被安装到了一个子目录。"
+#: mod/profiles.php:577
+msgid "Edit Profile Details"
+msgstr "剪辑简介消息"
 
-#: mod/admin.php:1485
-msgid "Enable Diaspora support"
-msgstr "启用 Diaspora 支持"
+#: mod/profiles.php:579
+msgid "Change Profile Photo"
+msgstr "改变简介照片"
 
-#: mod/admin.php:1485
-msgid "Provide built-in Diaspora network compatibility."
-msgstr "提供内置的 Diaspora 网络兼容性。"
+#: mod/profiles.php:581
+msgid "View this profile"
+msgstr "看这个简介"
 
-#: mod/admin.php:1486
-msgid "Only allow Friendica contacts"
-msgstr "只允许 Friendica 联系人"
+#: mod/profiles.php:582
+msgid "View all profiles"
+msgstr ""
 
-#: mod/admin.php:1486
-msgid ""
-"All contacts must use Friendica protocols. All other built-in communication "
-"protocols disabled."
-msgstr "所有联系人必须使用 Friendica 协议 。所有其他内置沟通协议都已停用。"
+#: mod/profiles.php:583 mod/profiles.php:678 src/Model/Profile.php:413
+msgid "Edit visibility"
+msgstr "修改能见度"
 
-#: mod/admin.php:1487
-msgid "Verify SSL"
-msgstr "验证 SSL"
+#: mod/profiles.php:584
+msgid "Create a new profile using these settings"
+msgstr "使用这些设置创建一份新的简介"
 
-#: mod/admin.php:1487
-msgid ""
-"If you wish, you can turn on strict certificate checking. This will mean you"
-" cannot connect (at all) to self-signed SSL sites."
-msgstr "你想的话,您会使严格证书核实可用。意思是您不能根自签的SSL网站交流。"
+#: mod/profiles.php:585
+msgid "Clone this profile"
+msgstr "复制这个简介"
 
-#: mod/admin.php:1488
-msgid "Proxy user"
-msgstr "代理用户"
+#: mod/profiles.php:586
+msgid "Delete this profile"
+msgstr "删除这个简介"
 
-#: mod/admin.php:1489
-msgid "Proxy URL"
-msgstr "代理URL"
+#: mod/profiles.php:588
+msgid "Basic information"
+msgstr "基本信息"
 
-#: mod/admin.php:1490
-msgid "Network timeout"
-msgstr "网络超时"
+#: mod/profiles.php:589
+msgid "Profile picture"
+msgstr "头像"
 
-#: mod/admin.php:1490
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "输入秒数。输入零为无限(不推荐的)。"
+#: mod/profiles.php:591
+msgid "Preferences"
+msgstr "偏好"
 
-#: mod/admin.php:1491
-msgid "Maximum Load Average"
-msgstr "最大平均负荷"
+#: mod/profiles.php:592
+msgid "Status information"
+msgstr "状态信息"
 
-#: mod/admin.php:1491
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "系统负荷平均以上转播和检查行程会被耽误-默认50。"
+#: mod/profiles.php:593
+msgid "Additional information"
+msgstr "更多信息"
 
-#: mod/admin.php:1492
-msgid "Maximum Load Average (Frontend)"
-msgstr ""
+#: mod/profiles.php:596
+msgid "Relation"
+msgstr "关系"
 
-#: mod/admin.php:1492
-msgid "Maximum system load before the frontend quits service - default 50."
-msgstr ""
+#: mod/profiles.php:597 src/Util/Temporal.php:80 src/Util/Temporal.php:82
+msgid "Miscellaneous"
+msgstr "形形色色"
 
-#: mod/admin.php:1493
-msgid "Minimal Memory"
-msgstr "最少内存"
+#: mod/profiles.php:600
+msgid "Your Gender:"
+msgstr "你的性:"
 
-#: mod/admin.php:1493
-msgid ""
-"Minimal free memory in MB for the worker. Needs access to /proc/meminfo - "
-"default 0 (deactivated)."
-msgstr ""
+#: mod/profiles.php:601
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span>婚姻状况:"
 
-#: mod/admin.php:1494
-msgid "Maximum table size for optimization"
-msgstr ""
+#: mod/profiles.php:602 src/Model/Profile.php:800
+msgid "Sexual Preference:"
+msgstr "性取向:"
 
-#: mod/admin.php:1494
-msgid ""
-"Maximum table size (in MB) for the automatic optimization. Enter -1 to "
-"disable it."
-msgstr ""
+#: mod/profiles.php:603
+msgid "Example: fishing photography software"
+msgstr "例如:钓鱼 照片 软件"
 
-#: mod/admin.php:1495
-msgid "Minimum level of fragmentation"
-msgstr ""
+#: mod/profiles.php:608
+msgid "Profile Name:"
+msgstr "简介名:"
 
-#: mod/admin.php:1495
+#: mod/profiles.php:610
 msgid ""
-"Minimum fragmenation level to start the automatic optimization - default "
-"value is 30%."
-msgstr ""
+"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
+"be visible to anybody using the internet."
+msgstr "这是你的<strong>公开的</strong>简介。<br />它<strong>可能</strong>被所有的因特网用的看到。"
 
-#: mod/admin.php:1497
-msgid "Periodical check of global contacts"
-msgstr "定期检查全球联系人"
+#: mod/profiles.php:611
+msgid "Your Full Name:"
+msgstr "你的全名:"
 
-#: mod/admin.php:1497
-msgid ""
-"If enabled, the global contacts are checked periodically for missing or "
-"outdated data and the vitality of the contacts and servers."
-msgstr ""
+#: mod/profiles.php:612
+msgid "Title/Description:"
+msgstr "标题/描述:"
 
-#: mod/admin.php:1498
-msgid "Days between requery"
-msgstr "重新查询间隔天数"
+#: mod/profiles.php:615
+msgid "Street Address:"
+msgstr "地址:"
 
-#: mod/admin.php:1498
-msgid "Number of days after which a server is requeried for his contacts."
-msgstr ""
+#: mod/profiles.php:616
+msgid "Locality/City:"
+msgstr "现场/城市:"
 
-#: mod/admin.php:1499
-msgid "Discover contacts from other servers"
-msgstr "从其他服务器上发现联系人"
+#: mod/profiles.php:617
+msgid "Region/State:"
+msgstr "区域/省"
 
-#: mod/admin.php:1499
-msgid ""
-"Periodically query other servers for contacts. You can choose between "
-"'users': the users on the remote system, 'Global Contacts': active contacts "
-"that are known on the system. The fallback is meant for Redmatrix servers "
-"and older friendica servers, where global contacts weren't available. The "
-"fallback increases the server load, so the recommened setting is 'Users, "
-"Global Contacts'."
-msgstr ""
+#: mod/profiles.php:618
+msgid "Postal/Zip Code:"
+msgstr "邮政编码:"
 
-#: mod/admin.php:1500
-msgid "Timeframe for fetching global contacts"
-msgstr ""
+#: mod/profiles.php:619
+msgid "Country:"
+msgstr "国家:"
 
-#: mod/admin.php:1500
-msgid ""
-"When the discovery is activated, this value defines the timeframe for the "
-"activity of the global contacts that are fetched from other servers."
-msgstr ""
+#: mod/profiles.php:620 src/Util/Temporal.php:148
+msgid "Age: "
+msgstr "年纪:"
 
-#: mod/admin.php:1501
-msgid "Search the local directory"
-msgstr "搜索本地目录"
+#: mod/profiles.php:623
+msgid "Who: (if applicable)"
+msgstr "谁:(要是使用)"
 
-#: mod/admin.php:1501
-msgid ""
-"Search the local directory instead of the global directory. When searching "
-"locally, every search will be executed on the global directory in the "
-"background. This improves the search results when the search is repeated."
-msgstr ""
+#: mod/profiles.php:623
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "比如:limou,李某,limou@example。com"
 
-#: mod/admin.php:1503
-msgid "Publish server information"
-msgstr "发布服务器信息"
+#: mod/profiles.php:624
+msgid "Since [date]:"
+msgstr "追溯[日期]:"
 
-#: mod/admin.php:1503
-msgid ""
-"If enabled, general server and usage data will be published. The data "
-"contains the name and version of the server, number of users with public "
-"profiles, number of posts and the activated protocols and connectors. See <a"
-" href='http://the-federation.info/'>the-federation.info</a> for details."
-msgstr ""
+#: mod/profiles.php:626
+msgid "Tell us about yourself..."
+msgstr "给我们自我介绍..."
 
-#: mod/admin.php:1505
-msgid "Check upstream version"
-msgstr "检查上游版本"
+#: mod/profiles.php:627
+msgid "XMPP (Jabber) address:"
+msgstr "XMPP (Jabber) 地址:"
 
-#: mod/admin.php:1505
+#: mod/profiles.php:627
 msgid ""
-"Enables checking for new Friendica versions at github. If there is a new "
-"version, you will be informed in the admin panel overview."
-msgstr "启用在 github 上检查新的 Friendica 版本。如果发现新版本,您将在管理员概要面板得到通知。"
-
-#: mod/admin.php:1506
-msgid "Suppress Tags"
-msgstr "压制标签"
-
-#: mod/admin.php:1506
-msgid "Suppress showing a list of hashtags at the end of the posting."
-msgstr "不在文章末尾显示主题标签列表。"
-
-#: mod/admin.php:1507
-msgid "Clean database"
-msgstr "清理数据库"
+"The XMPP address will be propagated to your contacts so that they can follow"
+" you."
+msgstr "这个 XMPP 地址会被传播到你的联系人从而他们可以关注你。"
 
-#: mod/admin.php:1507
-msgid ""
-"Remove old remote items, orphaned database records and old content from some"
-" other helper tables."
-msgstr ""
+#: mod/profiles.php:628
+msgid "Homepage URL:"
+msgstr "主页URL:"
 
-#: mod/admin.php:1508
-msgid "Lifespan of remote items"
-msgstr ""
+#: mod/profiles.php:629 src/Model/Profile.php:808
+msgid "Hometown:"
+msgstr "故乡:"
 
-#: mod/admin.php:1508
-msgid ""
-"When the database cleanup is enabled, this defines the days after which "
-"remote items will be deleted. Own items, and marked or filed items are "
-"always kept. 0 disables this behaviour."
-msgstr ""
+#: mod/profiles.php:630 src/Model/Profile.php:816
+msgid "Political Views:"
+msgstr "政治观念:"
 
-#: mod/admin.php:1509
-msgid "Lifespan of unclaimed items"
-msgstr ""
+#: mod/profiles.php:631
+msgid "Religious Views:"
+msgstr " 宗教信仰 :"
 
-#: mod/admin.php:1509
-msgid ""
-"When the database cleanup is enabled, this defines the days after which "
-"unclaimed remote items (mostly content from the relay) will be deleted. "
-"Default value is 90 days. Defaults to the general lifespan value of remote "
-"items if set to 0."
-msgstr ""
+#: mod/profiles.php:632
+msgid "Public Keywords:"
+msgstr "公开关键字 :"
 
-#: mod/admin.php:1510
-msgid "Path to item cache"
-msgstr "路线到项目缓存"
+#: mod/profiles.php:632
+msgid "(Used for suggesting potential friends, can be seen by others)"
+msgstr "(用于建议可能的朋友们,会被别人看)"
 
-#: mod/admin.php:1510
-msgid "The item caches buffers generated bbcode and external images."
-msgstr ""
+#: mod/profiles.php:633
+msgid "Private Keywords:"
+msgstr "私人关键字"
 
-#: mod/admin.php:1511
-msgid "Cache duration in seconds"
-msgstr "缓存时间秒"
+#: mod/profiles.php:633
+msgid "(Used for searching profiles, never shown to others)"
+msgstr "(用于搜索简介,没有给别人看)"
 
-#: mod/admin.php:1511
-msgid ""
-"How long should the cache files be hold? Default value is 86400 seconds (One"
-" day). To disable the item cache, set the value to -1."
-msgstr "高速缓存要存文件多久?默认是86400秒钟(一天)。停用高速缓存,输入-1。"
+#: mod/profiles.php:634 src/Model/Profile.php:832
+msgid "Likes:"
+msgstr "喜欢:"
 
-#: mod/admin.php:1512
-msgid "Maximum numbers of comments per post"
-msgstr "文件最多评论"
+#: mod/profiles.php:635 src/Model/Profile.php:836
+msgid "Dislikes:"
+msgstr "不喜欢:"
 
-#: mod/admin.php:1512
-msgid "How much comments should be shown for each post? Default value is 100."
-msgstr ""
+#: mod/profiles.php:636
+msgid "Musical interests"
+msgstr "音乐兴趣"
 
-#: mod/admin.php:1513
-msgid "Temp path"
-msgstr "临æ\97¶æ\96\87件路线"
+#: mod/profiles.php:637
+msgid "Books, literature"
+msgstr "书ï¼\8cæ\96\87å­¦"
 
-#: mod/admin.php:1513
-msgid ""
-"If you have a restricted system where the webserver can't access the system "
-"temp path, enter another path here."
-msgstr ""
+#: mod/profiles.php:638
+msgid "Television"
+msgstr "电视"
 
-#: mod/admin.php:1514
-msgid "Base path to installation"
-msgstr "基础安装路线"
+#: mod/profiles.php:639
+msgid "Film/dance/culture/entertainment"
+msgstr "电影/跳舞/文化/娱乐"
 
-#: mod/admin.php:1514
-msgid ""
-"If the system cannot detect the correct path to your installation, enter the"
-" correct path here. This setting should only be set if you are using a "
-"restricted system and symbolic links to your webroot."
-msgstr "如果您的系统无法为您检测到正确的安装路径,请在这里输入正确的路径。此配置仅在您使用设有限制的系统时符号链接到网页服务器根目录使用。"
+#: mod/profiles.php:640
+msgid "Hobbies/Interests"
+msgstr "爱好/兴趣"
 
-#: mod/admin.php:1515
-msgid "Disable picture proxy"
-msgstr "停用图片代理"
+#: mod/profiles.php:641
+msgid "Love/romance"
+msgstr "爱情/浪漫"
 
-#: mod/admin.php:1515
-msgid ""
-"The picture proxy increases performance and privacy. It shouldn't be used on"
-" systems with very low bandwidth."
-msgstr ""
+#: mod/profiles.php:642
+msgid "Work/employment"
+msgstr "工作"
 
-#: mod/admin.php:1516
-msgid "Only search in tags"
-msgstr "å\8fªå\9c¨æ \87签项å\86\85æ\90\9cç´¢"
+#: mod/profiles.php:643
+msgid "School/education"
+msgstr "å­¦é\99¢ï¼\8fæ\95\99è\82²"
 
-#: mod/admin.php:1516
-msgid "On large systems the text search can slow down the system extremely."
-msgstr "在大型系统中,正文搜索会极大降低系统运行速度。"
+#: mod/profiles.php:644
+msgid "Contact information and Social Networks"
+msgstr "熟人信息和社会化网络"
 
-#: mod/admin.php:1518
-msgid "New base url"
-msgstr "新基础URL"
+#: mod/profiles.php:675 src/Model/Profile.php:409
+msgid "Profile Image"
+msgstr "简介图像"
 
-#: mod/admin.php:1518
-msgid ""
-"Change base url for this server. Sends relocate message to all Friendica and"
-" Diaspora* contacts of all users."
-msgstr ""
+#: mod/profiles.php:677 src/Model/Profile.php:412
+msgid "visible to everybody"
+msgstr "给打假可见的"
 
-#: mod/admin.php:1520
-msgid "RINO Encryption"
-msgstr "RINO 加密"
+#: mod/profiles.php:684
+msgid "Edit/Manage Profiles"
+msgstr "编辑/管理简介"
 
-#: mod/admin.php:1520
-msgid "Encryption layer between nodes."
-msgstr "节点之间的加密层。"
+#: mod/profiles.php:685 src/Model/Profile.php:399 src/Model/Profile.php:421
+msgid "Change profile photo"
+msgstr "换简介照片"
 
-#: mod/admin.php:1520
-msgid "Enabled"
-msgstr "å·²å\90¯ç\94¨"
+#: mod/profiles.php:686 src/Model/Profile.php:400
+msgid "Create New Profile"
+msgstr "å\88\9b建æ\96°ç\9a\84ç®\80ä»\8b"
 
-#: mod/admin.php:1522
-msgid "Maximum number of parallel workers"
-msgstr ""
+#: mod/profile_photo.php:59
+msgid "Image uploaded but image cropping failed."
+msgstr "照片上传去了,但修剪失灵。"
 
-#: mod/admin.php:1522
+#: mod/profile_photo.php:89 mod/profile_photo.php:98 mod/profile_photo.php:107
+#: mod/profile_photo.php:321
 #, php-format
-msgid ""
-"On shared hosters set this to %d. On larger systems, values of %d are great."
-" Default value is %d."
-msgstr ""
-
-#: mod/admin.php:1523
-msgid "Don't use 'proc_open' with the worker"
-msgstr ""
+msgid "Image size reduction [%s] failed."
+msgstr "照片减少[%s]失灵。"
 
-#: mod/admin.php:1523
+#: mod/profile_photo.php:126
 msgid ""
-"Enable this if your system doesn't allow the use of 'proc_open'. This can "
-"happen on shared hosters. If this is enabled you should increase the "
-"frequency of worker calls in your crontab."
-msgstr ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "万一新照片一会出现,换档重新加载或者成为空浏览器高速缓存。"
 
-#: mod/admin.php:1524
-msgid "Enable fastlane"
-msgstr "启用快车道模式"
+#: mod/profile_photo.php:134
+msgid "Unable to process image"
+msgstr "不能处理照片"
 
-#: mod/admin.php:1524
-msgid ""
-"When enabed, the fastlane mechanism starts an additional worker if processes"
-" with higher priority are blocked by processes of lower priority."
-msgstr ""
+#: mod/profile_photo.php:252
+msgid "Upload File:"
+msgstr "上传文件:"
 
-#: mod/admin.php:1525
-msgid "Enable frontend worker"
-msgstr ""
+#: mod/profile_photo.php:253
+msgid "Select a profile:"
+msgstr "选择一个简介"
 
-#: mod/admin.php:1525
-#, php-format
-msgid ""
-"When enabled the Worker process is triggered when backend access is "
-"performed \\x28e.g. messages being delivered\\x29. On smaller sites you "
-"might want to call %s/worker on a regular basis via an external cron job. "
-"You should only enable this option if you cannot utilize cron/scheduled jobs"
-" on your server."
-msgstr ""
+#: mod/profile_photo.php:258
+msgid "or"
+msgstr "或者"
 
-#: mod/admin.php:1527
-msgid "Subscribe to relay"
-msgstr ""
+#: mod/profile_photo.php:259
+msgid "skip this step"
+msgstr "略过这步"
 
-#: mod/admin.php:1527
-msgid ""
-"Enables the receiving of public posts from the relay. They will be included "
-"in the search, subscribed tags and on the global community page."
-msgstr ""
+#: mod/profile_photo.php:259
+msgid "select a photo from your photo albums"
+msgstr "从您的照片册选择一片。"
 
-#: mod/admin.php:1528
-msgid "Relay server"
-msgstr "中继æ\9c\8då\8a¡å\99¨"
+#: mod/profile_photo.php:272
+msgid "Crop Image"
+msgstr "ä¿®å\89ªç\85§ç\89\87"
 
-#: mod/admin.php:1528
-msgid ""
-"Address of the relay server where public posts should be send to. For "
-"example https://relay.diasp.org"
-msgstr ""
+#: mod/profile_photo.php:273
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "请调图片剪裁为最好看。"
 
-#: mod/admin.php:1529
-msgid "Direct relay transfer"
-msgstr ""
+#: mod/profile_photo.php:275
+msgid "Done Editing"
+msgstr "编辑完成"
 
-#: mod/admin.php:1529
-msgid ""
-"Enables the direct transfer to other servers without using the relay servers"
-msgstr ""
+#: mod/profile_photo.php:311
+msgid "Image uploaded successfully."
+msgstr "照片成功地上传了。"
 
-#: mod/admin.php:1530
-msgid "Relay scope"
-msgstr ""
+#: mod/profperm.php:36 mod/profperm.php:69
+msgid "Invalid profile identifier."
+msgstr "无限的简介标识符。"
 
-#: mod/admin.php:1530
-msgid ""
-"Can be 'all' or 'tags'. 'all' means that every public post should be "
-"received. 'tags' means that only posts with selected tags should be "
-"received."
-msgstr ""
+#: mod/profperm.php:115
+msgid "Profile Visibility Editor"
+msgstr "简介能见度编辑器。"
 
-#: mod/admin.php:1530
-msgid "all"
-msgstr "所有"
+#: mod/profperm.php:128
+msgid "Visible To"
+msgstr "能见被"
 
-#: mod/admin.php:1530
-msgid "tags"
+#: mod/profperm.php:144
+msgid "All Contacts (with secure profile access)"
 msgstr ""
 
-#: mod/admin.php:1531
-msgid "Server tags"
-msgstr ""
+#: mod/register.php:103
+msgid ""
+"Registration successful. Please check your email for further instructions."
+msgstr "注册成功了。请咨询说明再您的收件箱。"
 
-#: mod/admin.php:1531
-msgid "Comma separated list of tags for the 'tags' subscription."
-msgstr ""
+#: mod/register.php:107
+#, php-format
+msgid ""
+"Failed to send email message. Here your accout details:<br> login: %s<br> "
+"password: %s<br><br>You can change your password after login."
+msgstr "发送邮件失败。你的账户消息是:<br>用户名:%s<br> 密码: %s<br><br>。登录后能改密码。"
 
-#: mod/admin.php:1532
-msgid "Allow user tags"
-msgstr ""
+#: mod/register.php:114
+msgid "Registration successful."
+msgstr "注册成功。"
 
-#: mod/admin.php:1532
-msgid ""
-"If enabled, the tags from the saved searches will used for the 'tags' "
-"subscription in addition to the 'relay_server_tags'."
-msgstr ""
+#: mod/register.php:119
+msgid "Your registration can not be processed."
+msgstr "处理不了您的注册。"
 
-#: mod/admin.php:1535
-msgid "Start Relocation"
-msgstr ""
+#: mod/register.php:162
+msgid "Your registration is pending approval by the site owner."
+msgstr "您的注册等网页主的批准。"
 
-#: mod/admin.php:1561
-msgid "Update has been marked successful"
-msgstr "更新当成功标签了"
+#: mod/register.php:191 mod/uimport.php:39
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "这个网站超过一天最多账户注册。请明天再试。"
 
-#: mod/admin.php:1568
-#, php-format
-msgid "Database structure update %s was successfully applied."
-msgstr ""
+#: mod/register.php:218
+msgid ""
+"You may (optionally) fill in this form via OpenID by supplying your OpenID "
+"and clicking 'Register'."
+msgstr "您会(可选的)用OpenID填这个表格通过提供您的OpenID和点击「注册」。"
 
-#: mod/admin.php:1571
-#, php-format
-msgid "Executing of database structure update %s failed with error: %s"
-msgstr ""
+#: mod/register.php:219
+msgid ""
+"If you are not familiar with OpenID, please leave that field blank and fill "
+"in the rest of the items."
+msgstr "如果您没熟悉OpenID,请留空这个栏和填另些栏。"
 
-#: mod/admin.php:1587
-#, php-format
-msgid "Executing %s failed with error: %s"
-msgstr "执行 %s 失败,错误:%s"
+#: mod/register.php:220
+msgid "Your OpenID (optional): "
+msgstr "您的OpenID(可选的):"
 
-#: mod/admin.php:1589
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "把%s更新成功地实行。"
+#: mod/register.php:229
+msgid "Include your profile in member directory?"
+msgstr "放您的简介再员目录?"
 
-#: mod/admin.php:1592
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "%s更新没回答现状。不知道是否成功。"
+#: mod/register.php:253
+msgid "Note for the admin"
+msgstr "给管理员的便条"
 
-#: mod/admin.php:1595
-#, php-format
-msgid "There was no additional update function %s that needed to be called."
-msgstr ""
+#: mod/register.php:253
+msgid "Leave a message for the admin, why you want to join this node"
+msgstr "给管理员留条消息,为什么你想加入这个节点"
 
-#: mod/admin.php:1618
-msgid "No failed updates."
-msgstr "没有不通过地更新。"
+#: mod/register.php:254
+msgid "Membership on this site is by invitation only."
+msgstr "会员身份在这个网站是光通过邀请。"
 
-#: mod/admin.php:1619
-msgid "Check database structure"
-msgstr "æ£\80æ\9f¥æ\95°æ\8d®åº\93ç»\93æ\9e\84"
+#: mod/register.php:255
+msgid "Your invitation code: "
+msgstr "æ\82¨ç\9a\84é\82\80请ç \81ï¼\9a"
 
-#: mod/admin.php:1624
-msgid "Failed Updates"
-msgstr "没通过的更新"
+#: mod/register.php:263
+msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
+msgstr "你的全名 (比如张三,真名或看起来是真名):"
 
-#: mod/admin.php:1625
+#: mod/register.php:264
 msgid ""
-"This does not include updates prior to 1139, which did not return a status."
-msgstr "这个不包括1139号更新之前,它们没回答装线。"
+"Your Email Address: (Initial information will be send there, so this has to "
+"be an existing address.)"
+msgstr "您的电子邮件地址:(初始信息将发送到这里,所以这必须是一个存在的地址。)"
 
-#: mod/admin.php:1626
-msgid "Mark success (if update was manually applied)"
-msgstr "æ \87注æ\88\90å\8a\9fï¼\88å¦\82æ\9e\9cæ\89\8bå\8a¨å\9c°æ\8a\8aæ\9b´æ\96°å®\9eè¡\8cäº\86ï¼\89"
+#: mod/register.php:266 mod/settings.php:1184
+msgid "New Password:"
+msgstr "æ\96°å¯\86ç \81ï¼\9a"
 
-#: mod/admin.php:1627
-msgid "Attempt to execute this update step automatically"
-msgstr "试图自动地把这步更新实行"
+#: mod/register.php:266
+msgid "Leave empty for an auto generated password."
+msgstr "留空以使用自动生成的密码。"
+
+#: mod/register.php:267 mod/settings.php:1185
+msgid "Confirm:"
+msgstr "确认:"
 
-#: mod/admin.php:1666
+#: mod/register.php:268
 #, php-format
 msgid ""
-"\n"
-"\t\t\tDear %1$s,\n"
-"\t\t\t\tthe administrator of %2$s has set up an account for you."
+"Choose a profile nickname. This must begin with a text character. Your "
+"profile address on this site will then be '<strong>nickname@%s</strong>'."
 msgstr ""
 
-#: mod/admin.php:1669
-#, php-format
-msgid ""
-"\n"
-"\t\t\tThe login details are as follows:\n"
-"\n"
-"\t\t\tSite Location:\t%1$s\n"
-"\t\t\tLogin Name:\t\t%2$s\n"
-"\t\t\tPassword:\t\t%3$s\n"
-"\n"
-"\t\t\tYou may change your password from your account \"Settings\" page after logging\n"
-"\t\t\tin.\n"
-"\n"
-"\t\t\tPlease take a few moments to review the other account settings on that page.\n"
-"\n"
-"\t\t\tYou may also wish to add some basic information to your default profile\n"
-"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
-"\n"
-"\t\t\tWe recommend setting your full name, adding a profile photo,\n"
-"\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n"
-"\t\t\tperhaps what country you live in; if you do not wish to be more specific\n"
-"\t\t\tthan that.\n"
-"\n"
-"\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n"
-"\t\t\tIf you are new and do not know anybody here, they may help\n"
-"\t\t\tyou to make some new and interesting friends.\n"
-"\n"
-"\t\t\tIf you ever want to delete your account, you can do so at %1$s/removeme\n"
-"\n"
-"\t\t\tThank you and welcome to %4$s."
+#: mod/register.php:269
+msgid "Choose a nickname: "
+msgstr "选择昵称:"
+
+#: mod/register.php:272 src/Content/Nav.php:177 src/Module/Login.php:290
+msgid "Register"
+msgstr "注册"
+
+#: mod/register.php:277 mod/uimport.php:54
+msgid "Import"
 msgstr ""
 
-#: mod/admin.php:1706 src/Model/User.php:707
-#, php-format
-msgid "Registration details for %s"
-msgstr "注册信息为%s"
+#: mod/register.php:278
+msgid "Import your profile to this friendica instance"
+msgstr "进口您的简介到这个friendica服务器"
 
-#: mod/admin.php:1716
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] ""
+#: mod/register.php:286
+msgid "Note: This node explicitly contains adult content"
+msgstr ""
 
-#: mod/admin.php:1722
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s 用户被删除了"
+#: mod/regmod.php:53
+msgid "Account approved."
+msgstr "账户已被批准。"
 
-#: mod/admin.php:1769
+#: mod/regmod.php:77
 #, php-format
-msgid "User '%s' deleted"
-msgstr "用户 '%s' 被删除了"
+msgid "Registration revoked for %s"
+msgstr "撤销了 %s 的注册"
 
-#: mod/admin.php:1777
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "用户“%s”已解除屏蔽"
+#: mod/regmod.php:84
+msgid "Please login."
+msgstr "请登录。"
 
-#: mod/admin.php:1777
-#, php-format
-msgid "User '%s' blocked"
-msgstr "用户“%s”已屏蔽"
+#: mod/removeme.php:47
+msgid "User deleted their account"
+msgstr ""
 
-#: mod/admin.php:1838
-msgid "Private Forum"
+#: mod/removeme.php:48
+msgid ""
+"On your Friendica node an user deleted their account. Please ensure that "
+"their data is removed from the backups."
 msgstr ""
 
-#: mod/admin.php:1890 mod/admin.php:1901 mod/admin.php:1915 mod/admin.php:1933
-#: src/Content/ContactSelector.php:81
-msgid "Email"
-msgstr "ç\94µå­\90é\82®ä»¶"
+#: mod/removeme.php:49
+#, php-format
+msgid "The user id is %d"
+msgstr "ç\94¨æ\88· id ä¸º %d"
 
-#: mod/admin.php:1890 mod/admin.php:1915
-msgid "Register date"
-msgstr "注册日期"
+#: mod/removeme.php:85 mod/removeme.php:88
+msgid "Remove My Account"
+msgstr "删除我的账户"
 
-#: mod/admin.php:1890 mod/admin.php:1915
-msgid "Last login"
-msgstr "上次登录"
+#: mod/removeme.php:86
+msgid ""
+"This will completely remove your account. Once this has been done it is not "
+"recoverable."
+msgstr "这要完全删除您的账户。这一做过,就不能恢复。"
 
-#: mod/admin.php:1890 mod/admin.php:1915
-msgid "Last item"
-msgstr "上项目"
+#: mod/removeme.php:87
+msgid "Please enter your password for verification:"
+msgstr "请输入密码为确认:"
 
-#: mod/admin.php:1890
-msgid "Type"
-msgstr ""
+#: mod/repair_ostatus.php:21
+msgid "Resubscribing to OStatus contacts"
+msgstr "重新订阅 OStatus 联系人"
 
-#: mod/admin.php:1897
-msgid "Add User"
-msgstr "添加用户"
+#: mod/repair_ostatus.php:37
+msgid "Error"
+msgstr "错误"
 
-#: mod/admin.php:1899
-msgid "User registrations waiting for confirm"
-msgstr "用户注册等待确认"
+#: mod/search.php:104
+msgid "Only logged in users are permitted to perform a search."
+msgstr "只有已登录的用户被允许进行搜索。"
 
-#: mod/admin.php:1900
-msgid "User waiting for permanent deletion"
-msgstr "用户等待长久删除"
+#: mod/search.php:128
+msgid "Too Many Requests"
+msgstr "过多请求"
 
-#: mod/admin.php:1901
-msgid "Request date"
-msgstr "要求日期"
+#: mod/search.php:129
+msgid "Only one search per minute is permitted for not logged in users."
+msgstr "对未登录的用户,每分钟只允许一条搜索。"
 
-#: mod/admin.php:1902
-msgid "No registrations."
-msgstr "没æ\9c\89注å\86\8cã\80\82"
+#: mod/search.php:150 src/Content/Nav.php:191 src/Content/Text/HTML.php:968
+msgid "Search"
+msgstr "æ\90\9cç´¢"
 
-#: mod/admin.php:1903
-msgid "Note from the user"
+#: mod/search.php:236
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "项目标记为:%s"
+
+#: mod/search.php:238 src/Module/Contact.php:819
+#, php-format
+msgid "Results for: %s"
 msgstr ""
 
-#: mod/admin.php:1905
-msgid "Deny"
-msgstr "å\90¦å®\9a"
+#: mod/settings.php:61
+msgid "Account"
+msgstr "å¸\90æ\88·"
 
-#: mod/admin.php:1908
-msgid "User blocked"
-msgstr ""
+#: mod/settings.php:69 src/Content/Nav.php:259 src/Model/Profile.php:392
+msgid "Profiles"
+msgstr "简介"
 
-#: mod/admin.php:1910
-msgid "Site admin"
-msgstr "网站管理员"
+#: mod/settings.php:85
+msgid "Display"
+msgstr "显示"
 
-#: mod/admin.php:1911
-msgid "Account expired"
-msgstr "帐户过期了"
+#: mod/settings.php:92 mod/settings.php:833
+msgid "Social Networks"
+msgstr "社会化网络"
 
-#: mod/admin.php:1914
-msgid "New User"
-msgstr "新用户"
+#: mod/settings.php:106 src/Content/Nav.php:254
+msgid "Delegations"
+msgstr "代表"
 
-#: mod/admin.php:1915
-msgid "Deleted since"
-msgstr "删除从"
+#: mod/settings.php:113
+msgid "Connected apps"
+msgstr "连接着应用"
 
-#: mod/admin.php:1920
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "特定的用户被删除!\\n\\n什么这些用户放在这个网站被永远删除!\\n\\n您肯定吗?"
+#: mod/settings.php:120 mod/uexport.php:53
+msgid "Export personal data"
+msgstr "导出个人信息"
 
-#: mod/admin.php:1921
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "用户{0}将被删除!\\n\\n什么这个用户放在这个网站被永远删除!\\n\\n您肯定吗?"
+#: mod/settings.php:127
+msgid "Remove account"
+msgstr "删除账户"
 
-#: mod/admin.php:1931
-msgid "Name of the new user."
-msgstr "新用户的名字。"
+#: mod/settings.php:179
+msgid "Missing some important data!"
+msgstr "缺失一些重要数据!"
 
-#: mod/admin.php:1932
-msgid "Nickname"
-msgstr "æ\98µç§°"
+#: mod/settings.php:181 mod/settings.php:694 src/Module/Contact.php:826
+msgid "Update"
+msgstr "æ\9b´æ\96°"
 
-#: mod/admin.php:1932
-msgid "Nickname of the new user."
-msgstr "新用户的昵称。"
+#: mod/settings.php:290
+msgid "Failed to connect with email account using the settings provided."
+msgstr "不能连接电子邮件账户用输入的设置。"
 
-#: mod/admin.php:1933
-msgid "Email address of the new user."
-msgstr "新用户的邮件地址。"
+#: mod/settings.php:295
+msgid "Email settings updated."
+msgstr "电子邮件设置更新了"
 
-#: mod/admin.php:1975
-#, php-format
-msgid "Addon %s disabled."
-msgstr "插件 %s 已禁用。"
+#: mod/settings.php:311
+msgid "Features updated"
+msgstr "特点更新了"
 
-#: mod/admin.php:1979
-#, php-format
-msgid "Addon %s enabled."
-msgstr "插件 %s 已启用。"
+#: mod/settings.php:384
+msgid "Relocate message has been send to your contacts"
+msgstr "调动消息已发送给您的联系人"
+
+#: mod/settings.php:396
+msgid "Passwords do not match."
+msgstr "密码不匹配。"
+
+#: mod/settings.php:404 src/Core/Console/NewPassword.php:80
+msgid "Password update failed. Please try again."
+msgstr "密码更新失败了。请再试。"
+
+#: mod/settings.php:407 src/Core/Console/NewPassword.php:83
+msgid "Password changed."
+msgstr "密码变化了。"
 
-#: mod/admin.php:1989 mod/admin.php:2238
-msgid "Disable"
-msgstr "å\81\9cç\94¨"
+#: mod/settings.php:410
+msgid "Password unchanged."
+msgstr "å¯\86ç \81æ\9cªæ\94¹å\8f\98ã\80\82"
 
-#: mod/admin.php:1992 mod/admin.php:2241
-msgid "Enable"
-msgstr "使能用"
+#: mod/settings.php:493
+msgid " Please use a shorter name."
+msgstr " 请用一个更短的名字。"
 
-#: mod/admin.php:2014 mod/admin.php:2284
-msgid "Toggle"
-msgstr "è\82\98è\8a\82"
+#: mod/settings.php:496
+msgid " Name too short."
+msgstr " å\90\8då­\97è¿\87ç\9f­ã\80\82"
 
-#: mod/admin.php:2022 mod/admin.php:2293
-msgid "Author: "
-msgstr "作者:"
+#: mod/settings.php:504
+msgid "Wrong Password"
+msgstr "密码不正确"
 
-#: mod/admin.php:2023 mod/admin.php:2294
-msgid "Maintainer: "
-msgstr "维护者:"
+#: mod/settings.php:509
+msgid "Invalid email."
+msgstr "无效的邮箱。"
 
-#: mod/admin.php:2075
-msgid "Reload active addons"
-msgstr "重新加载可用插件"
+#: mod/settings.php:515
+msgid "Cannot change to that email."
+msgstr "无法更改到此电子邮件地址。"
 
-#: mod/admin.php:2080
-#, php-format
-msgid ""
-"There are currently no addons available on your node. You can find the "
-"official addon repository at %1$s and might find other interesting addons in"
-" the open addon registry at %2$s"
-msgstr "目前您的节点上没有可用插件。您可以在 %1$s 找到官方插件库,或者到开放的插件登记处 %2$s 也能找到其他有趣的插件"
+#: mod/settings.php:565
+msgid "Private forum has no privacy permissions. Using default privacy group."
+msgstr "私人评坛没有隐私批准。默认隐私组用者。"
 
-#: mod/admin.php:2200
-msgid "No themes found."
-msgstr "找不到主题。"
+#: mod/settings.php:568
+msgid "Private forum has no privacy permissions and no default privacy group."
+msgstr "私人评坛没有隐私批准或默认隐私组。"
 
-#: mod/admin.php:2275
-msgid "Screenshot"
-msgstr "截图"
+#: mod/settings.php:608
+msgid "Settings updated."
+msgstr "设置更新了。"
 
-#: mod/admin.php:2329
-msgid "Reload active themes"
-msgstr "重载活动的主题"
+#: mod/settings.php:667 mod/settings.php:693 mod/settings.php:727
+msgid "Add application"
+msgstr "加入应用"
 
-#: mod/admin.php:2334
-#, php-format
-msgid "No themes found on the system. They should be placed in %1$s"
-msgstr "未在系统中发现主题。它们应该被放置在 %1$s"
+#: mod/settings.php:671 mod/settings.php:697
+msgid "Consumer Key"
+msgstr "钥匙(Consumer Key)"
 
-#: mod/admin.php:2335
-msgid "[Experimental]"
-msgstr "[试验]"
+#: mod/settings.php:672 mod/settings.php:698
+msgid "Consumer Secret"
+msgstr "密码(Consumer Secret)"
 
-#: mod/admin.php:2336
-msgid "[Unsupported]"
-msgstr "[没支持]"
+#: mod/settings.php:673 mod/settings.php:699
+msgid "Redirect"
+msgstr "重定向"
 
-#: mod/admin.php:2360
-msgid "Log settings updated."
-msgstr "日志设置更新了。"
+#: mod/settings.php:674 mod/settings.php:700
+msgid "Icon url"
+msgstr "图符URL"
 
-#: mod/admin.php:2393
-msgid "PHP log currently enabled."
-msgstr "PHP 日志已启用。"
+#: mod/settings.php:685
+msgid "You can't edit this application."
+msgstr "您不能编辑这个应用。"
 
-#: mod/admin.php:2395
-msgid "PHP log currently disabled."
-msgstr "PHP 日志已禁用。"
+#: mod/settings.php:726
+msgid "Connected Apps"
+msgstr "连接着应用"
 
-#: mod/admin.php:2404
-msgid "Clear"
-msgstr "清理出"
+#: mod/settings.php:728 src/Object/Post.php:163 src/Object/Post.php:165
+msgid "Edit"
+msgstr "编辑"
 
-#: mod/admin.php:2408
-msgid "Enable Debugging"
-msgstr "å\90¯ç\94¨è°\83è¯\95"
+#: mod/settings.php:730
+msgid "Client key starts with"
+msgstr "客æ\88·é\92¥å\8c\99头å­\97æ\98¯"
 
-#: mod/admin.php:2409
-msgid "Log file"
-msgstr "æ\97¥å¿\97æ\96\87件"
+#: mod/settings.php:731
+msgid "No name"
+msgstr "æ\97 å\90\8d"
 
-#: mod/admin.php:2409
-msgid ""
-"Must be writable by web server. Relative to your Friendica top-level "
-"directory."
-msgstr "必要被网页服务器可写的。相对Friendica主文件夹。"
+#: mod/settings.php:732
+msgid "Remove authorization"
+msgstr "撤消权能"
 
-#: mod/admin.php:2410
-msgid "Log level"
-msgstr "æ\97¥å¿\97级å\88«"
+#: mod/settings.php:743
+msgid "No Addon settings configured"
+msgstr "æ\97 æ\8f\92件设置é\85\8dç½®å®\8cæ\88\90"
 
-#: mod/admin.php:2412
-msgid "PHP logging"
-msgstr "PHP 日志"
+#: mod/settings.php:752
+msgid "Addon Settings"
+msgstr "插件设置"
 
-#: mod/admin.php:2413
-msgid ""
-"To temporarily enable logging of PHP errors and warnings you can prepend the"
-" following to the index.php file of your installation. The filename set in "
-"the 'error_log' line is relative to the friendica top-level directory and "
-"must be writeable by the web server. The option '1' for 'log_errors' and "
-"'display_errors' is to enable these options, set to '0' to disable them."
-msgstr ""
+#: mod/settings.php:773
+msgid "Additional Features"
+msgstr "附加特性"
 
-#: mod/admin.php:2444
-#, php-format
-msgid ""
-"Error trying to open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see "
-"if file %1$s exist and is readable."
-msgstr "打开  <strong>%1$s</strong> 日志文件出错。\\r\\n <br/> 请检查 %1$s 文件是否存在并且可读。"
+#: mod/settings.php:796 src/Content/ContactSelector.php:84
+msgid "Diaspora"
+msgstr "Diaspora"
 
-#: mod/admin.php:2448
-#, php-format
-msgid ""
-"Couldn't open <strong>%1$s</strong> log file.\\r\\n<br/>Check to see if file"
-" %1$s is readable."
-msgstr "无法打开 <strong>%1$s</strong> 日志文件。\\r\\n <br/> 请检查 %1$s 文件是否可读。"
+#: mod/settings.php:796 mod/settings.php:797
+msgid "enabled"
+msgstr "能够做的"
+
+#: mod/settings.php:796 mod/settings.php:797
+msgid "disabled"
+msgstr "已停用"
 
-#: mod/admin.php:2540
+#: mod/settings.php:796 mod/settings.php:797
 #, php-format
-msgid "Lock feature %s"
-msgstr "锁定特性 %s"
+msgid "Built-in support for %s connectivity is %s"
+msgstr "包括的支持为%s连通性是%s"
 
-#: mod/admin.php:2548
-msgid "Manage Additional Features"
-msgstr "管理附加特性"
+#: mod/settings.php:797
+msgid "GNU Social (OStatus)"
+msgstr "GNU Social (OStatus)"
 
-#: mod/openid.php:29
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID协议错误。没ID还。 "
+#: mod/settings.php:828
+msgid "Email access is disabled on this site."
+msgstr "电子邮件访问在这个站上被禁用。"
 
-#: mod/openid.php:66
-msgid ""
-"Account not found and OpenID registration is not permitted on this site."
-msgstr "找不到账户和OpenID注册不允许。"
+#: mod/settings.php:838
+msgid "General Social Media Settings"
+msgstr "通用社交媒体设置"
 
-#: mod/openid.php:116 src/Module/Login.php:85 src/Module/Login.php:134
-msgid "Login failed."
-msgstr "ç\99»å½\95失败ã\80\82"
+#: mod/settings.php:839
+msgid "Disable Content Warning"
+msgstr "ç¦\81ç\94¨å\86\85容警å\91\8a"
 
-#: mod/dfrn_request.php:94
-msgid "This introduction has already been accepted."
-msgstr "这个介绍已经接受了。"
+#: mod/settings.php:839
+msgid ""
+"Users on networks like Mastodon or Pleroma are able to set a content warning"
+" field which collapse their post by default. This disables the automatic "
+"collapsing and sets the content warning as the post title. Doesn't affect "
+"any other content filtering you eventually set up."
+msgstr ""
 
-#: mod/dfrn_request.php:112 mod/dfrn_request.php:353
-msgid "Profile location is not valid or does not contain profile information."
-msgstr "简介位置失效或不包含简介信息。"
+#: mod/settings.php:840
+msgid "Disable intelligent shortening"
+msgstr ""
 
-#: mod/dfrn_request.php:116 mod/dfrn_request.php:357
-msgid "Warning: profile location has no identifiable owner name."
-msgstr "警告:简介位置没有可设别的主名。"
+#: mod/settings.php:840
+msgid ""
+"Normally the system tries to find the best link to add to shortened posts. "
+"If this option is enabled then every shortened post will always point to the"
+" original friendica post."
+msgstr ""
 
-#: mod/dfrn_request.php:119 mod/dfrn_request.php:360
-msgid "Warning: profile location has no profile photo."
-msgstr "è­¦å\91\8aï¼\9aç®\80ä»\8bä½\8d置没æ\9c\89ç®\80ä»\8bå\9b¾ã\80\82"
+#: mod/settings.php:841
+msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
+msgstr "è\87ªå\8a¨å\85³æ³¨ä»»ä½\95 GNU Social (OStatus) å\85³æ³¨è\80\85\8f\90å\8f\8aè\80\85"
 
-#: mod/dfrn_request.php:123 mod/dfrn_request.php:364
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] "%d需要的参数没找到在输入的位置。"
+#: mod/settings.php:841
+msgid ""
+"If you receive a message from an unknown OStatus user, this option decides "
+"what to do. If it is checked, a new contact will be created for every "
+"unknown user."
+msgstr ""
 
-#: mod/dfrn_request.php:161
-msgid "Introduction complete."
-msgstr "介绍完成的。"
+#: mod/settings.php:842
+msgid "Default group for OStatus contacts"
+msgstr "用于 OStatus 联系人的默认组"
 
-#: mod/dfrn_request.php:197
-msgid "Unrecoverable protocol error."
-msgstr "不能恢复的协议错误"
+#: mod/settings.php:843
+msgid "Your legacy GNU Social account"
+msgstr "您遗留的 GNU Social 账户"
 
-#: mod/dfrn_request.php:224
-msgid "Profile unavailable."
-msgstr "简介无效"
+#: mod/settings.php:843
+msgid ""
+"If you enter your old GNU Social/Statusnet account name here (in the format "
+"user@domain.tld), your contacts will be added automatically. The field will "
+"be emptied when done."
+msgstr "如果您在这里输入您旧的 GNU Social/Statusnet 账号名 (格式示例 user@domain.tld) ,您的联系人列表将会被自动添加。完成后该字段将被清空。"
 
-#: mod/dfrn_request.php:246
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr "%s今天已经受到了太多联络要求"
+#: mod/settings.php:846
+msgid "Repair OStatus subscriptions"
+msgstr "修复 OStatus 订阅"
 
-#: mod/dfrn_request.php:247
-msgid "Spam protection measures have been invoked."
-msgstr "垃圾保护措施被用了。"
+#: mod/settings.php:850
+msgid "Email/Mailbox Setup"
+msgstr "邮件收件箱设置"
 
-#: mod/dfrn_request.php:248
-msgid "Friends are advised to please try again in 24 hours."
-msgstr "朋友们被建议请24小时后再试。"
+#: mod/settings.php:851
+msgid ""
+"If you wish to communicate with email contacts using this service "
+"(optional), please specify how to connect to your mailbox."
+msgstr "如果您想用这股服务(可选的)跟邮件熟人交流,请指定怎么连通您的收件箱。"
 
-#: mod/dfrn_request.php:274
-msgid "Invalid locator"
-msgstr "无效找到物"
+#: mod/settings.php:852
+msgid "Last successful email check:"
+msgstr "上个成功收件箱检查:"
 
-#: mod/dfrn_request.php:310
-msgid "You have already introduced yourself here."
-msgstr "您已经自我介绍这儿。"
+#: mod/settings.php:854
+msgid "IMAP server name:"
+msgstr "IMAP服务器名字:"
 
-#: mod/dfrn_request.php:313
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr "看上去您已经是%s的朋友。"
+#: mod/settings.php:855
+msgid "IMAP port:"
+msgstr "IMAP服务器端口:"
 
-#: mod/dfrn_request.php:333
-msgid "Invalid profile URL."
-msgstr "无效的简介URL。"
+#: mod/settings.php:856
+msgid "Security:"
+msgstr "安全:"
 
-#: mod/dfrn_request.php:339 src/Model/Contact.php:1577
-msgid "Disallowed profile URL."
-msgstr "不允许的简介地址."
+#: mod/settings.php:857
+msgid "Email login name:"
+msgstr "邮件登录名:"
 
-#: mod/dfrn_request.php:412 mod/contacts.php:235
-msgid "Failed to update contact record."
-msgstr "更新联系人记录失败。"
+#: mod/settings.php:858
+msgid "Email password:"
+msgstr "邮件密码:"
 
-#: mod/dfrn_request.php:432
-msgid "Your introduction has been sent."
-msgstr "您的介绍发布了。"
+#: mod/settings.php:859
+msgid "Reply-to address:"
+msgstr "回答地址:"
 
-#: mod/dfrn_request.php:470
-msgid ""
-"Remote subscription can't be done for your network. Please subscribe "
-"directly on your system."
-msgstr "无法为您的网络完成远程订阅。请直接在您的系统上订阅。"
+#: mod/settings.php:860
+msgid "Send public posts to all email contacts:"
+msgstr "发送公开文章给所有的邮件联系人:"
 
-#: mod/dfrn_request.php:486
-msgid "Please login to confirm introduction."
-msgstr "请ç\99»å½\95以确认ä»\8bç»\8dã\80\82"
+#: mod/settings.php:861
+msgid "Action after import:"
+msgstr "è¿\9bå\8f£å\90\8eè¡\8cå\8a¨ï¼\9a"
 
-#: mod/dfrn_request.php:494
-msgid ""
-"Incorrect identity currently logged in. Please login to "
-"<strong>this</strong> profile."
-msgstr "当前登录的身份不正确。请登录到<strong>这个</strong>用户。"
+#: mod/settings.php:861 src/Content/Nav.php:242
+msgid "Mark as seen"
+msgstr "标注看过"
 
-#: mod/dfrn_request.php:508 mod/dfrn_request.php:525
-msgid "Confirm"
-msgstr "确认"
+#: mod/settings.php:861
+msgid "Move to folder"
+msgstr "搬到文件夹"
 
-#: mod/dfrn_request.php:520
-msgid "Hide this contact"
-msgstr "隐藏这个联系人"
+#: mod/settings.php:862
+msgid "Move to folder:"
+msgstr "搬到文件夹:"
 
-#: mod/dfrn_request.php:523
+#: mod/settings.php:905
 #, php-format
-msgid "Welcome home %s."
-msgstr "欢迎%s。"
+msgid "%s - (Unsupported)"
+msgstr "%s - (不支持的)"
 
-#: mod/dfrn_request.php:524
+#: mod/settings.php:907
 #, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr "请确认您的介绍/联络要求给%s。"
+msgid "%s - (Experimental)"
+msgstr "%s - (实验性)"
 
-#: mod/dfrn_request.php:634
-msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"communications networks:"
-msgstr "请从以下支持的通信网络之一输入你的 “身份地址”:"
+#: mod/settings.php:934 src/Core/L10n.php:361 src/Model/Event.php:392
+msgid "Sunday"
+msgstr "星期天"
 
-#: mod/dfrn_request.php:637
-#, php-format
-msgid ""
-"If you are not yet a member of the free social web, <a href=\"%s\">follow "
-"this link to find a public Friendica site and join us today</a>."
-msgstr "如果您还不是自由社交网络用户中的一员,<a href=\"%s\"> 请通过此链接查找公共 Friendica 站点并在今天加入我们吧 </a>。"
+#: mod/settings.php:934 src/Core/L10n.php:361 src/Model/Event.php:393
+msgid "Monday"
+msgstr "星期一"
 
-#: mod/dfrn_request.php:642
-msgid "Friend/Connection Request"
-msgstr "朋友/连接请求"
+#: mod/settings.php:950
+msgid "Display Settings"
+msgstr "表示设置"
 
-#: mod/dfrn_request.php:643
-msgid ""
-"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
-"testuser@gnusocial.de"
-msgstr "例如:jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"
+#: mod/settings.php:956
+msgid "Display Theme:"
+msgstr "显示主题:"
 
-#: mod/dfrn_request.php:644 mod/follow.php:149
-msgid "Please answer the following:"
-msgstr "请回答下述的:"
+#: mod/settings.php:957
+msgid "Mobile Theme:"
+msgstr "手机主题:"
 
-#: mod/dfrn_request.php:645 mod/follow.php:150
-#, php-format
-msgid "Does %s know you?"
-msgstr "%s是否认识你?"
+#: mod/settings.php:958
+msgid "Suppress warning of insecure networks"
+msgstr ""
 
-#: mod/dfrn_request.php:646 mod/follow.php:151
-msgid "Add a personal note:"
-msgstr "添加一个个人便条:"
+#: mod/settings.php:958
+msgid ""
+"Should the system suppress the warning that the current group contains "
+"members of networks that can't receive non public postings."
+msgstr ""
 
-#: mod/dfrn_request.php:648 src/Content/ContactSelector.php:78
-msgid "Friendica"
-msgstr "Friendica"
+#: mod/settings.php:959
+msgid "Update browser every xx seconds"
+msgstr "更新游览器每XX秒"
 
-#: mod/dfrn_request.php:649
-msgid "GNU Social (Pleroma, Mastodon)"
-msgstr "GNU Social (Pleroma, Mastodon)"
+#: mod/settings.php:959
+msgid "Minimum of 10 seconds. Enter -1 to disable it."
+msgstr "至少 10 秒。输入 -1 禁用。"
 
-#: mod/dfrn_request.php:650
-msgid "Diaspora (Socialhome, Hubzilla)"
-msgstr "Diaspora (Socialhome, Hubzilla)"
+#: mod/settings.php:960
+msgid "Number of items to display per page:"
+msgstr "每页表示多少项目:"
 
-#: mod/dfrn_request.php:651
-#, php-format
-msgid ""
-" - please do not use this form.  Instead, enter %s into your Diaspora search"
-" bar."
-msgstr " - 请别用这个表格。而是在你的 Diaspora 搜索栏输入 %s."
+#: mod/settings.php:960 mod/settings.php:961
+msgid "Maximum of 100 items"
+msgstr "最多100项目"
 
-#: mod/api.php:85 mod/api.php:107
-msgid "Authorize application connection"
-msgstr "授权应用连接"
+#: mod/settings.php:961
+msgid "Number of items to display per page when viewed from mobile device:"
+msgstr "用手机看一页展示多少项目:"
 
-#: mod/api.php:86
-msgid "Return to your app and insert this Securty Code:"
-msgstr "回归您的应用和输入这个安全密码:"
+#: mod/settings.php:962
+msgid "Don't show emoticons"
+msgstr "不显示表情符号"
 
-#: mod/api.php:95
-msgid "Please login to continue."
-msgstr "请登录以继续。"
+#: mod/settings.php:963
+msgid "Calendar"
+msgstr "日历"
 
-#: mod/api.php:109
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "你要授权这个应用访问你的文章和联系人,及/或为你创建新的文章吗?"
+#: mod/settings.php:964
+msgid "Beginning of week:"
+msgstr "一周的开始:"
 
-#: mod/profile_photo.php:55
-msgid "Image uploaded but image cropping failed."
-msgstr "照片上传去了,但修剪失灵。"
+#: mod/settings.php:965
+msgid "Don't show notices"
+msgstr "不显示提示"
 
-#: mod/profile_photo.php:87 mod/profile_photo.php:96 mod/profile_photo.php:105
-#: mod/profile_photo.php:313
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "照片减少[%s]失灵。"
+#: mod/settings.php:966
+msgid "Infinite scroll"
+msgstr "无限的滚动"
+
+#: mod/settings.php:967
+msgid "Automatic updates only at the top of the network page"
+msgstr "仅在返回到网页头部时自动更新"
 
-#: mod/profile_photo.php:124
+#: mod/settings.php:967
 msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "万一新照片一会出现,换档重新加载或者成为空浏览器高速缓存。"
+"When disabled, the network page is updated all the time, which could be "
+"confusing while reading."
+msgstr "禁用后,网页将会一直更新,这可能会对阅读造成干扰。"
 
-#: mod/profile_photo.php:132
-msgid "Unable to process image"
-msgstr "不能处理照片"
+#: mod/settings.php:968
+msgid "Bandwidth Saver Mode"
+msgstr ""
 
-#: mod/profile_photo.php:244
-msgid "Upload File:"
-msgstr "上传文件:"
+#: mod/settings.php:968
+msgid ""
+"When enabled, embedded content is not displayed on automatic updates, they "
+"only show on page reload."
+msgstr "当启用时,嵌入的内容不会在自动更新时显示,它们只在页面重载时显示。"
 
-#: mod/profile_photo.php:245
-msgid "Select a profile:"
-msgstr "选择一个简介"
+#: mod/settings.php:969
+msgid "Smart Threading"
+msgstr ""
 
-#: mod/profile_photo.php:247 mod/fbrowser.php:106 mod/fbrowser.php:137
-msgid "Upload"
-msgstr "上传"
+#: mod/settings.php:969
+msgid ""
+"When enabled, suppress extraneous thread indentation while keeping it where "
+"it matters. Only works if threading is available and enabled."
+msgstr ""
 
-#: mod/profile_photo.php:250
-msgid "or"
-msgstr "或者"
+#: mod/settings.php:971
+msgid "General Theme Settings"
+msgstr "通用主题设置"
 
-#: mod/profile_photo.php:251
-msgid "skip this step"
-msgstr "略过这步"
+#: mod/settings.php:972
+msgid "Custom Theme Settings"
+msgstr "自定义主题设置"
 
-#: mod/profile_photo.php:251
-msgid "select a photo from your photo albums"
-msgstr "从您的照片册选择一片。"
+#: mod/settings.php:973
+msgid "Content Settings"
+msgstr "内容设置"
 
-#: mod/profile_photo.php:264
-msgid "Crop Image"
-msgstr "修剪照片"
+#: mod/settings.php:974 view/theme/duepuntozero/config.php:74
+#: view/theme/frio/config.php:121 view/theme/quattro/config.php:76
+#: view/theme/vier/config.php:122
+msgid "Theme settings"
+msgstr "主题设置"
 
-#: mod/profile_photo.php:265
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "请调图片剪裁为最好看。"
+#: mod/settings.php:988
+msgid "Unable to find your profile. Please contact your admin."
+msgstr "无法找到您的简介。请联系您的管理员。"
 
-#: mod/profile_photo.php:267
-msgid "Done Editing"
-msgstr "编辑完成"
+#: mod/settings.php:1027
+msgid "Account Types"
+msgstr "账户类型"
 
-#: mod/profile_photo.php:303
-msgid "Image uploaded successfully."
-msgstr "照片成功地上传了。"
+#: mod/settings.php:1028
+msgid "Personal Page Subtypes"
+msgstr ""
 
-#: mod/wall_attach.php:107
-msgid "Sorry, maybe your upload is bigger than the PHP configuration allows"
-msgstr "不好意思,可能你上传的是PHP设置允许的大"
+#: mod/settings.php:1029
+msgid "Community Forum Subtypes"
+msgstr ""
 
-#: mod/wall_attach.php:107
-msgid "Or - did you try to upload an empty file?"
-msgstr "或者,你是不是上传空的文件?"
+#: mod/settings.php:1037
+msgid "Account for a personal profile."
+msgstr ""
 
-#: mod/wall_attach.php:118
-#, php-format
-msgid "File exceeds size limit of %s"
-msgstr "文件超过了 %s 的大小限制"
+#: mod/settings.php:1041
+msgid ""
+"Account for an organisation that automatically approves contact requests as "
+"\"Followers\"."
+msgstr ""
 
-#: mod/wall_attach.php:142 mod/wall_attach.php:158
-msgid "File upload failed."
-msgstr "文件上传失败。"
+#: mod/settings.php:1045
+msgid ""
+"Account for a news reflector that automatically approves contact requests as"
+" \"Followers\"."
+msgstr ""
 
-#: mod/item.php:117
-msgid "Unable to locate original post."
-msgstr "找不到当初的新闻"
+#: mod/settings.php:1049
+msgid "Account for community discussions."
+msgstr ""
 
-#: mod/item.php:285
-msgid "Empty post discarded."
-msgstr "空帖子被丢弃了。"
+#: mod/settings.php:1053
+msgid ""
+"Account for a regular personal profile that requires manual approval of "
+"\"Friends\" and \"Followers\"."
+msgstr ""
 
-#: mod/item.php:809
-#, php-format
+#: mod/settings.php:1057
 msgid ""
-"This message was sent to you by %s, a member of the Friendica social "
-"network."
-msgstr "这个新闻是由%s,Friendica社会化网络成员之一,发给你。"
+"Account for a public profile that automatically approves contact requests as"
+" \"Followers\"."
+msgstr ""
 
-#: mod/item.php:811
-#, php-format
-msgid "You may visit them online at %s"
-msgstr "你可以网上拜访他在%s"
+#: mod/settings.php:1061
+msgid "Automatically approves all contact requests."
+msgstr "自动批准所有联系人请求。"
 
-#: mod/item.php:812
+#: mod/settings.php:1065
 msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr "你不想受到这些新闻的话,请回答这个新闻给发者联系。"
+"Account for a popular profile that automatically approves contact requests "
+"as \"Friends\"."
+msgstr ""
 
-#: mod/item.php:816
-#, php-format
-msgid "%s posted an update."
-msgstr "%s贴上一个新闻。"
+#: mod/settings.php:1068
+msgid "Private Forum [Experimental]"
+msgstr "隐私评坛[实验性的 ]"
 
-#: mod/help.php:49
-msgid "Help:"
-msgstr "帮助:"
+#: mod/settings.php:1069
+msgid "Requires manual approval of contact requests."
+msgstr "需要人工批准联系人请求。"
 
-#: mod/uimport.php:72
-msgid "Move account"
-msgstr "把账户搬出"
+#: mod/settings.php:1080
+msgid "OpenID:"
+msgstr "OpenID:"
+
+#: mod/settings.php:1080
+msgid "(Optional) Allow this OpenID to login to this account."
+msgstr "(可选的) 允许这个 OpenID 登录这个账户。"
 
-#: mod/uimport.php:73
-msgid "You can import an account from another Friendica server."
-msgstr "您会从别的Friendica服务器进口账户"
+#: mod/settings.php:1088
+msgid "Publish your default profile in your local site directory?"
+msgstr "出版您默认简介在您当地的网站目录?"
 
-#: mod/uimport.php:74
+#: mod/settings.php:1088
+#, php-format
 msgid ""
-"You need to export your account from the old server and upload it here. We "
-"will recreate your old account here with all your contacts. We will try also"
-" to inform your friends that you moved here."
-msgstr "你需要从老服务器导出你的账户并在这里上传。我们会在这里重建你的账户,包括你所有的联系人。我们也会通知你的朋友们你搬到了这里。"
+"Your profile will be published in this node's <a href=\"%s\">local "
+"directory</a>. Your profile details may be publicly visible depending on the"
+" system settings."
+msgstr ""
+
+#: mod/settings.php:1094
+msgid "Publish your default profile in the global social directory?"
+msgstr "出版您默认简介在综合社会目录?"
 
-#: mod/uimport.php:75
+#: mod/settings.php:1094
+#, php-format
 msgid ""
-"This feature is experimental. We can't import contacts from the OStatus "
-"network (GNU Social/Statusnet) or from Diaspora"
-msgstr "这个特性是实验性的。我们不能从 OStatus 网络 (GNU Social/Statusnet) 或者 Diaspora 导入联系人"
+"Your profile will be published in the global friendica directories (e.g. <a "
+"href=\"%s\">%s</a>). Your profile will be visible in public."
+msgstr ""
 
-#: mod/uimport.php:76
-msgid "Account file"
-msgstr "账户文件"
+#: mod/settings.php:1101
+msgid "Hide your contact/friend list from viewers of your default profile?"
+msgstr "在您的默认简介中向访问者隐藏您的联系人/朋友列表?"
 
-#: mod/uimport.php:76
+#: mod/settings.php:1101
 msgid ""
-"To export your account, go to \"Settings->Export your personal data\" and "
-"select \"Export account\""
-msgstr "为了导出你的账户,点击「设置→导出你的个人信息」和选择「导出账户」"
+"Your contact list won't be shown in your default profile page. You can "
+"decide to show your contact list separately for each additional profile you "
+"create"
+msgstr "您的联系人列表将不会在您的默认简介页面展示。您可以决定在您自建的各附加简介中分别展示您的联系人列表"
 
-#: mod/profperm.php:35 mod/profperm.php:68
-msgid "Invalid profile identifier."
-msgstr "无限的简介标识符。"
+#: mod/settings.php:1105
+msgid "Hide your profile details from anonymous viewers?"
+msgstr "对匿名访问者隐藏详细简介?"
 
-#: mod/profperm.php:114
-msgid "Profile Visibility Editor"
-msgstr "简介能见度编辑器。"
+#: mod/settings.php:1105
+msgid ""
+"Anonymous visitors will only see your profile picture, your display name and"
+" the nickname you are using on your profile page. Your public posts and "
+"replies will still be accessible by other means."
+msgstr ""
 
-#: mod/profperm.php:127
-msgid "Visible To"
-msgstr "能见被"
+#: mod/settings.php:1109
+msgid "Allow friends to post to your profile page?"
+msgstr "允许朋友们贴文章在您的简介页?"
 
-#: mod/profperm.php:143
-msgid "All Contacts (with secure profile access)"
+#: mod/settings.php:1109
+msgid ""
+"Your contacts may write posts on your profile wall. These posts will be "
+"distributed to your contacts"
 msgstr ""
 
-#: mod/cal.php:277 mod/events.php:391
-msgid "View"
-msgstr "查看"
+#: mod/settings.php:1113
+msgid "Allow friends to tag your posts?"
+msgstr "允许朋友们标签您的文章?"
 
-#: mod/cal.php:278 mod/events.php:393
-msgid "Previous"
-msgstr ""
+#: mod/settings.php:1113
+msgid "Your contacts can add additional tags to your posts."
+msgstr "您的联系人可以为您的帖子添加额外的标签。"
 
-#: mod/cal.php:282 mod/events.php:399 src/Model/Event.php:421
-msgid "today"
-msgstr "今天"
+#: mod/settings.php:1117
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "允许我们建议您潜力朋友给新成员?"
 
-#: mod/cal.php:283 mod/events.php:400 src/Util/Temporal.php:304
-#: src/Model/Event.php:422
-msgid "month"
-msgstr ""
+#: mod/settings.php:1117
+msgid ""
+"If you like, Friendica may suggest new members to add you as a contact."
+msgstr "如果您愿意,Friendica 可能会建议新成员将您添加为联系人。"
 
-#: mod/cal.php:284 mod/events.php:401 src/Util/Temporal.php:305
-#: src/Model/Event.php:423
-msgid "week"
-msgstr "星期"
+#: mod/settings.php:1121
+msgid "Permit unknown people to send you private mail?"
+msgstr "允许生人寄给您私人邮件?"
 
-#: mod/cal.php:285 mod/events.php:402 src/Util/Temporal.php:306
-#: src/Model/Event.php:424
-msgid "day"
-msgstr "日"
+#: mod/settings.php:1121
+msgid ""
+"Friendica network users may send you private messages even if they are not "
+"in your contact list."
+msgstr "Friendica 网络用户可能会向您发送私人信息,即使他们不在您的联系人列表中。"
 
-#: mod/cal.php:286 mod/events.php:403
-msgid "list"
-msgstr "列表"
+#: mod/settings.php:1125
+msgid "Profile is <strong>not published</strong>."
+msgstr "简介<strong>未发布</strong>。"
 
-#: mod/cal.php:299 src/Core/Console/NewPassword.php:68 src/Model/User.php:221
-msgid "User not found"
-msgstr "找不到用户"
+#: mod/settings.php:1131
+#, php-format
+msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
+msgstr "你的身份地址是 <strong>'%s'</strong> 或者 '%s'."
 
-#: mod/cal.php:315
-msgid "This calendar format is not supported"
-msgstr "这个日历格式不被支持"
+#: mod/settings.php:1138
+msgid "Automatically expire posts after this many days:"
+msgstr "在这数天后自动使文章过期:"
 
-#: mod/cal.php:317
-msgid "No exportable data found"
-msgstr "找不到可导出的数据"
+#: mod/settings.php:1138
+msgid "If empty, posts will not expire. Expired posts will be deleted"
+msgstr "如果为空,文章不会过期。过期的文章将被删除"
 
-#: mod/cal.php:334
-msgid "calendar"
-msgstr "日历"
+#: mod/settings.php:1139
+msgid "Advanced expiration settings"
+msgstr "高级过期设置"
 
-#: mod/regmod.php:70
-msgid "Account approved."
-msgstr "账户已被批准。"
+#: mod/settings.php:1140
+msgid "Advanced Expiration"
+msgstr "先进的过期"
 
-#: mod/regmod.php:95
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "撤销了 %s 的注册"
+#: mod/settings.php:1141
+msgid "Expire posts:"
+msgstr "把文章过期:"
 
-#: mod/regmod.php:102
-msgid "Please login."
-msgstr "请登录。"
+#: mod/settings.php:1142
+msgid "Expire personal notes:"
+msgstr "把私人便条过期:"
 
-#: mod/editpost.php:26 mod/editpost.php:36
-msgid "Item not found"
-msgstr "项目没找到"
+#: mod/settings.php:1143
+msgid "Expire starred posts:"
+msgstr "把星的文章过期:"
 
-#: mod/editpost.php:43
-msgid "Edit post"
-msgstr "编辑文章"
+#: mod/settings.php:1144
+msgid "Expire photos:"
+msgstr "把照片过期:"
 
-#: mod/editpost.php:125 src/Core/ACL.php:304
-msgid "CC: email addresses"
-msgstr "抄送: 电子邮件地址"
+#: mod/settings.php:1145
+msgid "Only expire posts by others:"
+msgstr "只别人的文章过期:"
 
-#: mod/editpost.php:132 src/Core/ACL.php:305
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "比如: li@example.com, wang@example.com"
+#: mod/settings.php:1175
+msgid "Account Settings"
+msgstr "帐户设置"
 
-#: mod/apps.php:19
-msgid "Applications"
-msgstr "åº\94ç\94¨"
+#: mod/settings.php:1183
+msgid "Password Settings"
+msgstr "å¯\86ç \81设置"
 
-#: mod/apps.php:22
-msgid "No installed applications."
-msgstr "没有安装的应用"
+#: mod/settings.php:1184
+msgid ""
+"Allowed characters are a-z, A-Z, 0-9 and special characters except white "
+"spaces, accentuated letters and colon (:)."
+msgstr ""
 
-#: mod/feedtest.php:21
-msgid "You must be logged in to use this module"
-msgstr "您必须登录才能使用此模块"
+#: mod/settings.php:1185
+msgid "Leave password fields blank unless changing"
+msgstr "留空密码字段,除非要修改"
 
-#: mod/feedtest.php:49
-msgid "Source URL"
-msgstr "源链接"
+#: mod/settings.php:1186
+msgid "Current Password:"
+msgstr "当前密码:"
 
-#: mod/fsuggest.php:72
-msgid "Friend suggestion sent."
-msgstr "朋友建议发送了。"
+#: mod/settings.php:1186 mod/settings.php:1187
+msgid "Your current password to confirm the changes"
+msgstr "你的当前密码,来确认修改"
 
-#: mod/fsuggest.php:101
-msgid "Suggest Friends"
-msgstr "推荐的朋友们"
+#: mod/settings.php:1187
+msgid "Password:"
+msgstr "密码:"
 
-#: mod/fsuggest.php:103
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "给 %s 推荐朋友"
+#: mod/settings.php:1191
+msgid "Basic Settings"
+msgstr "基础设置"
 
-#: mod/maintenance.php:24
-msgid "System down for maintenance"
-msgstr "系统关闭为了维持"
+#: mod/settings.php:1192 src/Model/Profile.php:756
+msgid "Full Name:"
+msgstr "全名:"
 
-#: mod/profile.php:38 src/Model/Profile.php:115
-msgid "Requested profile is not available."
-msgstr "要求的简介联系不上的。"
+#: mod/settings.php:1193
+msgid "Email Address:"
+msgstr "电子邮件地址:"
 
-#: mod/profile.php:79 mod/profile.php:82 src/Protocol/OStatus.php:1275
-#, php-format
-msgid "%s's timeline"
-msgstr "%s 的时间线"
+#: mod/settings.php:1194
+msgid "Your Timezone:"
+msgstr "你的时区:"
 
-#: mod/profile.php:80 src/Protocol/OStatus.php:1276
-#, php-format
-msgid "%s's posts"
-msgstr "%s的帖子"
+#: mod/settings.php:1195
+msgid "Your Language:"
+msgstr "你的语言:"
 
-#: mod/profile.php:81 src/Protocol/OStatus.php:1277
-#, php-format
-msgid "%s's comments"
-msgstr "%s 的评论"
+#: mod/settings.php:1195
+msgid ""
+"Set the language we use to show you friendica interface and to send you "
+"emails"
+msgstr ""
 
-#: mod/allfriends.php:53
-msgid "No friends to display."
-msgstr "没有朋友展示。"
+#: mod/settings.php:1196
+msgid "Default Post Location:"
+msgstr "默认文章位置:"
 
-#: mod/contacts.php:162
-#, php-format
-msgid "%d contact edited."
-msgid_plural "%d contacts edited."
-msgstr[0] "%d 个联系人被编辑了。"
+#: mod/settings.php:1197
+msgid "Use Browser Location:"
+msgstr "使用浏览器位置:"
 
-#: mod/contacts.php:189 mod/contacts.php:395
-msgid "Could not access contact record."
-msgstr "无法访问联系人记录。"
+#: mod/settings.php:1200
+msgid "Security and Privacy Settings"
+msgstr "安全和隐私设置"
 
-#: mod/contacts.php:199
-msgid "Could not locate selected profile."
-msgstr "æ\89¾ä¸\8då\88°é\80\89æ\8b©ç\9a\84ç®\80ä»\8bã\80\82"
+#: mod/settings.php:1202
+msgid "Maximum Friend Requests/Day:"
+msgstr "æ¯\8f天æ\9c\80大æ\9c\8bå\8f\8b请æ±\82æ\95°ï¼\9a"
 
-#: mod/contacts.php:233
-msgid "Contact updated."
-msgstr "联系人更新了。"
+#: mod/settings.php:1202 mod/settings.php:1231
+msgid "(to prevent spam abuse)"
+msgstr "(用于防止垃圾信息滥用)"
 
-#: mod/contacts.php:416
-msgid "Contact has been blocked"
-msgstr "联系人已被屏蔽"
+#: mod/settings.php:1203
+msgid "Default Post Permissions"
+msgstr "默认文章权限"
 
-#: mod/contacts.php:416
-msgid "Contact has been unblocked"
-msgstr "联系人已被解除屏蔽"
+#: mod/settings.php:1204
+msgid "(click to open/close)"
+msgstr "(点击来打开/关闭)"
 
-#: mod/contacts.php:426
-msgid "Contact has been ignored"
-msgstr "联系人已被忽视"
+#: mod/settings.php:1214
+msgid "Default Private Post"
+msgstr "默认私人文章"
 
-#: mod/contacts.php:426
-msgid "Contact has been unignored"
-msgstr "联系人已被解除忽视"
+#: mod/settings.php:1215
+msgid "Default Public Post"
+msgstr "默认公开文章"
 
-#: mod/contacts.php:436
-msgid "Contact has been archived"
-msgstr "联系人已存档"
+#: mod/settings.php:1219
+msgid "Default Permissions for New Posts"
+msgstr "新文章的默认权限"
 
-#: mod/contacts.php:436
-msgid "Contact has been unarchived"
-msgstr "联系人已被解除存档"
+#: mod/settings.php:1231
+msgid "Maximum private messages per day from unknown people:"
+msgstr "每天来自未知的人的私信:"
 
-#: mod/contacts.php:460
-msgid "Drop contact"
-msgstr ""
+#: mod/settings.php:1234
+msgid "Notification Settings"
+msgstr "通知设置"
+
+#: mod/settings.php:1235
+msgid "Send a notification email when:"
+msgstr "发一个消息要是:"
 
-#: mod/contacts.php:463 mod/contacts.php:845
-msgid "Do you really want to delete this contact?"
-msgstr "您真的想删除这个联系人吗?"
+#: mod/settings.php:1236
+msgid "You receive an introduction"
+msgstr "你收到一份介绍"
 
-#: mod/contacts.php:481
-msgid "Contact has been removed."
-msgstr "联系人被删除了。"
+#: mod/settings.php:1237
+msgid "Your introductions are confirmed"
+msgstr "你的介绍被确认了"
 
-#: mod/contacts.php:518
-#, php-format
-msgid "You are mutual friends with %s"
-msgstr "您和 %s 互为朋友"
+#: mod/settings.php:1238
+msgid "Someone writes on your profile wall"
+msgstr "某人写在你的简历墙"
 
-#: mod/contacts.php:523
-#, php-format
-msgid "You are sharing with %s"
-msgstr "你正在和 %s 分享"
+#: mod/settings.php:1239
+msgid "Someone writes a followup comment"
+msgstr "某人写一个后续的评论"
 
-#: mod/contacts.php:528
-#, php-format
-msgid "%s is sharing with you"
-msgstr "%s 正在和你分享"
+#: mod/settings.php:1240
+msgid "You receive a private message"
+msgstr "你收到一封私信"
 
-#: mod/contacts.php:552
-msgid "Private communications are not available for this contact."
-msgstr "私人交流对这个联系人不可用。"
+#: mod/settings.php:1241
+msgid "You receive a friend suggestion"
+msgstr "你受到一个朋友建议"
 
-#: mod/contacts.php:554
-msgid "Never"
-msgstr "ä»\8eæ\9cª"
+#: mod/settings.php:1242
+msgid "You are tagged in a post"
+msgstr "你被å\9c¨æ\96°é\97»æ \87ç­¾"
 
-#: mod/contacts.php:557
-msgid "(Update was successful)"
-msgstr "(更新成功)"
+#: mod/settings.php:1243
+msgid "You are poked/prodded/etc. in a post"
+msgstr "您在文章被戳"
 
-#: mod/contacts.php:557
-msgid "(Update was not successful)"
-msgstr "(更新不成功)"
+#: mod/settings.php:1245
+msgid "Activate desktop notifications"
+msgstr "启用桌面通知"
 
-#: mod/contacts.php:559 mod/contacts.php:1086
-msgid "Suggest friends"
-msgstr "建议æ\9c\8bå\8f\8b们"
+#: mod/settings.php:1245
+msgid "Show desktop popup on new notifications"
+msgstr "å\9c¨æ\9c\89æ\96°ç\9a\84æ\8f\90示æ\97¶æ\98¾ç¤ºæ¡\8cé\9d¢å¼¹å\87ºçª\97å\8f£"
 
-#: mod/contacts.php:563
-#, php-format
-msgid "Network type: %s"
-msgstr "网络种类: %s"
+#: mod/settings.php:1247
+msgid "Text-only notification emails"
+msgstr "纯文本通知邮件"
 
-#: mod/contacts.php:568
-msgid "Communications lost with this contact!"
-msgstr "å\92\8cè¿\99个è\81\94系人ç\9a\84é\80\9aä¿¡æ\96­å¼\80äº\86ï¼\81"
+#: mod/settings.php:1249
+msgid "Send text only notification emails, without the html part"
+msgstr "å\8f\91é\80\81纯æ\96\87æ\9c¬é\80\9aç\9f¥é\82®ä»¶ï¼\8cæ\97  html é\83¨å\88\86"
 
-#: mod/contacts.php:574
-msgid "Fetch further information for feeds"
-msgstr "æ\8b¿æ\96\87æº\90å\88«ç\9a\84æ¶\88æ\81¯"
+#: mod/settings.php:1251
+msgid "Show detailled notifications"
+msgstr "æ\98¾ç¤ºè¯¦ç»\86é\80\9aç\9f¥"
 
-#: mod/contacts.php:576
+#: mod/settings.php:1253
 msgid ""
-"Fetch information like preview pictures, title and teaser from the feed "
-"item. You can activate this if the feed doesn't contain much text. Keywords "
-"are taken from the meta header in the feed item and are posted as hash tags."
+"Per default, notifications are condensed to a single notification per item. "
+"When enabled every notification is displayed."
 msgstr ""
 
-#: mod/contacts.php:578
-msgid "Fetch information"
-msgstr "取消息"
+#: mod/settings.php:1255
+msgid "Advanced Account/Page Type Settings"
+msgstr "专家账户/页种设置"
 
-#: mod/contacts.php:579
-msgid "Fetch keywords"
-msgstr "获取关键字"
+#: mod/settings.php:1256
+msgid "Change the behaviour of this account for special situations"
+msgstr "把这个账户特别情况的时候行动变化"
 
-#: mod/contacts.php:580
-msgid "Fetch information and keywords"
-msgstr "取消息和关键词"
+#: mod/settings.php:1259
+msgid "Relocate"
+msgstr "调动"
 
-#: mod/contacts.php:617
-msgid "Profile Visibility"
-msgstr "简历可见量"
+#: mod/settings.php:1260
+msgid ""
+"If you have moved this profile from another server, and some of your "
+"contacts don't receive your updates, try pushing this button."
+msgstr "如果您调动这个简介从别的服务器但有的熟人没收到您的更新,尝试按这个钮。"
 
-#: mod/contacts.php:618
-msgid "Contact Information / Notes"
-msgstr "联系人信息/便条"
+#: mod/settings.php:1261
+msgid "Resend relocate message to contacts"
+msgstr "把调动信息寄给熟人"
 
-#: mod/contacts.php:619
-msgid "Contact Settings"
-msgstr "联系人设置"
+#: mod/subthread.php:104
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s关注着%2$s的%3$s"
 
-#: mod/contacts.php:628
-msgid "Contact"
-msgstr "联系人"
+#: mod/suggest.php:39
+msgid "Do you really want to delete this suggestion?"
+msgstr "您真的想删除这个建议吗?"
 
-#: mod/contacts.php:632
-#, php-format
+#: mod/suggest.php:75
 msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "请选择简介您想给%s显示他安全地看您的简介的时候。"
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "没有建议。如果这是新网站,请24小时后再试。"
 
-#: mod/contacts.php:634
-msgid "Their personal note"
-msgstr ""
+#: mod/suggest.php:88 mod/suggest.php:108
+msgid "Ignore/Hide"
+msgstr "忽视/隐藏"
 
-#: mod/contacts.php:636
-msgid "Edit contact notes"
-msgstr "编辑联系人便条"
+#: mod/suggest.php:118 src/Content/Widget.php:66 view/theme/vier/theme.php:204
+msgid "Friend Suggestions"
+msgstr "朋友推荐"
 
-#: mod/contacts.php:640
-msgid "Block/Unblock contact"
-msgstr "屏蔽/解除屏蔽联系人"
+#: mod/tagrm.php:31
+msgid "Tag(s) removed"
+msgstr ""
 
-#: mod/contacts.php:641
-msgid "Ignore contact"
-msgstr "忽ç\95¥è\81\94系人"
+#: mod/tagrm.php:99
+msgid "Remove Item Tag"
+msgstr "å\8e»é\99¤é¡¹ç\9b®æ \87ç­¾"
 
-#: mod/contacts.php:642
-msgid "Repair URL settings"
-msgstr "维修URL设置"
+#: mod/tagrm.php:101
+msgid "Select a tag to remove: "
+msgstr "选择删除一个标签: "
 
-#: mod/contacts.php:643
-msgid "View conversations"
-msgstr "看交流"
+#: mod/uexport.php:45
+msgid "Export account"
+msgstr "导出账户"
 
-#: mod/contacts.php:648
-msgid "Last update:"
-msgstr "上个更新:"
+#: mod/uexport.php:45
+msgid ""
+"Export your account info and contacts. Use this to make a backup of your "
+"account and/or to move it to another server."
+msgstr "导出你的账户信息和联系人。用这个功能来生成一个你的账户的备份,并且/或者把它移到另外一个服务器。"
 
-#: mod/contacts.php:650
-msgid "Update public posts"
-msgstr "更新公开文章"
+#: mod/uexport.php:46
+msgid "Export all"
+msgstr "导出全部"
 
-#: mod/contacts.php:652 mod/contacts.php:1096
-msgid "Update now"
-msgstr "现在更新"
+#: mod/uexport.php:46
+msgid ""
+"Export your accout info, contacts and all your items as json. Could be a "
+"very big file, and could take a lot of time. Use this to make a full backup "
+"of your account (photos are not exported)"
+msgstr "导出你的账户信息、联系人和所有你的项目为 json 格式。可能会是一个很大的文件,并可能花费很多时间。用这个功能来做一个你的账户的全备份(照片不会被导出)"
 
-#: mod/contacts.php:658 mod/contacts.php:850 mod/contacts.php:1113
-msgid "Unignore"
-msgstr "取消忽视"
+#: mod/uimport.php:30
+msgid "User imports on closed servers can only be done by an administrator."
+msgstr ""
 
-#: mod/contacts.php:662
-msgid "Currently blocked"
-msgstr "现在被封禁的"
+#: mod/uimport.php:56
+msgid "Move account"
+msgstr "把账户搬出"
 
-#: mod/contacts.php:663
-msgid "Currently ignored"
-msgstr "现在不理的"
+#: mod/uimport.php:57
+msgid "You can import an account from another Friendica server."
+msgstr "您会从别的Friendica服务器进口账户"
 
-#: mod/contacts.php:664
-msgid "Currently archived"
-msgstr "当前已存档"
+#: mod/uimport.php:58
+msgid ""
+"You need to export your account from the old server and upload it here. We "
+"will recreate your old account here with all your contacts. We will try also"
+" to inform your friends that you moved here."
+msgstr "你需要从老服务器导出你的账户并在这里上传。我们会在这里重建你的账户,包括你所有的联系人。我们也会通知你的朋友们你搬到了这里。"
 
-#: mod/contacts.php:665
-msgid "Awaiting connection acknowledge"
-msgstr "等待连接确认"
+#: mod/uimport.php:59
+msgid ""
+"This feature is experimental. We can't import contacts from the OStatus "
+"network (GNU Social/Statusnet) or from Diaspora"
+msgstr "这个特性是实验性的。我们不能从 OStatus 网络 (GNU Social/Statusnet) 或者 Diaspora 导入联系人"
+
+#: mod/uimport.php:60
+msgid "Account file"
+msgstr "账户文件"
 
-#: mod/contacts.php:666
+#: mod/uimport.php:60
 msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
-msgstr "回答/喜欢关您公开文章<strong>会</strong>还可见的"
+"To export your account, go to \"Settings->Export your personal data\" and "
+"select \"Export account\""
+msgstr "为了导出你的账户,点击「设置→导出你的个人信息」和选择「导出账户」"
 
-#: mod/contacts.php:667
-msgid "Notification for new posts"
-msgstr "新消息提示"
+#: mod/unfollow.php:36 mod/unfollow.php:92
+msgid "You aren't following this contact."
+msgstr ""
 
-#: mod/contacts.php:667
-msgid "Send a notification of every new post of this contact"
-msgstr "å\8f\91é\80\81è¿\99个è\81\94系人ç\9a\84æ¯\8fç¯\87æ\96°æ\96\87ç« ç\9a\84é\80\9aç\9f¥"
+#: mod/unfollow.php:46 mod/unfollow.php:98
+msgid "Unfollowing is currently not supported by your network."
+msgstr "å\8f\96æ¶\88å\85³æ³¨ç\8e°å\9c¨ä¸\8d被你ç\9a\84ç½\91ç»\9cæ\94¯æ\8c\81ã\80\82"
 
-#: mod/contacts.php:670
-msgid "Blacklisted keywords"
-msgstr "黑名单关键词"
+#: mod/unfollow.php:67
+msgid "Contact unfollowed"
+msgstr "取消关注了的联系人"
 
-#: mod/contacts.php:670
-msgid ""
-"Comma separated list of keywords that should not be converted to hashtags, "
-"when \"Fetch information and keywords\" is selected"
-msgstr "逗号分的关键词不应该翻译成主题标签,如果“取消息和关键词”选择的。"
+#: mod/unfollow.php:118 src/Module/Contact.php:572
+msgid "Disconnect/Unfollow"
+msgstr "断开连接/取消关注"
 
-#: mod/contacts.php:682 src/Model/Profile.php:424
-msgid "XMPP:"
-msgstr "XMPP:"
+#: mod/update_community.php:23 mod/update_contact.php:23
+#: mod/update_display.php:24 mod/update_network.php:33 mod/update_notes.php:36
+#: mod/update_profile.php:35
+msgid "[Embedded content - reload page to view]"
+msgstr "[嵌入内容-重新加载页为看]"
 
-#: mod/contacts.php:687
-msgid "Actions"
-msgstr ""
+#: mod/videos.php:98
+msgid "Do you really want to delete this video?"
+msgstr "你真的想删除这个视频吗?"
 
-#: mod/contacts.php:731
-msgid "Suggestions"
-msgstr "建议"
+#: mod/videos.php:103
+msgid "Delete Video"
+msgstr "å\88 é\99¤è§\86é¢\91"
 
-#: mod/contacts.php:734
-msgid "Suggest potential friends"
-msgstr "建议潜在朋友们"
+#: mod/videos.php:153
+msgid "No videos selected"
+msgstr "没有视频被选择"
 
-#: mod/contacts.php:742
-msgid "Show all contacts"
-msgstr "显示所有的联系人"
+#: mod/videos.php:324 src/Model/Item.php:3388
+msgid "View Video"
+msgstr "察看视频"
 
-#: mod/contacts.php:747
-msgid "Unblocked"
-msgstr "æ\9cªå±\8fè\94½ç\9a\84"
+#: mod/videos.php:339
+msgid "Recent Videos"
+msgstr "æ\9c\80è¿\91ç\9a\84è§\86é¢\91"
 
-#: mod/contacts.php:750
-msgid "Only show unblocked contacts"
-msgstr "只显示没被屏蔽的联系人"
+#: mod/videos.php:341
+msgid "Upload New Videos"
+msgstr "上传新视频"
 
-#: mod/contacts.php:755
-msgid "Blocked"
-msgstr "被屏蔽的"
+#: mod/viewcontacts.php:78
+msgid "No contacts."
+msgstr "没有联系人。"
 
-#: mod/contacts.php:758
-msgid "Only show blocked contacts"
-msgstr "只显示被屏蔽的联系人"
+#: mod/viewcontacts.php:94 src/Module/Contact.php:605
+#: src/Module/Contact.php:1027
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "看%s的简介[%s]"
 
-#: mod/contacts.php:763
-msgid "Ignored"
-msgstr "忽视的"
+#: mod/viewcontacts.php:114 src/Content/Nav.php:196 src/Content/Nav.php:262
+#: src/Content/Text/HTML.php:979 src/Model/Profile.php:985
+#: src/Model/Profile.php:988 src/Module/Contact.php:814
+#: src/Module/Contact.php:884 view/theme/frio/theme.php:271
+msgid "Contacts"
+msgstr "联系人"
 
-#: mod/contacts.php:766
-msgid "Only show ignored contacts"
-msgstr "只显示忽略的联系人"
+#: mod/wallmessage.php:52 mod/wallmessage.php:115
+#, php-format
+msgid "Number of daily wall messages for %s exceeded. Message failed."
+msgstr "一天最多墙通知给%s超过了。通知没有通过 。"
 
-#: mod/contacts.php:771
-msgid "Archived"
-msgstr "已存档"
+#: mod/wallmessage.php:63
+msgid "Unable to check your home location."
+msgstr "核对不了您的主页。"
 
-#: mod/contacts.php:774
-msgid "Only show archived contacts"
-msgstr "只显示已存档联系人"
+#: mod/wallmessage.php:89 mod/wallmessage.php:98
+msgid "No recipient."
+msgstr "没有接受者。"
+
+#: mod/wallmessage.php:129
+#, php-format
+msgid ""
+"If you wish for %s to respond, please check that the privacy settings on "
+"your site allow private mail from unknown senders."
+msgstr "如果您想%s回答,请核对您网站的隐私设置允许生发送人的私人邮件。"
 
-#: mod/contacts.php:779
-msgid "Hidden"
-msgstr "隐藏的"
+#: mod/wall_attach.php:26 mod/wall_attach.php:33 mod/wall_attach.php:88
+#: mod/wall_upload.php:41 mod/wall_upload.php:57 mod/wall_upload.php:115
+#: mod/wall_upload.php:166 mod/wall_upload.php:169
+msgid "Invalid request."
+msgstr "无效请求。"
 
-#: mod/contacts.php:782
-msgid "Only show hidden contacts"
-msgstr "只显示隐藏的联系人"
+#: mod/wall_attach.php:106
+msgid "Sorry, maybe your upload is bigger than the PHP configuration allows"
+msgstr "不好意思,可能你上传的是PHP设置允许的大"
 
-#: mod/contacts.php:840
-msgid "Search your contacts"
-msgstr "æ\90\9cç´¢æ\82¨ç\9a\84è\81\94系人"
+#: mod/wall_attach.php:106
+msgid "Or - did you try to upload an empty file?"
+msgstr "æ\88\96è\80\85ï¼\8cä½ æ\98¯ä¸\8dæ\98¯ä¸\8a传空ç\9a\84æ\96\87件ï¼\9f"
 
-#: mod/contacts.php:851 mod/contacts.php:1122
-msgid "Archive"
-msgstr "存档"
+#: mod/wall_attach.php:117
+#, php-format
+msgid "File exceeds size limit of %s"
+msgstr "文件超过了 %s 的大小限制"
 
-#: mod/contacts.php:851 mod/contacts.php:1122
-msgid "Unarchive"
-msgstr "从存档拿来"
+#: mod/wall_attach.php:132
+msgid "File upload failed."
+msgstr "文件上传失败。"
 
-#: mod/contacts.php:854
-msgid "Batch Actions"
-msgstr "批量操作"
+#: mod/wall_upload.php:242 src/Object/Image.php:968 src/Object/Image.php:984
+#: src/Object/Image.php:992 src/Object/Image.php:1017
+msgid "Wall Photos"
+msgstr "墙照片"
 
-#: mod/contacts.php:880
-msgid "Conversations started by this contact"
-msgstr ""
+#: src/App.php:822
+msgid "Delete this item?"
+msgstr "删除这个项目?"
 
-#: mod/contacts.php:885
-msgid "Posts and Comments"
-msgstr ""
+#: src/App.php:824
+msgid "show fewer"
+msgstr "显示更小"
 
-#: mod/contacts.php:896 src/Model/Profile.php:886
-msgid "Profile Details"
-msgstr "简介内容"
+#: src/App.php:866
+msgid "toggle mobile"
+msgstr "切换移动设备"
 
-#: mod/contacts.php:908
-msgid "View all contacts"
-msgstr "查看所有联系人"
+#: src/App.php:1419
+msgid "No system theme config value set."
+msgstr ""
 
-#: mod/contacts.php:919
-msgid "View all common friends"
-msgstr "查看所有公共好友"
+#: src/BaseModule.php:133
+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 "表格安全令牌不对。最可能因为表格开着太久(三个小时以上)提交前。"
 
-#: mod/contacts.php:929
-msgid "Advanced Contact Settings"
-msgstr "高级联系人设置"
+#: src/Content/ContactSelector.php:56
+msgid "Frequently"
+msgstr ""
 
-#: mod/contacts.php:1019
-msgid "Mutual Friendship"
-msgstr "共同友谊"
+#: src/Content/ContactSelector.php:57
+msgid "Hourly"
+msgstr "每小时"
 
-#: mod/contacts.php:1024
-msgid "is a fan of yours"
-msgstr "æ\98¯ä½ ç\9a\84ç²\89ä¸\9d"
+#: src/Content/ContactSelector.php:58
+msgid "Twice daily"
+msgstr "æ¯\8f天两次"
 
-#: mod/contacts.php:1029
-msgid "you are a fan of"
-msgstr "æ\82¨å·²å\85³æ³¨"
+#: src/Content/ContactSelector.php:59
+msgid "Daily"
+msgstr "æ¯\8f天"
 
-#: mod/contacts.php:1046 mod/photos.php:1494 mod/photos.php:1533
-#: mod/photos.php:1593 src/Object/Post.php:792
-msgid "This is you"
-msgstr "这是你"
+#: src/Content/ContactSelector.php:60
+msgid "Weekly"
+msgstr "每周"
 
-#: mod/contacts.php:1053
-msgid "Edit contact"
-msgstr "编辑联系人"
+#: src/Content/ContactSelector.php:61
+msgid "Monthly"
+msgstr "每月"
 
-#: mod/contacts.php:1107
-msgid "Toggle Blocked status"
-msgstr "切换屏蔽状态"
+#: src/Content/ContactSelector.php:80
+msgid "DFRN"
+msgstr ""
 
-#: mod/contacts.php:1115
-msgid "Toggle Ignored status"
-msgstr "交替忽视现状"
+#: src/Content/ContactSelector.php:81
+msgid "OStatus"
+msgstr "OStatus"
 
-#: mod/contacts.php:1124
-msgid "Toggle Archive status"
-msgstr "交替档案现状"
+#: src/Content/ContactSelector.php:82
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
 
-#: mod/contacts.php:1132
-msgid "Delete contact"
-msgstr "删除联系人"
+#: src/Content/ContactSelector.php:85
+msgid "Zot!"
+msgstr "Zot!"
 
-#: mod/events.php:103 mod/events.php:105
-msgid "Event can not end before it has started."
-msgstr "事件不能在开始前结束。"
+#: src/Content/ContactSelector.php:86
+msgid "LinkedIn"
+msgstr "LinkedIn"
 
-#: mod/events.php:112 mod/events.php:114
-msgid "Event title and start time are required."
-msgstr "项目标题和开始时间是必须的。"
+#: src/Content/ContactSelector.php:87
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
 
-#: mod/events.php:392
-msgid "Create New Event"
-msgstr "创建新的事件"
+#: src/Content/ContactSelector.php:88
+msgid "MySpace"
+msgstr "MySpace"
 
-#: mod/events.php:509
-msgid "Event details"
-msgstr "事件细节"
+#: src/Content/ContactSelector.php:89
+msgid "Google+"
+msgstr "Google+"
 
-#: mod/events.php:510
-msgid "Starting date and Title are required."
-msgstr "需要开始日期和标题。"
+#: src/Content/ContactSelector.php:90
+msgid "pump.io"
+msgstr "pump.io"
 
-#: mod/events.php:511 mod/events.php:512
-msgid "Event Starts:"
-msgstr "事件开始:"
+#: src/Content/ContactSelector.php:91
+msgid "Twitter"
+msgstr "推特"
 
-#: mod/events.php:511 mod/events.php:523 mod/profiles.php:607
-msgid "Required"
-msgstr "必须的"
+#: src/Content/ContactSelector.php:92
+msgid "Diaspora Connector"
+msgstr ""
 
-#: mod/events.php:513 mod/events.php:529
-msgid "Finish date/time is not known or not relevant"
-msgstr "结束日期/时间未知或无关"
+#: src/Content/ContactSelector.php:93
+msgid "GNU Social Connector"
+msgstr "GNU Social 连接器"
 
-#: mod/events.php:515 mod/events.php:516
-msgid "Event Finishes:"
-msgstr "事件结束:"
+#: src/Content/ContactSelector.php:94
+msgid "ActivityPub"
+msgstr ""
 
-#: mod/events.php:517 mod/events.php:530
-msgid "Adjust for viewer timezone"
-msgstr "调整为浏览者的时区"
+#: src/Content/ContactSelector.php:95
+msgid "pnut"
+msgstr ""
 
-#: mod/events.php:519
-msgid "Description:"
-msgstr "描述:"
+#: src/Content/ContactSelector.php:150
+msgid "Male"
+msgstr ""
 
-#: mod/events.php:523 mod/events.php:525
-msgid "Title:"
-msgstr "标题:"
+#: src/Content/ContactSelector.php:151
+msgid "Female"
+msgstr ""
 
-#: mod/events.php:526 mod/events.php:527
-msgid "Share this event"
-msgstr "分享这个事件"
+#: src/Content/ContactSelector.php:152
+msgid "Currently Male"
+msgstr "目前为男"
 
-#: mod/events.php:534 src/Model/Profile.php:851
-msgid "Basic"
-msgstr "基本"
+#: src/Content/ContactSelector.php:153
+msgid "Currently Female"
+msgstr "目前为女"
 
-#: mod/events.php:536 mod/photos.php:1112 mod/photos.php:1448
-#: src/Core/ACL.php:307
-msgid "Permissions"
-msgstr "权限"
+#: src/Content/ContactSelector.php:154
+msgid "Mostly Male"
+msgstr "更多为男"
 
-#: mod/events.php:555
-msgid "Failed to remove event"
-msgstr "删除事件失败"
+#: src/Content/ContactSelector.php:155
+msgid "Mostly Female"
+msgstr "更多为女"
 
-#: mod/events.php:557
-msgid "Event removed"
-msgstr "事件已删除"
+#: src/Content/ContactSelector.php:156
+msgid "Transgender"
+msgstr "跨性别"
 
-#: mod/follow.php:45
-msgid "The contact could not be added."
-msgstr "无法添加此联系人。"
+#: src/Content/ContactSelector.php:157
+msgid "Intersex"
+msgstr "双性人"
 
-#: mod/follow.php:73
-msgid "You already added this contact."
-msgstr "æ\82¨å·²æ·»å\8a æ­¤è\81\94系人ã\80\82"
+#: src/Content/ContactSelector.php:158
+msgid "Transsexual"
+msgstr "æ\8d¢æ\80§è\80\85"
 
-#: mod/follow.php:83
-msgid "Diaspora support isn't enabled. Contact can't be added."
-msgstr "Diaspora 支持没被启用。无法添加联系人。"
+#: src/Content/ContactSelector.php:159
+msgid "Hermaphrodite"
+msgstr "雌雄间性"
 
-#: mod/follow.php:90
-msgid "OStatus support is disabled. Contact can't be added."
-msgstr "OStatus 支持没被启用。无法添加联系人。"
+#: src/Content/ContactSelector.php:160
+msgid "Neuter"
+msgstr "中性"
 
-#: mod/follow.php:97
-msgid "The network type couldn't be detected. Contact can't be added."
-msgstr "网络类型无法被检测。无法添加联系人。"
+#: src/Content/ContactSelector.php:161
+msgid "Non-specific"
+msgstr "不明确的"
 
-#: mod/fbrowser.php:44 mod/fbrowser.php:69 mod/photos.php:198
-#: mod/photos.php:1076 mod/photos.php:1169 mod/photos.php:1186
-#: mod/photos.php:1652 mod/photos.php:1667 src/Model/Photo.php:243
-#: src/Model/Photo.php:252
-msgid "Contact Photos"
-msgstr "联系人照片"
+#: src/Content/ContactSelector.php:162
+msgid "Other"
+msgstr "别的"
 
-#: mod/fbrowser.php:132
-msgid "Files"
-msgstr "文件"
+#: src/Content/ContactSelector.php:189
+msgid "Males"
+msgstr "男人"
 
-#: mod/oexchange.php:30
-msgid "Post successful."
-msgstr "评论发表了。"
+#: src/Content/ContactSelector.php:190
+msgid "Females"
+msgstr "女人"
 
-#: mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s关注着%2$s的%3$s"
+#: src/Content/ContactSelector.php:191
+msgid "Gay"
+msgstr "男同性恋的"
 
-#: mod/credits.php:18
-msgid "Credits"
-msgstr "贡献"
+#: src/Content/ContactSelector.php:192
+msgid "Lesbian"
+msgstr "女同性恋的"
 
-#: mod/credits.php:19
-msgid ""
-"Friendica is a community project, that would not be possible without the "
-"help of many people. Here is a list of those who have contributed to the "
-"code or the translation of Friendica. Thank you all!"
-msgstr "Friendica 是一个社区项目,如果没有许多人的努力她将无法实现。这里列出了那些为代码作出贡献或者参与本地化翻译的人们。感谢大家的努力!"
+#: src/Content/ContactSelector.php:193
+msgid "No Preference"
+msgstr "无偏爱"
 
-#: mod/attach.php:16
-msgid "Item not available."
-msgstr "项目不可用的"
+#: src/Content/ContactSelector.php:194
+msgid "Bisexual"
+msgstr "双性恋的"
 
-#: mod/attach.php:26
-msgid "Item was not found."
-msgstr "找不到项目。"
+#: src/Content/ContactSelector.php:195
+msgid "Autosexual"
+msgstr "自性的"
 
-#: mod/notify.php:77
-msgid "No more system notifications."
-msgstr "没å\88«ç³»ç»\9fé\80\9aç\9f¥ã\80\82"
+#: src/Content/ContactSelector.php:196
+msgid "Abstinent"
+msgstr "æ\9c\89è\8a\82å\88¶ç\9a\84"
 
-#: mod/community.php:71
-msgid "Community option not available."
-msgstr "社区选项不可用。"
+#: src/Content/ContactSelector.php:197
+msgid "Virgin"
+msgstr "原始的"
 
-#: mod/community.php:88
-msgid "Not available."
-msgstr "不可用的"
+#: src/Content/ContactSelector.php:198
+msgid "Deviant"
+msgstr "变态"
 
-#: mod/community.php:101
-msgid "Local Community"
-msgstr "æ\9c¬å\9c°ç¤¾å\8cº"
+#: src/Content/ContactSelector.php:199
+msgid "Fetish"
+msgstr "æ\81\8bç\89©å¯¹è±¡"
 
-#: mod/community.php:104
-msgid "Posts from local users on this server"
-msgstr ""
+#: src/Content/ContactSelector.php:200
+msgid "Oodles"
+msgstr "多多"
 
-#: mod/community.php:112
-msgid "Global Community"
-msgstr "全球社区"
+#: src/Content/ContactSelector.php:201
+msgid "Nonsexual"
+msgstr "无性"
 
-#: mod/community.php:115
-msgid "Posts from users of the whole federated network"
-msgstr ""
+#: src/Content/ContactSelector.php:226
+msgid "Single"
+msgstr "单身"
 
-#: mod/community.php:205
-msgid ""
-"This community stream shows all public posts received by this node. They may"
-" not reflect the opinions of this node’s users."
-msgstr ""
+#: src/Content/ContactSelector.php:227
+msgid "Lonely"
+msgstr "寂寞"
 
-#: mod/localtime.php:19 src/Model/Event.php:34 src/Model/Event.php:829
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
+#: src/Content/ContactSelector.php:228
+msgid "Available"
+msgstr "单身的"
 
-#: mod/localtime.php:33
-msgid "Time Conversion"
-msgstr "时间装换"
+#: src/Content/ContactSelector.php:229
+msgid "Unavailable"
+msgstr "不可获得的"
 
-#: mod/localtime.php:35
-msgid ""
-"Friendica provides this service for sharing events with other networks and "
-"friends in unknown timezones."
-msgstr "Friendica提供这个服务目的是分享项目跟别的网络和朋友们在别的时区。"
+#: src/Content/ContactSelector.php:230
+msgid "Has crush"
+msgstr "迷恋"
 
-#: mod/localtime.php:39
-#, php-format
-msgid "UTC time: %s"
-msgstr "UTC时间: %s"
+#: src/Content/ContactSelector.php:231
+msgid "Infatuated"
+msgstr "痴迷"
 
-#: mod/localtime.php:42
-#, php-format
-msgid "Current timezone: %s"
-msgstr "现在时区: %s"
+#: src/Content/ContactSelector.php:232
+msgid "Dating"
+msgstr "约会"
 
-#: mod/localtime.php:46
-#, php-format
-msgid "Converted localtime: %s"
-msgstr "装换的当地时间:%s"
+#: src/Content/ContactSelector.php:233
+msgid "Unfaithful"
+msgstr "外遇"
 
-#: mod/localtime.php:52
-msgid "Please select your timezone:"
-msgstr "请选择你的时区:"
+#: src/Content/ContactSelector.php:234
+msgid "Sex Addict"
+msgstr "性交因成瘾者"
 
-#: mod/poke.php:188
-msgid "Poke/Prod"
-msgstr "æ\88³"
+#: src/Content/ContactSelector.php:235 src/Model/User.php:647
+msgid "Friends"
+msgstr "æ\9c\8bå\8f\8b"
 
-#: mod/poke.php:189
-msgid "poke, prod or do other things to somebody"
-msgstr "æ\8a\8a人家æ\88³æ\88\96å\88«ç\9a\84è¡\8cå\8a¨"
+#: src/Content/ContactSelector.php:236
+msgid "Friends/Benefits"
+msgstr "æ\9c\8bå\8f\8b\9b\8a"
 
-#: mod/poke.php:190
-msgid "Recipient"
-msgstr "接受者"
+#: src/Content/ContactSelector.php:237
+msgid "Casual"
+msgstr "休闲"
 
-#: mod/poke.php:191
-msgid "Choose what you wish to do to recipient"
-msgstr "选择您想把别人作"
+#: src/Content/ContactSelector.php:238
+msgid "Engaged"
+msgstr "已订婚的"
 
-#: mod/poke.php:194
-msgid "Make this post private"
-msgstr "使这个文章私人"
+#: src/Content/ContactSelector.php:239
+msgid "Married"
+msgstr "结婚"
 
-#: mod/invite.php:34
-msgid "Total invitation limit exceeded."
-msgstr "邀请限超过了。"
+#: src/Content/ContactSelector.php:240
+msgid "Imaginarily married"
+msgstr "想像结婚"
 
-#: mod/invite.php:56
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : 不是效的电子邮件地址."
+#: src/Content/ContactSelector.php:241
+msgid "Partners"
+msgstr "伴侣"
 
-#: mod/invite.php:88
-msgid "Please join us on Friendica"
-msgstr "请加入我们再Friendica"
+#: src/Content/ContactSelector.php:242
+msgid "Cohabiting"
+msgstr "同居"
 
-#: mod/invite.php:97
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "邀请限超过了。请联系您的网站管理员。"
+#: src/Content/ContactSelector.php:243
+msgid "Common law"
+msgstr "普通法结婚"
 
-#: mod/invite.php:101
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : 送消息失败了。"
+#: src/Content/ContactSelector.php:244
+msgid "Happy"
+msgstr "幸福"
 
-#: mod/invite.php:105
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d消息传送了。"
+#: src/Content/ContactSelector.php:245
+msgid "Not looking"
+msgstr "没找"
 
-#: mod/invite.php:123
-msgid "You have no more invitations available"
-msgstr "您没有别的邀请"
+#: src/Content/ContactSelector.php:246
+msgid "Swinger"
+msgstr "交换性伴侣的"
 
-#: mod/invite.php:131
-#, php-format
-msgid ""
-"Visit %s for a list of public sites that you can join. Friendica members on "
-"other sites can all connect with each other, as well as with members of many"
-" other social networks."
-msgstr "参观%s看一单公开网站您会加入。Friendica成员在别的网站都会互相连接,再跟很多别的社会网络。"
+#: src/Content/ContactSelector.php:247
+msgid "Betrayed"
+msgstr "被背叛"
 
-#: mod/invite.php:133
-#, php-format
-msgid ""
-"To accept this invitation, please visit and register at %s or any other "
-"public Friendica website."
-msgstr "为接受这个邀请,请再%s或什么别的Friendica网站注册。"
+#: src/Content/ContactSelector.php:248
+msgid "Separated"
+msgstr "分手"
 
-#: mod/invite.php:134
-#, php-format
-msgid ""
-"Friendica sites all inter-connect to create a huge privacy-enhanced social "
-"web that is owned and controlled by its members. They can also connect with "
-"many traditional social networks. See %s for a list of alternate Friendica "
-"sites you can join."
-msgstr "Friendica 站点互相连接来创建一个增强隐私的由他们的成员拥有并控制的社交网络。它们也能跟多传统的社交网络连接。看 %s 来获取一份你可以选择加入的 Friendica 站点。"
+#: src/Content/ContactSelector.php:249
+msgid "Unstable"
+msgstr "不稳"
 
-#: mod/invite.php:138
-msgid ""
-"Our apologies. This system is not currently configured to connect with other"
-" public sites or invite members."
-msgstr "不好意思。这个系统目前没设置跟别的公开网站连接或邀请成员。"
+#: src/Content/ContactSelector.php:250
+msgid "Divorced"
+msgstr "离婚"
 
-#: mod/invite.php:142
-msgid ""
-"Friendica sites all inter-connect to create a huge privacy-enhanced social "
-"web that is owned and controlled by its members. They can also connect with "
-"many traditional social networks."
-msgstr "各 Friendica 站点相互连接以创造出一个由其组成成员控制拥有的有强大隐私保护能力的大型社交网络。各站点同时也能够接入许多传统社交网络。"
+#: src/Content/ContactSelector.php:251
+msgid "Imaginarily divorced"
+msgstr "想像离婚"
 
-#: mod/invite.php:141
-#, php-format
-msgid "To accept this invitation, please visit and register at %s."
-msgstr "要接受这个邀请,请在 %s 访问并注册。"
+#: src/Content/ContactSelector.php:252
+msgid "Widowed"
+msgstr "寡妇"
 
-#: mod/invite.php:148
-msgid "Send invitations"
-msgstr "发请柬"
+#: src/Content/ContactSelector.php:253
+msgid "Uncertain"
+msgstr "不确定"
 
-#: mod/invite.php:149
-msgid "Enter email addresses, one per line:"
-msgstr "输入电子邮件地址,一行一个:"
+#: src/Content/ContactSelector.php:254
+msgid "It's complicated"
+msgstr "是复杂"
 
-#: mod/invite.php:150
-msgid ""
-"You are cordially invited to join me and other close friends on Friendica - "
-"and help us to create a better social web."
-msgstr "在 Friendica,你被诚挚地邀请来加入我和其他亲密的朋友-并帮助我们创建更好的社会网络。"
+#: src/Content/ContactSelector.php:255
+msgid "Don't care"
+msgstr "无所谓"
 
-#: mod/invite.php:152
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "您要输入这个邀请密码:$invite_code"
+#: src/Content/ContactSelector.php:256
+msgid "Ask me"
+msgstr "问我"
 
-#: mod/invite.php:152
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
-msgstr "您一注册,请页跟我连接,用我的简介在:"
+#: src/Content/Feature.php:79
+msgid "General Features"
+msgstr "通用特性"
 
-#: mod/invite.php:154
-msgid ""
-"For more information about the Friendica project and why we feel it is "
-"important, please visit http://friendi.ca"
-msgstr "欲了解更多关于 Friendica 项目的信息以及为什么我们认为这很重要,请访问 http://friendi.ca"
+#: src/Content/Feature.php:81
+msgid "Multiple Profiles"
+msgstr "多简介"
 
-#: mod/notes.php:42 src/Model/Profile.php:933
-msgid "Personal Notes"
-msgstr "私人便条"
+#: src/Content/Feature.php:81
+msgid "Ability to create multiple profiles"
+msgstr "能穿凿多简介"
 
-#: mod/profiles.php:57
-msgid "Profile deleted."
-msgstr "ç®\80ä»\8bå\88 é\99¤äº\86ã\80\82"
+#: src/Content/Feature.php:82
+msgid "Photo Location"
+msgstr "ç\85§ç\89\87å\9c°ç\82¹"
 
-#: mod/profiles.php:73 mod/profiles.php:109
-msgid "Profile-"
-msgstr "简介-"
+#: src/Content/Feature.php:82
+msgid ""
+"Photo metadata is normally stripped. This extracts the location (if present)"
+" prior to stripping metadata and links it to a map."
+msgstr ""
 
-#: mod/profiles.php:92 mod/profiles.php:131
-msgid "New profile created."
-msgstr "新的简介已创建。"
+#: src/Content/Feature.php:83
+msgid "Export Public Calendar"
+msgstr "导出公共日历"
 
-#: mod/profiles.php:115
-msgid "Profile unavailable to clone."
-msgstr "简介不可用为复制。"
+#: src/Content/Feature.php:83
+msgid "Ability for visitors to download the public calendar"
+msgstr ""
 
-#: mod/profiles.php:203
-msgid "Profile Name is required."
-msgstr "必要简介名"
+#: src/Content/Feature.php:88
+msgid "Post Composition Features"
+msgstr "文章编写特性"
 
-#: mod/profiles.php:344
-msgid "Marital Status"
-msgstr "婚姻状况 "
+#: src/Content/Feature.php:89
+msgid "Auto-mention Forums"
+msgstr "自动提示论坛"
 
-#: mod/profiles.php:348
-msgid "Romantic Partner"
-msgstr "情人"
+#: src/Content/Feature.php:89
+msgid ""
+"Add/remove mention when a forum page is selected/deselected in ACL window."
+msgstr ""
 
-#: mod/profiles.php:360
-msgid "Work/Employment"
-msgstr "工作"
+#: src/Content/Feature.php:94
+msgid "Network Sidebar"
+msgstr ""
 
-#: mod/profiles.php:363
-msgid "Religion"
-msgstr "宗教"
+#: src/Content/Feature.php:95
+msgid "Ability to select posts by date ranges"
+msgstr "能按时期范围选择文章"
 
-#: mod/profiles.php:367
-msgid "Political Views"
-msgstr "政治观念"
+#: src/Content/Feature.php:96
+msgid "Protocol Filter"
+msgstr ""
 
-#: mod/profiles.php:371
-msgid "Gender"
-msgstr "性别"
+#: src/Content/Feature.php:96
+msgid "Enable widget to display Network posts only from selected protocols"
+msgstr ""
 
-#: mod/profiles.php:375
-msgid "Sexual Preference"
-msgstr "性取向"
+#: src/Content/Feature.php:101
+msgid "Network Tabs"
+msgstr "网络分页"
 
-#: mod/profiles.php:379
-msgid "XMPP"
-msgstr "XMPP"
+#: src/Content/Feature.php:102
+msgid "Network New Tab"
+msgstr "网络新分页"
 
-#: mod/profiles.php:383
-msgid "Homepage"
-msgstr "主页"
+#: src/Content/Feature.php:102
+msgid "Enable tab to display only new Network posts (from the last 12 hours)"
+msgstr "启用只显示新的网络文章(过去12小时)的标签页"
+
+#: src/Content/Feature.php:103
+msgid "Network Shared Links Tab"
+msgstr "网络分享链接分页"
 
-#: mod/profiles.php:387 mod/profiles.php:593
-msgid "Interests"
-msgstr "兴趣"
+#: src/Content/Feature.php:103
+msgid "Enable tab to display only Network posts with links in them"
+msgstr "使表示光网络文章包括链接分页可用"
 
-#: mod/profiles.php:398 mod/profiles.php:589
-msgid "Location"
-msgstr "位置"
+#: src/Content/Feature.php:108
+msgid "Post/Comment Tools"
+msgstr "文章/评论工具"
 
-#: mod/profiles.php:481
-msgid "Profile updated."
-msgstr "简介更新了。"
+#: src/Content/Feature.php:109
+msgid "Post Categories"
+msgstr "文章种类"
 
-#: mod/profiles.php:538
-msgid "Hide contacts and friends:"
-msgstr "隐藏联系人和朋友:"
+#: src/Content/Feature.php:109
+msgid "Add categories to your posts"
+msgstr "加入种类给您的文章"
 
-#: mod/profiles.php:543
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "藏起来发现您的熟人/朋友单不让这个简介看着看?"
+#: src/Content/Feature.php:114
+msgid "Advanced Profile Settings"
+msgstr ""
 
-#: mod/profiles.php:563
-msgid "Show more profile fields:"
-msgstr "显示更多简介内容:"
+#: src/Content/Feature.php:115
+msgid "List Forums"
+msgstr "列出各论坛"
 
-#: mod/profiles.php:575
-msgid "Profile Actions"
+#: src/Content/Feature.php:115
+msgid "Show visitors public community forums at the Advanced Profile Page"
 msgstr ""
 
-#: mod/profiles.php:576
-msgid "Edit Profile Details"
-msgstr "剪辑简介消息"
+#: src/Content/Feature.php:116
+msgid "Tag Cloud"
+msgstr "标签云"
 
-#: mod/profiles.php:578
-msgid "Change Profile Photo"
-msgstr "改变简介照片"
+#: src/Content/Feature.php:116
+msgid "Provide a personal tag cloud on your profile page"
+msgstr "在您的个人简介中提供个人标签云"
 
-#: mod/profiles.php:580
-msgid "View this profile"
-msgstr "看这个简介"
+#: src/Content/Feature.php:117
+msgid "Display Membership Date"
+msgstr ""
 
-#: mod/profiles.php:581
-msgid "View all profiles"
+#: src/Content/Feature.php:117
+msgid "Display membership date in profile"
 msgstr ""
 
-#: mod/profiles.php:582 mod/profiles.php:677 src/Model/Profile.php:393
-msgid "Edit visibility"
-msgstr "修改能见度"
+#: src/Content/ForumManager.php:126 src/Content/Nav.php:200
+#: src/Content/Text/HTML.php:982 view/theme/vier/theme.php:250
+msgid "Forums"
+msgstr "论坛"
 
-#: mod/profiles.php:583
-msgid "Create a new profile using these settings"
-msgstr "使用这些设置创建一份新的简介"
+#: src/Content/ForumManager.php:128 view/theme/vier/theme.php:252
+msgid "External link to forum"
+msgstr "到论坛的外链"
 
-#: mod/profiles.php:584
-msgid "Clone this profile"
-msgstr "复制这个简介"
+#: src/Content/Nav.php:68
+msgid "Nothing new here"
+msgstr "这里没有什么新的"
 
-#: mod/profiles.php:585
-msgid "Delete this profile"
-msgstr "删除这个简介"
+#: src/Content/Nav.php:72
+msgid "Clear notifications"
+msgstr "清理出通知"
 
-#: mod/profiles.php:587
-msgid "Basic information"
-msgstr "基本信息"
+#: src/Content/Nav.php:73 src/Content/Text/HTML.php:971
+msgid "@name, !forum, #tags, content"
+msgstr ""
 
-#: mod/profiles.php:588
-msgid "Profile picture"
-msgstr "头像"
+#: src/Content/Nav.php:146 src/Module/Login.php:318
+#: view/theme/frio/theme.php:257
+msgid "Logout"
+msgstr "注销"
 
-#: mod/profiles.php:590
-msgid "Preferences"
-msgstr "偏好"
+#: src/Content/Nav.php:146 view/theme/frio/theme.php:257
+msgid "End this session"
+msgstr "结束此次会话"
 
-#: mod/profiles.php:591
-msgid "Status information"
-msgstr "状态信息"
+#: src/Content/Nav.php:149 src/Model/Profile.php:906
+#: src/Module/Contact.php:655 src/Module/Contact.php:856
+#: view/theme/frio/theme.php:260
+msgid "Status"
+msgstr "状态"
 
-#: mod/profiles.php:592
-msgid "Additional information"
-msgstr "更多信息"
+#: src/Content/Nav.php:149 src/Content/Nav.php:235
+#: view/theme/frio/theme.php:260
+msgid "Your posts and conversations"
+msgstr "你的消息和交谈"
 
-#: mod/profiles.php:595
-msgid "Relation"
-msgstr "关系"
+#: src/Content/Nav.php:150 view/theme/frio/theme.php:261
+msgid "Your profile page"
+msgstr "你的简介页"
 
-#: mod/profiles.php:596 src/Util/Temporal.php:81 src/Util/Temporal.php:83
-msgid "Miscellaneous"
-msgstr "形形色色"
+#: src/Content/Nav.php:151 view/theme/frio/theme.php:262
+msgid "Your photos"
+msgstr "你的照片"
 
-#: mod/profiles.php:599
-msgid "Your Gender:"
-msgstr "你的性:"
+#: src/Content/Nav.php:152 src/Model/Profile.php:930 src/Model/Profile.php:933
+#: view/theme/frio/theme.php:263
+msgid "Videos"
+msgstr "视频"
 
-#: mod/profiles.php:600
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span>婚姻状况:"
+#: src/Content/Nav.php:152 view/theme/frio/theme.php:263
+msgid "Your videos"
+msgstr "你的视频"
 
-#: mod/profiles.php:601 src/Model/Profile.php:769
-msgid "Sexual Preference:"
-msgstr "性取向:"
+#: src/Content/Nav.php:153 view/theme/frio/theme.php:264
+msgid "Your events"
+msgstr "你的项目"
 
-#: mod/profiles.php:602
-msgid "Example: fishing photography software"
-msgstr "例如:钓鱼 照片 软件"
+#: src/Content/Nav.php:154
+msgid "Personal notes"
+msgstr "私人的便条"
 
-#: mod/profiles.php:607
-msgid "Profile Name:"
-msgstr "简介名:"
+#: src/Content/Nav.php:154
+msgid "Your personal notes"
+msgstr "你的私人便条"
 
-#: mod/profiles.php:609
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "这是你的<strong>公开的</strong>简介。<br />它<strong>可能</strong>被所有的因特网用的看到。"
+#: src/Content/Nav.php:163
+msgid "Sign in"
+msgstr "登录"
 
-#: mod/profiles.php:610
-msgid "Your Full Name:"
-msgstr "你的全名:"
+#: src/Content/Nav.php:173 src/Content/Nav.php:235
+#: src/Core/NotificationsManager.php:192
+msgid "Home"
+msgstr "主页"
 
-#: mod/profiles.php:611
-msgid "Title/Description:"
-msgstr "标题/描述:"
+#: src/Content/Nav.php:173
+msgid "Home Page"
+msgstr "主页"
 
-#: mod/profiles.php:614
-msgid "Street Address:"
-msgstr "地址:"
+#: src/Content/Nav.php:177
+msgid "Create an account"
+msgstr "注册"
 
-#: mod/profiles.php:615
-msgid "Locality/City:"
-msgstr "现场/城市:"
+#: src/Content/Nav.php:183
+msgid "Help and documentation"
+msgstr "帮助及文档"
 
-#: mod/profiles.php:616
-msgid "Region/State:"
-msgstr "å\8cºå\9f\9fï¼\8fç\9c\81"
+#: src/Content/Nav.php:187
+msgid "Apps"
+msgstr "åº\94ç\94¨ç¨\8båº\8f"
 
-#: mod/profiles.php:617
-msgid "Postal/Zip Code:"
-msgstr "邮政编码:"
+#: src/Content/Nav.php:187
+msgid "Addon applications, utilities, games"
+msgstr "可加的应用,设施,游戏"
 
-#: mod/profiles.php:618
-msgid "Country:"
-msgstr "国家:"
+#: src/Content/Nav.php:191
+msgid "Search site content"
+msgstr "搜索网站内容"
 
-#: mod/profiles.php:619 src/Util/Temporal.php:149
-msgid "Age: "
-msgstr "年纪ï¼\9a"
+#: src/Content/Nav.php:194 src/Content/Text/HTML.php:977
+msgid "Full Text"
+msgstr "å\85¨æ\96\87"
 
-#: mod/profiles.php:622
-msgid "Who: (if applicable)"
-msgstr "谁:(要是使用)"
+#: src/Content/Nav.php:195 src/Content/Text/HTML.php:978
+#: src/Content/Widget/TagCloud.php:53
+msgid "Tags"
+msgstr "标签:"
 
-#: mod/profiles.php:622
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "比如:limou,李某,limou@example。com"
+#: src/Content/Nav.php:215
+msgid "Community"
+msgstr "社会"
 
-#: mod/profiles.php:623
-msgid "Since [date]:"
-msgstr "追溯[日期]:"
+#: src/Content/Nav.php:215
+msgid "Conversations on this and other servers"
+msgstr ""
 
-#: mod/profiles.php:625
-msgid "Tell us about yourself..."
-msgstr "给我们自我介绍..."
+#: src/Content/Nav.php:219 src/Model/Profile.php:945 src/Model/Profile.php:956
+#: view/theme/frio/theme.php:268
+msgid "Events and Calendar"
+msgstr "事件和日历"
 
-#: mod/profiles.php:626
-msgid "XMPP (Jabber) address:"
-msgstr "XMPP (Jabber) 地址:"
+#: src/Content/Nav.php:222
+msgid "Directory"
+msgstr "名录"
 
-#: mod/profiles.php:626
-msgid ""
-"The XMPP address will be propagated to your contacts so that they can follow"
-" you."
-msgstr "这个 XMPP 地址会被传播到你的联系人从而他们可以关注你。"
+#: src/Content/Nav.php:222
+msgid "People directory"
+msgstr "人物名录"
 
-#: mod/profiles.php:627
-msgid "Homepage URL:"
-msgstr "主页URL:"
+#: src/Content/Nav.php:224
+msgid "Information about this friendica instance"
+msgstr "资料关于这个Friendica服务器"
 
-#: mod/profiles.php:628 src/Model/Profile.php:777
-msgid "Hometown:"
-msgstr "故乡:"
+#: src/Content/Nav.php:227
+msgid "Terms of Service of this Friendica instance"
+msgstr ""
 
-#: mod/profiles.php:629 src/Model/Profile.php:785
-msgid "Political Views:"
-msgstr "æ\94¿æ²»è§\82念ï¼\9a"
+#: src/Content/Nav.php:232 view/theme/frio/theme.php:267
+msgid "Conversations from your friends"
+msgstr "æ\9d¥è\87ªä½ ç\9a\84æ\9c\8bå\8f\8b们ç\9a\84交è°\88"
 
-#: mod/profiles.php:630
-msgid "Religious Views:"
-msgstr " 宗教信仰 :"
+#: src/Content/Nav.php:233
+msgid "Network Reset"
+msgstr "网络重设"
 
-#: mod/profiles.php:631
-msgid "Public Keywords:"
-msgstr "公开关键字 :"
+#: src/Content/Nav.php:233
+msgid "Load Network page with no filters"
+msgstr "表示网络页无滤器"
 
-#: mod/profiles.php:631
-msgid "(Used for suggesting potential friends, can be seen by others)"
-msgstr "(用于建议可能的朋友们,会被别人看)"
+#: src/Content/Nav.php:239 src/Core/NotificationsManager.php:199
+msgid "Introductions"
+msgstr "介绍"
 
-#: mod/profiles.php:632
-msgid "Private Keywords:"
-msgstr "私人关键字"
+#: src/Content/Nav.php:239
+msgid "Friend Requests"
+msgstr "友谊邀请"
 
-#: mod/profiles.php:632
-msgid "(Used for searching profiles, never shown to others)"
-msgstr "(用于搜索简介,没有给别人看)"
+#: src/Content/Nav.php:241
+msgid "See all notifications"
+msgstr "看所有的通知"
 
-#: mod/profiles.php:633 src/Model/Profile.php:801
-msgid "Likes:"
-msgstr "喜欢:"
+#: src/Content/Nav.php:242
+msgid "Mark all system notifications seen"
+msgstr "记号各系统通知看过的"
 
-#: mod/profiles.php:634 src/Model/Profile.php:805
-msgid "Dislikes:"
-msgstr "不喜欢:"
+#: src/Content/Nav.php:245 view/theme/frio/theme.php:269
+msgid "Private mail"
+msgstr "私人的邮件"
 
-#: mod/profiles.php:635
-msgid "Musical interests"
-msgstr "音乐兴趣"
+#: src/Content/Nav.php:246
+msgid "Inbox"
+msgstr "收件箱"
 
-#: mod/profiles.php:636
-msgid "Books, literature"
-msgstr "书,文学"
+#: src/Content/Nav.php:247
+msgid "Outbox"
+msgstr "发件箱"
+
+#: src/Content/Nav.php:251
+msgid "Manage"
+msgstr "管理"
+
+#: src/Content/Nav.php:251
+msgid "Manage other pages"
+msgstr "管理别的页"
 
-#: mod/profiles.php:637
-msgid "Television"
-msgstr "电视"
+#: src/Content/Nav.php:256 view/theme/frio/theme.php:270
+msgid "Account settings"
+msgstr "帐户设置"
 
-#: mod/profiles.php:638
-msgid "Film/dance/culture/entertainment"
-msgstr "ç\94µå½±ï¼\8fè·³è\88\9eï¼\8fæ\96\87å\8c\96ï¼\8f娱ä¹\90"
+#: src/Content/Nav.php:259
+msgid "Manage/Edit Profiles"
+msgstr "管ç\90\86ï¼\8fç¼\96è¾\91ç®\80ä»\8b"
 
-#: mod/profiles.php:639
-msgid "Hobbies/Interests"
-msgstr "ç\88±å¥½ï¼\8få\85´è¶£"
+#: src/Content/Nav.php:262 view/theme/frio/theme.php:271
+msgid "Manage/edit friends and contacts"
+msgstr "管ç\90\86/ç¼\96è¾\91æ\9c\8bå\8f\8bå\92\8cè\81\94系人"
 
-#: mod/profiles.php:640
-msgid "Love/romance"
-msgstr "ç\88±æ\83\85ï¼\8f浪漫"
+#: src/Content/Nav.php:267
+msgid "Site setup and configuration"
+msgstr "ç½\91ç«\99å¼\80å\8a\9eå\92\8cé\85\8dç½®"
 
-#: mod/profiles.php:641
-msgid "Work/employment"
-msgstr "å·¥ä½\9c"
+#: src/Content/Nav.php:270
+msgid "Navigation"
+msgstr "导è\88ª"
 
-#: mod/profiles.php:642
-msgid "School/education"
-msgstr "学院/教育"
+#: src/Content/Nav.php:270
+msgid "Site map"
+msgstr "网站地图"
 
-#: mod/profiles.php:643
-msgid "Contact information and Social Networks"
-msgstr "熟人信息和社会化网络"
+#: src/Content/OEmbed.php:255
+msgid "Embedding disabled"
+msgstr "嵌入已停用"
 
-#: mod/profiles.php:674 src/Model/Profile.php:389
-msgid "Profile Image"
-msgstr "简介图像"
+#: src/Content/OEmbed.php:375
+msgid "Embedded content"
+msgstr "嵌入内容"
 
-#: mod/profiles.php:676 src/Model/Profile.php:392
-msgid "visible to everybody"
-msgstr "给打假可见的"
+#: src/Content/Pager.php:152
+msgid "newer"
+msgstr "更新"
 
-#: mod/profiles.php:683
-msgid "Edit/Manage Profiles"
-msgstr "编辑/管理简介"
+#: src/Content/Pager.php:157
+msgid "older"
+msgstr "更旧"
 
-#: mod/profiles.php:684 src/Model/Profile.php:379 src/Model/Profile.php:401
-msgid "Change profile photo"
-msgstr "换简介照片"
+#: src/Content/Pager.php:201
+msgid "prev"
+msgstr "上个"
 
-#: mod/profiles.php:685 src/Model/Profile.php:380
-msgid "Create New Profile"
-msgstr "创建新的简介"
+#: src/Content/Pager.php:261
+msgid "last"
+msgstr "最后"
 
-#: mod/photos.php:112 src/Model/Profile.php:894
-msgid "Photo Albums"
-msgstr "ç\9b¸å\86\8c"
+#: src/Content/Text/BBCode.php:426
+msgid "view full size"
+msgstr "ç\9c\8bå\85¨å°ºå¯¸"
 
-#: mod/photos.php:113 mod/photos.php:1708
-msgid "Recent Photos"
-msgstr "最近的照片"
+#: src/Content/Text/BBCode.php:858 src/Content/Text/BBCode.php:1583
+#: src/Content/Text/BBCode.php:1584
+msgid "Image/photo"
+msgstr "图像/照片"
 
-#: mod/photos.php:116 mod/photos.php:1230 mod/photos.php:1710
-msgid "Upload New Photos"
-msgstr "上传新照片"
+#: src/Content/Text/BBCode.php:961
+#, php-format
+msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
+msgstr ""
 
-#: mod/photos.php:190
-msgid "Contact information unavailable"
-msgstr "联系人信息不可用"
+#: src/Content/Text/BBCode.php:1510 src/Content/Text/BBCode.php:1532
+msgid "$1 wrote:"
+msgstr "$1写:"
 
-#: mod/photos.php:209
-msgid "Album not found."
-msgstr "å\8f\96å\9b\9eä¸\8däº\86ç\9b¸å\86\8c."
+#: src/Content/Text/BBCode.php:1594 src/Content/Text/BBCode.php:1595
+msgid "Encrypted content"
+msgstr "å\8a å¯\86ç\9a\84å\86\85容"
 
-#: mod/photos.php:239 mod/photos.php:252 mod/photos.php:1181
-msgid "Delete Album"
-msgstr "删除相册"
+#: src/Content/Text/BBCode.php:1702
+msgid "Invalid source protocol"
+msgstr "无效的源协议"
 
-#: mod/photos.php:250
-msgid "Do you really want to delete this photo album and all its photos?"
-msgstr "æ\82¨ç\9c\9fç\9a\84æ\83³å\88 é\99¤è¿\99个ç\9b¸å\86\8cå\92\8cæ\89\80æ\9c\89é\87\8cé\9d¢ç\9a\84ç\85§ç\9b¸å\90\97ï¼\9f"
+#: src/Content/Text/BBCode.php:1713
+msgid "Invalid link protocol"
+msgstr "æ\97 æ\95\88ç\9a\84è¿\9eæ\8e¥å\8d\8fè®®"
 
-#: mod/photos.php:312 mod/photos.php:324 mod/photos.php:1453
-msgid "Delete Photo"
-msgstr "删除照片"
+#: src/Content/Text/HTML.php:798
+msgid "Loading more entries..."
+msgstr "没有项目..."
 
-#: mod/photos.php:322
-msgid "Do you really want to delete this photo?"
-msgstr "您真的想删除这个照相吗?"
+#: src/Content/Text/HTML.php:799
+msgid "The end"
+msgstr ""
 
-#: mod/photos.php:679
-msgid "a photo"
-msgstr "一张照片"
+#: src/Content/Text/HTML.php:839
+msgid "No contacts"
+msgstr "没有联系人"
 
-#: mod/photos.php:679
+#: src/Content/Text/HTML.php:866
 #, php-format
-msgid "%1$s was tagged in %2$s by %3$s"
-msgstr "%1$s被%3$s标签在%2$s"
+msgid "%d Contact"
+msgid_plural "%d Contacts"
+msgstr[0] "%d 联系人"
 
-#: mod/photos.php:782
-msgid "Image upload didn't complete, please try again"
-msgstr "图片上传未完成,请重试"
+#: src/Content/Text/HTML.php:879
+msgid "View Contacts"
+msgstr "查看联系人"
 
-#: mod/photos.php:785
-msgid "Image file is missing"
-msgstr "缺少图片文件"
+#: src/Content/Text/HTML.php:962
+msgid "Follow"
+msgstr "关注"
 
-#: mod/photos.php:790
-msgid ""
-"Server can't accept new file upload at this time, please contact your "
-"administrator"
-msgstr "服务器目前无法接受新的上传文件,请联系您的管理员"
+#: src/Content/Text/HTML.php:1017 src/Model/Item.php:3438
+#: src/Model/Item.php:3449
+msgid "Click to open/close"
+msgstr "点击为开关"
 
-#: mod/photos.php:816
-msgid "Image file is empty."
-msgstr "å\9b¾ç\89\87æ\96\87件空ç\9a\84ã\80\82"
+#: src/Content/Widget/CalendarExport.php:63
+msgid "Export"
+msgstr "导å\87º"
 
-#: mod/photos.php:953
-msgid "No photos selected"
-msgstr "没有照片挑选了"
+#: src/Content/Widget/CalendarExport.php:64
+msgid "Export calendar as ical"
+msgstr "导出日历为 ical"
 
-#: mod/photos.php:1104
-msgid "Upload Photos"
-msgstr "上传照片"
+#: src/Content/Widget/CalendarExport.php:65
+msgid "Export calendar as csv"
+msgstr "导出日历为 csv"
 
-#: mod/photos.php:1108 mod/photos.php:1176
-msgid "New album name: "
-msgstr "æ\96°å\86\8cå\90\8dï¼\9a"
+#: src/Content/Widget.php:35
+msgid "Add New Contact"
+msgstr "æ·»å\8a æ\96°ç\9a\84è\81\94系人"
 
-#: mod/photos.php:1109
-msgid "or select existing album:"
-msgstr ""
+#: src/Content/Widget.php:36
+msgid "Enter address or web location"
+msgstr "输入地址或网络位置"
 
-#: mod/photos.php:1110
-msgid "Do not show a status post for this upload"
-msgstr "别显示现状报到关于这个上传"
+#: src/Content/Widget.php:37
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "比如:li@example.com, http://example.com/li"
 
-#: mod/photos.php:1187
-msgid "Edit Album"
-msgstr "编照片册"
+#: src/Content/Widget.php:55
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d邀请可用的"
 
-#: mod/photos.php:1192
-msgid "Show Newest First"
-msgstr "先表示最新的"
+#: src/Content/Widget.php:61 view/theme/vier/theme.php:199
+msgid "Find People"
+msgstr "找人物"
 
-#: mod/photos.php:1194
-msgid "Show Oldest First"
-msgstr "先表示最老的"
+#: src/Content/Widget.php:62 view/theme/vier/theme.php:200
+msgid "Enter name or interest"
+msgstr "输入名字或兴趣"
 
-#: mod/photos.php:1215 mod/photos.php:1693
-msgid "View Photo"
-msgstr "看照片"
+#: src/Content/Widget.php:64 view/theme/vier/theme.php:202
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "比如:罗伯特·摩根斯坦,钓鱼"
 
-#: mod/photos.php:1256
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "无权利。用这个项目可能受限制。"
+#: src/Content/Widget.php:67 view/theme/vier/theme.php:205
+msgid "Similar Interests"
+msgstr "相似兴趣"
 
-#: mod/photos.php:1258
-msgid "Photo not available"
-msgstr "不可获得的照片"
+#: src/Content/Widget.php:68 view/theme/vier/theme.php:206
+msgid "Random Profile"
+msgstr "随机简介"
 
-#: mod/photos.php:1333
-msgid "View photo"
-msgstr "看照片"
+#: src/Content/Widget.php:69 view/theme/vier/theme.php:207
+msgid "Invite Friends"
+msgstr "邀请朋友们"
 
-#: mod/photos.php:1333
-msgid "Edit photo"
-msgstr "编辑照片"
+#: src/Content/Widget.php:72 view/theme/vier/theme.php:210
+msgid "Local Directory"
+msgstr "本地目录"
 
-#: mod/photos.php:1334
-msgid "Use as profile photo"
-msgstr "用为资料图"
+#: src/Content/Widget.php:156
+msgid "Protocols"
+msgstr ""
 
-#: mod/photos.php:1340 src/Object/Post.php:151
-msgid "Private Message"
-msgstr "私人的新闻"
+#: src/Content/Widget.php:159
+msgid "All Protocols"
+msgstr ""
 
-#: mod/photos.php:1360
-msgid "View Full Size"
-msgstr "看全尺寸"
+#: src/Content/Widget.php:194
+msgid "Saved Folders"
+msgstr "保存的文件夹"
 
-#: mod/photos.php:1421
-msgid "Tags: "
-msgstr "标签:"
+#: src/Content/Widget.php:197 src/Content/Widget.php:237
+msgid "Everything"
+msgstr "一切"
 
-#: mod/photos.php:1424
-msgid "[Remove any tag]"
-msgstr "[删除任何标签]"
+#: src/Content/Widget.php:234
+msgid "Categories"
+msgstr "种类"
 
-#: mod/photos.php:1439
-msgid "New album name"
-msgstr "新册名"
+#: src/Content/Widget.php:316
+#, php-format
+msgid "%d contact in common"
+msgid_plural "%d contacts in common"
+msgstr[0] "%d 个共同的联系人"
 
-#: mod/photos.php:1440
-msgid "Caption"
-msgstr "字幕"
+#: src/Core/ACL.php:283
+msgid "Post to Email"
+msgstr "电邮发布"
 
-#: mod/photos.php:1441
-msgid "Add a Tag"
-msgstr "加标签"
+#: src/Core/ACL.php:289
+msgid "Hide your profile details from unknown viewers?"
+msgstr "使简介信息给陌生的看着看不了?"
 
-#: mod/photos.php:1441
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "例子:@zhang, @Zhang_San, @li@example.com, #Beijing, #ktv"
+#: src/Core/ACL.php:288
+#, php-format
+msgid "Connectors disabled, since \"%s\" is enabled."
+msgstr "连接器已停用,因为\"%s\"启用。"
 
-#: mod/photos.php:1442
-msgid "Do not rotate"
-msgstr "ä¸\8dè¦\81æ\97\8b转"
+#: src/Core/ACL.php:295
+msgid "Visible to everybody"
+msgstr "ä»»ä½\95人å\8f¯è§\81ç\9a\84"
 
-#: mod/photos.php:1443
-msgid "Rotate CW (right)"
-msgstr "顺时针地转动(左)"
+#: src/Core/ACL.php:296 view/theme/vier/config.php:116
+msgid "show"
+msgstr "显示"
 
-#: mod/photos.php:1444
-msgid "Rotate CCW (left)"
-msgstr "反顺时针地转动(右)"
+#: src/Core/ACL.php:297 view/theme/vier/config.php:116
+msgid "don't show"
+msgstr "不要显示"
 
-#: mod/photos.php:1478 src/Object/Post.php:293
-msgid "I like this (toggle)"
-msgstr "我喜欢这(交替)"
+#: src/Core/ACL.php:307
+msgid "Close"
+msgstr "关闭"
 
-#: mod/photos.php:1479 src/Object/Post.php:294
-msgid "I don't like this (toggle)"
-msgstr "æ\88\91ä¸\8då\96\9c欢è¿\99(交æ\9b¿)"
+#: src/Core/Authentication.php:84
+msgid "Welcome "
+msgstr "欢è¿\8e"
 
-#: mod/photos.php:1496 mod/photos.php:1535 mod/photos.php:1595
-#: src/Object/Post.php:398 src/Object/Post.php:794
-msgid "Comment"
-msgstr "评论"
+#: src/Core/Authentication.php:85
+msgid "Please upload a profile photo."
+msgstr "请上传一张简介照片"
 
-#: mod/photos.php:1627
-msgid "Map"
-msgstr "地图"
+#: src/Core/Authentication.php:87
+msgid "Welcome back "
+msgstr "欢迎回来"
 
-#: local/test.php:1840
+#: src/Core/Console/ArchiveContact.php:66
 #, php-format
-msgid ""
-"<span><a href=\"%s\" target=\"_blank\" class=\"shared-wall-item-"
-"name\">%s</a> wrote the following <a href=\"%s\" target=\"_blank\">post</a>"
+msgid "Could not find any unarchived contact entry for this URL (%s)"
 msgstr ""
 
-#: local/testshare.php:158 src/Content/Text/BBCode.php:991
-#, php-format
-msgid "<a href=\"%1$s\" target=\"_blank\">%2$s</a> %3$s"
+#: src/Core/Console/ArchiveContact.php:71
+msgid "The contact entries have been archived"
 msgstr ""
 
-#: local/testshare.php:180
-#, php-format
-msgid ""
-"<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a "
-"href=\"%s\" target=\"_blank\">post</a>"
+#: src/Core/Console/NewPassword.php:72
+msgid "Enter new password: "
 msgstr ""
 
-#: boot.php:653
-#, php-format
-msgid "Update %s failed. See error logs."
-msgstr "更新 %s 失败。查看错误日志。"
-
-#: src/Database/DBStructure.php:33
-msgid "There are no tables on MyISAM."
-msgstr "未在 MyISAM 中发现表。"
-
-#: src/Database/DBStructure.php:76
+#: src/Core/Console/PostUpdate.php:50
 #, php-format
-msgid ""
-"\n"
-"\t\t\t\tThe friendica developers released update %s recently,\n"
-"\t\t\t\tbut when I tried to install it, something went terribly wrong.\n"
-"\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n"
-"\t\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."
+msgid "Post update version number has been set to %s."
 msgstr ""
 
-#: src/Database/DBStructure.php:81
-#, php-format
-msgid ""
-"The error message is\n"
-"[pre]%s[/pre]"
-msgstr "错误消息是\n[pre]%s[/pre]"
+#: src/Core/Console/PostUpdate.php:58
+msgid "Check for pending update actions."
+msgstr ""
 
-#: src/Database/DBStructure.php:192
-#, php-format
-msgid ""
-"\n"
-"Error %d occurred during database update:\n"
-"%s\n"
-msgstr "\n在数据库更新的时候发生了错误 %d\n%s\n"
+#: src/Core/Console/PostUpdate.php:60
+msgid "Done."
+msgstr ""
 
-#: src/Database/DBStructure.php:195
-msgid "Errors encountered performing database changes: "
-msgstr "操作数据库更改的时候遇到了错误:"
+#: src/Core/Console/PostUpdate.php:62
+msgid "Execute pending post updates."
+msgstr ""
 
-#: src/Database/DBStructure.php:211
-#, php-format
-msgid "%s: Database update"
+#: src/Core/Console/PostUpdate.php:68
+msgid "All pending post updates are done."
 msgstr ""
 
-#: src/Database/DBStructure.php:473
-#, php-format
-msgid "%s: updating %s table."
-msgstr "%s: 正在更新 %s 表。"
+#: src/Core/Installer.php:160
+msgid ""
+"The database configuration file \"config/local.config.php\" could not be "
+"written. Please use the enclosed text to create a configuration file in your"
+" web server root."
+msgstr ""
+
+#: src/Core/Installer.php:176
+msgid ""
+"You may need to import the file \"database.sql\" manually using phpmyadmin "
+"or mysql."
+msgstr "您可能要手工地进口文件「database.sql」用phpmyadmin或mysql。"
+
+#: src/Core/Installer.php:177 src/Module/Install.php:134
+#: src/Module/Install.php:264
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr "请看文件「INSTALL.txt」"
 
-#: src/Core/Install.php:138
+#: src/Core/Installer.php:239
 msgid "Could not find a command line version of PHP in the web server PATH."
 msgstr "没找到命令行PHP在网服务器PATH。"
 
-#: src/Core/Install.php:139
+#: src/Core/Installer.php:240
 msgid ""
 "If you don't have a command line version of PHP installed on your server, "
 "you will not be able to run the background processing. See <a "
@@ -7793,931 +7649,1174 @@ msgid ""
 "up-the-worker'>'Setup the worker'</a>"
 msgstr ""
 
-#: src/Core/Install.php:143
+#: src/Core/Installer.php:244
 msgid "PHP executable path"
 msgstr "PHP可执行路径"
 
-#: src/Core/Install.php:143
+#: src/Core/Installer.php:244
 msgid ""
 "Enter full path to php executable. You can leave this blank to continue the "
 "installation."
 msgstr "输入全路线到php执行程序。您会留空白为继续安装。"
 
-#: src/Core/Install.php:148
+#: src/Core/Installer.php:249
 msgid "Command line PHP"
 msgstr "命令行PHP"
 
-#: src/Core/Install.php:157
+#: src/Core/Installer.php:258
 msgid "PHP executable is not the php cli binary (could be cgi-fgci version)"
 msgstr "PHP执行程序不是命令行PHP執行檔(有可能是cgi-fgci版本)"
 
-#: src/Core/Install.php:158
+#: src/Core/Installer.php:259
 msgid "Found PHP version: "
 msgstr "找到 PHP 版本:"
 
-#: src/Core/Install.php:160
+#: src/Core/Installer.php:261
 msgid "PHP cli binary"
 msgstr "命令行PHP執行檔"
 
-#: src/Core/Install.php:170
+#: src/Core/Installer.php:274
 msgid ""
 "The command line version of PHP on your system does not have "
 "\"register_argc_argv\" enabled."
 msgstr "您系统的命令行PHP没有能够「register_argc_argv」。"
 
-#: src/Core/Install.php:171
+#: src/Core/Installer.php:275
 msgid "This is required for message delivery to work."
 msgstr "这必要为通信发布成功。"
 
-#: src/Core/Install.php:173
+#: src/Core/Installer.php:280
 msgid "PHP register_argc_argv"
 msgstr "PHP register_argc_argv"
 
-#: src/Core/Install.php:201
+#: src/Core/Installer.php:312
 msgid ""
 "Error: the \"openssl_pkey_new\" function on this system is not able to "
 "generate encryption keys"
 msgstr "错误:这系统的「register_argc_argv」子程序不能产生加密钥匙"
 
-#: src/Core/Install.php:202
+#: src/Core/Installer.php:313
 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」。"
 
-#: src/Core/Install.php:204
+#: src/Core/Installer.php:316
 msgid "Generate encryption keys"
 msgstr "产生加密钥匙"
 
-#: src/Core/Install.php:225
-msgid "libCurl PHP module"
-msgstr "libCurl PHP模块"
+#: src/Core/Installer.php:367
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "错误:Apache服务器的mod-rewrite模块是必要的可却不安装的。"
 
-#: src/Core/Install.php:226
-msgid "GD graphics PHP module"
-msgstr "GD显示PHP模块"
+#: src/Core/Installer.php:372
+msgid "Apache mod_rewrite module"
+msgstr "Apache mod_rewrite部件"
 
-#: src/Core/Install.php:227
-msgid "OpenSSL PHP module"
-msgstr "OpenSSL PHP模块"
+#: src/Core/Installer.php:378
+msgid "Error: PDO or MySQLi PHP module required but not installed."
+msgstr ""
+
+#: src/Core/Installer.php:383
+msgid "Error: The MySQL driver for PDO is not installed."
+msgstr "错误:MySQL 的 PHP 数据对象 (PDO) 扩展驱动未安装。"
 
-#: src/Core/Install.php:228
+#: src/Core/Installer.php:387
 msgid "PDO or MySQLi PHP module"
 msgstr "PDO 或者 MySQLi PHP 模块"
 
-#: src/Core/Install.php:229
-msgid "mb_string PHP module"
-msgstr "mb_string PHP模块"
+#: src/Core/Installer.php:395
+msgid "Error, XML PHP module required but not installed."
+msgstr "部件错误,需要 XML PHP 模块但它并没有被安装。"
 
-#: src/Core/Install.php:230
+#: src/Core/Installer.php:399
 msgid "XML PHP module"
 msgstr "XML PHP 模块"
 
-#: src/Core/Install.php:231
-msgid "iconv PHP module"
-msgstr "iconv PHP 模块"
-
-#: src/Core/Install.php:232
-msgid "POSIX PHP module"
-msgstr "POSIX PHP 模块"
-
-#: src/Core/Install.php:236 src/Core/Install.php:238
-msgid "Apache mod_rewrite module"
-msgstr "Apache mod_rewrite部件"
-
-#: src/Core/Install.php:236
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "错误:Apache服务器的mod-rewrite模块是必要的可却不安装的。"
+#: src/Core/Installer.php:402
+msgid "libCurl PHP module"
+msgstr "libCurl PHP模块"
 
-#: src/Core/Install.php:244
+#: src/Core/Installer.php:403
 msgid "Error: libCURL PHP module required but not installed."
 msgstr "错误:libCurl PHP模块是必要的可却不安装的。"
 
-#: src/Core/Install.php:248
+#: src/Core/Installer.php:409
+msgid "GD graphics PHP module"
+msgstr "GD显示PHP模块"
+
+#: src/Core/Installer.php:410
 msgid ""
 "Error: GD graphics PHP module with JPEG support required but not installed."
 msgstr "错误:GD显示PHP模块跟JPEG支持是必要的可却安装的。"
 
-#: src/Core/Install.php:252
+#: src/Core/Installer.php:416
+msgid "OpenSSL PHP module"
+msgstr "OpenSSL PHP模块"
+
+#: src/Core/Installer.php:417
 msgid "Error: openssl PHP module required but not installed."
 msgstr "错误:openssl PHP模块是必要的可却不安装的。"
 
-#: src/Core/Install.php:256
-msgid "Error: PDO or MySQLi PHP module required but not installed."
-msgstr ""
-
-#: src/Core/Install.php:260
-msgid "Error: The MySQL driver for PDO is not installed."
-msgstr "错误:MySQL 的 PHP 数据对象 (PDO) 扩展驱动未安装。"
+#: src/Core/Installer.php:423
+msgid "mb_string PHP module"
+msgstr "mb_string PHP模块"
 
-#: src/Core/Install.php:264
+#: src/Core/Installer.php:424
 msgid "Error: mb_string PHP module required but not installed."
 msgstr "错误:mbstring PHP模块必要可没安装的。"
 
-#: src/Core/Install.php:268
+#: src/Core/Installer.php:430
+msgid "iconv PHP module"
+msgstr "iconv PHP 模块"
+
+#: src/Core/Installer.php:431
 msgid "Error: iconv PHP module required but not installed."
 msgstr "错误:需要 iconv PHP 模块但它并没有被安装。"
 
-#: src/Core/Install.php:272
+#: src/Core/Installer.php:437
+msgid "POSIX PHP module"
+msgstr "POSIX PHP 模块"
+
+#: src/Core/Installer.php:438
 msgid "Error: POSIX PHP module required but not installed."
 msgstr ""
 
-#: src/Core/Install.php:282
-msgid "Error, XML PHP module required but not installed."
-msgstr "部件错误,需要 XML PHP 模块但它并没有被安装。"
+#: src/Core/Installer.php:444
+msgid "JSON PHP module"
+msgstr ""
+
+#: src/Core/Installer.php:445
+msgid "Error: JSON PHP module required but not installed."
+msgstr ""
 
-#: src/Core/Install.php:301
+#: src/Core/Installer.php:468
 msgid ""
-"The web installer needs to be able to create a file called \"local.ini.php\""
-" in the \"config\" folder of your web server and it is unable to do so."
+"The web installer needs to be able to create a file called "
+"\"local.config.php\" in the \"config\" folder of your web server and it is "
+"unable to do so."
 msgstr ""
 
-#: src/Core/Install.php:302
+#: src/Core/Installer.php:469
 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 "这常常是一个权设置,因为网服务器可能不会写文件在文件夹-即使您会。"
 
-#: src/Core/Install.php:303
+#: src/Core/Installer.php:470
 msgid ""
 "At the end of this procedure, we will give you a text to save in a file "
-"named local.ini.php in your Friendica \"config\" folder."
+"named local.config.php in your Friendica \"config\" folder."
 msgstr ""
 
-#: src/Core/Install.php:304
+#: src/Core/Installer.php:471
 msgid ""
 "You can alternatively skip this procedure and perform a manual installation."
 " Please see the file \"INSTALL.txt\" for instructions."
 msgstr "或者您会这个步骤不做还是实行手动的安装。请看INSTALL.txt文件为说明。"
 
-#: src/Core/Install.php:307
-msgid "config/local.ini.php is writable"
+#: src/Core/Installer.php:474
+msgid "config/local.config.php is writable"
 msgstr ""
 
-#: src/Core/Install.php:325
+#: src/Core/Installer.php:494
 msgid ""
 "Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
 "compiles templates to PHP to speed up rendering."
 msgstr "Friendica用Smarty3模板机车为建筑网页。Smarty3把模板编译成PHP为催建筑网页。"
 
-#: src/Core/Install.php:326
+#: src/Core/Installer.php:495
 msgid ""
 "In order to store these compiled templates, the web server needs to have "
 "write access to the directory view/smarty3/ under the Friendica top level "
 "folder."
 msgstr "为了保存这些模板,网服务器要写权利于view/smarty3/目录在Friendica主目录下。"
 
-#: src/Core/Install.php:327
+#: src/Core/Installer.php:496
 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)有这个目录的写权利。"
 
-#: src/Core/Install.php:328
+#: src/Core/Installer.php:497
 msgid ""
 "Note: as a security measure, you should give the web server write access to "
 "view/smarty3/ only--not the template files (.tpl) that it contains."
 msgstr "注意:为了安全,您应该只给网服务器写权利于view/smarty3/-没有模板文件(.tpl)之下。"
 
-#: src/Core/Install.php:331
+#: src/Core/Installer.php:500
 msgid "view/smarty3 is writable"
 msgstr "能写view/smarty3"
 
-#: src/Core/Install.php:356
+#: src/Core/Installer.php:528
 msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "在 .htaccess 中的 URL 重写不工作。请检查你的服务器配置。"
+"Url rewrite in .htaccess is not working. Make sure you copied .htaccess-dist"
+" to .htaccess."
+msgstr ""
 
-#: src/Core/Install.php:358
+#: src/Core/Installer.php:530
 msgid "Error message from Curl when fetching"
 msgstr ""
 
-#: src/Core/Install.php:362
+#: src/Core/Installer.php:535
 msgid "Url rewrite is working"
 msgstr "URL改写发挥机能"
 
-#: src/Core/Install.php:389
+#: src/Core/Installer.php:564
 msgid "ImageMagick PHP extension is not installed"
 msgstr "ImageMagick PHP 扩展没有安装"
 
-#: src/Core/Install.php:391
+#: src/Core/Installer.php:566
 msgid "ImageMagick PHP extension is installed"
 msgstr "ImageMagick PHP 扩展已安装"
 
-#: src/Core/Install.php:393
+#: src/Core/Installer.php:568 tests/src/Core/InstallerTest.php:319
+#: tests/src/Core/InstallerTest.php:343
 msgid "ImageMagick supports GIF"
 msgstr "ImageMagick 支持 GIF"
 
-#: src/Core/ACL.php:284
-msgid "Post to Email"
-msgstr "电邮发布"
+#: src/Core/Installer.php:589
+msgid "Could not connect to database."
+msgstr "解不了数据库。"
 
-#: src/Core/ACL.php:290
-msgid "Hide your profile details from unknown viewers?"
-msgstr "使简介信息给陌生的看着看不了?"
+#: src/Core/Installer.php:596
+msgid "Database already in use."
+msgstr "数据库已经被使用。"
 
-#: src/Core/ACL.php:289
-#, php-format
-msgid "Connectors disabled, since \"%s\" is enabled."
-msgstr "连接器已停用,因为\"%s\"启用。"
+#: src/Core/L10n.php:361 src/Model/Event.php:394
+msgid "Tuesday"
+msgstr "星期二"
 
-#: src/Core/ACL.php:296
-msgid "Visible to everybody"
-msgstr "任何人可见的"
+#: src/Core/L10n.php:361 src/Model/Event.php:395
+msgid "Wednesday"
+msgstr "星期三"
 
-#: src/Core/ACL.php:308
-msgid "Close"
-msgstr "关闭"
+#: src/Core/L10n.php:361 src/Model/Event.php:396
+msgid "Thursday"
+msgstr "星期四"
 
-#: src/Core/Console/ArchiveContact.php:65
-#, php-format
-msgid "Could not find any unarchived contact entry for this URL (%s)"
-msgstr ""
+#: src/Core/L10n.php:361 src/Model/Event.php:397
+msgid "Friday"
+msgstr "星期五"
 
-#: src/Core/Console/ArchiveContact.php:70
-msgid "The contact entries have been archived"
-msgstr ""
+#: src/Core/L10n.php:361 src/Model/Event.php:398
+msgid "Saturday"
+msgstr "星期六"
 
-#: src/Core/Console/PostUpdate.php:32
-msgid "Execute pending post updates."
-msgstr ""
+#: src/Core/L10n.php:365 src/Model/Event.php:413
+msgid "January"
+msgstr "一月"
 
-#: src/Core/Console/PostUpdate.php:38
-msgid "All pending post updates are done."
-msgstr ""
+#: src/Core/L10n.php:365 src/Model/Event.php:414
+msgid "February"
+msgstr "二月"
 
-#: src/Core/Console/NewPassword.php:73
-msgid "Enter new password: "
-msgstr ""
+#: src/Core/L10n.php:365 src/Model/Event.php:415
+msgid "March"
+msgstr "三月"
 
-#: src/Core/Console/NewPassword.php:78 src/Model/User.php:269
-msgid "Password can't be empty"
+#: src/Core/L10n.php:365 src/Model/Event.php:416
+msgid "April"
+msgstr "四月"
+
+#: src/Core/L10n.php:365 src/Core/L10n.php:384 src/Model/Event.php:404
+#: src/Model/Event.php:417
+msgid "May"
+msgstr "五月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:418
+msgid "June"
+msgstr "六月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:419
+msgid "July"
+msgstr "七月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:420
+msgid "August"
+msgstr "八月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:421
+msgid "September"
+msgstr "九月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:422
+msgid "October"
+msgstr "十月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:423
+msgid "November"
+msgstr "十一月"
+
+#: src/Core/L10n.php:365 src/Model/Event.php:424
+msgid "December"
+msgstr "十二月"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:385
+msgid "Mon"
+msgstr "星期一"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:386
+msgid "Tue"
+msgstr "星期二"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:387
+msgid "Wed"
+msgstr "星期三"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:388
+msgid "Thu"
+msgstr "星期四"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:389
+msgid "Fri"
+msgstr "星期五"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:390
+msgid "Sat"
+msgstr "星期六"
+
+#: src/Core/L10n.php:380 src/Model/Event.php:384
+msgid "Sun"
+msgstr "星期日"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:400
+msgid "Jan"
+msgstr "一月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:401
+msgid "Feb"
+msgstr "二月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:402
+msgid "Mar"
+msgstr "三月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:403
+msgid "Apr"
+msgstr "四月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:406
+msgid "Jul"
+msgstr "七月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:407
+msgid "Aug"
+msgstr "八月"
+
+#: src/Core/L10n.php:384
+msgid "Sep"
 msgstr ""
 
-#: src/Core/NotificationsManager.php:172
+#: src/Core/L10n.php:384 src/Model/Event.php:409
+msgid "Oct"
+msgstr "十月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:410
+msgid "Nov"
+msgstr "十一月"
+
+#: src/Core/L10n.php:384 src/Model/Event.php:411
+msgid "Dec"
+msgstr "十二月"
+
+#: src/Core/L10n.php:402
+msgid "poke"
+msgstr "戳"
+
+#: src/Core/L10n.php:402
+msgid "poked"
+msgstr "戳了"
+
+#: src/Core/L10n.php:403
+msgid "ping"
+msgstr "砰"
+
+#: src/Core/L10n.php:403
+msgid "pinged"
+msgstr "砰了"
+
+#: src/Core/L10n.php:404
+msgid "prod"
+msgstr "柔戳"
+
+#: src/Core/L10n.php:404
+msgid "prodded"
+msgstr "柔戳了"
+
+#: src/Core/L10n.php:405
+msgid "slap"
+msgstr "掌击"
+
+#: src/Core/L10n.php:405
+msgid "slapped"
+msgstr "掌击了"
+
+#: src/Core/L10n.php:406
+msgid "finger"
+msgstr "指"
+
+#: src/Core/L10n.php:406
+msgid "fingered"
+msgstr "指了"
+
+#: src/Core/L10n.php:407
+msgid "rebuff"
+msgstr "拒绝"
+
+#: src/Core/L10n.php:407
+msgid "rebuffed"
+msgstr "已拒绝"
+
+#: src/Core/NotificationsManager.php:171
 msgid "System"
 msgstr "系统"
 
-#: src/Core/NotificationsManager.php:193 src/Content/Nav.php:124
-#: src/Content/Nav.php:186
-msgid "Home"
-msgstr "主页"
-
-#: src/Core/NotificationsManager.php:200 src/Content/Nav.php:190
-msgid "Introductions"
-msgstr "介绍"
-
-#: src/Core/NotificationsManager.php:262 src/Core/NotificationsManager.php:274
+#: src/Core/NotificationsManager.php:261 src/Core/NotificationsManager.php:273
 #, php-format
 msgid "%s commented on %s's post"
 msgstr "%s 在 %s 的文章发表了评论"
 
-#: src/Core/NotificationsManager.php:273
+#: src/Core/NotificationsManager.php:272
 #, php-format
 msgid "%s created a new post"
 msgstr "%s 创建了一个新文章"
 
-#: src/Core/NotificationsManager.php:287
+#: src/Core/NotificationsManager.php:286
 #, php-format
 msgid "%s liked %s's post"
 msgstr "%s喜欢了%s的消息"
 
-#: src/Core/NotificationsManager.php:300
+#: src/Core/NotificationsManager.php:299
 #, php-format
 msgid "%s disliked %s's post"
 msgstr "%s不喜欢了%s的消息"
 
-#: src/Core/NotificationsManager.php:313
+#: src/Core/NotificationsManager.php:312
 #, php-format
 msgid "%s is attending %s's event"
 msgstr "%s 正在参加 %s 的事件"
 
-#: src/Core/NotificationsManager.php:326
+#: src/Core/NotificationsManager.php:325
 #, php-format
 msgid "%s is not attending %s's event"
 msgstr "%s 不在参加 %s 的事件"
 
-#: src/Core/NotificationsManager.php:339
+#: src/Core/NotificationsManager.php:338
 #, php-format
 msgid "%s may attend %s's event"
 msgstr "%s 可以参加 %s 的事件"
 
-#: src/Core/NotificationsManager.php:360
+#: src/Core/NotificationsManager.php:371
 #, php-format
 msgid "%s is now friends with %s"
 msgstr "%s成为%s的朋友"
 
-#: src/Core/NotificationsManager.php:626
+#: src/Core/NotificationsManager.php:637
 msgid "Friend Suggestion"
 msgstr "朋友建议"
 
-#: src/Core/NotificationsManager.php:656
+#: src/Core/NotificationsManager.php:671
 msgid "Friend/Connect Request"
 msgstr "友谊/联络要求"
 
-#: src/Core/NotificationsManager.php:656
+#: src/Core/NotificationsManager.php:671
 msgid "New Follower"
 msgstr "新关注者"
 
-#: src/Core/UserImport.php:100
-msgid "Error decoding account file"
-msgstr "解码账户文件出错误"
-
-#: src/Core/UserImport.php:106
-msgid "Error! No version data in file! This is not a Friendica account file?"
-msgstr "错误!文件没有版本数!这不是Friendica账户文件吗?"
-
-#: src/Core/UserImport.php:114
-#, php-format
-msgid "User '%s' already exists on this server!"
-msgstr "用户「%s」已经存在这个服务器!"
-
-#: src/Core/UserImport.php:147
-msgid "User creation error"
-msgstr "用户创建错误"
-
-#: src/Core/UserImport.php:165
-msgid "User profile creation error"
-msgstr "用户简介创建错误"
-
-#: src/Core/UserImport.php:209
-#, php-format
-msgid "%d contact not imported"
-msgid_plural "%d contacts not imported"
-msgstr[0] "%d 个联系人没导入"
-
-#: src/Core/UserImport.php:274
-msgid "Done. You can now login with your username and password"
-msgstr "完成。你现在可以用你的用户名和密码登录"
-
-#: src/Worker/Delivery.php:423
-msgid "(no subject)"
-msgstr "(无主题)"
-
-#: src/Object/Post.php:130
-msgid "This entry was edited"
-msgstr "这个条目被编辑了"
-
-#: src/Object/Post.php:190
-msgid "Delete globally"
+#: src/Core/System.php:133
+msgid "Error 400 - Bad Request"
 msgstr ""
 
-#: src/Object/Post.php:190
-msgid "Remove locally"
+#: src/Core/System.php:134
+msgid "Error 401 - Unauthorized"
 msgstr ""
 
-#: src/Object/Post.php:203
-msgid "save to folder"
-msgstr "保存在文件夹"
-
-#: src/Object/Post.php:232
-msgid "I will attend"
-msgstr "我将会参加"
-
-#: src/Object/Post.php:232
-msgid "I will not attend"
-msgstr "我将不会参加"
-
-#: src/Object/Post.php:232
-msgid "I might attend"
-msgstr "我可能会参加"
-
-#: src/Object/Post.php:259
-msgid "ignore thread"
-msgstr "忽视主题"
-
-#: src/Object/Post.php:260
-msgid "unignore thread"
-msgstr "取消忽视主题"
-
-#: src/Object/Post.php:261
-msgid "toggle ignore status"
-msgstr "切换忽视状态"
-
-#: src/Object/Post.php:272
-msgid "add star"
-msgstr "加星"
-
-#: src/Object/Post.php:273
-msgid "remove star"
-msgstr "消星"
-
-#: src/Object/Post.php:274
-msgid "toggle star status"
-msgstr "转变星现状"
-
-#: src/Object/Post.php:277
-msgid "starred"
-msgstr "已标星"
-
-#: src/Object/Post.php:282
-msgid "add tag"
-msgstr "加标签"
-
-#: src/Object/Post.php:293
-msgid "like"
-msgstr "喜欢"
-
-#: src/Object/Post.php:294
-msgid "dislike"
-msgstr "不喜欢"
-
-#: src/Object/Post.php:297
-msgid "Share this"
-msgstr "分享这个"
-
-#: src/Object/Post.php:297
-msgid "share"
-msgstr "分享"
-
-#: src/Object/Post.php:364
-msgid "to"
-msgstr "至"
-
-#: src/Object/Post.php:365
-msgid "via"
-msgstr "经过"
-
-#: src/Object/Post.php:366
-msgid "Wall-to-Wall"
-msgstr "从墙到墙"
-
-#: src/Object/Post.php:367
-msgid "via Wall-To-Wall:"
-msgstr "通过从墙到墙"
-
-#: src/Object/Post.php:426
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d 条评论"
-
-#: src/Object/Post.php:796
-msgid "Bold"
-msgstr "粗体"
-
-#: src/Object/Post.php:797
-msgid "Italic"
-msgstr "斜体"
-
-#: src/Object/Post.php:798
-msgid "Underline"
-msgstr "下划线"
-
-#: src/Object/Post.php:799
-msgid "Quote"
-msgstr "引语"
-
-#: src/Object/Post.php:800
-msgid "Code"
-msgstr "源代码"
-
-#: src/Object/Post.php:801
-msgid "Image"
-msgstr "图片"
-
-#: src/Object/Post.php:802
-msgid "Link"
-msgstr "链接"
-
-#: src/Object/Post.php:803
-msgid "Video"
-msgstr "录像"
-
-#: src/App.php:785
-msgid "Delete this item?"
-msgstr "删除这个项目?"
+#: src/Core/System.php:135
+msgid "Error 403 - Forbidden"
+msgstr ""
 
-#: src/App.php:787
-msgid "show fewer"
-msgstr "显示更小"
+#: src/Core/System.php:136
+msgid "Error 404 - Not Found"
+msgstr ""
 
-#: src/App.php:1385
-msgid "No system theme config value set."
+#: src/Core/System.php:137
+msgid "Error 500 - Internal Server Error"
 msgstr ""
 
-#: src/Module/Logout.php:28
-msgid "Logged out."
-msgstr "已注销。"
+#: src/Core/System.php:138
+msgid "Error 503 - Service Unavailable"
+msgstr ""
 
-#: src/Module/Login.php:100 src/Model/User.php:408
+#: src/Core/System.php:146
 msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "我们用您输入的OpenID登录的时候碰到问题。请核实拼法是对的。"
-
-#: src/Module/Login.php:100 src/Model/User.php:408
-msgid "The error message was:"
-msgstr "错误通知是:"
-
-#: src/Module/Login.php:280
-msgid "Create a New Account"
-msgstr "创建新的账户"
-
-#: src/Module/Login.php:313
-msgid "Password: "
-msgstr "密码:"
-
-#: src/Module/Login.php:314
-msgid "Remember me"
-msgstr "记住我"
-
-#: src/Module/Login.php:317
-msgid "Or login using OpenID: "
-msgstr "或者使用 OpenID 登录: "
-
-#: src/Module/Login.php:323
-msgid "Forgot your password?"
-msgstr "忘记你的密码吗?"
-
-#: src/Module/Login.php:326
-msgid "Website Terms of Service"
-msgstr "网站服务条款"
-
-#: src/Module/Login.php:327
-msgid "terms of service"
-msgstr "服务条款"
-
-#: src/Module/Login.php:329
-msgid "Website Privacy Policy"
-msgstr "网站隐私政策"
+"The server cannot or will not process the request due to an apparent client "
+"error."
+msgstr ""
 
-#: src/Module/Login.php:330
-msgid "privacy policy"
-msgstr "隐私政策"
+#: src/Core/System.php:147
+msgid ""
+"Authentication is required and has failed or has not yet been provided."
+msgstr ""
 
-#: src/Module/Tos.php:34 src/Module/Tos.php:74
+#: src/Core/System.php:148
 msgid ""
-"At the time of registration, and for providing communications between the "
-"user account and their contacts, the user has to provide a display name (pen"
-" name), an username (nickname) and a working email address. The names will "
-"be accessible on the profile page of the account by any visitor of the page,"
-" even if other profile details are not displayed. The email address will "
-"only be used to send the user notifications about interactions, but wont be "
-"visibly displayed. The listing of an account in the node's user directory or"
-" the global user directory is optional and can be controlled in the user "
-"settings, it is not necessary for communication."
+"The request was valid, but the server is refusing action. The user might not"
+" have the necessary permissions for a resource, or may need an account."
 msgstr ""
 
-#: src/Module/Tos.php:35 src/Module/Tos.php:75
+#: src/Core/System.php:149
 msgid ""
-"This data is required for communication and is passed on to the nodes of the"
-" communication partners and is stored there. Users can enter additional "
-"private data that may be transmitted to the communication partners accounts."
+"The requested resource could not be found but may be available in the "
+"future."
 msgstr ""
 
-#: src/Module/Tos.php:36 src/Module/Tos.php:76
-#, php-format
+#: src/Core/System.php:150
 msgid ""
-"At any point in time a logged in user can export their account data from the"
-" <a href=\"%1$s/settings/uexport\">account settings</a>. If the user wants "
-"to delete their account they can do so at <a "
-"href=\"%1$s/removeme\">%1$s/removeme</a>. The deletion of the account will "
-"be permanent. Deletion of the data will also be requested from the nodes of "
-"the communication partners."
+"An unexpected condition was encountered and no more specific message is "
+"suitable."
 msgstr ""
 
-#: src/Module/Tos.php:39 src/Module/Tos.php:73
-msgid "Privacy Statement"
-msgstr "隐私声明"
+#: src/Core/System.php:151
+msgid ""
+"The server is currently unavailable (because it is overloaded or down for "
+"maintenance). Please try again later."
+msgstr ""
 
-#: src/Protocol/OStatus.php:1813
+#: src/Core/Update.php:163
 #, php-format
-msgid "%s is now following %s."
-msgstr "%s 正在关注 %s."
-
-#: src/Protocol/OStatus.php:1814
-msgid "following"
-msgstr "关注"
+msgid "Update %s failed. See error logs."
+msgstr "更新 %s 失败。查看错误日志。"
 
-#: src/Protocol/OStatus.php:1817
+#: src/Core/Update.php:219
 #, php-format
-msgid "%s stopped following %s."
-msgstr "%s 停止关注了 %s."
-
-#: src/Protocol/OStatus.php:1818
-msgid "stopped following"
-msgstr "取消关注"
+msgid ""
+"\n"
+"\t\t\t\tThe friendica developers released update %s recently,\n"
+"\t\t\t\tbut when I tried to install it, something went terribly wrong.\n"
+"\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n"
+"\t\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."
+msgstr ""
 
-#: src/Protocol/DFRN.php:1525 src/Model/Contact.php:1956
+#: src/Core/Update.php:225
 #, php-format
-msgid "%s's birthday"
-msgstr "%s的生日"
+msgid ""
+"The error message is\n"
+"[pre]%s[/pre]"
+msgstr "错误消息是\n[pre]%s[/pre]"
 
-#: src/Protocol/DFRN.php:1526 src/Model/Contact.php:1957
+#: src/Core/Update.php:254
 #, php-format
-msgid "Happy Birthday %s"
-msgstr "生日快乐%s"
-
-#: src/Protocol/Diaspora.php:2417
-msgid "Sharing notification from Diaspora network"
-msgstr "分享通知从Diaspora网络"
-
-#: src/Protocol/Diaspora.php:3514
-msgid "Attachments:"
-msgstr "附件:"
-
-#: src/Util/Temporal.php:147 src/Model/Profile.php:745
-msgid "Birthday:"
-msgstr "生日:"
-
-#: src/Util/Temporal.php:151
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "YYYY-MM-DD 或 MM-DD"
-
-#: src/Util/Temporal.php:294
-msgid "never"
-msgstr "从未"
-
-#: src/Util/Temporal.php:300
-msgid "less than a second ago"
-msgstr "一秒以内"
+msgid ""
+"\n"
+"\t\t\t\t\tThe friendica database was successfully updated from %s to %s."
+msgstr ""
 
-#: src/Util/Temporal.php:303
-msgid "year"
-msgstr ""
+#: src/Core/UserImport.php:101
+msgid "Error decoding account file"
+msgstr "解码账户文件出错误"
 
-#: src/Util/Temporal.php:303
-msgid "years"
-msgstr ""
+#: src/Core/UserImport.php:107
+msgid "Error! No version data in file! This is not a Friendica account file?"
+msgstr "错误!文件没有版本数!这不是Friendica账户文件吗?"
 
-#: src/Util/Temporal.php:304
-msgid "months"
-msgstr "月"
+#: src/Core/UserImport.php:115
+#, php-format
+msgid "User '%s' already exists on this server!"
+msgstr "用户「%s」已经存在这个服务器!"
 
-#: src/Util/Temporal.php:305
-msgid "weeks"
-msgstr "星期"
+#: src/Core/UserImport.php:151
+msgid "User creation error"
+msgstr "用户创建错误"
 
-#: src/Util/Temporal.php:306
-msgid "days"
-msgstr ""
+#: src/Core/UserImport.php:169
+msgid "User profile creation error"
+msgstr "用户简介创建错误"
 
-#: src/Util/Temporal.php:307
-msgid "hour"
-msgstr "小时"
+#: src/Core/UserImport.php:213
+#, php-format
+msgid "%d contact not imported"
+msgid_plural "%d contacts not imported"
+msgstr[0] "%d 个联系人没导入"
 
-#: src/Util/Temporal.php:307
-msgid "hours"
-msgstr "å°\8fæ\97"
+#: src/Core/UserImport.php:278
+msgid "Done. You can now login with your username and password"
+msgstr "å®\8cæ\88\90ã\80\82ä½ ç\8e°å\9c¨å\8f¯ä»¥ç\94¨ä½ ç\9a\84ç\94¨æ\88·å\90\8då\92\8cå¯\86ç \81ç\99»å½\95"
 
-#: src/Util/Temporal.php:308
-msgid "minute"
-msgstr "分钟"
+#: src/Database/DBStructure.php:45
+msgid "There are no tables on MyISAM."
+msgstr "未在 MyISAM 中发现表。"
 
-#: src/Util/Temporal.php:308
-msgid "minutes"
-msgstr "分钟"
+#: src/Database/DBStructure.php:69
+#, php-format
+msgid ""
+"\n"
+"Error %d occurred during database update:\n"
+"%s\n"
+msgstr "\n在数据库更新的时候发生了错误 %d\n%s\n"
 
-#: src/Util/Temporal.php:309
-msgid "second"
-msgstr ""
+#: src/Database/DBStructure.php:72
+msgid "Errors encountered performing database changes: "
+msgstr "操作数据库更改的时候遇到了错误:"
 
-#: src/Util/Temporal.php:309
-msgid "seconds"
-msgstr "秒"
+#: src/Database/DBStructure.php:259
+#, php-format
+msgid "%s: Database update"
+msgstr ""
 
-#: src/Util/Temporal.php:318
+#: src/Database/DBStructure.php:520
 #, php-format
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s以前"
+msgid "%s: updating %s table."
+msgstr "%s: 正在更新 %s 表。"
 
-#: src/Model/Mail.php:39 src/Model/Mail.php:171
-msgid "[no subject]"
-msgstr "[无题目]"
+#: src/LegacyModule.php:29
+#, php-format
+msgid "Legacy module file not found: %s"
+msgstr ""
 
-#: src/Model/Contact.php:942
+#: src/Model/Contact.php:1001
 msgid "Drop Contact"
 msgstr "删除联系人"
 
-#: src/Model/Contact.php:1399
+#: src/Model/Contact.php:1468
 msgid "Organisation"
 msgstr "组织"
 
-#: src/Model/Contact.php:1403
+#: src/Model/Contact.php:1472
 msgid "News"
 msgstr "新闻"
 
-#: src/Model/Contact.php:1407
+#: src/Model/Contact.php:1476
 msgid "Forum"
 msgstr "论坛"
 
-#: src/Model/Contact.php:1587
+#: src/Model/Contact.php:1658
 msgid "Connect URL missing."
 msgstr "连接URL失踪的。"
 
-#: src/Model/Contact.php:1596
+#: src/Model/Contact.php:1667
 msgid ""
 "The contact could not be added. Please check the relevant network "
 "credentials in your Settings -> Social Networks page."
 msgstr ""
 
-#: src/Model/Contact.php:1635
+#: src/Model/Contact.php:1706
 msgid ""
 "This site is not configured to allow communications with other networks."
 msgstr "这网站没配置允许跟别的网络交流."
 
-#: src/Model/Contact.php:1636 src/Model/Contact.php:1650
+#: src/Model/Contact.php:1707 src/Model/Contact.php:1720
 msgid "No compatible communication protocols or feeds were discovered."
 msgstr "没有兼容协议或者摘要找到了."
 
-#: src/Model/Contact.php:1648
+#: src/Model/Contact.php:1718
 msgid "The profile address specified does not provide adequate information."
 msgstr "输入的简介地址没有够消息。"
 
-#: src/Model/Contact.php:1653
+#: src/Model/Contact.php:1723
 msgid "An author or name was not found."
 msgstr "找不到作者或名。"
 
-#: src/Model/Contact.php:1656
+#: src/Model/Contact.php:1726
 msgid "No browser URL could be matched to this address."
 msgstr "这个地址没有符合什么游览器URL。"
 
-#: src/Model/Contact.php:1659
+#: src/Model/Contact.php:1729
 msgid ""
 "Unable to match @-style Identity Address with a known protocol or email "
 "contact."
 msgstr "无法匹配一个@-风格的身份地址和一个已知的协议或电子邮件联系人。"
 
-#: src/Model/Contact.php:1660
+#: src/Model/Contact.php:1730
 msgid "Use mailto: in front of address to force email check."
 msgstr "输入mailto:地址前为要求电子邮件检查。"
 
-#: src/Model/Contact.php:1666
+#: src/Model/Contact.php:1736
 msgid ""
 "The profile address specified belongs to a network which has been disabled "
 "on this site."
 msgstr "输入的简介地址属在这个网站使不可用的网络。"
 
-#: src/Model/Contact.php:1671
+#: src/Model/Contact.php:1741
 msgid ""
 "Limited profile. This person will be unable to receive direct/personal "
 "notifications from you."
 msgstr "有限的简介。这人不会接受直达/私人通信从您。"
 
-#: src/Model/Contact.php:1722
+#: src/Model/Contact.php:1794
 msgid "Unable to retrieve contact information."
 msgstr "无法检索联系人信息。"
 
-#: src/Model/Event.php:59 src/Model/Event.php:76 src/Model/Event.php:428
-#: src/Model/Event.php:897
+#: src/Model/Event.php:59 src/Model/Event.php:76 src/Model/Event.php:433
+#: src/Model/Event.php:908
 msgid "Starts:"
 msgstr "开始:"
 
-#: src/Model/Event.php:62 src/Model/Event.php:82 src/Model/Event.php:429
-#: src/Model/Event.php:901
+#: src/Model/Event.php:62 src/Model/Event.php:82 src/Model/Event.php:434
+#: src/Model/Event.php:912
 msgid "Finishes:"
 msgstr "结束:"
 
-#: src/Model/Event.php:377
+#: src/Model/Event.php:382
 msgid "all-day"
 msgstr "全天"
 
-#: src/Model/Event.php:400
+#: src/Model/Event.php:405
 msgid "Jun"
 msgstr "六月"
 
-#: src/Model/Event.php:403
+#: src/Model/Event.php:408
 msgid "Sept"
 msgstr "九月"
 
-#: src/Model/Event.php:426
+#: src/Model/Event.php:431
 msgid "No events to display"
 msgstr "没有可显示的事件"
 
-#: src/Model/Event.php:550
+#: src/Model/Event.php:555
 msgid "l, F j"
 msgstr "l, F j"
 
-#: src/Model/Event.php:581
+#: src/Model/Event.php:586
 msgid "Edit event"
 msgstr "编辑事件"
 
-#: src/Model/Event.php:582
+#: src/Model/Event.php:587
 msgid "Duplicate event"
 msgstr ""
 
-#: src/Model/Event.php:583
+#: src/Model/Event.php:588
 msgid "Delete event"
 msgstr "删除事件"
 
-#: src/Model/Event.php:830
+#: src/Model/Event.php:620 src/Model/Item.php:3487 src/Model/Item.php:3494
+msgid "link to source"
+msgstr "链接到来源"
+
+#: src/Model/Event.php:841
 msgid "D g:i A"
 msgstr ""
 
-#: src/Model/Event.php:831
+#: src/Model/Event.php:842
 msgid "g:i A"
 msgstr ""
 
-#: src/Model/Event.php:916 src/Model/Event.php:918
-msgid "Show map"
-msgstr "显示地图"
+#: src/Model/Event.php:927 src/Model/Event.php:929
+msgid "Show map"
+msgstr "显示地图"
+
+#: src/Model/Event.php:928
+msgid "Hide map"
+msgstr "隐藏地图"
+
+#: src/Model/Event.php:1018
+#, php-format
+msgid "%s's birthday"
+msgstr "%s的生日"
+
+#: src/Model/Event.php:1019
+#, php-format
+msgid "Happy Birthday %s"
+msgstr "生日快乐%s"
+
+#: src/Model/FileTag.php:255
+msgid "Item filed"
+msgstr "把项目归档了"
+
+#: src/Model/Group.php:43
+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>对这个组和任何未来的成员有效。如果这不是你想要的,请用一个不同的名字创建另一个组。"
+
+#: src/Model/Group.php:329
+msgid "Default privacy group for new contacts"
+msgstr "对新联系人的默认隐私组"
+
+#: src/Model/Group.php:360
+msgid "Everybody"
+msgstr "每人"
+
+#: src/Model/Group.php:380
+msgid "edit"
+msgstr "编辑"
+
+#: src/Model/Group.php:409
+msgid "Edit group"
+msgstr "编辑组"
+
+#: src/Model/Group.php:412
+msgid "Create a new group"
+msgstr "创建新组"
+
+#: src/Model/Group.php:414
+msgid "Edit groups"
+msgstr "编辑组"
+
+#: src/Model/Item.php:3225
+msgid "activity"
+msgstr "活动"
+
+#: src/Model/Item.php:3227 src/Object/Post.php:453 src/Object/Post.php:465
+msgid "comment"
+msgid_plural "comments"
+msgstr[0] "评论"
+
+#: src/Model/Item.php:3230
+msgid "post"
+msgstr "文章"
+
+#: src/Model/Item.php:3326
+#, php-format
+msgid "Content warning: %s"
+msgstr "内容警告:%s"
+
+#: src/Model/Item.php:3405
+msgid "bytes"
+msgstr "字节"
+
+#: src/Model/Item.php:3481
+msgid "View on separate page"
+msgstr "在另一页面中查看"
+
+#: src/Model/Item.php:3482
+msgid "view on separate page"
+msgstr "在另一页面中查看"
+
+#: src/Model/Mail.php:39 src/Model/Mail.php:171
+msgid "[no subject]"
+msgstr "[无题目]"
+
+#: src/Model/Profile.php:112
+msgid "Requested account is not available."
+msgstr "要求的账户不可用。"
+
+#: src/Model/Profile.php:130
+msgid "Requested profile is not available."
+msgstr "要求的简介联系不上的。"
+
+#: src/Model/Profile.php:178 src/Model/Profile.php:419
+#: src/Model/Profile.php:877
+msgid "Edit profile"
+msgstr "修改简介"
+
+#: src/Model/Profile.php:353
+msgid "Atom feed"
+msgstr "Atom 源"
+
+#: src/Model/Profile.php:392
+msgid "Manage/edit profiles"
+msgstr "管理/修改简介"
+
+#: src/Model/Profile.php:444 src/Module/Contact.php:648
+msgid "XMPP:"
+msgstr "XMPP:"
+
+#: src/Model/Profile.php:572 src/Model/Profile.php:670
+msgid "g A l F d"
+msgstr "g A l d F"
+
+#: src/Model/Profile.php:573
+msgid "F d"
+msgstr "F d"
+
+#: src/Model/Profile.php:635 src/Model/Profile.php:721
+msgid "[today]"
+msgstr "[今天]"
+
+#: src/Model/Profile.php:646
+msgid "Birthday Reminders"
+msgstr "提醒生日"
+
+#: src/Model/Profile.php:647
+msgid "Birthdays this week:"
+msgstr "这周的生日:"
+
+#: src/Model/Profile.php:708
+msgid "[No description]"
+msgstr "[无描述]"
+
+#: src/Model/Profile.php:735
+msgid "Event Reminders"
+msgstr "事件提醒"
+
+#: src/Model/Profile.php:736
+msgid "Upcoming events the next 7 days:"
+msgstr ""
+
+#: src/Model/Profile.php:759
+msgid "Member since:"
+msgstr ""
+
+#: src/Model/Profile.php:767
+msgid "j F, Y"
+msgstr "j F, Y"
+
+#: src/Model/Profile.php:768
+msgid "j F"
+msgstr "j F"
+
+#: src/Model/Profile.php:776 src/Util/Temporal.php:146
+msgid "Birthday:"
+msgstr "生日:"
+
+#: src/Model/Profile.php:783
+msgid "Age:"
+msgstr "年龄:"
+
+#: src/Model/Profile.php:796
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "为%1$d %2$s"
+
+#: src/Model/Profile.php:820
+msgid "Religion:"
+msgstr "宗教:"
+
+#: src/Model/Profile.php:828
+msgid "Hobbies/Interests:"
+msgstr "爱好/兴趣"
+
+#: src/Model/Profile.php:840
+msgid "Contact information and Social Networks:"
+msgstr "联系人消息和社交网络:"
+
+#: src/Model/Profile.php:844
+msgid "Musical interests:"
+msgstr "音乐兴趣:"
+
+#: src/Model/Profile.php:848
+msgid "Books, literature:"
+msgstr "书,文学"
+
+#: src/Model/Profile.php:852
+msgid "Television:"
+msgstr "电视:"
+
+#: src/Model/Profile.php:856
+msgid "Film/dance/culture/entertainment:"
+msgstr "电影/跳舞/文化/娱乐:"
+
+#: src/Model/Profile.php:860
+msgid "Love/Romance:"
+msgstr "爱情/浪漫"
+
+#: src/Model/Profile.php:864
+msgid "Work/employment:"
+msgstr "工作"
+
+#: src/Model/Profile.php:868
+msgid "School/education:"
+msgstr "学院/教育"
+
+#: src/Model/Profile.php:873
+msgid "Forums:"
+msgstr ""
+
+#: src/Model/Profile.php:917 src/Module/Contact.php:875
+msgid "Profile Details"
+msgstr "简介内容"
+
+#: src/Model/Profile.php:967
+msgid "Only You Can See This"
+msgstr "只有你可以看这个"
+
+#: src/Model/Profile.php:975 src/Model/Profile.php:978
+msgid "Tips for New Members"
+msgstr "新人建议"
+
+#: src/Model/Profile.php:1151
+#, php-format
+msgid "OpenWebAuth: %1$s welcomes %2$s"
+msgstr ""
+
+#: src/Model/Storage/Database.php:37
+#, php-format
+msgid "Database storage failed to update %s"
+msgstr ""
+
+#: src/Model/Storage/Database.php:44
+msgid "Database storage failed to insert data"
+msgstr ""
+
+#: src/Model/Storage/Filesystem.php:61
+#, php-format
+msgid "Filesystem storage failed to create \"%s\". Check you write permissions."
+msgstr ""
+
+#: src/Model/Storage/Filesystem.php:101
+#, php-format
+msgid ""
+"Filesystem storage failed to save data to \"%s\". Check your write "
+"permissions"
+msgstr ""
+
+#: src/Model/Storage/Filesystem.php:122
+msgid "Storage base path"
+msgstr ""
+
+#: src/Model/Storage/Filesystem.php:124
+msgid ""
+"Folder were uploaded files are saved. For maximum security, This should be a"
+" path outside web server folder tree"
+msgstr ""
 
-#: src/Model/Event.php:917
-msgid "Hide map"
-msgstr "隐藏地图"
+#: src/Model/Storage/Filesystem.php:134
+msgid "Enter a valid existing folder"
+msgstr ""
 
-#: src/Model/User.php:168
+#: src/Model/User.php:216
 msgid "Login failed"
 msgstr "登录失败"
 
-#: src/Model/User.php:199
+#: src/Model/User.php:247
 msgid "Not enough information to authenticate"
 msgstr "没有足够信息以认证"
 
-#: src/Model/User.php:384
+#: src/Model/User.php:325
+msgid "Password can't be empty"
+msgstr ""
+
+#: src/Model/User.php:344
+msgid "Empty passwords are not allowed."
+msgstr ""
+
+#: src/Model/User.php:348
+msgid ""
+"The new password has been exposed in a public data dump, please choose "
+"another."
+msgstr "新密码已暴露在公共数据转储中,请务必另选密码。"
+
+#: src/Model/User.php:354
+msgid ""
+"The password can't contain accentuated letters, white spaces or colons (:)"
+msgstr ""
+
+#: src/Model/User.php:452
+msgid "Passwords do not match. Password unchanged."
+msgstr "密码不匹配。密码没改变。"
+
+#: src/Model/User.php:459
 msgid "An invitation is required."
 msgstr "需要邀请。"
 
-#: src/Model/User.php:388
+#: src/Model/User.php:463
 msgid "Invitation could not be verified."
 msgstr "不能验证邀请。"
 
-#: src/Model/User.php:395
+#: src/Model/User.php:470
 msgid "Invalid OpenID url"
 msgstr "无效的OpenID url"
 
-#: src/Model/User.php:414
+#: src/Model/User.php:483 src/Module/Login.php:105
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "我们用您输入的OpenID登录的时候碰到问题。请核实拼法是对的。"
+
+#: src/Model/User.php:483 src/Module/Login.php:105
+msgid "The error message was:"
+msgstr "错误通知是:"
+
+#: src/Model/User.php:489
 msgid "Please enter the required information."
 msgstr "请输入必要的信息。"
 
-#: src/Model/User.php:427
-msgid "Please use a shorter name."
-msgstr "请用一个短一点的名字。"
+#: src/Model/User.php:505
+#, php-format
+msgid ""
+"system.username_min_length (%s) and system.username_max_length (%s) are "
+"excluding each other, swapping values."
+msgstr ""
+
+#: src/Model/User.php:512
+#, php-format
+msgid "Username should be at least %s character."
+msgid_plural "Username should be at least %s characters."
+msgstr[0] ""
 
-#: src/Model/User.php:430
-msgid "Name too short."
-msgstr "名字太短。"
+#: src/Model/User.php:516
+#, php-format
+msgid "Username should be at most %s character."
+msgid_plural "Username should be at most %s characters."
+msgstr[0] ""
 
-#: src/Model/User.php:438
+#: src/Model/User.php:524
 msgid "That doesn't appear to be your full (First Last) name."
 msgstr "这看上去不是您的全姓名。"
 
-#: src/Model/User.php:443
+#: src/Model/User.php:529
 msgid "Your email domain is not among those allowed on this site."
 msgstr "这网站允许的域名中没有您的"
 
-#: src/Model/User.php:447
+#: src/Model/User.php:533
 msgid "Not a valid email address."
 msgstr "无效的邮件地址。"
 
-#: src/Model/User.php:450
+#: src/Model/User.php:536
 msgid "The nickname was blocked from registration by the nodes admin."
 msgstr ""
 
-#: src/Model/User.php:454 src/Model/User.php:462
+#: src/Model/User.php:540 src/Model/User.php:548
 msgid "Cannot use that email."
 msgstr "无法使用此邮件地址。"
 
-#: src/Model/User.php:469
+#: src/Model/User.php:555
 msgid "Your nickname can only contain a-z, 0-9 and _."
 msgstr "您的昵称只能由字母、数字和下划线组成。"
 
-#: src/Model/User.php:476 src/Model/User.php:533
+#: src/Model/User.php:562 src/Model/User.php:619
 msgid "Nickname is already registered. Please choose another."
 msgstr "此昵称已被注册。请选择新的昵称。"
 
-#: src/Model/User.php:486
+#: src/Model/User.php:572
 msgid "SERIOUS ERROR: Generation of security keys failed."
 msgstr "严重错误:安全密钥生成失败。"
 
-#: src/Model/User.php:520 src/Model/User.php:524
+#: src/Model/User.php:606 src/Model/User.php:610
 msgid "An error occurred during registration. Please try again."
 msgstr "注册出现问题。请再次尝试。"
 
-#: src/Model/User.php:549
+#: src/Model/User.php:630 view/theme/duepuntozero/config.php:55
+msgid "default"
+msgstr "默认"
+
+#: src/Model/User.php:635
 msgid "An error occurred creating your default profile. Please try again."
 msgstr "创建你的默认简介的时候出现了一个错误。请再试。"
 
-#: src/Model/User.php:556
+#: src/Model/User.php:642
 msgid "An error occurred creating your self contact. Please try again."
 msgstr ""
 
-#: src/Model/User.php:561 src/Content/ContactSelector.php:166
-msgid "Friends"
-msgstr "朋友"
-
-#: src/Model/User.php:565
+#: src/Model/User.php:651
 msgid ""
 "An error occurred creating your default contact group. Please try again."
 msgstr ""
 
-#: src/Model/User.php:639
+#: src/Model/User.php:726
 #, php-format
 msgid ""
 "\n"
 "\t\t\tDear %1$s,\n"
 "\t\t\t\tThank you for registering at %2$s. Your account is pending for approval by the administrator.\n"
+"\n"
+"\t\t\tYour login details are as follows:\n"
+"\n"
+"\t\t\tSite Location:\t%3$s\n"
+"\t\t\tLogin Name:\t\t%4$s\n"
+"\t\t\tPassword:\t\t%5$s\n"
 "\t\t"
 msgstr ""
 
-#: src/Model/User.php:649
+#: src/Model/User.php:743
 #, php-format
 msgid "Registration at %s"
 msgstr "在 %s 的注册"
 
-#: src/Model/User.php:667
+#: src/Model/User.php:761
 #, php-format
 msgid ""
 "\n"
@@ -8726,7 +8825,7 @@ msgid ""
 "\t\t"
 msgstr "\n\t\t\t亲爱的 %1$s,\n\t\t\t\t感谢您在 %2$s 注册。您的账户已被创建。\n\t\t"
 
-#: src/Model/User.php:671
+#: src/Model/User.php:767
 #, php-format
 msgid ""
 "\n"
@@ -8758,868 +8857,961 @@ msgid ""
 "\t\t\tThank you and welcome to %2$s."
 msgstr ""
 
-#: src/Model/Group.php:43
-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>对这个组和任何未来的成员有效。如果这不是你想要的,请用一个不同的名字创建另一个组。"
+#: src/Module/Attach.php:36 src/Module/Attach.php:48
+msgid "Item was not found."
+msgstr "找不到项目。"
 
-#: src/Model/Group.php:329
-msgid "Default privacy group for new contacts"
-msgstr "对新联系人的默认隐私组"
+#: src/Module/Contact.php:167
+#, php-format
+msgid "%d contact edited."
+msgid_plural "%d contacts edited."
+msgstr[0] "%d 个联系人被编辑了。"
 
-#: src/Model/Group.php:362
-msgid "Everybody"
-msgstr "æ¯\8f人"
+#: src/Module/Contact.php:192 src/Module/Contact.php:375
+msgid "Could not access contact record."
+msgstr "æ\97 æ³\95访é\97®è\81\94系人记å½\95ã\80\82"
 
-#: src/Model/Group.php:382
-msgid "edit"
-msgstr "编辑"
+#: src/Module/Contact.php:202
+msgid "Could not locate selected profile."
+msgstr "找不到选择的简介。"
 
-#: src/Model/Group.php:406
-msgid "Edit group"
-msgstr "编辑组"
+#: src/Module/Contact.php:234
+msgid "Contact updated."
+msgstr "联系人更新了。"
 
-#: src/Model/Group.php:409
-msgid "Create a new group"
-msgstr "创建新组"
+#: src/Module/Contact.php:396
+msgid "Contact has been blocked"
+msgstr "联系人已被屏蔽"
 
-#: src/Model/Group.php:411
-msgid "Edit groups"
-msgstr "编辑组"
+#: src/Module/Contact.php:396
+msgid "Contact has been unblocked"
+msgstr "联系人已被解除屏蔽"
 
-#: src/Model/Profile.php:97
-msgid "Requested account is not available."
-msgstr "è¦\81æ±\82ç\9a\84è´¦æ\88·ä¸\8då\8f¯ç\94¨ã\80\82"
+#: src/Module/Contact.php:406
+msgid "Contact has been ignored"
+msgstr "è\81\94系人已被忽è§\86"
 
-#: src/Model/Profile.php:163 src/Model/Profile.php:399
-#: src/Model/Profile.php:846
-msgid "Edit profile"
-msgstr "修改简介"
+#: src/Module/Contact.php:406
+msgid "Contact has been unignored"
+msgstr "联系人已被解除忽视"
 
-#: src/Model/Profile.php:333
-msgid "Atom feed"
-msgstr "Atom 源"
+#: src/Module/Contact.php:416
+msgid "Contact has been archived"
+msgstr "联系人已存档"
 
-#: src/Model/Profile.php:372
-msgid "Manage/edit profiles"
-msgstr "管理/修改简介"
+#: src/Module/Contact.php:416
+msgid "Contact has been unarchived"
+msgstr "联系人已被解除存档"
 
-#: src/Model/Profile.php:550 src/Model/Profile.php:639
-msgid "g A l F d"
-msgstr "g A l d F"
+#: src/Module/Contact.php:440
+msgid "Drop contact"
+msgstr ""
 
-#: src/Model/Profile.php:551
-msgid "F d"
-msgstr "F d"
+#: src/Module/Contact.php:443 src/Module/Contact.php:823
+msgid "Do you really want to delete this contact?"
+msgstr "您真的想删除这个联系人吗?"
 
-#: src/Model/Profile.php:604 src/Model/Profile.php:690
-msgid "[today]"
-msgstr "[今天]"
+#: src/Module/Contact.php:457
+msgid "Contact has been removed."
+msgstr "联系人被删除了。"
 
-#: src/Model/Profile.php:615
-msgid "Birthday Reminders"
-msgstr "提醒生日"
+#: src/Module/Contact.php:488
+#, php-format
+msgid "You are mutual friends with %s"
+msgstr "您和 %s 互为朋友"
 
-#: src/Model/Profile.php:616
-msgid "Birthdays this week:"
-msgstr "这周的生日:"
+#: src/Module/Contact.php:493
+#, php-format
+msgid "You are sharing with %s"
+msgstr "你正在和 %s 分享"
 
-#: src/Model/Profile.php:677
-msgid "[No description]"
-msgstr "[无描述]"
+#: src/Module/Contact.php:498
+#, php-format
+msgid "%s is sharing with you"
+msgstr "%s 正在和你分享"
 
-#: src/Model/Profile.php:704
-msgid "Event Reminders"
-msgstr "事件提醒"
+#: src/Module/Contact.php:522
+msgid "Private communications are not available for this contact."
+msgstr "私人交流对这个联系人不可用。"
 
-#: src/Model/Profile.php:705
-msgid "Upcoming events the next 7 days:"
-msgstr ""
+#: src/Module/Contact.php:524
+msgid "Never"
+msgstr "从未"
 
-#: src/Model/Profile.php:728
-msgid "Member since:"
+#: src/Module/Contact.php:527
+msgid "(Update was successful)"
+msgstr "(更新成功)"
+
+#: src/Module/Contact.php:527
+msgid "(Update was not successful)"
+msgstr "(更新不成功)"
+
+#: src/Module/Contact.php:529 src/Module/Contact.php:1061
+msgid "Suggest friends"
+msgstr "建议朋友们"
+
+#: src/Module/Contact.php:533
+#, php-format
+msgid "Network type: %s"
+msgstr "网络种类: %s"
+
+#: src/Module/Contact.php:538
+msgid "Communications lost with this contact!"
+msgstr "和这个联系人的通信断开了!"
+
+#: src/Module/Contact.php:544
+msgid "Fetch further information for feeds"
+msgstr "拿文源别的消息"
+
+#: src/Module/Contact.php:546
+msgid ""
+"Fetch information like preview pictures, title and teaser from the feed "
+"item. You can activate this if the feed doesn't contain much text. Keywords "
+"are taken from the meta header in the feed item and are posted as hash tags."
 msgstr ""
 
-#: src/Model/Profile.php:736
-msgid "j F, Y"
-msgstr "j F, Y"
+#: src/Module/Contact.php:549
+msgid "Fetch information"
+msgstr "取消息"
 
-#: src/Model/Profile.php:737
-msgid "j F"
-msgstr "j F"
+#: src/Module/Contact.php:550
+msgid "Fetch keywords"
+msgstr "获取关键字"
 
-#: src/Model/Profile.php:752
-msgid "Age:"
-msgstr "年龄:"
+#: src/Module/Contact.php:551
+msgid "Fetch information and keywords"
+msgstr "取消息和关键词"
+
+#: src/Module/Contact.php:583
+msgid "Profile Visibility"
+msgstr "简历可见量"
+
+#: src/Module/Contact.php:584
+msgid "Contact Information / Notes"
+msgstr "联系人信息/便条"
+
+#: src/Module/Contact.php:585
+msgid "Contact Settings"
+msgstr "联系人设置"
+
+#: src/Module/Contact.php:594
+msgid "Contact"
+msgstr "联系人"
 
-#: src/Model/Profile.php:765
+#: src/Module/Contact.php:598
 #, php-format
-msgid "for %1$d %2$s"
-msgstr "为%1$d %2$s"
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "请选择简介您想给%s显示他安全地看您的简介的时候。"
 
-#: src/Model/Profile.php:789
-msgid "Religion:"
-msgstr "宗教:"
+#: src/Module/Contact.php:600
+msgid "Their personal note"
+msgstr ""
 
-#: src/Model/Profile.php:797
-msgid "Hobbies/Interests:"
-msgstr "ç\88±å¥½ï¼\8få\85´è¶£"
+#: src/Module/Contact.php:602
+msgid "Edit contact notes"
+msgstr "ç¼\96è¾\91è\81\94系人便æ\9d¡"
 
-#: src/Model/Profile.php:809
-msgid "Contact information and Social Networks:"
-msgstr "联系人消息和社交网络:"
+#: src/Module/Contact.php:606
+msgid "Block/Unblock contact"
+msgstr "屏蔽/解除屏蔽联系人"
 
-#: src/Model/Profile.php:813
-msgid "Musical interests:"
-msgstr "音乐兴趣:"
+#: src/Module/Contact.php:607
+msgid "Ignore contact"
+msgstr "忽略联系人"
 
-#: src/Model/Profile.php:817
-msgid "Books, literature:"
-msgstr "书,文学"
+#: src/Module/Contact.php:608
+msgid "Repair URL settings"
+msgstr "维修URL设置"
 
-#: src/Model/Profile.php:821
-msgid "Television:"
-msgstr "ç\94µè§\86ï¼\9a"
+#: src/Module/Contact.php:609
+msgid "View conversations"
+msgstr "ç\9c\8b交æµ\81"
 
-#: src/Model/Profile.php:825
-msgid "Film/dance/culture/entertainment:"
-msgstr "电影/跳舞/文化/娱乐:"
+#: src/Module/Contact.php:614
+msgid "Last update:"
+msgstr "上个更新:"
 
-#: src/Model/Profile.php:829
-msgid "Love/Romance:"
-msgstr "爱情/浪漫"
+#: src/Module/Contact.php:616
+msgid "Update public posts"
+msgstr "更新公开文章"
 
-#: src/Model/Profile.php:833
-msgid "Work/employment:"
-msgstr "工作"
+#: src/Module/Contact.php:618 src/Module/Contact.php:1071
+msgid "Update now"
+msgstr "现在更新"
 
-#: src/Model/Profile.php:837
-msgid "School/education:"
-msgstr "学院/教育"
+#: src/Module/Contact.php:624 src/Module/Contact.php:828
+#: src/Module/Contact.php:1088
+msgid "Unignore"
+msgstr "取消忽视"
 
-#: src/Model/Profile.php:842
-msgid "Forums:"
-msgstr ""
+#: src/Module/Contact.php:628
+msgid "Currently blocked"
+msgstr "现在被封禁的"
 
-#: src/Model/Profile.php:936
-msgid "Only You Can See This"
-msgstr "只有你可以看这个"
+#: src/Module/Contact.php:629
+msgid "Currently ignored"
+msgstr "现在不理的"
+
+#: src/Module/Contact.php:630
+msgid "Currently archived"
+msgstr "当前已存档"
+
+#: src/Module/Contact.php:631
+msgid "Awaiting connection acknowledge"
+msgstr "等待连接确认"
+
+#: src/Module/Contact.php:632
+msgid ""
+"Replies/likes to your public posts <strong>may</strong> still be visible"
+msgstr "回答/喜欢关您公开文章<strong>会</strong>还可见的"
+
+#: src/Module/Contact.php:633
+msgid "Notification for new posts"
+msgstr "新消息提示"
+
+#: src/Module/Contact.php:633
+msgid "Send a notification of every new post of this contact"
+msgstr "发送这个联系人的每篇新文章的通知"
 
-#: src/Model/Profile.php:944 src/Model/Profile.php:947
-msgid "Tips for New Members"
-msgstr "新人建议"
+#: src/Module/Contact.php:636
+msgid "Blacklisted keywords"
+msgstr "黑名单关键词"
 
-#: src/Model/Profile.php:1106
-#, php-format
-msgid "OpenWebAuth: %1$s welcomes %2$s"
-msgstr ""
+#: src/Module/Contact.php:636
+msgid ""
+"Comma separated list of keywords that should not be converted to hashtags, "
+"when \"Fetch information and keywords\" is selected"
+msgstr "逗号分的关键词不应该翻译成主题标签,如果“取消息和关键词”选择的。"
 
-#: src/Content/Widget.php:33
-msgid "Add New Contact"
-msgstr "添加新的联系人"
+#: src/Module/Contact.php:653
+msgid "Actions"
+msgstr ""
 
-#: src/Content/Widget.php:34
-msgid "Enter address or web location"
-msgstr "è¾\93å\85¥å\9c°å\9d\80æ\88\96ç½\91ç»\9cä½\8dç½®"
+#: src/Module/Contact.php:699
+msgid "Suggestions"
+msgstr "建议"
 
-#: src/Content/Widget.php:35
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "比如:li@example.com, http://example.com/li"
+#: src/Module/Contact.php:702
+msgid "Suggest potential friends"
+msgstr "建议潜在朋友们"
 
-#: src/Content/Widget.php:53
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d邀请可用的"
+#: src/Module/Contact.php:710
+msgid "Show all contacts"
+msgstr "显示所有的联系人"
 
-#: src/Content/Widget.php:157
-msgid "Networks"
-msgstr "网络"
+#: src/Module/Contact.php:715
+msgid "Unblocked"
+msgstr "未屏蔽的"
 
-#: src/Content/Widget.php:160
-msgid "All Networks"
-msgstr "所有网络"
+#: src/Module/Contact.php:718
+msgid "Only show unblocked contacts"
+msgstr "只显示没被屏蔽的联系人"
 
-#: src/Content/Widget.php:198 src/Content/Feature.php:118
-msgid "Saved Folders"
-msgstr "保存的文件夹"
+#: src/Module/Contact.php:723
+msgid "Blocked"
+msgstr "被屏蔽的"
 
-#: src/Content/Widget.php:201 src/Content/Widget.php:241
-msgid "Everything"
-msgstr "一切"
+#: src/Module/Contact.php:726
+msgid "Only show blocked contacts"
+msgstr "只显示被屏蔽的联系人"
 
-#: src/Content/Widget.php:238
-msgid "Categories"
-msgstr "种类"
+#: src/Module/Contact.php:731
+msgid "Ignored"
+msgstr "忽视的"
 
-#: src/Content/Widget.php:305
-#, php-format
-msgid "%d contact in common"
-msgid_plural "%d contacts in common"
-msgstr[0] "%d 个共同的联系人"
+#: src/Module/Contact.php:734
+msgid "Only show ignored contacts"
+msgstr "只显示忽略的联系人"
 
-#: src/Content/ContactSelector.php:54
-msgid "Frequently"
-msgstr ""
+#: src/Module/Contact.php:739
+msgid "Archived"
+msgstr "已存档"
 
-#: src/Content/ContactSelector.php:55
-msgid "Hourly"
-msgstr "每小时"
+#: src/Module/Contact.php:742
+msgid "Only show archived contacts"
+msgstr "只显示已存档联系人"
 
-#: src/Content/ContactSelector.php:56
-msgid "Twice daily"
-msgstr "每天两次"
+#: src/Module/Contact.php:747
+msgid "Hidden"
+msgstr "隐藏的"
 
-#: src/Content/ContactSelector.php:57
-msgid "Daily"
-msgstr "每天"
+#: src/Module/Contact.php:750
+msgid "Only show hidden contacts"
+msgstr "只显示隐藏的联系人"
 
-#: src/Content/ContactSelector.php:58
-msgid "Weekly"
-msgstr "每周"
+#: src/Module/Contact.php:758
+msgid "Organize your contact groups"
+msgstr ""
 
-#: src/Content/ContactSelector.php:59
-msgid "Monthly"
-msgstr "æ¯\8fæ\9c\88"
+#: src/Module/Contact.php:818
+msgid "Search your contacts"
+msgstr "æ\90\9cç´¢æ\82¨ç\9a\84è\81\94系人"
 
-#: src/Content/ContactSelector.php:79
-msgid "OStatus"
-msgstr "OStatus"
+#: src/Module/Contact.php:829 src/Module/Contact.php:1097
+msgid "Archive"
+msgstr "存档"
 
-#: src/Content/ContactSelector.php:80
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
+#: src/Module/Contact.php:829 src/Module/Contact.php:1097
+msgid "Unarchive"
+msgstr "从存档拿来"
 
-#: src/Content/ContactSelector.php:83
-msgid "Zot!"
-msgstr "Zot!"
+#: src/Module/Contact.php:832
+msgid "Batch Actions"
+msgstr "批量操作"
 
-#: src/Content/ContactSelector.php:84
-msgid "LinkedIn"
-msgstr "LinkedIn"
+#: src/Module/Contact.php:859
+msgid "Conversations started by this contact"
+msgstr ""
 
-#: src/Content/ContactSelector.php:85
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
+#: src/Module/Contact.php:864
+msgid "Posts and Comments"
+msgstr ""
 
-#: src/Content/ContactSelector.php:86
-msgid "MySpace"
-msgstr "MySpace"
+#: src/Module/Contact.php:887
+msgid "View all contacts"
+msgstr "查看所有联系人"
 
-#: src/Content/ContactSelector.php:87
-msgid "Google+"
-msgstr "Google+"
+#: src/Module/Contact.php:898
+msgid "View all common friends"
+msgstr "查看所有公共好友"
 
-#: src/Content/ContactSelector.php:88
-msgid "pump.io"
-msgstr "pump.io"
+#: src/Module/Contact.php:908
+msgid "Advanced Contact Settings"
+msgstr "高级联系人设置"
 
-#: src/Content/ContactSelector.php:89
-msgid "Twitter"
-msgstr "推特"
+#: src/Module/Contact.php:994
+msgid "Mutual Friendship"
+msgstr "共同友谊"
 
-#: src/Content/ContactSelector.php:90
-msgid "Diaspora Connector"
-msgstr ""
+#: src/Module/Contact.php:999
+msgid "is a fan of yours"
+msgstr "是你的粉丝"
 
-#: src/Content/ContactSelector.php:91
-msgid "GNU Social Connector"
-msgstr "GNU Social è¿\9eæ\8e¥å\99¨"
+#: src/Module/Contact.php:1004
+msgid "you are a fan of"
+msgstr "æ\82¨å·²å\85³æ³¨"
 
-#: src/Content/ContactSelector.php:92
-msgid "pnut"
-msgstr ""
+#: src/Module/Contact.php:1028
+msgid "Edit contact"
+msgstr "编辑联系人"
 
-#: src/Content/ContactSelector.php:122
-msgid "Male"
-msgstr ""
+#: src/Module/Contact.php:1082
+msgid "Toggle Blocked status"
+msgstr "切换屏蔽状态"
 
-#: src/Content/ContactSelector.php:122
-msgid "Female"
-msgstr ""
+#: src/Module/Contact.php:1090
+msgid "Toggle Ignored status"
+msgstr "交替忽视现状"
 
-#: src/Content/ContactSelector.php:122
-msgid "Currently Male"
-msgstr "目前为男"
+#: src/Module/Contact.php:1099
+msgid "Toggle Archive status"
+msgstr "交替档案现状"
 
-#: src/Content/ContactSelector.php:122
-msgid "Currently Female"
-msgstr "目前为女"
+#: src/Module/Contact.php:1107
+msgid "Delete contact"
+msgstr "删除联系人"
 
-#: src/Content/ContactSelector.php:122
-msgid "Mostly Male"
-msgstr "更多为男"
+#: src/Module/Install.php:120
+msgid "Friendica Communications Server - Setup"
+msgstr ""
 
-#: src/Content/ContactSelector.php:122
-msgid "Mostly Female"
-msgstr "更多为女"
+#: src/Module/Install.php:131
+msgid "System check"
+msgstr "系统检测"
 
-#: src/Content/ContactSelector.php:122
-msgid "Transgender"
-msgstr "跨性别"
+#: src/Module/Install.php:136
+msgid "Check again"
+msgstr "再检测"
 
-#: src/Content/ContactSelector.php:122
-msgid "Intersex"
-msgstr "双性人"
+#: src/Module/Install.php:153
+msgid "Database connection"
+msgstr "数据库接通"
 
-#: src/Content/ContactSelector.php:122
-msgid "Transsexual"
-msgstr "换性者"
+#: src/Module/Install.php:154
+msgid ""
+"In order to install Friendica we need to know how to connect to your "
+"database."
+msgstr "为安装Friendica我们要知道怎么连接您的数据库。"
 
-#: src/Content/ContactSelector.php:122
-msgid "Hermaphrodite"
-msgstr "雌雄间性"
+#: src/Module/Install.php:155
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "你有关于这些设置有问题的话,请给互联网托管服务或者网页管理联系。"
 
-#: src/Content/ContactSelector.php:122
-msgid "Neuter"
-msgstr "中性"
+#: src/Module/Install.php:156
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "您下边指定的数据库应该已经存在。如果还没有,请创建后继续。"
 
-#: src/Content/ContactSelector.php:122
-msgid "Non-specific"
-msgstr "不明确的"
+#: src/Module/Install.php:159
+msgid "Database Server Name"
+msgstr "数据库服务器名"
 
-#: src/Content/ContactSelector.php:122
-msgid "Other"
-msgstr "别的"
+#: src/Module/Install.php:164
+msgid "Database Login Name"
+msgstr "数据库登录名"
 
-#: src/Content/ContactSelector.php:144
-msgid "Males"
-msgstr "男人"
+#: src/Module/Install.php:170
+msgid "Database Login Password"
+msgstr "数据库登录密码"
 
-#: src/Content/ContactSelector.php:144
-msgid "Females"
-msgstr "女人"
+#: src/Module/Install.php:172
+msgid "For security reasons the password must not be empty"
+msgstr "ç\94±äº\8eå®\89å\85¨ç\9a\84å\8e\9få\9b ï¼\8cå¯\86ç \81ä¸\8dè\83½ä¸ºç©º"
 
-#: src/Content/ContactSelector.php:144
-msgid "Gay"
-msgstr "男同性恋的"
+#: src/Module/Install.php:175
+msgid "Database Name"
+msgstr "数据库名字"
 
-#: src/Content/ContactSelector.php:144
-msgid "Lesbian"
-msgstr "女同性恋的"
+#: src/Module/Install.php:180 src/Module/Install.php:216
+msgid "Site administrator email address"
+msgstr "网站行政人员邮件地址"
 
-#: src/Content/ContactSelector.php:144
-msgid "No Preference"
-msgstr "无偏爱"
+#: src/Module/Install.php:182 src/Module/Install.php:216
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "您账户邮件地址必要符合这个为用网站处理仪表板"
 
-#: src/Content/ContactSelector.php:144
-msgid "Bisexual"
-msgstr "双性恋的"
+#: src/Module/Install.php:186 src/Module/Install.php:217
+msgid "Please select a default timezone for your website"
+msgstr "请选择您网站的默认时区"
 
-#: src/Content/ContactSelector.php:144
-msgid "Autosexual"
-msgstr "自性的"
+#: src/Module/Install.php:210
+msgid "Site settings"
+msgstr "网站设置"
 
-#: src/Content/ContactSelector.php:144
-msgid "Abstinent"
-msgstr "有节制的"
+#: src/Module/Install.php:219
+msgid "System Language:"
+msgstr "系统语言:"
 
-#: src/Content/ContactSelector.php:144
-msgid "Virgin"
-msgstr "原始的"
+#: src/Module/Install.php:221
+msgid ""
+"Set the default language for your Friendica installation interface and to "
+"send emails."
+msgstr "为 Friendica 安装界面及邮件发送设置默认语言。"
 
-#: src/Content/ContactSelector.php:144
-msgid "Deviant"
-msgstr "变态"
+#: src/Module/Install.php:233
+msgid "Your Friendica site database has been installed."
+msgstr "您Friendica网站数据库被安装了。"
 
-#: src/Content/ContactSelector.php:144
-msgid "Fetish"
-msgstr "恋物对象"
+#: src/Module/Install.php:241
+msgid "Installation finished"
+msgstr ""
 
-#: src/Content/ContactSelector.php:144
-msgid "Oodles"
-msgstr "多多"
+#: src/Module/Install.php:262
+msgid "<h1>What next</h1>"
+msgstr "<h1>下步是什么</h1>"
 
-#: src/Content/ContactSelector.php:144
-msgid "Nonsexual"
-msgstr "无性"
+#: src/Module/Install.php:263
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"worker."
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Single"
-msgstr "单身"
+#: src/Module/Install.php:266
+#, php-format
+msgid ""
+"Go to your new Friendica node <a href=\"%s/register\">registration page</a> "
+"and register as new user. Remember to use the same email you have entered as"
+" administrator email. This will allow you to enter the site admin panel."
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Lonely"
-msgstr "寂寞"
+#: src/Module/Itemsource.php:33
+msgid "Item Guid"
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Available"
-msgstr "å\8d\95身ç\9a\84"
+#: src/Module/Login.php:289
+msgid "Create a New Account"
+msgstr "å\88\9b建æ\96°ç\9a\84è´¦æ\88·"
 
-#: src/Content/ContactSelector.php:166
-msgid "Unavailable"
-msgstr "不可获得的"
+#: src/Module/Login.php:322
+msgid "Password: "
+msgstr "密码:"
 
-#: src/Content/ContactSelector.php:166
-msgid "Has crush"
-msgstr "è¿·æ\81\8b"
+#: src/Module/Login.php:323
+msgid "Remember me"
+msgstr "è®°ä½\8fæ\88\91"
 
-#: src/Content/ContactSelector.php:166
-msgid "Infatuated"
-msgstr "痴迷"
+#: src/Module/Login.php:326
+msgid "Or login using OpenID: "
+msgstr "或者使用 OpenID 登录: "
 
-#: src/Content/ContactSelector.php:166
-msgid "Dating"
-msgstr "约会"
+#: src/Module/Login.php:332
+msgid "Forgot your password?"
+msgstr "忘记你的密码吗?"
 
-#: src/Content/ContactSelector.php:166
-msgid "Unfaithful"
-msgstr "外遇"
+#: src/Module/Login.php:335
+msgid "Website Terms of Service"
+msgstr "网站服务条款"
 
-#: src/Content/ContactSelector.php:166
-msgid "Sex Addict"
-msgstr "æ\80§äº¤å\9b æ\88\90ç\98¾è\80\85"
+#: src/Module/Login.php:336
+msgid "terms of service"
+msgstr "æ\9c\8då\8a¡æ\9d¡æ¬¾"
 
-#: src/Content/ContactSelector.php:166
-msgid "Friends/Benefits"
-msgstr "朋友/益"
+#: src/Module/Login.php:338
+msgid "Website Privacy Policy"
+msgstr "网站隐私政策"
 
-#: src/Content/ContactSelector.php:166
-msgid "Casual"
-msgstr "休闲"
+#: src/Module/Login.php:339
+msgid "privacy policy"
+msgstr "隐私政策"
 
-#: src/Content/ContactSelector.php:166
-msgid "Engaged"
-msgstr "已订婚的"
+#: src/Module/Logout.php:27
+msgid "Logged out."
+msgstr "已注销。"
 
-#: src/Content/ContactSelector.php:166
-msgid "Married"
-msgstr "结婚"
+#: src/Module/Proxy.php:78
+msgid "Bad Request."
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Imaginarily married"
-msgstr "想像结婚"
+#: src/Module/Tos.php:35 src/Module/Tos.php:75
+msgid ""
+"At the time of registration, and for providing communications between the "
+"user account and their contacts, the user has to provide a display name (pen"
+" name), an username (nickname) and a working email address. The names will "
+"be accessible on the profile page of the account by any visitor of the page,"
+" even if other profile details are not displayed. The email address will "
+"only be used to send the user notifications about interactions, but wont be "
+"visibly displayed. The listing of an account in the node's user directory or"
+" the global user directory is optional and can be controlled in the user "
+"settings, it is not necessary for communication."
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Partners"
-msgstr "伴侣"
+#: src/Module/Tos.php:36 src/Module/Tos.php:76
+msgid ""
+"This data is required for communication and is passed on to the nodes of the"
+" communication partners and is stored there. Users can enter additional "
+"private data that may be transmitted to the communication partners accounts."
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Cohabiting"
-msgstr "同居"
+#: src/Module/Tos.php:37 src/Module/Tos.php:77
+#, php-format
+msgid ""
+"At any point in time a logged in user can export their account data from the"
+" <a href=\"%1$s/settings/uexport\">account settings</a>. If the user wants "
+"to delete their account they can do so at <a "
+"href=\"%1$s/removeme\">%1$s/removeme</a>. The deletion of the account will "
+"be permanent. Deletion of the data will also be requested from the nodes of "
+"the communication partners."
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Common law"
-msgstr "普通法结婚"
+#: src/Module/Tos.php:40 src/Module/Tos.php:74
+msgid "Privacy Statement"
+msgstr "隐私声明"
 
-#: src/Content/ContactSelector.php:166
-msgid "Happy"
-msgstr "幸福"
+#: src/Object/Post.php:133
+msgid "This entry was edited"
+msgstr "这个条目被编辑了"
 
-#: src/Content/ContactSelector.php:166
-msgid "Not looking"
-msgstr "没找"
+#: src/Object/Post.php:195
+msgid "Delete locally"
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Swinger"
-msgstr "交换性伴侣的"
+#: src/Object/Post.php:198
+msgid "Delete globally"
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Betrayed"
-msgstr "被背叛"
+#: src/Object/Post.php:198
+msgid "Remove locally"
+msgstr ""
 
-#: src/Content/ContactSelector.php:166
-msgid "Separated"
-msgstr "分手"
+#: src/Object/Post.php:212
+msgid "save to folder"
+msgstr "保存在文件夹"
 
-#: src/Content/ContactSelector.php:166
-msgid "Unstable"
-msgstr "不稳"
+#: src/Object/Post.php:247
+msgid "I will attend"
+msgstr "我将会参加"
 
-#: src/Content/ContactSelector.php:166
-msgid "Divorced"
-msgstr "离婚"
+#: src/Object/Post.php:247
+msgid "I will not attend"
+msgstr "我将不会参加"
 
-#: src/Content/ContactSelector.php:166
-msgid "Imaginarily divorced"
-msgstr "æ\83³å\83\8f离å©\9a"
+#: src/Object/Post.php:247
+msgid "I might attend"
+msgstr "æ\88\91å\8f¯è\83½ä¼\9aå\8f\82å\8a "
 
-#: src/Content/ContactSelector.php:166
-msgid "Widowed"
-msgstr "寡å¦\87"
+#: src/Object/Post.php:275
+msgid "ignore thread"
+msgstr "忽è§\86主é¢\98"
 
-#: src/Content/ContactSelector.php:166
-msgid "Uncertain"
-msgstr "不确定"
+#: src/Object/Post.php:276
+msgid "unignore thread"
+msgstr "取消忽视主题"
 
-#: src/Content/ContactSelector.php:166
-msgid "It's complicated"
-msgstr "是复杂"
+#: src/Object/Post.php:277
+msgid "toggle ignore status"
+msgstr "切换忽视状态"
 
-#: src/Content/ContactSelector.php:166
-msgid "Don't care"
-msgstr "无所谓"
+#: src/Object/Post.php:288
+msgid "add star"
+msgstr "加星"
 
-#: src/Content/ContactSelector.php:166
-msgid "Ask me"
-msgstr "问我"
+#: src/Object/Post.php:289
+msgid "remove star"
+msgstr "消星"
 
-#: src/Content/Feature.php:79
-msgid "General Features"
-msgstr "通用特性"
+#: src/Object/Post.php:290
+msgid "toggle star status"
+msgstr "转变星现状"
 
-#: src/Content/Feature.php:81
-msgid "Multiple Profiles"
-msgstr "å¤\9aç®\80ä»\8b"
+#: src/Object/Post.php:293
+msgid "starred"
+msgstr "å·²æ \87æ\98\9f"
 
-#: src/Content/Feature.php:81
-msgid "Ability to create multiple profiles"
-msgstr "能穿凿多简介"
+#: src/Object/Post.php:297
+msgid "add tag"
+msgstr "加标签"
 
-#: src/Content/Feature.php:82
-msgid "Photo Location"
-msgstr "照片地点"
+#: src/Object/Post.php:308
+msgid "like"
+msgstr "喜欢"
 
-#: src/Content/Feature.php:82
-msgid ""
-"Photo metadata is normally stripped. This extracts the location (if present)"
-" prior to stripping metadata and links it to a map."
-msgstr ""
+#: src/Object/Post.php:309
+msgid "dislike"
+msgstr "不喜欢"
 
-#: src/Content/Feature.php:83
-msgid "Export Public Calendar"
-msgstr "导å\87ºå\85¬å\85±æ\97¥å\8e\86"
+#: src/Object/Post.php:312
+msgid "Share this"
+msgstr "å\88\86享è¿\99个"
 
-#: src/Content/Feature.php:83
-msgid "Ability for visitors to download the public calendar"
-msgstr ""
+#: src/Object/Post.php:312
+msgid "share"
+msgstr "分享"
 
-#: src/Content/Feature.php:88
-msgid "Post Composition Features"
-msgstr "文章编写特性"
+#: src/Object/Post.php:379
+msgid "to"
+msgstr ""
 
-#: src/Content/Feature.php:89
-msgid "Post Preview"
-msgstr "文章预览"
+#: src/Object/Post.php:380
+msgid "via"
+msgstr "经过"
 
-#: src/Content/Feature.php:89
-msgid "Allow previewing posts and comments before publishing them"
-msgstr "在发布前允许预览文章和评论"
+#: src/Object/Post.php:381
+msgid "Wall-to-Wall"
+msgstr "从墙到墙"
 
-#: src/Content/Feature.php:90
-msgid "Auto-mention Forums"
-msgstr "自动提示论坛"
+#: src/Object/Post.php:382
+msgid "via Wall-To-Wall:"
+msgstr "通过从墙到墙"
 
-#: src/Content/Feature.php:90
-msgid ""
-"Add/remove mention when a forum page is selected/deselected in ACL window."
+#: src/Object/Post.php:429
+msgid "Notifier task is pending"
 msgstr ""
 
-#: src/Content/Feature.php:95
-msgid "Network Sidebar"
+#: src/Object/Post.php:430
+msgid "Delivery to remote servers is pending"
 msgstr ""
 
-#: src/Content/Feature.php:96
-msgid "Ability to select posts by date ranges"
-msgstr "能按时期范围选择文章"
-
-#: src/Content/Feature.php:97 src/Content/Feature.php:127
-msgid "List Forums"
-msgstr "列出各论坛"
-
-#: src/Content/Feature.php:97
-msgid "Enable widget to display the forums your are connected with"
+#: src/Object/Post.php:431
+msgid "Delivery to remote servers is underway"
 msgstr ""
 
-#: src/Content/Feature.php:98
-msgid "Group Filter"
-msgstr "组过滤器"
-
-#: src/Content/Feature.php:98
-msgid "Enable widget to display Network posts only from selected group"
-msgstr "启用用于只显示从所选组发出的网络文章的小组件"
-
-#: src/Content/Feature.php:99
-msgid "Network Filter"
-msgstr "网络滤器"
+#: src/Object/Post.php:432
+msgid "Delivery to remote servers is mostly done"
+msgstr ""
 
-#: src/Content/Feature.php:99
-msgid "Enable widget to display Network posts only from selected network"
-msgstr "使光表示网络文章从选择的网络小窗口"
+#: src/Object/Post.php:451
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d 条评论"
 
-#: src/Content/Feature.php:100
-msgid "Save search terms for re-use"
-msgstr "保存搜索关键为再用"
+#: src/Protocol/Diaspora.php:2442
+msgid "Sharing notification from Diaspora network"
+msgstr "分享通知从Diaspora网络"
 
-#: src/Content/Feature.php:105
-msgid "Network Tabs"
-msgstr "网络分页"
+#: src/Protocol/Diaspora.php:3536
+msgid "Attachments:"
+msgstr "附件:"
 
-#: src/Content/Feature.php:106
-msgid "Network Personal Tab"
-msgstr "网络私人分页"
+#: src/Protocol/OStatus.php:1838
+#, php-format
+msgid "%s is now following %s."
+msgstr "%s 正在关注 %s."
 
-#: src/Content/Feature.php:106
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "å\90¯ç\94¨å\8fªæ\98¾ç¤ºä½ å\8f\82ä¸\8eäº\86ç\9a\84ç½\91ç»\9cæ\96\87ç« ç\9a\84æ \87签页"
+#: src/Protocol/OStatus.php:1839
+msgid "following"
+msgstr "å\85³æ³¨"
 
-#: src/Content/Feature.php:107
-msgid "Network New Tab"
-msgstr "网络新分页"
+#: src/Protocol/OStatus.php:1842
+#, php-format
+msgid "%s stopped following %s."
+msgstr "%s 停止关注了 %s."
 
-#: src/Content/Feature.php:107
-msgid "Enable tab to display only new Network posts (from the last 12 hours)"
-msgstr "å\90¯ç\94¨å\8fªæ\98¾ç¤ºæ\96°ç\9a\84ç½\91ç»\9cæ\96\87ç« ï¼\88è¿\87å\8e»12å°\8fæ\97¶ï¼\89ç\9a\84æ \87签页"
+#: src/Protocol/OStatus.php:1843
+msgid "stopped following"
+msgstr "å\8f\96æ¶\88å\85³æ³¨"
 
-#: src/Content/Feature.php:108
-msgid "Network Shared Links Tab"
-msgstr "网络分享链接分页"
+#: src/Util/Temporal.php:150
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "YYYY-MM-DD 或 MM-DD"
 
-#: src/Content/Feature.php:108
-msgid "Enable tab to display only Network posts with links in them"
-msgstr "使表示å\85\89ç½\91ç»\9cæ\96\87ç« å\8c\85æ\8b¬é\93¾æ\8e¥å\88\86页å\8f¯ç\94¨"
+#: src/Util/Temporal.php:293
+msgid "never"
+msgstr "ä»\8eæ\9cª"
 
-#: src/Content/Feature.php:113
-msgid "Post/Comment Tools"
-msgstr "文章/评论工具"
+#: src/Util/Temporal.php:300
+msgid "less than a second ago"
+msgstr "一秒以内"
 
-#: src/Content/Feature.php:114
-msgid "Multiple Deletion"
-msgstr "å¤\9aå\88 é\99¤"
+#: src/Util/Temporal.php:308
+msgid "year"
+msgstr "å¹´"
 
-#: src/Content/Feature.php:114
-msgid "Select and delete multiple posts/comments at once"
-msgstr "选择和删除多文章/评论一次"
+#: src/Util/Temporal.php:308
+msgid "years"
+msgstr ""
 
-#: src/Content/Feature.php:115
-msgid "Edit Sent Posts"
-msgstr "编辑发送的文章"
+#: src/Util/Temporal.php:309
+msgid "months"
+msgstr ""
 
-#: src/Content/Feature.php:115
-msgid "Edit and correct posts and comments after sending"
-msgstr "编辑或修改文章和评论发送后"
+#: src/Util/Temporal.php:310
+msgid "weeks"
+msgstr "星期"
 
-#: src/Content/Feature.php:116
-msgid "Tagging"
-msgstr "标签"
+#: src/Util/Temporal.php:311
+msgid "days"
+msgstr ""
 
-#: src/Content/Feature.php:116
-msgid "Ability to tag existing posts"
-msgstr "能把目前的文章标签"
+#: src/Util/Temporal.php:312
+msgid "hour"
+msgstr "小时"
 
-#: src/Content/Feature.php:117
-msgid "Post Categories"
-msgstr "文章种类"
+#: src/Util/Temporal.php:312
+msgid "hours"
+msgstr "小时"
 
-#: src/Content/Feature.php:117
-msgid "Add categories to your posts"
-msgstr "å\8a å\85¥ç§\8dç±»ç»\99æ\82¨ç\9a\84æ\96\87ç« "
+#: src/Util/Temporal.php:313
+msgid "minute"
+msgstr "å\88\86é\92\9f"
 
-#: src/Content/Feature.php:118
-msgid "Ability to file posts under folders"
-msgstr "能把文章归档在文件夹 "
+#: src/Util/Temporal.php:313
+msgid "minutes"
+msgstr "分钟"
 
-#: src/Content/Feature.php:119
-msgid "Dislike Posts"
-msgstr "不喜欢文章"
+#: src/Util/Temporal.php:314
+msgid "second"
+msgstr ""
 
-#: src/Content/Feature.php:119
-msgid "Ability to dislike posts/comments"
-msgstr "能不喜欢文章/评论"
+#: src/Util/Temporal.php:314
+msgid "seconds"
+msgstr ""
 
-#: src/Content/Feature.php:120
-msgid "Star Posts"
-msgstr "加星的文章"
+#: src/Util/Temporal.php:324
+#, php-format
+msgid "in %1$d %2$s"
+msgstr ""
 
-#: src/Content/Feature.php:120
-msgid "Ability to mark special posts with a star indicator"
-msgstr "能把优秀文章跟星标注"
+#: src/Util/Temporal.php:327
+#, php-format
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s以前"
 
-#: src/Content/Feature.php:121
-msgid "Mute Post Notifications"
-msgstr ""
+#: src/Worker/Delivery.php:447
+msgid "(no subject)"
+msgstr "(无主题)"
 
-#: src/Content/Feature.php:121
-msgid "Ability to mute notifications for a thread"
+#: update.php:217
+#, php-format
+msgid "%s: Updating author-id and owner-id in item and thread table. "
 msgstr ""
 
-#: src/Content/Feature.php:126
-msgid "Advanced Profile Settings"
+#: update.php:272
+#, php-format
+msgid "%s: Updating post-type."
 msgstr ""
 
-#: src/Content/Feature.php:127
-msgid "Show visitors public community forums at the Advanced Profile Page"
-msgstr ""
+#: view/theme/duepuntozero/config.php:56
+msgid "greenzero"
+msgstr "greenzero"
 
-#: src/Content/Feature.php:128
-msgid "Tag Cloud"
-msgstr "标签云"
+#: view/theme/duepuntozero/config.php:57
+msgid "purplezero"
+msgstr "purplezero"
 
-#: src/Content/Feature.php:128
-msgid "Provide a personal tag cloud on your profile page"
-msgstr "在您的个人简介中提供个人标签云"
+#: view/theme/duepuntozero/config.php:58
+msgid "easterbunny"
+msgstr "easterbunny"
 
-#: src/Content/Feature.php:129
-msgid "Display Membership Date"
-msgstr ""
+#: view/theme/duepuntozero/config.php:59
+msgid "darkzero"
+msgstr "darkzero"
 
-#: src/Content/Feature.php:129
-msgid "Display membership date in profile"
-msgstr ""
+#: view/theme/duepuntozero/config.php:60
+msgid "comix"
+msgstr "comix"
 
-#: src/Content/Nav.php:53
-msgid "Nothing new here"
-msgstr "这里没有什么新的"
+#: view/theme/duepuntozero/config.php:61
+msgid "slackr"
+msgstr "slackr"
 
-#: src/Content/Nav.php:57
-msgid "Clear notifications"
-msgstr "清理出通知"
+#: view/theme/duepuntozero/config.php:75
+msgid "Variations"
+msgstr "变化"
 
-#: src/Content/Nav.php:105
-msgid "Personal notes"
-msgstr "私人的便条"
+#: view/theme/frio/config.php:103
+msgid "Custom"
+msgstr ""
 
-#: src/Content/Nav.php:105
-msgid "Your personal notes"
-msgstr "ä½ ç\9a\84ç§\81人便æ\9d¡"
+#: view/theme/frio/config.php:115
+msgid "Note"
+msgstr "便条"
 
-#: src/Content/Nav.php:114
-msgid "Sign in"
-msgstr "登录"
+#: view/theme/frio/config.php:115
+msgid "Check image permissions if all users are allowed to see the image"
+msgstr ""
 
-#: src/Content/Nav.php:124
-msgid "Home Page"
-msgstr "主页"
+#: view/theme/frio/config.php:122
+msgid "Select color scheme"
+msgstr ""
 
-#: src/Content/Nav.php:128
-msgid "Create an account"
-msgstr "注册"
+#: view/theme/frio/config.php:123
+msgid "Navigation bar background color"
+msgstr ""
 
-#: src/Content/Nav.php:134
-msgid "Help and documentation"
-msgstr "帮助及文档"
+#: view/theme/frio/config.php:124
+msgid "Navigation bar icon color "
+msgstr ""
 
-#: src/Content/Nav.php:138
-msgid "Apps"
-msgstr "应用程序"
+#: view/theme/frio/config.php:125
+msgid "Link color"
+msgstr "链接颜色"
 
-#: src/Content/Nav.php:138
-msgid "Addon applications, utilities, games"
-msgstr "可加的应用,设施,游戏"
+#: view/theme/frio/config.php:126
+msgid "Set the background color"
+msgstr "设置背景色"
 
-#: src/Content/Nav.php:142
-msgid "Search site content"
-msgstr "搜索网站内容"
+#: view/theme/frio/config.php:127
+msgid "Content background opacity"
+msgstr ""
 
-#: src/Content/Nav.php:166
-msgid "Community"
-msgstr "社会"
+#: view/theme/frio/config.php:128
+msgid "Set the background image"
+msgstr "设置背景图片"
 
-#: src/Content/Nav.php:166
-msgid "Conversations on this and other servers"
+#: view/theme/frio/config.php:129
+msgid "Background image style"
 msgstr ""
 
-#: src/Content/Nav.php:173
-msgid "Directory"
-msgstr "名录"
+#: view/theme/frio/config.php:134
+msgid "Login page background image"
+msgstr "登录页面背景图片"
 
-#: src/Content/Nav.php:173
-msgid "People directory"
-msgstr "人物名录"
+#: view/theme/frio/config.php:138
+msgid "Login page background color"
+msgstr "登录页面背景色"
 
-#: src/Content/Nav.php:175
-msgid "Information about this friendica instance"
-msgstr "资料关于这个Friendica服务器"
+#: view/theme/frio/config.php:138
+msgid "Leave background image and color empty for theme defaults"
+msgstr ""
 
-#: src/Content/Nav.php:178
-msgid "Terms of Service of this Friendica instance"
+#: view/theme/frio/php/Image.php:24
+msgid "Top Banner"
 msgstr ""
 
-#: src/Content/Nav.php:184
-msgid "Network Reset"
-msgstr "网络重设"
+#: view/theme/frio/php/Image.php:24
+msgid ""
+"Resize image to the width of the screen and show background color below on "
+"long pages."
+msgstr ""
 
-#: src/Content/Nav.php:184
-msgid "Load Network page with no filters"
-msgstr "表示网络页无滤器"
+#: view/theme/frio/php/Image.php:25
+msgid "Full screen"
+msgstr ""
 
-#: src/Content/Nav.php:190
-msgid "Friend Requests"
-msgstr "友谊邀请"
+#: view/theme/frio/php/Image.php:25
+msgid ""
+"Resize image to fill entire screen, clipping either the right or the bottom."
+msgstr ""
 
-#: src/Content/Nav.php:192
-msgid "See all notifications"
-msgstr "看所有的通知"
+#: view/theme/frio/php/Image.php:26
+msgid "Single row mosaic"
+msgstr ""
 
-#: src/Content/Nav.php:193
-msgid "Mark all system notifications seen"
-msgstr "记号各系统通知看过的"
+#: view/theme/frio/php/Image.php:26
+msgid ""
+"Resize image to repeat it on a single row, either vertical or horizontal."
+msgstr ""
 
-#: src/Content/Nav.php:197
-msgid "Inbox"
-msgstr "收件箱"
+#: view/theme/frio/php/Image.php:27
+msgid "Mosaic"
+msgstr ""
 
-#: src/Content/Nav.php:198
-msgid "Outbox"
-msgstr "发件箱"
+#: view/theme/frio/php/Image.php:27
+msgid "Repeat image to fill the screen."
+msgstr ""
 
-#: src/Content/Nav.php:202
-msgid "Manage"
-msgstr "管理"
+#: view/theme/frio/theme.php:239
+msgid "Guest"
+msgstr ""
 
-#: src/Content/Nav.php:202
-msgid "Manage other pages"
-msgstr "管理别的页"
+#: view/theme/frio/theme.php:244
+msgid "Visitor"
+msgstr "访客"
 
-#: src/Content/Nav.php:210
-msgid "Manage/Edit Profiles"
-msgstr "管理/编辑简介"
+#: view/theme/quattro/config.php:77
+msgid "Alignment"
+msgstr "对齐"
 
-#: src/Content/Nav.php:218
-msgid "Site setup and configuration"
-msgstr "网站开办和配置"
+#: view/theme/quattro/config.php:77
+msgid "Left"
+msgstr "左边"
 
-#: src/Content/Nav.php:221
-msgid "Navigation"
-msgstr "导航"
+#: view/theme/quattro/config.php:77
+msgid "Center"
+msgstr "中间"
 
-#: src/Content/Nav.php:221
-msgid "Site map"
-msgstr "网站地图"
+#: view/theme/quattro/config.php:78
+msgid "Color scheme"
+msgstr "色彩方案"
 
-#: src/Content/Widget/CalendarExport.php:65
-msgid "Export"
-msgstr "导出"
+#: view/theme/quattro/config.php:79
+msgid "Posts font size"
+msgstr "文章"
 
-#: src/Content/Widget/CalendarExport.php:66
-msgid "Export calendar as ical"
-msgstr "导出日历为 ical"
+#: view/theme/quattro/config.php:80
+msgid "Textareas font size"
+msgstr "文本区字体大小"
 
-#: src/Content/Widget/CalendarExport.php:67
-msgid "Export calendar as csv"
-msgstr "导出日历为 csv"
+#: view/theme/vier/config.php:76
+msgid "Comma separated list of helper forums"
+msgstr ""
 
-#: src/Content/OEmbed.php:256
-msgid "Embedding disabled"
-msgstr "嵌入已停用"
+#: view/theme/vier/config.php:123
+msgid "Set style"
+msgstr "设置风格"
 
-#: src/Content/OEmbed.php:376
-msgid "Embedded content"
-msgstr "嵌入内容"
+#: view/theme/vier/config.php:124
+msgid "Community Pages"
+msgstr "社会页"
 
-#: src/Content/Text/BBCode.php:423
-msgid "view full size"
-msgstr "ç\9c\8bå\85¨å°ºå¯¸"
+#: view/theme/vier/config.php:125 view/theme/vier/theme.php:151
+msgid "Community Profiles"
+msgstr "社ä¼\9aç®\80ä»\8b"
 
-#: src/Content/Text/BBCode.php:853 src/Content/Text/BBCode.php:1626
-#: src/Content/Text/BBCode.php:1627
-msgid "Image/photo"
-msgstr "图像/照片"
+#: view/theme/vier/config.php:126
+msgid "Help or @NewHere ?"
+msgstr "需要帮助或@第一次来这儿?"
 
-#: src/Content/Text/BBCode.php:1553 src/Content/Text/BBCode.php:1575
-msgid "$1 wrote:"
-msgstr "$1写:"
+#: view/theme/vier/config.php:127 view/theme/vier/theme.php:373
+msgid "Connect Services"
+msgstr "连接服务"
 
-#: src/Content/Text/BBCode.php:1635 src/Content/Text/BBCode.php:1636
-msgid "Encrypted content"
-msgstr "加密的内容"
+#: view/theme/vier/config.php:128
+msgid "Find Friends"
+msgstr "找朋友们"
 
-#: src/Content/Text/BBCode.php:1755
-msgid "Invalid source protocol"
-msgstr "无效的源协议"
+#: view/theme/vier/config.php:129 view/theme/vier/theme.php:181
+msgid "Last users"
+msgstr "上次用户"
 
-#: src/Content/Text/BBCode.php:1766
-msgid "Invalid link protocol"
-msgstr "无效的连接协议"
+#: view/theme/vier/theme.php:288
+msgid "Quick Start"
+msgstr "快速入门"
index c54845b8ff13db650981c1cfca4cd0d8eb8c7b8d..29cd8945eeff27d7dc60f3c888ae0f9b0fe91cb8 100644 (file)
@@ -6,109 +6,16 @@ function string_plural_select_zh_cn($n){
        return 0;;
 }}
 ;
-$a->strings["You must be logged in to use addons. "] = "您用插件前要登录";
-$a->strings["Not Found"] = "未发现";
-$a->strings["Page not found."] = "页发现。";
-$a->strings["Permission denied"] = "权限不够";
-$a->strings["Permission denied."] = "权限不够。";
-$a->strings["toggle mobile"] = "切换移动设备";
-$a->strings["default"] = "默认";
-$a->strings["greenzero"] = "greenzero";
-$a->strings["purplezero"] = "purplezero";
-$a->strings["easterbunny"] = "easterbunny";
-$a->strings["darkzero"] = "darkzero";
-$a->strings["comix"] = "comix";
-$a->strings["slackr"] = "slackr";
-$a->strings["Submit"] = "提交";
-$a->strings["Theme settings"] = "主题设置";
-$a->strings["Variations"] = "变化";
-$a->strings["Alignment"] = "对齐";
-$a->strings["Left"] = "左边";
-$a->strings["Center"] = "中间";
-$a->strings["Color scheme"] = "色彩方案";
-$a->strings["Posts font size"] = "文章";
-$a->strings["Textareas font size"] = "文本区字体大小";
-$a->strings["Comma separated list of helper forums"] = "";
-$a->strings["don't show"] = "不要显示";
-$a->strings["show"] = "显示";
-$a->strings["Set style"] = "设置风格";
-$a->strings["Community Pages"] = "社会页";
-$a->strings["Community Profiles"] = "社会简介";
-$a->strings["Help or @NewHere ?"] = "需要帮助或@第一次来这儿?";
-$a->strings["Connect Services"] = "连接服务";
-$a->strings["Find Friends"] = "找朋友们";
-$a->strings["Last users"] = "上次用户";
-$a->strings["Find People"] = "找人物";
-$a->strings["Enter name or interest"] = "输入名字或兴趣";
-$a->strings["Connect/Follow"] = "连接/关注";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "比如:罗伯特·摩根斯坦,钓鱼";
-$a->strings["Find"] = "搜索";
-$a->strings["Friend Suggestions"] = "朋友推荐";
-$a->strings["Similar Interests"] = "相似兴趣";
-$a->strings["Random Profile"] = "随机简介";
-$a->strings["Invite Friends"] = "邀请朋友们";
-$a->strings["Global Directory"] = "综合目录";
-$a->strings["Local Directory"] = "本地目录";
-$a->strings["Forums"] = "论坛";
-$a->strings["External link to forum"] = "到论坛的外链";
-$a->strings["show more"] = "显示更多";
-$a->strings["Quick Start"] = "快速入门";
-$a->strings["Help"] = "帮助";
-$a->strings["Custom"] = "";
-$a->strings["Note"] = "便条";
-$a->strings["Check image permissions if all users are allowed to see the image"] = "";
-$a->strings["Select color scheme"] = "";
-$a->strings["Navigation bar background color"] = "";
-$a->strings["Navigation bar icon color "] = "";
-$a->strings["Link color"] = "链接颜色";
-$a->strings["Set the background color"] = "设置背景色";
-$a->strings["Content background opacity"] = "";
-$a->strings["Set the background image"] = "设置背景图片";
-$a->strings["Background image style"] = "";
-$a->strings["Login page background image"] = "登录页面背景图片";
-$a->strings["Login page background color"] = "登录页面背景色";
-$a->strings["Leave background image and color empty for theme defaults"] = "";
-$a->strings["Guest"] = "";
-$a->strings["Visitor"] = "访客";
-$a->strings["Logout"] = "注销";
-$a->strings["End this session"] = "结束此次会话";
-$a->strings["Status"] = "状态";
-$a->strings["Your posts and conversations"] = "你的消息和交谈";
-$a->strings["Profile"] = "简介";
-$a->strings["Your profile page"] = "你的简介页";
-$a->strings["Photos"] = "照片";
-$a->strings["Your photos"] = "你的照片";
-$a->strings["Videos"] = "视频";
-$a->strings["Your videos"] = "你的视频";
-$a->strings["Events"] = "事件";
-$a->strings["Your events"] = "你的项目";
-$a->strings["Network"] = "网络";
-$a->strings["Conversations from your friends"] = "来自你的朋友们的交谈";
-$a->strings["Events and Calendar"] = "事件和日历";
-$a->strings["Messages"] = "消息";
-$a->strings["Private mail"] = "私人的邮件";
-$a->strings["Settings"] = "设置";
-$a->strings["Account settings"] = "帐户设置";
-$a->strings["Contacts"] = "联系人";
-$a->strings["Manage/edit friends and contacts"] = "管理/编辑朋友和联系人";
-$a->strings["Follow Thread"] = "";
-$a->strings["Top Banner"] = "";
-$a->strings["Resize image to the width of the screen and show background color below on long pages."] = "";
-$a->strings["Full screen"] = "";
-$a->strings["Resize image to fill entire screen, clipping either the right or the bottom."] = "";
-$a->strings["Single row mosaic"] = "";
-$a->strings["Resize image to repeat it on a single row, either vertical or horizontal."] = "";
-$a->strings["Mosaic"] = "";
-$a->strings["Repeat image to fill the screen."] = "";
-$a->strings["%s: Updating author-id and owner-id in item and thread table. "] = "";
-$a->strings["%s: Updating post-type."] = "";
-$a->strings["Item not found."] = "项目找不到。";
-$a->strings["Do you really want to delete this item?"] = "您真的想删除这个项目吗?";
-$a->strings["Yes"] = "是";
-$a->strings["Cancel"] = "取消";
-$a->strings["Archives"] = "档案";
+$a->strings["Daily posting limit of %d post reached. The post was rejected."] = [
+       0 => "达到每日 %d 发文限制。此文被拒绝发出。",
+];
+$a->strings["Weekly posting limit of %d post reached. The post was rejected."] = [
+       0 => "达到每周 %d 发文限制。此文被拒绝发出。",
+];
+$a->strings["Monthly posting limit of %d post reached. The post was rejected."] = "达到每月 %d 发文限制。此文被拒绝发出。";
+$a->strings["Profile Photos"] = "简介照片";
 $a->strings["event"] = "事件";
-$a->strings["status"] = "ç\8e°ç\8a";
+$a->strings["status"] = "ç\8a¶æ\80\81";
 $a->strings["photo"] = "照片";
 $a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s 喜欢 %2\$s 的 %3\$s";
 $a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s 不喜欢 %2\$s 的 %3\$s";
@@ -137,6 +44,7 @@ $a->strings["View in context"] = "看在上下文";
 $a->strings["Please wait"] = "请等一下";
 $a->strings["remove"] = "删除";
 $a->strings["Delete Selected Items"] = "删除选的项目";
+$a->strings["Follow Thread"] = "";
 $a->strings["View Status"] = "看现状";
 $a->strings["View Profile"] = "看简介";
 $a->strings["View Photos"] = "看照片";
@@ -144,6 +52,7 @@ $a->strings["Network Posts"] = "网络文章";
 $a->strings["View Contact"] = "查看联系人";
 $a->strings["Send PM"] = "发送私信";
 $a->strings["Poke"] = "戳";
+$a->strings["Connect/Follow"] = "连接/关注";
 $a->strings["%s likes this."] = "%s喜欢这个.";
 $a->strings["%s doesn't like this."] = "%s没有喜欢这个.";
 $a->strings["%s attends."] = "%s 参加。";
@@ -162,9 +71,7 @@ $a->strings["%s don't attend."] = "%s 不参加。";
 $a->strings["<span  %1\$s>%2\$d people</span> attend maybe"] = "<span  %1\$s>%2\$d人</span>可能参加";
 $a->strings["%s attend maybe."] = "";
 $a->strings["Visible to <strong>everybody</strong>"] = "<strong>大家</strong>可见的";
-$a->strings["Please enter a link URL:"] = "请输入一个链接 URL:";
-$a->strings["Please enter a video link/URL:"] = "请输入视频连接/URL:";
-$a->strings["Please enter an audio link/URL:"] = "请输入音响连接/URL:";
+$a->strings["Please enter a image/video/audio/webpage URL:"] = "";
 $a->strings["Tag term:"] = "标签:";
 $a->strings["Save to Folder:"] = "保存再文件夹:";
 $a->strings["Where are you right now?"] = "你在哪里?";
@@ -175,12 +82,14 @@ $a->strings["Upload photo"] = "上传照片";
 $a->strings["upload photo"] = "上传照片";
 $a->strings["Attach file"] = "附上文件";
 $a->strings["attach file"] = "附上文件";
-$a->strings["Insert web link"] = "插入网页链接";
-$a->strings["web link"] = "网页链接";
-$a->strings["Insert video link"] = "插入视频链接";
-$a->strings["video link"] = "视频链接";
-$a->strings["Insert audio link"] = "插入音频链接";
-$a->strings["audio link"] = "音频链接";
+$a->strings["Bold"] = "粗体";
+$a->strings["Italic"] = "斜体";
+$a->strings["Underline"] = "下划线";
+$a->strings["Quote"] = "引语";
+$a->strings["Code"] = "源代码";
+$a->strings["Image"] = "图片";
+$a->strings["Link"] = "链接";
+$a->strings["Link or Media"] = "";
 $a->strings["Set your location"] = "设定您的位置";
 $a->strings["set location"] = "指定位置";
 $a->strings["Clear browser location"] = "清空浏览器位置";
@@ -191,6 +100,7 @@ $a->strings["Permission settings"] = "权设置";
 $a->strings["permissions"] = "权利";
 $a->strings["Public post"] = "公开的消息";
 $a->strings["Preview"] = "预览";
+$a->strings["Cancel"] = "取消";
 $a->strings["Post to Groups"] = "发到组";
 $a->strings["Post to Contacts"] = "发给联系人";
 $a->strings["Private post"] = "私人文章";
@@ -209,10 +119,6 @@ $a->strings["Not Attending"] = [
 $a->strings["Undecided"] = [
        0 => "未决定的",
 ];
-$a->strings["Welcome "] = "欢迎";
-$a->strings["Please upload a profile photo."] = "请上传一张简介照片";
-$a->strings["Welcome back "] = "欢迎回来";
-$a->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."] = "表格安全令牌不对。最可能因为表格开着太久(三个小时以上)提交前。";
 $a->strings["Friendica Notification"] = "Friendica 通知";
 $a->strings["Thank You,"] = "谢谢,";
 $a->strings["%1\$s, %2\$s Administrator"] = "%1\$s, %2\$s 的管理员";
@@ -222,18 +128,22 @@ $a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s发给您
 $a->strings["a private message"] = "一条私人信息";
 $a->strings["%1\$s sent you %2\$s."] = "%1\$s发给您%2\$s.";
 $a->strings["Please visit %s to view and/or reply to your private messages."] = "请访问 %s 来查看并且/或者回复你的私信。";
+$a->strings["%1\$s tagged you on [url=%2\$s]a %3\$s[/url]"] = "";
 $a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s于[url=%2\$s]a %3\$s[/url]评论了";
+$a->strings["%1\$s tagged you on [url=%2\$s]%3\$s's %4\$s[/url]"] = "";
 $a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s于[url=%2\$s]%3\$s的%4\$s[/url]评论了";
+$a->strings["%1\$s tagged you on [url=%2\$s]your %3\$s[/url]"] = "";
 $a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s于[url=%2\$s]您的%3\$s[/url]评论了";
+$a->strings["%1\$s tagged you on [url=%2\$s]their %3\$s[/url]"] = "";
+$a->strings["%1\$s commented on [url=%2\$s]their %3\$s[/url]"] = "";
+$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Notify] %s标签您";
+$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s把您在%2\$s标签";
 $a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica:Notify]于交流#%1\$d由%2\$s评论";
 $a->strings["%s commented on an item/conversation you have been following."] = "%s对你有兴趣的项目/ 交谈发表意见";
 $a->strings["Please visit %s to view and/or reply to the conversation."] = "请访问%s来查看并且/或者回复这个对话。";
 $a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Notify] %s贴在您的简介墙";
 $a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s放在您的简介墙在%2\$s";
 $a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s放在[url=%2\$s]您的墙[/url]";
-$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Notify] %s标签您";
-$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s把您在%2\$s标签";
-$a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s[url=%2\$s]把您标签[/url].";
 $a->strings["[Friendica:Notify] %s shared a new post"] = "[Friendica:Notify] %s分享新的消息";
 $a->strings["%1\$s shared a new post at %2\$s"] = "%1\$s分享新的消息在%2\$s";
 $a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "%1\$s [url=%2\$s]分享一个消息[/url].";
@@ -272,753 +182,88 @@ $a->strings["You've received a registration request from '%1\$s' at %2\$s"] = ""
 $a->strings["You've received a [url=%1\$s]registration request[/url] from %2\$s."] = "";
 $a->strings["Full Name:\t%s\nSite Location:\t%s\nLogin Name:\t%s (%s)"] = "";
 $a->strings["Please visit %s to approve or reject the request."] = "请访问%s来批准或拒绝这个请求。";
-$a->strings["newer"] = "更新";
-$a->strings["older"] = "更旧";
-$a->strings["first"] = "首先";
-$a->strings["prev"] = "上个";
-$a->strings["next"] = "下个";
-$a->strings["last"] = "最后";
-$a->strings["Loading more entries..."] = "没有项目...";
-$a->strings["The end"] = "";
-$a->strings["No contacts"] = "没有联系人";
-$a->strings["%d Contact"] = [
-       0 => "%d 联系人",
+$a->strings["Item not found."] = "项目找不到。";
+$a->strings["Do you really want to delete this item?"] = "您真的想删除这个项目吗?";
+$a->strings["Yes"] = "是";
+$a->strings["Permission denied."] = "权限不够。";
+$a->strings["Archives"] = "档案";
+$a->strings["show more"] = "显示更多";
+$a->strings["Theme settings updated."] = "主题设置更新了。";
+$a->strings["Information"] = "资料";
+$a->strings["Overview"] = "概览";
+$a->strings["Federation Statistics"] = "联邦网络统计";
+$a->strings["Configuration"] = "配置";
+$a->strings["Site"] = "网站";
+$a->strings["Users"] = "用户";
+$a->strings["Addons"] = "插件";
+$a->strings["Themes"] = "主题";
+$a->strings["Additional features"] = "附加的特点";
+$a->strings["Terms of Service"] = "服务条款";
+$a->strings["Database"] = "数据库";
+$a->strings["DB updates"] = "数据库更新";
+$a->strings["Inspect Queue"] = "检查队列";
+$a->strings["Inspect Deferred Workers"] = "";
+$a->strings["Inspect worker Queue"] = "";
+$a->strings["Tools"] = "工具";
+$a->strings["Contact Blocklist"] = "联系人屏蔽列表";
+$a->strings["Server Blocklist"] = "服务器屏蔽列表";
+$a->strings["Delete Item"] = "删除项目";
+$a->strings["Logs"] = "记录";
+$a->strings["View Logs"] = "查看日志";
+$a->strings["Diagnostics"] = "诊断";
+$a->strings["PHP Info"] = "PHP Info";
+$a->strings["probe address"] = "探测地址";
+$a->strings["check webfinger"] = "检查 webfinger";
+$a->strings["Admin"] = "管理";
+$a->strings["Addon Features"] = "插件特性";
+$a->strings["User registrations waiting for confirmation"] = "用户注册等确认";
+$a->strings["Administration"] = "管理";
+$a->strings["Display Terms of Service"] = "显示服务条款";
+$a->strings["Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page."] = "";
+$a->strings["Display Privacy Statement"] = "显示隐私说明";
+$a->strings["Show some informations regarding the needed information to operate the node according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."] = "";
+$a->strings["Privacy Statement Preview"] = "隐私声明预览";
+$a->strings["The Terms of Service"] = "服务条款";
+$a->strings["Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below."] = "";
+$a->strings["Save Settings"] = "保存设置";
+$a->strings["Blocked domain"] = "被封禁的域名";
+$a->strings["The blocked domain"] = "被封禁的域名";
+$a->strings["Reason for the block"] = "封禁原因";
+$a->strings["The reason why you blocked this domain."] = "封禁这个域名的原因。";
+$a->strings["Delete domain"] = "删除域名";
+$a->strings["Check to delete this entry from the blocklist"] = "选中以从列表中删除此条目";
+$a->strings["This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server."] = "";
+$a->strings["The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily."] = "";
+$a->strings["Add new entry to block list"] = "添加新条目到屏蔽列表";
+$a->strings["Server Domain"] = "服务器域名";
+$a->strings["The domain of the new server to add to the block list. Do not include the protocol."] = "需要添加到服务器屏蔽列表的服务器的域名。请勿包括协议。";
+$a->strings["Block reason"] = "封禁原因";
+$a->strings["Add Entry"] = "添加条目";
+$a->strings["Save changes to the blocklist"] = "保存变更到屏蔽列表";
+$a->strings["Current Entries in the Blocklist"] = "屏蔽列表中的当前条目";
+$a->strings["Delete entry from blocklist"] = "删除屏蔽列表中的条目";
+$a->strings["Delete entry from blocklist?"] = "从屏蔽列表删除条目?";
+$a->strings["Server added to blocklist."] = "服务器已添加到屏蔽列表。";
+$a->strings["Site blocklist updated."] = "站点屏蔽列表已更新。";
+$a->strings["The contact has been blocked from the node"] = "该联系人已被本节点屏蔽。";
+$a->strings["Could not find any contact entry for this URL (%s)"] = "";
+$a->strings["%s contact unblocked"] = [
+       0 => "",
 ];
-$a->strings["View Contacts"] = "查看联系人";
-$a->strings["Save"] = "保存";
-$a->strings["Follow"] = "关注";
-$a->strings["Search"] = "搜索";
-$a->strings["@name, !forum, #tags, content"] = "";
-$a->strings["Full Text"] = "全文";
-$a->strings["Tags"] = "标签:";
-$a->strings["poke"] = "戳";
-$a->strings["poked"] = "戳了";
-$a->strings["ping"] = "砰";
-$a->strings["pinged"] = "砰了";
-$a->strings["prod"] = "柔戳";
-$a->strings["prodded"] = "柔戳了";
-$a->strings["slap"] = "掌击";
-$a->strings["slapped"] = "掌击了";
-$a->strings["finger"] = "指";
-$a->strings["fingered"] = "指了";
-$a->strings["rebuff"] = "拒绝";
-$a->strings["rebuffed"] = "已拒绝";
-$a->strings["Monday"] = "星期一";
-$a->strings["Tuesday"] = "星期二";
-$a->strings["Wednesday"] = "星期三";
-$a->strings["Thursday"] = "星期四";
-$a->strings["Friday"] = "星期五";
-$a->strings["Saturday"] = "星期六";
-$a->strings["Sunday"] = "星期天";
-$a->strings["January"] = "一月";
-$a->strings["February"] = "二月";
-$a->strings["March"] = "三月";
-$a->strings["April"] = "四月";
-$a->strings["May"] = "五月";
-$a->strings["June"] = "六月";
-$a->strings["July"] = "七月";
-$a->strings["August"] = "八月";
-$a->strings["September"] = "九月";
-$a->strings["October"] = "十月";
-$a->strings["November"] = "十一月";
-$a->strings["December"] = "十二月";
-$a->strings["Mon"] = "星期一";
-$a->strings["Tue"] = "星期二";
-$a->strings["Wed"] = "星期三";
-$a->strings["Thu"] = "星期四";
-$a->strings["Fri"] = "星期五";
-$a->strings["Sat"] = "星期六";
-$a->strings["Sun"] = "星期日";
-$a->strings["Jan"] = "一月";
-$a->strings["Feb"] = "二月";
-$a->strings["Mar"] = "三月";
-$a->strings["Apr"] = "四月";
-$a->strings["Jul"] = "七月";
-$a->strings["Aug"] = "八月";
-$a->strings["Sep"] = "";
-$a->strings["Oct"] = "十月";
-$a->strings["Nov"] = "十一月";
-$a->strings["Dec"] = "十二月";
-$a->strings["Content warning: %s"] = "内容警告:%s";
-$a->strings["View Video"] = "察看视频";
-$a->strings["bytes"] = "字节";
-$a->strings["Click to open/close"] = "点击为开关";
-$a->strings["View on separate page"] = "在另一页面中查看";
-$a->strings["view on separate page"] = "在另一页面中查看";
-$a->strings["link to source"] = "链接到来源";
-$a->strings["activity"] = "活动";
-$a->strings["comment"] = [
-       0 => "评论",
-];
-$a->strings["post"] = "文章";
-$a->strings["Item filed"] = "把项目归档了";
-$a->strings["Daily posting limit of %d post reached. The post was rejected."] = [
-       0 => "达到每日 %d 发文限制。此文被拒绝发出。",
-];
-$a->strings["Weekly posting limit of %d post reached. The post was rejected."] = [
-       0 => "达到每周 %d 发文限制。此文被拒绝发出。",
-];
-$a->strings["Monthly posting limit of %d post reached. The post was rejected."] = "达到每月 %d 发文限制。此文被拒绝发出。";
-$a->strings["Profile Photos"] = "简介照片";
-$a->strings["Contact settings applied."] = "联系人设置已应用。";
-$a->strings["Contact update failed."] = "联系人更新失败。";
-$a->strings["Contact not found."] = "没有找到联系人。";
-$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>警告:此为进阶</strong>,如果您输入不正确的信息,您也许无法与这位联系人的正常通讯。";
-$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "请<strong>立即</strong>用后退按钮如果您不确定怎么用这页";
-$a->strings["No mirroring"] = "没有复制";
-$a->strings["Mirror as forwarded posting"] = "复制为传达文章";
-$a->strings["Mirror as my own posting"] = "复制为我自己的文章";
-$a->strings["Return to contact editor"] = "返回到联系人编辑器";
-$a->strings["Refetch contact data"] = "重新获取联系人数据";
-$a->strings["Remote Self"] = "遥远的自身";
-$a->strings["Mirror postings from this contact"] = "把这个熟人的文章复制。";
-$a->strings["Mark this contact as remote_self, this will cause friendica to repost new entries from this contact."] = "表明这个熟人当遥远的自身。Friendica要把这个熟人的新的文章复制。";
+$a->strings["Remote Contact Blocklist"] = "";
+$a->strings["This page allows you to prevent any message from a remote contact to reach your node."] = "";
+$a->strings["Block Remote Contact"] = "";
+$a->strings["select all"] = "全选";
+$a->strings["select none"] = "";
+$a->strings["Block"] = "屏蔽";
+$a->strings["Unblock"] = "解除屏蔽";
+$a->strings["No remote contact is blocked from this node."] = "";
+$a->strings["Blocked Remote Contacts"] = "";
+$a->strings["Block New Remote Contact"] = "";
+$a->strings["Photo"] = "照片";
 $a->strings["Name"] = "名字";
-$a->strings["Account Nickname"] = "帐户昵称";
-$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname越过名/昵称";
-$a->strings["Account URL"] = "帐户URL";
-$a->strings["Friend Request URL"] = "朋友请求URL";
-$a->strings["Friend Confirm URL"] = "朋友确认URL";
-$a->strings["Notification Endpoint URL"] = "通知端URL";
-$a->strings["Poll/Feed URL"] = "喂URL";
-$a->strings["New photo from this URL"] = "新照片从这个URL";
-$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "一天最多墙通知给%s超过了。通知没有通过 。";
-$a->strings["No recipient selected."] = "没有选择的接受者。";
-$a->strings["Unable to check your home location."] = "核对不了您的主页。";
-$a->strings["Message could not be sent."] = "消息发不了。";
-$a->strings["Message collection failure."] = "通信受到错误。";
-$a->strings["Message sent."] = "消息发了";
-$a->strings["No recipient."] = "没有接受者。";
-$a->strings["Send Private Message"] = "发私人的通信";
-$a->strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "如果您想%s回答,请核对您网站的隐私设置允许生发送人的私人邮件。";
-$a->strings["To:"] = "到:";
-$a->strings["Subject:"] = "题目:";
-$a->strings["Your message:"] = "你的消息:";
-$a->strings["Remote privacy information not available."] = "摇隐私信息无效";
-$a->strings["Visible to:"] = "可见给:";
-$a->strings["Friendica Communications Server - Setup"] = "Friendica沟通服务器-安装";
-$a->strings["Could not connect to database."] = "解不了数据库。";
-$a->strings["Could not create table."] = "无法创建表格。";
-$a->strings["Your Friendica site database has been installed."] = "您Friendica网站数据库被安装了。";
-$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "您可能要手工地进口文件「database.sql」用phpmyadmin或mysql。";
-$a->strings["Please see the file \"INSTALL.txt\"."] = "请看文件「INSTALL.txt」";
-$a->strings["Database already in use."] = "数据库已经被使用。";
-$a->strings["System check"] = "系统检测";
-$a->strings["Next"] = "下";
-$a->strings["Check again"] = "再检测";
-$a->strings["Database connection"] = "数据库接通";
-$a->strings["In order to install Friendica we need to know how to connect to your database."] = "为安装Friendica我们要知道怎么连接您的数据库。";
-$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "你有关于这些设置有问题的话,请给互联网托管服务或者网页管理联系。";
-$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "您下边指定的数据库应该已经存在。如果还没有,请创建后继续。";
-$a->strings["Database Server Name"] = "数据库服务器名";
-$a->strings["Database Login Name"] = "数据库登录名";
-$a->strings["Database Login Password"] = "数据库登录密码";
-$a->strings["For security reasons the password must not be empty"] = "由于安全的原因,密码不能为空";
-$a->strings["Database Name"] = "数据库名字";
-$a->strings["Site administrator email address"] = "网站行政人员邮件地址";
-$a->strings["Your account email address must match this in order to use the web admin panel."] = "您账户邮件地址必要符合这个为用网站处理仪表板";
-$a->strings["Please select a default timezone for your website"] = "请选择您网站的默认时区";
-$a->strings["Site settings"] = "网站设置";
-$a->strings["System Language:"] = "系统语言:";
-$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "为 Friendica 安装界面及邮件发送设置默认语言。";
-$a->strings["The database configuration file \"config/local.ini.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "";
-$a->strings["<h1>What next</h1>"] = "<h1>下步是什么</h1>";
-$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the worker."] = "";
-$a->strings["Go to your new Friendica node <a href=\"%s/register\">registration page</a> and register as new user. Remember to use the same email you have entered as administrator email. This will allow you to enter the site admin panel."] = "";
-$a->strings["Profile not found."] = "找不到简介。";
-$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "这会偶尔地发生熟人双方都要求和已经批准的时候。";
-$a->strings["Response from remote site was not understood."] = "遥网站的回答明白不了。";
-$a->strings["Unexpected response from remote site: "] = "居然回答从遥网站:";
-$a->strings["Confirmation completed successfully."] = "确认成功完成。";
-$a->strings["Temporary failure. Please wait and try again."] = "临时失败。请等一会,再试。";
-$a->strings["Introduction failed or was revoked."] = "介绍失败或被吊销。";
-$a->strings["Remote site reported: "] = "远程站点报告:";
-$a->strings["Unable to set contact photo."] = "无法设置联系人照片。";
-$a->strings["No user record found for '%s' "] = "找不到「%s」的用户记录";
-$a->strings["Our site encryption key is apparently messed up."] = "看起来我们的加密钥匙失灵了。";
-$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "空的URL供应,或URL解不了码。";
-$a->strings["Contact record was not found for you on our site."] = "无法在本站点为您找到联系人记录。";
-$a->strings["Site public key not available in contact record for URL %s."] = "没有网站公开钥匙在熟人记录在URL%s。";
-$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "身份证明由您的系统是在我们的重做。你再试应该运行。";
-$a->strings["Unable to set your contact credentials on our system."] = "不能创作您的熟人证件在我们的系统。";
-$a->strings["Unable to update your contact profile details on our system"] = "不能更新您的熟人简介消息在我们的系统";
-$a->strings["[Name Withheld]"] = "[名字拒给]";
-$a->strings["People Search - %s"] = "搜索人 - %s";
-$a->strings["Forum Search - %s"] = "搜索论坛 - %s";
-$a->strings["Connect"] = "连接";
-$a->strings["No matches"] = "没有结果";
-$a->strings["Manage Identities and/or Pages"] = "管理身份或页";
-$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "交替不同同一人或社会/组页合用您的账户或给您「管理」批准";
-$a->strings["Select an identity to manage: "] = "选择同一个人管理:";
-$a->strings["Do you really want to delete this video?"] = "你真的想删除这个视频吗?";
-$a->strings["Delete Video"] = "删除视频";
-$a->strings["Public access denied."] = "拒绝公开访问";
-$a->strings["No videos selected"] = "没有视频被选择";
-$a->strings["Access to this item is restricted."] = "这个项目使用权限的。";
-$a->strings["View Album"] = "看照片册";
-$a->strings["Recent Videos"] = "最近的视频";
-$a->strings["Upload New Videos"] = "上传新视频";
-$a->strings["Only logged in users are permitted to perform a probing."] = "只有已登录用户才被允许进行探测。";
-$a->strings["Location:"] = "位置:";
-$a->strings["Gender:"] = "性别:";
-$a->strings["Status:"] = "现状:";
-$a->strings["Homepage:"] = "主页:";
-$a->strings["About:"] = "关于:";
-$a->strings["Find on this site"] = "找在这网站";
-$a->strings["Results for:"] = "结果:";
-$a->strings["Site Directory"] = "网站目录";
-$a->strings["No entries (some entries may be hidden)."] = "没有文章(有的文章会被隐藏)。";
-$a->strings["No keywords to match. Please add keywords to your default profile."] = "没有符合的关键字。请在您的默认简介加关键字。";
-$a->strings["is interested in:"] = "感兴趣对:";
-$a->strings["Profile Match"] = "简介符合";
-$a->strings["everybody"] = "每人";
-$a->strings["Account"] = "帐户";
-$a->strings["Profiles"] = "简介";
-$a->strings["Additional features"] = "附加的特点";
-$a->strings["Display"] = "显示";
-$a->strings["Social Networks"] = "社会化网络";
-$a->strings["Addons"] = "插件";
-$a->strings["Delegations"] = "代表";
-$a->strings["Connected apps"] = "连接着应用";
-$a->strings["Export personal data"] = "导出个人信息";
-$a->strings["Remove account"] = "删除账户";
-$a->strings["Missing some important data!"] = "缺失一些重要数据!";
-$a->strings["Update"] = "更新";
-$a->strings["Failed to connect with email account using the settings provided."] = "不能连接电子邮件账户用输入的设置。";
-$a->strings["Email settings updated."] = "电子邮件设置更新了";
-$a->strings["Features updated"] = "特点更新了";
-$a->strings["Relocate message has been send to your contacts"] = "调动消息已发送给您的联系人";
-$a->strings["Passwords do not match. Password unchanged."] = "密码不匹配。密码没改变。";
-$a->strings["Empty passwords are not allowed. Password unchanged."] = "空的密码禁止。密码没未改变的。";
-$a->strings["The new password has been exposed in a public data dump, please choose another."] = "新密码已暴露在公共数据转储中,请务必另选密码。";
-$a->strings["Wrong password."] = "密码不正确。";
-$a->strings["Password changed."] = "密码变化了。";
-$a->strings["Password update failed. Please try again."] = "密码更新失败了。请再试。";
-$a->strings[" Please use a shorter name."] = " 请用一个更短的名字。";
-$a->strings[" Name too short."] = " 名字过短。";
-$a->strings["Wrong Password"] = "密码不正确";
-$a->strings["Invalid email."] = "无效的邮箱。";
-$a->strings["Cannot change to that email."] = "无法更改到此电子邮件地址。";
-$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "私人评坛没有隐私批准。默认隐私组用者。";
-$a->strings["Private forum has no privacy permissions and no default privacy group."] = "私人评坛没有隐私批准或默认隐私组。";
-$a->strings["Settings updated."] = "设置更新了。";
-$a->strings["Add application"] = "加入应用";
-$a->strings["Save Settings"] = "保存设置";
-$a->strings["Consumer Key"] = "钥匙(Consumer Key)";
-$a->strings["Consumer Secret"] = "密码(Consumer Secret)";
-$a->strings["Redirect"] = "重定向";
-$a->strings["Icon url"] = "图符URL";
-$a->strings["You can't edit this application."] = "您不能编辑这个应用。";
-$a->strings["Connected Apps"] = "连接着应用";
-$a->strings["Edit"] = "编辑";
-$a->strings["Client key starts with"] = "客户钥匙头字是";
-$a->strings["No name"] = "无名";
-$a->strings["Remove authorization"] = "撤消权能";
-$a->strings["No Addon settings configured"] = "无插件设置配置完成";
-$a->strings["Addon Settings"] = "插件设置";
-$a->strings["Off"] = "关";
-$a->strings["On"] = "开";
-$a->strings["Additional Features"] = "附加特性";
-$a->strings["Diaspora"] = "Diaspora";
-$a->strings["enabled"] = "能够做的";
-$a->strings["disabled"] = "已停用";
-$a->strings["Built-in support for %s connectivity is %s"] = "包括的支持为%s连通性是%s";
-$a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)";
-$a->strings["Email access is disabled on this site."] = "电子邮件访问在这个站上被禁用。";
-$a->strings["General Social Media Settings"] = "通用社交媒体设置";
-$a->strings["Disable Content Warning"] = "禁用内容警告";
-$a->strings["Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn't affect any other content filtering you eventually set up."] = "";
-$a->strings["Disable intelligent shortening"] = "";
-$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "";
-$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "自动关注任何 GNU Social (OStatus) 关注者/提及者";
-$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "";
-$a->strings["Default group for OStatus contacts"] = "用于 OStatus 联系人的默认组";
-$a->strings["Your legacy GNU Social account"] = "您遗留的 GNU Social 账户";
-$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "如果您在这里输入您旧的 GNU Social/Statusnet 账号名 (格式示例 user@domain.tld) ,您的联系人列表将会被自动添加。完成后该字段将被清空。";
-$a->strings["Repair OStatus subscriptions"] = "修复 OStatus 订阅";
-$a->strings["Email/Mailbox Setup"] = "邮件收件箱设置";
-$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "如果您想用这股服务(可选的)跟邮件熟人交流,请指定怎么连通您的收件箱。";
-$a->strings["Last successful email check:"] = "上个成功收件箱检查:";
-$a->strings["IMAP server name:"] = "IMAP服务器名字:";
-$a->strings["IMAP port:"] = "IMAP服务器端口:";
-$a->strings["Security:"] = "安全:";
-$a->strings["None"] = "没有";
-$a->strings["Email login name:"] = "邮件登录名:";
-$a->strings["Email password:"] = "邮件密码:";
-$a->strings["Reply-to address:"] = "回答地址:";
-$a->strings["Send public posts to all email contacts:"] = "发送公开文章给所有的邮件联系人:";
-$a->strings["Action after import:"] = "进口后行动:";
-$a->strings["Mark as seen"] = "标注看过";
-$a->strings["Move to folder"] = "搬到文件夹";
-$a->strings["Move to folder:"] = "搬到文件夹:";
-$a->strings["No special theme for mobile devices"] = "没专门适合手机的主题";
-$a->strings["%s - (Unsupported)"] = "%s - (不支持的)";
-$a->strings["%s - (Experimental)"] = "%s - (实验性)";
-$a->strings["Display Settings"] = "表示设置";
-$a->strings["Display Theme:"] = "显示主题:";
-$a->strings["Mobile Theme:"] = "手机主题:";
-$a->strings["Suppress warning of insecure networks"] = "";
-$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "";
-$a->strings["Update browser every xx seconds"] = "更新游览器每XX秒";
-$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "至少 10 秒。输入 -1 禁用。";
-$a->strings["Number of items to display per page:"] = "每页表示多少项目:";
-$a->strings["Maximum of 100 items"] = "最多100项目";
-$a->strings["Number of items to display per page when viewed from mobile device:"] = "用手机看一页展示多少项目:";
-$a->strings["Don't show emoticons"] = "不显示表情符号";
-$a->strings["Calendar"] = "日历";
-$a->strings["Beginning of week:"] = "一周的开始:";
-$a->strings["Don't show notices"] = "不显示提示";
-$a->strings["Infinite scroll"] = "无限的滚动";
-$a->strings["Automatic updates only at the top of the network page"] = "仅在返回到网页头部时自动更新";
-$a->strings["When disabled, the network page is updated all the time, which could be confusing while reading."] = "禁用后,网页将会一直更新,这可能会对阅读造成干扰。";
-$a->strings["Bandwidth Saver Mode"] = "";
-$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "当启用时,嵌入的内容不会在自动更新时显示,它们只在页面重载时显示。";
-$a->strings["Smart Threading"] = "";
-$a->strings["When enabled, suppress extraneous thread indentation while keeping it where it matters. Only works if threading is available and enabled."] = "";
-$a->strings["General Theme Settings"] = "通用主题设置";
-$a->strings["Custom Theme Settings"] = "自定义主题设置";
-$a->strings["Content Settings"] = "内容设置";
-$a->strings["Unable to find your profile. Please contact your admin."] = "无法找到您的简介。请联系您的管理员。";
-$a->strings["Account Types"] = "账户类型";
-$a->strings["Personal Page Subtypes"] = "";
-$a->strings["Community Forum Subtypes"] = "";
-$a->strings["Personal Page"] = "个人页面";
-$a->strings["Account for a personal profile."] = "";
-$a->strings["Organisation Page"] = "组织页面";
-$a->strings["Account for an organisation that automatically approves contact requests as \"Followers\"."] = "";
-$a->strings["News Page"] = "新闻页面";
-$a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "";
-$a->strings["Community Forum"] = "社区论坛";
-$a->strings["Account for community discussions."] = "";
-$a->strings["Normal Account Page"] = "标准账户页面";
-$a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "";
-$a->strings["Soapbox Page"] = "演讲台页";
-$a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "";
-$a->strings["Public Forum"] = "公共论坛";
-$a->strings["Automatically approves all contact requests."] = "自动批准所有联系人请求。";
-$a->strings["Automatic Friend Page"] = "自动朋友页";
-$a->strings["Account for a popular profile that automatically approves contact requests as \"Friends\"."] = "";
-$a->strings["Private Forum [Experimental]"] = "隐私评坛[实验性的 ]";
-$a->strings["Requires manual approval of contact requests."] = "需要人工批准联系人请求。";
-$a->strings["OpenID:"] = "OpenID:";
-$a->strings["(Optional) Allow this OpenID to login to this account."] = "(可选的) 允许这个 OpenID 登录这个账户。";
-$a->strings["Publish your default profile in your local site directory?"] = "出版您默认简介在您当地的网站目录?";
-$a->strings["Your profile will be published in this node's <a href=\"%s\">local directory</a>. Your profile details may be publicly visible depending on the system settings."] = "";
-$a->strings["No"] = "否";
-$a->strings["Publish your default profile in the global social directory?"] = "出版您默认简介在综合社会目录?";
-$a->strings["Your profile will be published in the global friendica directories (e.g. <a href=\"%s\">%s</a>). Your profile will be visible in public."] = "";
-$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "在您的默认简介中向访问者隐藏您的联系人/朋友列表?";
-$a->strings["Your contact list won't be shown in your default profile page. You can decide to show your contact list separately for each additional profile you create"] = "您的联系人列表将不会在您的默认简介页面展示。您可以决定在您自建的各附加简介中分别展示您的联系人列表";
-$a->strings["Hide your profile details from anonymous viewers?"] = "对匿名访问者隐藏详细简介?";
-$a->strings["Anonymous visitors will only see your profile picture, your display name and the nickname you are using on your profile page. Your public posts and replies will still be accessible by other means."] = "";
-$a->strings["Allow friends to post to your profile page?"] = "允许朋友们贴文章在您的简介页?";
-$a->strings["Your contacts may write posts on your profile wall. These posts will be distributed to your contacts"] = "";
-$a->strings["Allow friends to tag your posts?"] = "允许朋友们标签您的文章?";
-$a->strings["Your contacts can add additional tags to your posts."] = "您的联系人可以为您的帖子添加额外的标签。";
-$a->strings["Allow us to suggest you as a potential friend to new members?"] = "允许我们建议您潜力朋友给新成员?";
-$a->strings["If you like, Friendica may suggest new members to add you as a contact."] = "如果您愿意,Friendica 可能会建议新成员将您添加为联系人。";
-$a->strings["Permit unknown people to send you private mail?"] = "允许生人寄给您私人邮件?";
-$a->strings["Friendica network users may send you private messages even if they are not in your contact list."] = "Friendica 网络用户可能会向您发送私人信息,即使他们不在您的联系人列表中。";
-$a->strings["Profile is <strong>not published</strong>."] = "简介<strong>未发布</strong>。";
-$a->strings["Your Identity Address is <strong>'%s'</strong> or '%s'."] = "你的身份地址是 <strong>'%s'</strong> 或者 '%s'.";
-$a->strings["Automatically expire posts after this many days:"] = "在这数天后自动使文章过期:";
-$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "如果为空,文章不会过期。过期的文章将被删除";
-$a->strings["Advanced expiration settings"] = "高级过期设置";
-$a->strings["Advanced Expiration"] = "先进的过期";
-$a->strings["Expire posts:"] = "把文章过期:";
-$a->strings["Expire personal notes:"] = "把私人便条过期:";
-$a->strings["Expire starred posts:"] = "把星的文章过期:";
-$a->strings["Expire photos:"] = "把照片过期:";
-$a->strings["Only expire posts by others:"] = "只别人的文章过期:";
-$a->strings["Account Settings"] = "帐户设置";
-$a->strings["Password Settings"] = "密码设置";
-$a->strings["New Password:"] = "新密码:";
-$a->strings["Confirm:"] = "确认:";
-$a->strings["Leave password fields blank unless changing"] = "留空密码字段,除非要修改";
-$a->strings["Current Password:"] = "当前密码:";
-$a->strings["Your current password to confirm the changes"] = "你的当前密码,来确认修改";
-$a->strings["Password:"] = "密码:";
-$a->strings["Basic Settings"] = "基础设置";
-$a->strings["Full Name:"] = "全名:";
-$a->strings["Email Address:"] = "电子邮件地址:";
-$a->strings["Your Timezone:"] = "你的时区:";
-$a->strings["Your Language:"] = "你的语言:";
-$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "";
-$a->strings["Default Post Location:"] = "默认文章位置:";
-$a->strings["Use Browser Location:"] = "使用浏览器位置:";
-$a->strings["Security and Privacy Settings"] = "安全和隐私设置";
-$a->strings["Maximum Friend Requests/Day:"] = "每天最大朋友请求数:";
-$a->strings["(to prevent spam abuse)"] = "(用于防止垃圾信息滥用)";
-$a->strings["Default Post Permissions"] = "默认文章权限";
-$a->strings["(click to open/close)"] = "(点击来打开/关闭)";
-$a->strings["Show to Groups"] = "给组表示";
-$a->strings["Show to Contacts"] = "展示给联系人";
-$a->strings["Default Private Post"] = "默认私人文章";
-$a->strings["Default Public Post"] = "默认公开文章";
-$a->strings["Default Permissions for New Posts"] = "新文章的默认权限";
-$a->strings["Maximum private messages per day from unknown people:"] = "每天来自未知的人的私信:";
-$a->strings["Notification Settings"] = "通知设置";
-$a->strings["Send a notification email when:"] = "发一个消息要是:";
-$a->strings["You receive an introduction"] = "你收到一份介绍";
-$a->strings["Your introductions are confirmed"] = "你的介绍被确认了";
-$a->strings["Someone writes on your profile wall"] = "某人写在你的简历墙";
-$a->strings["Someone writes a followup comment"] = "某人写一个后续的评论";
-$a->strings["You receive a private message"] = "你收到一封私信";
-$a->strings["You receive a friend suggestion"] = "你受到一个朋友建议";
-$a->strings["You are tagged in a post"] = "你被在新闻标签";
-$a->strings["You are poked/prodded/etc. in a post"] = "您在文章被戳";
-$a->strings["Activate desktop notifications"] = "启用桌面通知";
-$a->strings["Show desktop popup on new notifications"] = "在有新的提示时显示桌面弹出窗口";
-$a->strings["Text-only notification emails"] = "纯文本通知邮件";
-$a->strings["Send text only notification emails, without the html part"] = "发送纯文本通知邮件,无 html 部分";
-$a->strings["Show detailled notifications"] = "显示详细通知";
-$a->strings["Per default, notifications are condensed to a single notification per item. When enabled every notification is displayed."] = "";
-$a->strings["Advanced Account/Page Type Settings"] = "专家账户/页种设置";
-$a->strings["Change the behaviour of this account for special situations"] = "把这个账户特别情况的时候行动变化";
-$a->strings["Relocate"] = "调动";
-$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "如果您调动这个简介从别的服务器但有的熟人没收到您的更新,尝试按这个钮。";
-$a->strings["Resend relocate message to contacts"] = "把调动信息寄给熟人";
-$a->strings["{0} wants to be your friend"] = "{0}想成为您的朋友";
-$a->strings["{0} sent you a message"] = "{0}发给您一个通信";
-$a->strings["{0} requested registration"] = "{0}要求注册";
-$a->strings["Remove term"] = "删除关键字";
-$a->strings["Saved Searches"] = "保存的搜索";
-$a->strings["Only logged in users are permitted to perform a search."] = "只有已登录的用户被允许进行搜索。";
-$a->strings["Too Many Requests"] = "过多请求";
-$a->strings["Only one search per minute is permitted for not logged in users."] = "对未登录的用户,每分钟只允许一条搜索。";
-$a->strings["No results."] = "没有结果。";
-$a->strings["Items tagged with: %s"] = "项目标记为:%s";
-$a->strings["Results for: %s"] = "";
-$a->strings["No contacts in common."] = "没有共同的联系人。";
-$a->strings["Common Friends"] = "普通朋友们";
-$a->strings["Login"] = "登录";
-$a->strings["The post was created"] = "文章创建了";
-$a->strings["add"] = "添加";
-$a->strings["Warning: This group contains %s member from a network that doesn't allow non public messages."] = [
-       0 => "警告:这个组包含 %s 来自不允许非公开消息的网络的成员。",
-];
-$a->strings["Messages in this group won't be send to these receivers."] = "这个组中的消息不会被发送至这些接收者。";
-$a->strings["No such group"] = "没有这个组";
-$a->strings["Group is empty"] = "组没有成员";
-$a->strings["Group: %s"] = "组:%s";
-$a->strings["Private messages to this person are at risk of public disclosure."] = "私人通信给这个人回被公开。";
-$a->strings["Invalid contact."] = "无效的联系人。";
-$a->strings["Commented Order"] = "评论时间顺序";
-$a->strings["Sort by Comment Date"] = "按评论日期顺序排列";
-$a->strings["Posted Order"] = "发布时间顺序";
-$a->strings["Sort by Post Date"] = "按发布日期顺序排列";
-$a->strings["Personal"] = "私人";
-$a->strings["Posts that mention or involve you"] = "提及你或你参与的文章";
-$a->strings["New"] = "新";
-$a->strings["Activity Stream - by date"] = "活动流-按日期";
-$a->strings["Shared Links"] = "共享的链接";
-$a->strings["Interesting Links"] = "有意思的超链接";
-$a->strings["Starred"] = "被星";
-$a->strings["Favourite Posts"] = "最喜欢的文章";
-$a->strings["Group created."] = "群组已创建。";
-$a->strings["Could not create group."] = "无法创建群组。";
-$a->strings["Group not found."] = "组找不到。";
-$a->strings["Group name changed."] = "组名变化了。";
-$a->strings["Save Group"] = "保存组";
-$a->strings["Filter"] = "";
-$a->strings["Create a group of contacts/friends."] = "创建一组联系人/朋友。";
-$a->strings["Group Name: "] = "组名:";
-$a->strings["Contacts not in any group"] = "不在任何组的联系人";
-$a->strings["Group removed."] = "组删除了。";
-$a->strings["Unable to remove group."] = "不能删除组。";
-$a->strings["Delete Group"] = "删除群组";
-$a->strings["Edit Group Name"] = "编辑群组名称";
-$a->strings["Members"] = "成员";
-$a->strings["All Contacts"] = "所有联系人";
-$a->strings["Remove contact from group"] = "";
-$a->strings["Click on a contact to add or remove."] = "单击联系人以添加或删除。";
-$a->strings["Add contact to group"] = "";
-$a->strings["Parent user not found."] = "未找到家长账户。";
-$a->strings["No parent user"] = "无家长账户";
-$a->strings["Parent Password:"] = "家长密码:";
-$a->strings["Please enter the password of the parent account to legitimize your request."] = "请为家长账户设置密码以使您的请求有效化。";
-$a->strings["Parent User"] = "家长账户";
-$a->strings["Parent users have total control about this account, including the account settings. Please double check whom you give this access."] = "";
-$a->strings["Delegate Page Management"] = "页代表管理";
-$a->strings["Delegates"] = "代表";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "代表会管理所有的方面这个账户/页除了基础账户配置以外。请别代表您私人账户给您没完全信的人。";
-$a->strings["Existing Page Delegates"] = "目前页代表";
-$a->strings["Potential Delegates"] = "潜力的代表";
-$a->strings["Remove"] = "移走";
-$a->strings["Add"] = "加";
-$a->strings["No entries."] = "没有项目。";
-$a->strings["Export account"] = "导出账户";
-$a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "导出你的账户信息和联系人。用这个功能来生成一个你的账户的备份,并且/或者把它移到另外一个服务器。";
-$a->strings["Export all"] = "导出全部";
-$a->strings["Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account (photos are not exported)"] = "导出你的账户信息、联系人和所有你的项目为 json 格式。可能会是一个很大的文件,并可能花费很多时间。用这个功能来做一个你的账户的全备份(照片不会被导出)";
-$a->strings["Resubscribing to OStatus contacts"] = "重新订阅 OStatus 联系人";
-$a->strings["Error"] = "错误";
-$a->strings["Done"] = "完成";
-$a->strings["Keep this window open until done."] = "保持窗口打开直到完成。";
-$a->strings["Access denied."] = "没有用权。";
-$a->strings["No contacts."] = "没有联系人。";
-$a->strings["Visit %s's profile [%s]"] = "看%s的简介[%s]";
-$a->strings["Contact wasn't found or can't be unfollowed."] = "找不到联系人或者不能关注联系人。";
-$a->strings["Contact unfollowed"] = "取消关注了的联系人";
-$a->strings["Submit Request"] = "提交要求";
-$a->strings["You aren't a friend of this contact."] = "你不是这个联系人的朋友。";
-$a->strings["Unfollowing is currently not supported by your network."] = "取消关注现在不被你的网络支持。";
-$a->strings["Disconnect/Unfollow"] = "断开连接/取消关注";
-$a->strings["Your Identity Address:"] = "你的身份地址:";
+$a->strings["Address"] = "地址";
 $a->strings["Profile URL"] = "简介 URL";
-$a->strings["Status Messages and Posts"] = "现状通知和文章";
-$a->strings["[Embedded content - reload page to view]"] = "[嵌入内容-重新加载页为看]";
-$a->strings["Registration successful. Please check your email for further instructions."] = "注册成功了。请咨询说明再您的收件箱。";
-$a->strings["Failed to send email message. Here your accout details:<br> login: %s<br> password: %s<br><br>You can change your password after login."] = "发送邮件失败。你的账户消息是:<br>用户名:%s<br> 密码: %s<br><br>。登录后能改密码。";
-$a->strings["Registration successful."] = "注册成功。";
-$a->strings["Your registration can not be processed."] = "处理不了您的注册。";
-$a->strings["Your registration is pending approval by the site owner."] = "您的注册等网页主的批准。";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "这个网站超过一天最多账户注册。请明天再试。";
-$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "您会(可选的)用OpenID填这个表格通过提供您的OpenID和点击「注册」。";
-$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "如果您没熟悉OpenID,请留空这个栏和填另些栏。";
-$a->strings["Your OpenID (optional): "] = "您的OpenID(可选的):";
-$a->strings["Include your profile in member directory?"] = "放您的简介再员目录?";
-$a->strings["Note for the admin"] = "给管理员的便条";
-$a->strings["Leave a message for the admin, why you want to join this node"] = "给管理员留条消息,为什么你想加入这个节点";
-$a->strings["Membership on this site is by invitation only."] = "会员身份在这个网站是光通过邀请。";
-$a->strings["Your invitation code: "] = "您的邀请码:";
-$a->strings["Registration"] = "注册";
-$a->strings["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "你的全名 (比如张三,真名或看起来是真名):";
-$a->strings["Your Email Address: (Initial information will be send there, so this has to be an existing address.)"] = "您的电子邮件地址:(初始信息将发送到这里,所以这必须是一个存在的地址。)";
-$a->strings["Leave empty for an auto generated password."] = "留空以使用自动生成的密码。";
-$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@%s</strong>'."] = "";
-$a->strings["Choose a nickname: "] = "选择昵称:";
-$a->strings["Register"] = "注册";
-$a->strings["Import"] = "";
-$a->strings["Import your profile to this friendica instance"] = "进口您的简介到这个friendica服务器";
-$a->strings["Terms of Service"] = "服务条款";
-$a->strings["Note: This node explicitly contains adult content"] = "";
-$a->strings["Invalid request identifier."] = "无效要求身份号。";
-$a->strings["Discard"] = "丢弃";
-$a->strings["Ignore"] = "忽视";
-$a->strings["Notifications"] = "通知";
-$a->strings["Network Notifications"] = "网络通知";
-$a->strings["System Notifications"] = "系统通知";
-$a->strings["Personal Notifications"] = "私人通知";
-$a->strings["Home Notifications"] = "主页通知";
-$a->strings["Show Ignored Requests"] = "显示被忽视的请求";
-$a->strings["Hide Ignored Requests"] = "隐藏被忽视的请求";
-$a->strings["Notification type:"] = "";
-$a->strings["Suggested by:"] = "";
-$a->strings["Hide this contact from others"] = "对其他人隐藏这个联系人";
-$a->strings["Approve"] = "批准";
-$a->strings["Claims to be known to you: "] = "声称被您认识:";
-$a->strings["yes"] = "是";
-$a->strings["no"] = "否";
-$a->strings["Shall your connection be bidirectional or not?"] = "是否启用双向连接?";
-$a->strings["Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed."] = "";
-$a->strings["Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "";
-$a->strings["Accepting %s as a sharer allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "";
-$a->strings["Friend"] = "朋友";
-$a->strings["Sharer"] = "分享者";
-$a->strings["Subscriber"] = "订阅者";
-$a->strings["Tags:"] = "标签:";
-$a->strings["Network:"] = "网络";
-$a->strings["No introductions."] = "没有介绍。";
-$a->strings["Show unread"] = "显示未读";
-$a->strings["Show all"] = "显示全部";
-$a->strings["No more %s notifications."] = "没有更多的 %s 通知。";
-$a->strings["New Message"] = "新的消息";
-$a->strings["Unable to locate contact information."] = "无法找到联系人信息。";
-$a->strings["Do you really want to delete this message?"] = "您真的想删除这个通知吗?";
-$a->strings["Message deleted."] = "消息删除了。";
-$a->strings["Conversation removed."] = "交流删除了。";
-$a->strings["No messages."] = "没有消息";
-$a->strings["Message not available."] = "通信不可用的";
-$a->strings["Delete message"] = "删除消息";
-$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
-$a->strings["Delete conversation"] = "删除交谈";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "没可用的安全交通。您<strong>可能</strong>会在发送人的简介页会回答。";
-$a->strings["Send Reply"] = "发回答";
-$a->strings["Unknown sender - %s"] = "生发送人-%s";
-$a->strings["You and %s"] = "您和%s";
-$a->strings["%s and You"] = "%s和您";
-$a->strings["%d message"] = [
-       0 => "%d通知",
-];
-$a->strings["No profile"] = "无简介";
-$a->strings["Subscribing to OStatus contacts"] = "正在订阅 OStatus 联系人";
-$a->strings["No contact provided."] = "未提供联系人。";
-$a->strings["Couldn't fetch information for contact."] = "无法获取联系人信息。";
-$a->strings["Couldn't fetch friends for contact."] = "无法取得联系人的朋友信息。";
-$a->strings["success"] = "成功";
-$a->strings["failed"] = "失败";
-$a->strings["ignored"] = "已忽视的";
-$a->strings["%1\$s welcomes %2\$s"] = "%1\$s欢迎%2\$s";
-$a->strings["User deleted their account"] = "";
-$a->strings["On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups."] = "";
-$a->strings["The user id is %d"] = "用户 id 为 %d";
-$a->strings["Remove My Account"] = "删除我的账户";
-$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "这要完全删除您的账户。这一做过,就不能恢复。";
-$a->strings["Please enter your password for verification:"] = "请输入密码为确认:";
-$a->strings["Tag removed"] = "标签去除了";
-$a->strings["Remove Item Tag"] = "去除项目标签";
-$a->strings["Select a tag to remove: "] = "选择删除一个标签: ";
-$a->strings["Welcome to %s"] = "%s欢迎你";
-$a->strings["Do you really want to delete this suggestion?"] = "您真的想删除这个建议吗?";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "没有建议。如果这是新网站,请24小时后再试。";
-$a->strings["Ignore/Hide"] = "忽视/隐藏";
-$a->strings["- select -"] = "-选择-";
-$a->strings["This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s."] = "";
-$a->strings["Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more about the Friendica project."] = "请浏览 <a href=\"https://friendi.ca\">Friendi.ca</a> 以了解更多关于 Friendica 项目的信息。";
-$a->strings["Bug reports and issues: please visit"] = "Bug 及 issues 报告:请访问";
-$a->strings["the bugtracker at github"] = "在 github 上的错误追踪系统";
-$a->strings["Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"] = "";
-$a->strings["Installed addons/apps:"] = "已安装的插件/应用:";
-$a->strings["No installed addons/apps"] = "没有已安装的插件或应用";
-$a->strings["Read about the <a href=\"%1\$s/tos\">Terms of Service</a> of this node."] = "阅读此节点的<a href=\"%1\$s/tos\">服务条款</a>。";
-$a->strings["On this server the following remote servers are blocked."] = "在这个服务器上以下远程服务器被封禁了。";
-$a->strings["Blocked domain"] = "被封禁的域名";
-$a->strings["Reason for the block"] = "封禁原因";
-$a->strings["Access to this profile has been restricted."] = "使用权这个简介被限制了.";
-$a->strings["Invalid request."] = "无效请求。";
-$a->strings["Image exceeds size limit of %s"] = "图片超过 %s 的大小限制";
-$a->strings["Unable to process image."] = "处理不了图像.";
-$a->strings["Wall Photos"] = "墙照片";
-$a->strings["Image upload failed."] = "图像上载失败了.";
-$a->strings["Welcome to Friendica"] = "Friendica欢迎你";
-$a->strings["New Member Checklist"] = "新成员清单";
-$a->strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear."] = "我们想提供一些建议和链接以助于让你有愉快的经历。点击任意一项访问相应的网页。在你注册之后,到这个页面的链接会在你的主页显示两周,之后悄声地消失。";
-$a->strings["Getting Started"] = "入门";
-$a->strings["Friendica Walk-Through"] = "Friendica 漫游";
-$a->strings["On your <em>Quick Start</em> page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join."] = "在你的<em>快速上手</em>页-找到一个简要的对你的简介和网络标签的介绍,创建一些新的连接,并找一些群组加入。";
-$a->strings["Go to Your Settings"] = "您的设置";
-$a->strings["On your <em>Settings</em> page -  change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web."] = "在你的<em>设置</em>页 - 改变你最初的密码。同时也记住你的身份地址。这看起来像一个电子邮件地址 - 并且在这个自由的社交网络交友时会有用。";
-$a->strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "校对别的设置,特别是隐私设置。一个未发布的目录项目是跟未出版的电话号码一样。平时,你可能应该出版你的目录项目-除非都你的朋友们和可交的朋友们已经知道确切地怎么找你。";
-$a->strings["Upload Profile Photo"] = "上传简历照片";
-$a->strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "上传一张简历照片除非你已经做过。研究表明有真正自己的照片的人比没有的交朋友们可能多十倍。";
-$a->strings["Edit Your Profile"] = "编辑您的简介";
-$a->strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "随意编你的<strong>公开的</strong>简历。评论设置为藏起来你的朋友表和简历过陌生来客。";
-$a->strings["Profile Keywords"] = "简介关键字";
-$a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "指定一些公开关键字在您的默认简介描述您兴趣。我们可能找得了别人有相似兴趣和建议友谊。";
-$a->strings["Connecting"] = "连接着";
-$a->strings["Importing Emails"] = "进口着邮件";
-$a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "输入你电子邮件使用信息在插销设置页,要是你想用你的电子邮件进口和互动朋友们或邮件表。";
-$a->strings["Go to Your Contacts Page"] = "转到您的联系人页面";
-$a->strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog."] = "您熟人页是您门口为管理熟人和连接朋友们在别的网络。典型您输入他的地址或者网站URL在<em>添加新熟人</em>对话框。";
-$a->strings["Go to Your Site's Directory"] = "您网站的目录";
-$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "目录页让你在这个网络或者其他的联邦的站点找到其他人。在他们的简介页找一个<em>连接</em>或<em>关注</em>链接。如果需要,提供你自己的身份地址。";
-$a->strings["Finding New People"] = "找新人";
-$a->strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "在熟人页的工具栏有一些工具为找新朋友们。我们会使人们相配按名或兴趣,和以网络关系作为提醒建议的根据。在新网站,朋友建议平常开始24小时后。";
-$a->strings["Groups"] = "组";
-$a->strings["Group Your Contacts"] = "给你的联系人分组";
-$a->strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "您交朋友们后,组织他们分私人交流组在您熟人页的边栏,您会私下地跟组交流在您的网络页。";
-$a->strings["Why Aren't My Posts Public?"] = "我文章怎么没公开的?";
-$a->strings["Friendica respects your privacy. By default, your posts will only show up to people you've added as friends. For more information, see the help section from the link above."] = "Friendica尊敬您的隐私。默认是您文章只被您朋友们看。更多消息在帮助部分在上面的链接。";
-$a->strings["Getting Help"] = "获取帮助";
-$a->strings["Go to the Help Section"] = "看帮助部分";
-$a->strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "我们<strong>帮助</strong>页可查阅到详情关于别的编程特点和资源。";
-$a->strings["No valid account found."] = "找不到效的账户。";
-$a->strings["Password reset request issued. Check your email."] = "重设密码要求发布了。核对您的收件箱。";
-$a->strings["\n\t\tDear %1\$s,\n\t\t\tA request was recently received at \"%2\$s\" to reset your account\n\t\tpassword. In order to confirm this request, please select the verification link\n\t\tbelow or paste it into your web browser address bar.\n\n\t\tIf you did NOT request this change, please DO NOT follow the link\n\t\tprovided and ignore and/or delete this email, the request will expire shortly.\n\n\t\tYour password will not be changed unless we can verify that you\n\t\tissued this request."] = "";
-$a->strings["\n\t\tFollow this link soon to verify your identity:\n\n\t\t%1\$s\n\n\t\tYou will then receive a follow-up message containing the new password.\n\t\tYou may change that password from your account settings page after logging in.\n\n\t\tThe login details are as follows:\n\n\t\tSite Location:\t%2\$s\n\t\tLogin Name:\t%3\$s"] = "";
-$a->strings["Password reset requested at %s"] = "重设密码要求被发布%s";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "要求确认不了。(您可能已经提交它。)重设密码失败了。";
-$a->strings["Request has expired, please make a new one."] = "请求超时,请重试。";
-$a->strings["Forgot your Password?"] = "忘记你的密码吗?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "输入您的邮件地址和提交为重置密码。然后核对收件箱看别的说明。";
-$a->strings["Nickname or Email: "] = "昵称或邮件地址:";
-$a->strings["Reset"] = "复位";
-$a->strings["Password Reset"] = "复位密码";
-$a->strings["Your password has been reset as requested."] = "您的密码被重设如要求的。";
-$a->strings["Your new password is"] = "你的新的密码是";
-$a->strings["Save or copy your new password - and then"] = "保存或复制新密码-之后";
-$a->strings["click here to login"] = "点击这里登录";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "您的密码可以在成功登录后在<em>设置</em>页修改。";
-$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tYour password has been changed as requested. Please retain this\n\t\t\tinformation for your records (or change your password immediately to\n\t\t\tsomething that you will remember).\n\t\t"] = "";
-$a->strings["\n\t\t\tYour login details are as follows:\n\n\t\t\tSite Location:\t%1\$s\n\t\t\tLogin Name:\t%2\$s\n\t\t\tPassword:\t%3\$s\n\n\t\t\tYou may change that password from your account settings page after logging in.\n\t\t"] = "";
-$a->strings["Your password has been changed at %s"] = "您密码被变化在%s";
-$a->strings["Source input"] = "源码输入";
-$a->strings["BBCode::toPlaintext"] = "";
-$a->strings["BBCode::convert (raw HTML)"] = "";
-$a->strings["BBCode::convert"] = "";
-$a->strings["BBCode::convert => HTML::toBBCode"] = "";
-$a->strings["BBCode::toMarkdown"] = "";
-$a->strings["BBCode::toMarkdown => Markdown::convert"] = "";
-$a->strings["BBCode::toMarkdown => Markdown::toBBCode"] = "";
-$a->strings["BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"] = "";
-$a->strings["Source input \\x28Diaspora format\\x29"] = "";
-$a->strings["Markdown::toBBCode"] = "";
-$a->strings["Raw HTML input"] = "原始 HTML 输入";
-$a->strings["HTML Input"] = "HTML 输入";
-$a->strings["HTML::toBBCode"] = "";
-$a->strings["HTML::toPlaintext"] = "";
-$a->strings["Source text"] = "源文本";
-$a->strings["BBCode"] = "";
-$a->strings["Markdown"] = "Markdown";
-$a->strings["HTML"] = "HTML";
-$a->strings["Theme settings updated."] = "主题设置更新了。";
-$a->strings["Information"] = "资料";
-$a->strings["Overview"] = "概览";
-$a->strings["Federation Statistics"] = "联邦网络统计";
-$a->strings["Configuration"] = "配置";
-$a->strings["Site"] = "网站";
-$a->strings["Users"] = "用户";
-$a->strings["Themes"] = "主题";
-$a->strings["Database"] = "数据库";
-$a->strings["DB updates"] = "数据库更新";
-$a->strings["Inspect Queue"] = "检查队列";
-$a->strings["Inspect worker Queue"] = "";
-$a->strings["Tools"] = "工具";
-$a->strings["Contact Blocklist"] = "联系人屏蔽列表";
-$a->strings["Server Blocklist"] = "服务器屏蔽列表";
-$a->strings["Delete Item"] = "删除项目";
-$a->strings["Logs"] = "记录";
-$a->strings["View Logs"] = "查看日志";
-$a->strings["Diagnostics"] = "诊断";
-$a->strings["PHP Info"] = "PHP Info";
-$a->strings["probe address"] = "探测地址";
-$a->strings["check webfinger"] = "检查 webfinger";
-$a->strings["Admin"] = "管理";
-$a->strings["Addon Features"] = "插件特性";
-$a->strings["User registrations waiting for confirmation"] = "用户注册等确认";
-$a->strings["Administration"] = "管理";
-$a->strings["Display Terms of Service"] = "显示服务条款";
-$a->strings["Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page."] = "";
-$a->strings["Display Privacy Statement"] = "显示隐私说明";
-$a->strings["Show some informations regarding the needed information to operate the node according e.g. to <a href=\"%s\" target=\"_blank\">EU-GDPR</a>."] = "";
-$a->strings["Privacy Statement Preview"] = "隐私声明预览";
-$a->strings["The Terms of Service"] = "服务条款";
-$a->strings["Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below."] = "";
-$a->strings["The blocked domain"] = "被封禁的域名";
-$a->strings["The reason why you blocked this domain."] = "封禁这个域名的原因。";
-$a->strings["Delete domain"] = "删除域名";
-$a->strings["Check to delete this entry from the blocklist"] = "选中以从列表中删除此条目";
-$a->strings["This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server."] = "";
-$a->strings["The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily."] = "";
-$a->strings["Add new entry to block list"] = "添加新条目到屏蔽列表";
-$a->strings["Server Domain"] = "服务器域名";
-$a->strings["The domain of the new server to add to the block list. Do not include the protocol."] = "需要添加到服务器屏蔽列表的服务器的域名。请勿包括协议。";
-$a->strings["Block reason"] = "封禁原因";
-$a->strings["Add Entry"] = "添加条目";
-$a->strings["Save changes to the blocklist"] = "保存变更到屏蔽列表";
-$a->strings["Current Entries in the Blocklist"] = "屏蔽列表中的当前条目";
-$a->strings["Delete entry from blocklist"] = "删除屏蔽列表中的条目";
-$a->strings["Delete entry from blocklist?"] = "从屏蔽列表删除条目?";
-$a->strings["Server added to blocklist."] = "服务器已添加到屏蔽列表。";
-$a->strings["Site blocklist updated."] = "站点屏蔽列表已更新。";
-$a->strings["The contact has been blocked from the node"] = "该联系人已被本节点屏蔽。";
-$a->strings["Could not find any contact entry for this URL (%s)"] = "";
-$a->strings["%s contact unblocked"] = [
-       0 => "",
-];
-$a->strings["Remote Contact Blocklist"] = "";
-$a->strings["This page allows you to prevent any message from a remote contact to reach your node."] = "";
-$a->strings["Block Remote Contact"] = "";
-$a->strings["select all"] = "全选";
-$a->strings["select none"] = "";
-$a->strings["Block"] = "屏蔽";
-$a->strings["Unblock"] = "解除屏蔽";
-$a->strings["No remote contact is blocked from this node."] = "";
-$a->strings["Blocked Remote Contacts"] = "";
-$a->strings["Block New Remote Contact"] = "";
-$a->strings["Photo"] = "照片";
-$a->strings["Address"] = "地址";
 $a->strings["%s total blocked contact"] = [
        0 => "",
 ];
@@ -1036,20 +281,23 @@ $a->strings["Currently this node is aware of %d nodes with %d registered users f
 $a->strings["ID"] = "ID";
 $a->strings["Recipient Name"] = "接收者的名字";
 $a->strings["Recipient Profile"] = "接收者的简介";
+$a->strings["Network"] = "网络";
 $a->strings["Created"] = "已创建";
 $a->strings["Last Tried"] = "上次尝试";
 $a->strings["This page lists the content of the queue for outgoing postings. These are postings the initial delivery failed for. They will be resend later and eventually deleted if the delivery fails permanently."] = "";
+$a->strings["Inspect Deferred Worker Queue"] = "";
+$a->strings["This page lists the deferred worker jobs. This are jobs that couldn't be executed at the first time."] = "";
 $a->strings["Inspect Worker Queue"] = "";
+$a->strings["This page lists the currently queued worker jobs. These jobs are handled by the worker cronjob you've set up during install."] = "";
 $a->strings["Job Parameters"] = "";
 $a->strings["Priority"] = "";
-$a->strings["This page lists the currently queued worker jobs. These jobs are handled by the worker cronjob you've set up during install."] = "";
 $a->strings["Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href=\"%s\">here</a> for a guide that may be helpful converting the table engines. You may also use the command <tt>php bin/console.php dbstructure toinnodb</tt> of your Friendica installation for an automatic conversion.<br />"] = "";
 $a->strings["There is a new version of Friendica available for download. Your current version is %1\$s, upstream version is %2\$s"] = "有新的 Friendica 版本可供下载。您当前的版本为 %1\$s,上游版本为 %2\$s";
 $a->strings["The database update failed. Please run \"php bin/console.php dbstructure update\" from the command line and have a look at the errors that might appear."] = "";
 $a->strings["The worker was never executed. Please check your database structure!"] = "";
 $a->strings["The last worker execution was on %s UTC. This is older than one hour. Please check your crontab settings."] = "";
-$a->strings["Friendica's configuration now is stored in config/local.ini.php, please copy config/local-sample.ini.php and move your config from <code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for help with the transition."] = "";
-$a->strings["<a href=\"%s\">%s</a> is not reachable on your system. This is a servere configuration issue that prevents the communication.. See <a href=\"%s\">the installation page</a> for help."] = "";
+$a->strings["Friendica's configuration now is stored in config/local.config.php, please copy config/local-sample.config.php and move your config from <code>.htconfig.php</code>. See <a href=\"%s\">the Config help page</a> for help with the transition."] = "";
+$a->strings["<a href=\"%s\">%s</a> is not reachable on your system. This is a severe configuration issue that prevents server to server communication. See <a href=\"%s\">the installation page</a> for help."] = "";
 $a->strings["Normal Account"] = "正常帐户";
 $a->strings["Automatic Follower Account"] = "";
 $a->strings["Public Forum Account"] = "";
@@ -1057,6 +305,7 @@ $a->strings["Automatic Friend Account"] = "自动朋友帐户";
 $a->strings["Blog Account"] = "博客账户";
 $a->strings["Private Forum Account"] = "";
 $a->strings["Message queues"] = "通知排队";
+$a->strings["Server Settings"] = "";
 $a->strings["Summary"] = "概要";
 $a->strings["Registered users"] = "注册的用户";
 $a->strings["Pending registrations"] = "未决的注册";
@@ -1064,6 +313,7 @@ $a->strings["Version"] = "版本";
 $a->strings["Active addons"] = "激活插件";
 $a->strings["Can not parse base url. Must have at least <scheme>://<domain>"] = "不能分析基础URL。至少要<scheme>://<domain>";
 $a->strings["Site settings updated."] = "网站设置更新了。";
+$a->strings["No special theme for mobile devices"] = "没专门适合手机的主题";
 $a->strings["No community page for local users"] = "";
 $a->strings["No community page"] = "没有社会页";
 $a->strings["Public postings from users of this site"] = "本网站用户的公开文章";
@@ -1086,7 +336,9 @@ $a->strings["Self-signed certificate, use SSL for local links only (discouraged)
 $a->strings["Don't check"] = "请勿检查";
 $a->strings["check the stable version"] = "检查稳定版";
 $a->strings["check the development version"] = "检查开发版本";
+$a->strings["None"] = "没有";
 $a->strings["Republish users to directory"] = "";
+$a->strings["Registration"] = "注册";
 $a->strings["File upload"] = "文件上传";
 $a->strings["Policies"] = "政策";
 $a->strings["Advanced"] = "高级";
@@ -1094,7 +346,8 @@ $a->strings["Auto Discovered Contact Directory"] = "";
 $a->strings["Performance"] = "性能";
 $a->strings["Worker"] = "";
 $a->strings["Message Relay"] = "讯息中继";
-$a->strings["Relocate - WARNING: advanced function. Could make this server unreachable."] = "重定位 - 警告:高级功能。可能会让这个服务器不可达。";
+$a->strings["Relocate Instance"] = "";
+$a->strings["Warning! Advanced function. Could make this server unreachable."] = "";
 $a->strings["Site name"] = "网页名字";
 $a->strings["Host name"] = "服务器名";
 $a->strings["Sender Email"] = "寄主邮件";
@@ -1119,6 +372,8 @@ $a->strings["Hide help entry from navigation menu"] = "在导航菜单隐藏帮
 $a->strings["Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly."] = "在导航菜单中隐藏帮助页面的菜单条目。您仍然可以通过输入「/help」直接访问。";
 $a->strings["Single user instance"] = "单用户网站";
 $a->strings["Make this instance multi-user or single-user for the named user"] = "弄这网站多用户或单用户为选择的用户";
+$a->strings["File storage backend"] = "";
+$a->strings["Backend used to store uploaded files data"] = "";
 $a->strings["Maximum image size"] = "图片最大尺寸";
 $a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "最多上传照相的字节。默认是零,意思是无限。";
 $a->strings["Maximum image length"] = "最大图片大小";
@@ -1163,18 +418,18 @@ $a->strings["Allow Users to set remote_self"] = "允许用户用遥远的自身"
 $a->strings["With checking this, every user is allowed to mark every contact as a remote_self in the repair contact dialog. Setting this flag on a contact causes mirroring every posting of that contact in the users stream."] = "选择这个之后,用户们允许表明熟人当遥远的自身在熟人修理页。遥远的自身所有文章被复制到用户文章流。";
 $a->strings["Block multiple registrations"] = "阻止多次注册";
 $a->strings["Disallow users to register additional accounts for use as pages."] = "不允许用户注册别的账户为当页。";
-$a->strings["OpenID support"] = "OpenID 支持";
-$a->strings["OpenID support for registration and logins."] = "支持使用 OpenID 注册和登录。";
-$a->strings["Fullname check"] = "全名核实";
-$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "让用户注册的时候放空格姓名中间,省得垃圾注册。";
+$a->strings["Disable OpenID"] = "";
+$a->strings["Disable OpenID support for registration and logins."] = "";
+$a->strings["No Fullname check"] = "";
+$a->strings["Allow users to register without a space between the first name and the last name in their full name."] = "";
 $a->strings["Community pages for visitors"] = "";
 $a->strings["Which community pages should be available for visitors. Local users always see both pages."] = "";
 $a->strings["Posts per user on community page"] = "个用户文章数量在社会页";
 $a->strings["The maximum number of posts per user on the community page. (Not valid for 'Global Community')"] = "一个用户最多文章在社会页。(无效在“全球社会”)";
-$a->strings["Enable OStatus support"] = "启用 OStatus 支持";
-$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "提供内置的 OStatus(StatusNet、GNU Social 等)兼容性。所有 OStatus 的通信是公开的,所以会偶尔显示隐私警告。";
-$a->strings["Only import OStatus threads from our contacts"] = "";
-$a->strings["Normally we import every content from our OStatus contacts. With this option we only store threads that are started by a contact that is known on our system."] = "";
+$a->strings["Disable OStatus support"] = "";
+$a->strings["Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "";
+$a->strings["Only import OStatus/ActivityPub threads from our contacts"] = "";
+$a->strings["Normally we import every content from our OStatus and ActivityPub contacts. With this option we only store threads that are started by a contact that is known on our system."] = "";
 $a->strings["OStatus support can only be enabled if threading is enabled."] = "";
 $a->strings["Diaspora support can't be enabled because Friendica was installed into a sub directory."] = "Diaspora 支持无法启用,因为 Friendica 被安装到了一个子目录。";
 $a->strings["Enable Diaspora support"] = "启用 Diaspora 支持";
@@ -1219,6 +474,8 @@ $a->strings["Lifespan of remote items"] = "";
 $a->strings["When the database cleanup is enabled, this defines the days after which remote items will be deleted. Own items, and marked or filed items are always kept. 0 disables this behaviour."] = "";
 $a->strings["Lifespan of unclaimed items"] = "";
 $a->strings["When the database cleanup is enabled, this defines the days after which unclaimed remote items (mostly content from the relay) will be deleted. Default value is 90 days. Defaults to the general lifespan value of remote items if set to 0."] = "";
+$a->strings["Lifespan of raw conversation data"] = "";
+$a->strings["The conversation data is used for ActivityPub and OStatus, as well as for debug purposes. It should be safe to remove it after 14 days, default is 90 days."] = "";
 $a->strings["Path to item cache"] = "路线到项目缓存";
 $a->strings["The item caches buffers generated bbcode and external images."] = "";
 $a->strings["Cache duration in seconds"] = "缓存时间秒";
@@ -1280,13 +537,22 @@ $a->strings["Registration details for %s"] = "注册信息为%s";
 $a->strings["%s user blocked/unblocked"] = [
        0 => "",
 ];
+$a->strings["You can't remove yourself"] = "";
 $a->strings["%s user deleted"] = [
        0 => "%s 用户被删除了",
 ];
 $a->strings["User '%s' deleted"] = "用户 '%s' 被删除了";
 $a->strings["User '%s' unblocked"] = "用户“%s”已解除屏蔽";
 $a->strings["User '%s' blocked"] = "用户“%s”已屏蔽";
+$a->strings["Normal Account Page"] = "标准账户页面";
+$a->strings["Soapbox Page"] = "演讲台页";
+$a->strings["Public Forum"] = "公共论坛";
+$a->strings["Automatic Friend Page"] = "自动朋友页";
 $a->strings["Private Forum"] = "";
+$a->strings["Personal Page"] = "个人页面";
+$a->strings["Organisation Page"] = "组织页面";
+$a->strings["News Page"] = "新闻页面";
+$a->strings["Community Forum"] = "社区论坛";
 $a->strings["Email"] = "电子邮件";
 $a->strings["Register date"] = "注册日期";
 $a->strings["Last login"] = "上次登录";
@@ -1298,12 +564,13 @@ $a->strings["User waiting for permanent deletion"] = "用户等待长久删除";
 $a->strings["Request date"] = "要求日期";
 $a->strings["No registrations."] = "没有注册。";
 $a->strings["Note from the user"] = "";
+$a->strings["Approve"] = "批准";
 $a->strings["Deny"] = "否定";
 $a->strings["User blocked"] = "";
 $a->strings["Site admin"] = "网站管理员";
 $a->strings["Account expired"] = "帐户过期了";
 $a->strings["New User"] = "新用户";
-$a->strings["Deleted since"] = "删除从";
+$a->strings["Permanent deletion"] = "";
 $a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "特定的用户被删除!\\n\\n什么这些用户放在这个网站被永远删除!\\n\\n您肯定吗?";
 $a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "用户{0}将被删除!\\n\\n什么这个用户放在这个网站被永远删除!\\n\\n您肯定吗?";
 $a->strings["Name of the new user."] = "新用户的名字。";
@@ -1315,6 +582,7 @@ $a->strings["Addon %s enabled."] = "插件 %s 已启用。";
 $a->strings["Disable"] = "停用";
 $a->strings["Enable"] = "使能用";
 $a->strings["Toggle"] = "肘节";
+$a->strings["Settings"] = "设置";
 $a->strings["Author: "] = "作者:";
 $a->strings["Maintainer: "] = "维护者:";
 $a->strings["Reload active addons"] = "重新加载可用插件";
@@ -1337,90 +605,54 @@ $a->strings["PHP logging"] = "PHP 日志";
 $a->strings["To temporarily enable logging of PHP errors and warnings you can prepend the following to the index.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."] = "";
 $a->strings["Error trying to open <strong>%1\$s</strong> log file.\\r\\n<br/>Check to see if file %1\$s exist and is readable."] = "打开  <strong>%1\$s</strong> 日志文件出错。\\r\\n <br/> 请检查 %1\$s 文件是否存在并且可读。";
 $a->strings["Couldn't open <strong>%1\$s</strong> log file.\\r\\n<br/>Check to see if file %1\$s is readable."] = "无法打开 <strong>%1\$s</strong> 日志文件。\\r\\n <br/> 请检查 %1\$s 文件是否可读。";
+$a->strings["Off"] = "关";
+$a->strings["On"] = "开";
 $a->strings["Lock feature %s"] = "锁定特性 %s";
 $a->strings["Manage Additional Features"] = "管理附加特性";
-$a->strings["OpenID protocol error. No ID returned."] = "OpenID协议错误。没ID还。 ";
-$a->strings["Account not found and OpenID registration is not permitted on this site."] = "找不到账户和OpenID注册不允许。";
-$a->strings["Login failed."] = "登录失败。";
-$a->strings["This introduction has already been accepted."] = "这个介绍已经接受了。";
-$a->strings["Profile location is not valid or does not contain profile information."] = "简介位置失效或不包含简介信息。";
-$a->strings["Warning: profile location has no identifiable owner name."] = "警告:简介位置没有可设别的主名。";
-$a->strings["Warning: profile location has no profile photo."] = "警告:简介位置没有简介图。";
-$a->strings["%d required parameter was not found at the given location"] = [
-       0 => "%d需要的参数没找到在输入的位置。",
-];
-$a->strings["Introduction complete."] = "介绍完成的。";
-$a->strings["Unrecoverable protocol error."] = "不能恢复的协议错误";
-$a->strings["Profile unavailable."] = "简介无效";
-$a->strings["%s has received too many connection requests today."] = "%s今天已经受到了太多联络要求";
-$a->strings["Spam protection measures have been invoked."] = "垃圾保护措施被用了。";
-$a->strings["Friends are advised to please try again in 24 hours."] = "朋友们被建议请24小时后再试。";
-$a->strings["Invalid locator"] = "无效找到物";
-$a->strings["You have already introduced yourself here."] = "您已经自我介绍这儿。";
-$a->strings["Apparently you are already friends with %s."] = "看上去您已经是%s的朋友。";
-$a->strings["Invalid profile URL."] = "无效的简介URL。";
-$a->strings["Disallowed profile URL."] = "不允许的简介地址.";
-$a->strings["Failed to update contact record."] = "更新联系人记录失败。";
-$a->strings["Your introduction has been sent."] = "您的介绍发布了。";
-$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "无法为您的网络完成远程订阅。请直接在您的系统上订阅。";
-$a->strings["Please login to confirm introduction."] = "请登录以确认介绍。";
-$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "当前登录的身份不正确。请登录到<strong>这个</strong>用户。";
-$a->strings["Confirm"] = "确认";
-$a->strings["Hide this contact"] = "隐藏这个联系人";
-$a->strings["Welcome home %s."] = "欢迎%s。";
-$a->strings["Please confirm your introduction/connection request to %s."] = "请确认您的介绍/联络要求给%s。";
-$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "请从以下支持的通信网络之一输入你的 “身份地址”:";
-$a->strings["If you are not yet a member of the free social web, <a href=\"%s\">follow this link to find a public Friendica site and join us today</a>."] = "如果您还不是自由社交网络用户中的一员,<a href=\"%s\"> 请通过此链接查找公共 Friendica 站点并在今天加入我们吧 </a>。";
-$a->strings["Friend/Connection Request"] = "朋友/连接请求";
-$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"] = "例如:jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de";
-$a->strings["Please answer the following:"] = "请回答下述的:";
-$a->strings["Does %s know you?"] = "%s是否认识你?";
-$a->strings["Add a personal note:"] = "添加一个个人便条:";
-$a->strings["Friendica"] = "Friendica";
-$a->strings["GNU Social (Pleroma, Mastodon)"] = "GNU Social (Pleroma, Mastodon)";
-$a->strings["Diaspora (Socialhome, Hubzilla)"] = "Diaspora (Socialhome, Hubzilla)";
-$a->strings[" - please do not use this form.  Instead, enter %s into your Diaspora search bar."] = " - 请别用这个表格。而是在你的 Diaspora 搜索栏输入 %s.";
+$a->strings["No friends to display."] = "没有朋友展示。";
+$a->strings["Connect"] = "连接";
 $a->strings["Authorize application connection"] = "授权应用连接";
 $a->strings["Return to your app and insert this Securty Code:"] = "回归您的应用和输入这个安全密码:";
 $a->strings["Please login to continue."] = "请登录以继续。";
 $a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "你要授权这个应用访问你的文章和联系人,及/或为你创建新的文章吗?";
-$a->strings["Image uploaded but image cropping failed."] = "照片上传去了,但修剪失灵。";
-$a->strings["Image size reduction [%s] failed."] = "照片减少[%s]失灵。";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "万一新照片一会出现,换档重新加载或者成为空浏览器高速缓存。";
-$a->strings["Unable to process image"] = "不能处理照片";
-$a->strings["Upload File:"] = "上传文件:";
-$a->strings["Select a profile:"] = "选择一个简介";
-$a->strings["Upload"] = "上传";
-$a->strings["or"] = "或者";
-$a->strings["skip this step"] = "略过这步";
-$a->strings["select a photo from your photo albums"] = "从您的照片册选择一片。";
-$a->strings["Crop Image"] = "修剪照片";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "请调图片剪裁为最好看。";
-$a->strings["Done Editing"] = "编辑完成";
-$a->strings["Image uploaded successfully."] = "照片成功地上传了。";
-$a->strings["Sorry, maybe your upload is bigger than the PHP configuration allows"] = "不好意思,可能你上传的是PHP设置允许的大";
-$a->strings["Or - did you try to upload an empty file?"] = "或者,你是不是上传空的文件?";
-$a->strings["File exceeds size limit of %s"] = "文件超过了 %s 的大小限制";
-$a->strings["File upload failed."] = "文件上传失败。";
-$a->strings["Unable to locate original post."] = "找不到当初的新闻";
-$a->strings["Empty post discarded."] = "空帖子被丢弃了。";
-$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "这个新闻是由%s,Friendica社会化网络成员之一,发给你。";
-$a->strings["You may visit them online at %s"] = "你可以网上拜访他在%s";
-$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "你不想受到这些新闻的话,请回答这个新闻给发者联系。";
-$a->strings["%s posted an update."] = "%s贴上一个新闻。";
-$a->strings["Help:"] = "帮助:";
-$a->strings["Move account"] = "把账户搬出";
-$a->strings["You can import an account from another Friendica server."] = "您会从别的Friendica服务器进口账户";
-$a->strings["You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here."] = "你需要从老服务器导出你的账户并在这里上传。我们会在这里重建你的账户,包括你所有的联系人。我们也会通知你的朋友们你搬到了这里。";
-$a->strings["This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"] = "这个特性是实验性的。我们不能从 OStatus 网络 (GNU Social/Statusnet) 或者 Diaspora 导入联系人";
-$a->strings["Account file"] = "账户文件";
-$a->strings["To export your account, go to \"Settings->Export your personal data\" and select \"Export account\""] = "为了导出你的账户,点击「设置→导出你的个人信息」和选择「导出账户」";
-$a->strings["Invalid profile identifier."] = "无限的简介标识符。";
-$a->strings["Profile Visibility Editor"] = "简介能见度编辑器。";
-$a->strings["Visible To"] = "能见被";
-$a->strings["All Contacts (with secure profile access)"] = "";
+$a->strings["No"] = "否";
+$a->strings["You must be logged in to use addons. "] = "您用插件前要登录";
+$a->strings["Applications"] = "应用";
+$a->strings["No installed applications."] = "没有安装的应用";
+$a->strings["Source input"] = "源码输入";
+$a->strings["BBCode::toPlaintext"] = "";
+$a->strings["BBCode::convert (raw HTML)"] = "";
+$a->strings["BBCode::convert"] = "";
+$a->strings["BBCode::convert => HTML::toBBCode"] = "";
+$a->strings["BBCode::toMarkdown"] = "";
+$a->strings["BBCode::toMarkdown => Markdown::convert"] = "";
+$a->strings["BBCode::toMarkdown => Markdown::toBBCode"] = "";
+$a->strings["BBCode::toMarkdown =>  Markdown::convert => HTML::toBBCode"] = "";
+$a->strings["Source input (Diaspora format)"] = "";
+$a->strings["Markdown::convert (raw HTML)"] = "";
+$a->strings["Markdown::convert"] = "";
+$a->strings["Markdown::toBBCode"] = "";
+$a->strings["Raw HTML input"] = "原始 HTML 输入";
+$a->strings["HTML Input"] = "HTML 输入";
+$a->strings["HTML::toBBCode"] = "";
+$a->strings["HTML::toBBCode => BBCode::convert"] = "";
+$a->strings["HTML::toBBCode => BBCode::convert (raw HTML)"] = "";
+$a->strings["HTML::toMarkdown"] = "";
+$a->strings["HTML::toPlaintext"] = "";
+$a->strings["Source text"] = "源文本";
+$a->strings["BBCode"] = "";
+$a->strings["Markdown"] = "Markdown";
+$a->strings["HTML"] = "HTML";
+$a->strings["Login"] = "登录";
+$a->strings["Bad Request"] = "";
+$a->strings["The post was created"] = "文章创建了";
+$a->strings["Access denied."] = "没有用权。";
+$a->strings["Page not found."] = "页发现。";
+$a->strings["Access to this profile has been restricted."] = "使用权这个简介被限制了.";
+$a->strings["Events"] = "事件";
 $a->strings["View"] = "查看";
 $a->strings["Previous"] = "上";
+$a->strings["Next"] = "下";
 $a->strings["today"] = "今天";
 $a->strings["month"] = "月";
 $a->strings["week"] = "星期";
@@ -1430,164 +662,207 @@ $a->strings["User not found"] = "找不到用户";
 $a->strings["This calendar format is not supported"] = "这个日历格式不被支持";
 $a->strings["No exportable data found"] = "找不到可导出的数据";
 $a->strings["calendar"] = "日历";
-$a->strings["Account approved."] = "账户已被批准。";
-$a->strings["Registration revoked for %s"] = "撤销了 %s 的注册";
-$a->strings["Please login."] = "请登录。";
+$a->strings["No contacts in common."] = "没有共同的联系人。";
+$a->strings["Common Friends"] = "普通朋友们";
+$a->strings["Public access denied."] = "拒绝公开访问";
+$a->strings["Community option not available."] = "社区选项不可用。";
+$a->strings["Not available."] = "不可用的";
+$a->strings["Local Community"] = "本地社区";
+$a->strings["Posts from local users on this server"] = "";
+$a->strings["Global Community"] = "全球社区";
+$a->strings["Posts from users of the whole federated network"] = "";
+$a->strings["No results."] = "没有结果。";
+$a->strings["This community stream shows all public posts received by this node. They may not reflect the opinions of this node’s users."] = "";
+$a->strings["Credits"] = "贡献";
+$a->strings["Friendica is a community project, that would not be possible without the help of many people. Here is a list of those who have contributed to the code or the translation of Friendica. Thank you all!"] = "Friendica 是一个社区项目,如果没有许多人的努力她将无法实现。这里列出了那些为代码作出贡献或者参与本地化翻译的人们。感谢大家的努力!";
+$a->strings["Contact settings applied."] = "联系人设置已应用。";
+$a->strings["Contact update failed."] = "联系人更新失败。";
+$a->strings["Contact not found."] = "没有找到联系人。";
+$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>警告:此为进阶</strong>,如果您输入不正确的信息,您也许无法与这位联系人的正常通讯。";
+$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "请<strong>立即</strong>用后退按钮如果您不确定怎么用这页";
+$a->strings["No mirroring"] = "没有复制";
+$a->strings["Mirror as forwarded posting"] = "复制为传达文章";
+$a->strings["Mirror as my own posting"] = "复制为我自己的文章";
+$a->strings["Return to contact editor"] = "返回到联系人编辑器";
+$a->strings["Refetch contact data"] = "重新获取联系人数据";
+$a->strings["Submit"] = "提交";
+$a->strings["Remote Self"] = "遥远的自身";
+$a->strings["Mirror postings from this contact"] = "把这个熟人的文章复制。";
+$a->strings["Mark this contact as remote_self, this will cause friendica to repost new entries from this contact."] = "表明这个熟人当遥远的自身。Friendica要把这个熟人的新的文章复制。";
+$a->strings["Account Nickname"] = "帐户昵称";
+$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname越过名/昵称";
+$a->strings["Account URL"] = "帐户URL";
+$a->strings["Friend Request URL"] = "朋友请求URL";
+$a->strings["Friend Confirm URL"] = "朋友确认URL";
+$a->strings["Notification Endpoint URL"] = "通知端URL";
+$a->strings["Poll/Feed URL"] = "喂URL";
+$a->strings["New photo from this URL"] = "新照片从这个URL";
+$a->strings["Parent user not found."] = "未找到家长账户。";
+$a->strings["No parent user"] = "无家长账户";
+$a->strings["Parent Password:"] = "家长密码:";
+$a->strings["Please enter the password of the parent account to legitimize your request."] = "请为家长账户设置密码以使您的请求有效化。";
+$a->strings["Parent User"] = "家长账户";
+$a->strings["Parent users have total control about this account, including the account settings. Please double check whom you give this access."] = "";
+$a->strings["Delegate Page Management"] = "页代表管理";
+$a->strings["Delegates"] = "代表";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "代表会管理所有的方面这个账户/页除了基础账户配置以外。请别代表您私人账户给您没完全信的人。";
+$a->strings["Existing Page Delegates"] = "目前页代表";
+$a->strings["Potential Delegates"] = "潜力的代表";
+$a->strings["Remove"] = "移走";
+$a->strings["Add"] = "加";
+$a->strings["No entries."] = "没有项目。";
+$a->strings["Profile not found."] = "找不到简介。";
+$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "这会偶尔地发生熟人双方都要求和已经批准的时候。";
+$a->strings["Response from remote site was not understood."] = "遥网站的回答明白不了。";
+$a->strings["Unexpected response from remote site: "] = "居然回答从遥网站:";
+$a->strings["Confirmation completed successfully."] = "确认成功完成。";
+$a->strings["Temporary failure. Please wait and try again."] = "临时失败。请等一会,再试。";
+$a->strings["Introduction failed or was revoked."] = "介绍失败或被吊销。";
+$a->strings["Remote site reported: "] = "远程站点报告:";
+$a->strings["Unable to set contact photo."] = "无法设置联系人照片。";
+$a->strings["No user record found for '%s' "] = "找不到「%s」的用户记录";
+$a->strings["Our site encryption key is apparently messed up."] = "看起来我们的加密钥匙失灵了。";
+$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "空的URL供应,或URL解不了码。";
+$a->strings["Contact record was not found for you on our site."] = "无法在本站点为您找到联系人记录。";
+$a->strings["Site public key not available in contact record for URL %s."] = "没有网站公开钥匙在熟人记录在URL%s。";
+$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "身份证明由您的系统是在我们的重做。你再试应该运行。";
+$a->strings["Unable to set your contact credentials on our system."] = "不能创作您的熟人证件在我们的系统。";
+$a->strings["Unable to update your contact profile details on our system"] = "不能更新您的熟人简介消息在我们的系统";
+$a->strings["[Name Withheld]"] = "[名字拒给]";
+$a->strings["%1\$s welcomes %2\$s"] = "%1\$s欢迎%2\$s";
+$a->strings["This introduction has already been accepted."] = "这个介绍已经接受了。";
+$a->strings["Profile location is not valid or does not contain profile information."] = "简介位置失效或不包含简介信息。";
+$a->strings["Warning: profile location has no identifiable owner name."] = "警告:简介位置没有可设别的主名。";
+$a->strings["Warning: profile location has no profile photo."] = "警告:简介位置没有简介图。";
+$a->strings["%d required parameter was not found at the given location"] = [
+       0 => "%d需要的参数没找到在输入的位置。",
+];
+$a->strings["Introduction complete."] = "介绍完成的。";
+$a->strings["Unrecoverable protocol error."] = "不能恢复的协议错误";
+$a->strings["Profile unavailable."] = "简介无效";
+$a->strings["%s has received too many connection requests today."] = "%s今天已经受到了太多联络要求";
+$a->strings["Spam protection measures have been invoked."] = "垃圾保护措施被用了。";
+$a->strings["Friends are advised to please try again in 24 hours."] = "朋友们被建议请24小时后再试。";
+$a->strings["Invalid locator"] = "无效找到物";
+$a->strings["You have already introduced yourself here."] = "您已经自我介绍这儿。";
+$a->strings["Apparently you are already friends with %s."] = "看上去您已经是%s的朋友。";
+$a->strings["Invalid profile URL."] = "无效的简介URL。";
+$a->strings["Disallowed profile URL."] = "不允许的简介地址.";
+$a->strings["Failed to update contact record."] = "更新联系人记录失败。";
+$a->strings["Your introduction has been sent."] = "您的介绍发布了。";
+$a->strings["Remote subscription can't be done for your network. Please subscribe directly on your system."] = "无法为您的网络完成远程订阅。请直接在您的系统上订阅。";
+$a->strings["Please login to confirm introduction."] = "请登录以确认介绍。";
+$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "当前登录的身份不正确。请登录到<strong>这个</strong>用户。";
+$a->strings["Confirm"] = "确认";
+$a->strings["Hide this contact"] = "隐藏这个联系人";
+$a->strings["Welcome home %s."] = "欢迎%s。";
+$a->strings["Please confirm your introduction/connection request to %s."] = "请确认您的介绍/联络要求给%s。";
+$a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "请从以下支持的通信网络之一输入你的 “身份地址”:";
+$a->strings["If you are not yet a member of the free social web, <a href=\"%s\">follow this link to find a public Friendica site and join us today</a>."] = "如果您还不是自由社交网络用户中的一员,<a href=\"%s\"> 请通过此链接查找公共 Friendica 站点并在今天加入我们吧 </a>。";
+$a->strings["Friend/Connection Request"] = "朋友/连接请求";
+$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"] = "例如:jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de";
+$a->strings["Please answer the following:"] = "请回答下述的:";
+$a->strings["Does %s know you?"] = "%s是否认识你?";
+$a->strings["Add a personal note:"] = "添加一个个人便条:";
+$a->strings["Friendica"] = "Friendica";
+$a->strings["GNU Social (Pleroma, Mastodon)"] = "GNU Social (Pleroma, Mastodon)";
+$a->strings["Diaspora (Socialhome, Hubzilla)"] = "Diaspora (Socialhome, Hubzilla)";
+$a->strings[" - please do not use this form.  Instead, enter %s into your Diaspora search bar."] = " - 请别用这个表格。而是在你的 Diaspora 搜索栏输入 %s.";
+$a->strings["Your Identity Address:"] = "你的身份地址:";
+$a->strings["Submit Request"] = "提交要求";
+$a->strings["Location:"] = "位置:";
+$a->strings["Gender:"] = "性别:";
+$a->strings["Status:"] = "现状:";
+$a->strings["Homepage:"] = "主页:";
+$a->strings["About:"] = "关于:";
+$a->strings["Global Directory"] = "综合目录";
+$a->strings["Find on this site"] = "找在这网站";
+$a->strings["Results for:"] = "结果:";
+$a->strings["Site Directory"] = "网站目录";
+$a->strings["Find"] = "搜索";
+$a->strings["No entries (some entries may be hidden)."] = "没有文章(有的文章会被隐藏)。";
+$a->strings["People Search - %s"] = "搜索人 - %s";
+$a->strings["Forum Search - %s"] = "搜索论坛 - %s";
+$a->strings["No matches"] = "没有结果";
 $a->strings["Item not found"] = "项目没找到";
 $a->strings["Edit post"] = "编辑文章";
+$a->strings["Save"] = "保存";
+$a->strings["Insert web link"] = "插入网页链接";
+$a->strings["web link"] = "网页链接";
+$a->strings["Insert video link"] = "插入视频链接";
+$a->strings["video link"] = "视频链接";
+$a->strings["Insert audio link"] = "插入音频链接";
+$a->strings["audio link"] = "音频链接";
 $a->strings["CC: email addresses"] = "抄送: 电子邮件地址";
 $a->strings["Example: bob@example.com, mary@example.com"] = "比如: li@example.com, wang@example.com";
-$a->strings["Applications"] = "应用";
-$a->strings["No installed applications."] = "没有安装的应用";
+$a->strings["Event can not end before it has started."] = "事件不能在开始前结束。";
+$a->strings["Event title and start time are required."] = "项目标题和开始时间是必须的。";
+$a->strings["Create New Event"] = "创建新的事件";
+$a->strings["Event details"] = "事件细节";
+$a->strings["Starting date and Title are required."] = "需要开始日期和标题。";
+$a->strings["Event Starts:"] = "事件开始:";
+$a->strings["Required"] = "必须的";
+$a->strings["Finish date/time is not known or not relevant"] = "结束日期/时间未知或无关";
+$a->strings["Event Finishes:"] = "事件结束:";
+$a->strings["Adjust for viewer timezone"] = "调整为浏览者的时区";
+$a->strings["Description:"] = "描述:";
+$a->strings["Title:"] = "标题:";
+$a->strings["Share this event"] = "分享这个事件";
+$a->strings["Basic"] = "基本";
+$a->strings["Permissions"] = "权限";
+$a->strings["Failed to remove event"] = "删除事件失败";
+$a->strings["Event removed"] = "事件已删除";
+$a->strings["Photos"] = "照片";
+$a->strings["Contact Photos"] = "联系人照片";
+$a->strings["Upload"] = "上传";
+$a->strings["Files"] = "文件";
 $a->strings["You must be logged in to use this module"] = "您必须登录才能使用此模块";
 $a->strings["Source URL"] = "源链接";
+$a->strings["- select -"] = "-选择-";
+$a->strings["The contact could not be added."] = "无法添加此联系人。";
+$a->strings["You already added this contact."] = "您已添加此联系人。";
+$a->strings["Diaspora support isn't enabled. Contact can't be added."] = "Diaspora 支持没被启用。无法添加联系人。";
+$a->strings["OStatus support is disabled. Contact can't be added."] = "OStatus 支持没被启用。无法添加联系人。";
+$a->strings["The network type couldn't be detected. Contact can't be added."] = "网络类型无法被检测。无法添加联系人。";
+$a->strings["Tags:"] = "标签:";
+$a->strings["Status Messages and Posts"] = "现状通知和文章";
+$a->strings["This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s."] = "";
+$a->strings["Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more about the Friendica project."] = "请浏览 <a href=\"https://friendi.ca\">Friendi.ca</a> 以了解更多关于 Friendica 项目的信息。";
+$a->strings["Bug reports and issues: please visit"] = "Bug 及 issues 报告:请访问";
+$a->strings["the bugtracker at github"] = "在 github 上的错误追踪系统";
+$a->strings["Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"] = "";
+$a->strings["Installed addons/apps:"] = "已安装的插件/应用:";
+$a->strings["No installed addons/apps"] = "没有已安装的插件或应用";
+$a->strings["Read about the <a href=\"%1\$s/tos\">Terms of Service</a> of this node."] = "阅读此节点的<a href=\"%1\$s/tos\">服务条款</a>。";
+$a->strings["On this server the following remote servers are blocked."] = "在这个服务器上以下远程服务器被封禁了。";
 $a->strings["Friend suggestion sent."] = "朋友建议发送了。";
 $a->strings["Suggest Friends"] = "推荐的朋友们";
 $a->strings["Suggest a friend for %s"] = "给 %s 推荐朋友";
-$a->strings["System down for maintenance"] = "系统关闭为了维持";
-$a->strings["Requested profile is not available."] = "要求的简介联系不上的。";
-$a->strings["%s's timeline"] = "%s 的时间线";
-$a->strings["%s's posts"] = "%s的帖子";
-$a->strings["%s's comments"] = "%s 的评论";
-$a->strings["No friends to display."] = "没有朋友展示。";
-$a->strings["%d contact edited."] = [
-       0 => "%d 个联系人被编辑了。",
-];
-$a->strings["Could not access contact record."] = "无法访问联系人记录。";
-$a->strings["Could not locate selected profile."] = "找不到选择的简介。";
-$a->strings["Contact updated."] = "联系人更新了。";
-$a->strings["Contact has been blocked"] = "联系人已被屏蔽";
-$a->strings["Contact has been unblocked"] = "联系人已被解除屏蔽";
-$a->strings["Contact has been ignored"] = "联系人已被忽视";
-$a->strings["Contact has been unignored"] = "联系人已被解除忽视";
-$a->strings["Contact has been archived"] = "联系人已存档";
-$a->strings["Contact has been unarchived"] = "联系人已被解除存档";
-$a->strings["Drop contact"] = "";
-$a->strings["Do you really want to delete this contact?"] = "您真的想删除这个联系人吗?";
-$a->strings["Contact has been removed."] = "联系人被删除了。";
-$a->strings["You are mutual friends with %s"] = "您和 %s 互为朋友";
-$a->strings["You are sharing with %s"] = "你正在和 %s 分享";
-$a->strings["%s is sharing with you"] = "%s 正在和你分享";
-$a->strings["Private communications are not available for this contact."] = "私人交流对这个联系人不可用。";
-$a->strings["Never"] = "从未";
-$a->strings["(Update was successful)"] = "(更新成功)";
-$a->strings["(Update was not successful)"] = "(更新不成功)";
-$a->strings["Suggest friends"] = "建议朋友们";
-$a->strings["Network type: %s"] = "网络种类: %s";
-$a->strings["Communications lost with this contact!"] = "和这个联系人的通信断开了!";
-$a->strings["Fetch further information for feeds"] = "拿文源别的消息";
-$a->strings["Fetch information like preview pictures, title and teaser from the feed item. You can activate this if the feed doesn't contain much text. Keywords are taken from the meta header in the feed item and are posted as hash tags."] = "";
-$a->strings["Fetch information"] = "取消息";
-$a->strings["Fetch keywords"] = "获取关键字";
-$a->strings["Fetch information and keywords"] = "取消息和关键词";
-$a->strings["Profile Visibility"] = "简历可见量";
-$a->strings["Contact Information / Notes"] = "联系人信息/便条";
-$a->strings["Contact Settings"] = "联系人设置";
-$a->strings["Contact"] = "联系人";
-$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "请选择简介您想给%s显示他安全地看您的简介的时候。";
-$a->strings["Their personal note"] = "";
-$a->strings["Edit contact notes"] = "编辑联系人便条";
-$a->strings["Block/Unblock contact"] = "屏蔽/解除屏蔽联系人";
-$a->strings["Ignore contact"] = "忽略联系人";
-$a->strings["Repair URL settings"] = "维修URL设置";
-$a->strings["View conversations"] = "看交流";
-$a->strings["Last update:"] = "上个更新:";
-$a->strings["Update public posts"] = "更新公开文章";
-$a->strings["Update now"] = "现在更新";
-$a->strings["Unignore"] = "取消忽视";
-$a->strings["Currently blocked"] = "现在被封禁的";
-$a->strings["Currently ignored"] = "现在不理的";
-$a->strings["Currently archived"] = "当前已存档";
-$a->strings["Awaiting connection acknowledge"] = "等待连接确认";
-$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "回答/喜欢关您公开文章<strong>会</strong>还可见的";
-$a->strings["Notification for new posts"] = "新消息提示";
-$a->strings["Send a notification of every new post of this contact"] = "发送这个联系人的每篇新文章的通知";
-$a->strings["Blacklisted keywords"] = "黑名单关键词";
-$a->strings["Comma separated list of keywords that should not be converted to hashtags, when \"Fetch information and keywords\" is selected"] = "逗号分的关键词不应该翻译成主题标签,如果“取消息和关键词”选择的。";
-$a->strings["XMPP:"] = "XMPP:";
-$a->strings["Actions"] = "";
-$a->strings["Suggestions"] = "建议";
-$a->strings["Suggest potential friends"] = "建议潜在朋友们";
-$a->strings["Show all contacts"] = "显示所有的联系人";
-$a->strings["Unblocked"] = "未屏蔽的";
-$a->strings["Only show unblocked contacts"] = "只显示没被屏蔽的联系人";
-$a->strings["Blocked"] = "被屏蔽的";
-$a->strings["Only show blocked contacts"] = "只显示被屏蔽的联系人";
-$a->strings["Ignored"] = "忽视的";
-$a->strings["Only show ignored contacts"] = "只显示忽略的联系人";
-$a->strings["Archived"] = "已存档";
-$a->strings["Only show archived contacts"] = "只显示已存档联系人";
-$a->strings["Hidden"] = "隐藏的";
-$a->strings["Only show hidden contacts"] = "只显示隐藏的联系人";
-$a->strings["Search your contacts"] = "搜索您的联系人";
-$a->strings["Archive"] = "存档";
-$a->strings["Unarchive"] = "从存档拿来";
-$a->strings["Batch Actions"] = "批量操作";
-$a->strings["Conversations started by this contact"] = "";
-$a->strings["Posts and Comments"] = "";
-$a->strings["Profile Details"] = "简介内容";
-$a->strings["View all contacts"] = "查看所有联系人";
-$a->strings["View all common friends"] = "查看所有公共好友";
-$a->strings["Advanced Contact Settings"] = "高级联系人设置";
-$a->strings["Mutual Friendship"] = "共同友谊";
-$a->strings["is a fan of yours"] = "是你的粉丝";
-$a->strings["you are a fan of"] = "您已关注";
-$a->strings["This is you"] = "这是你";
-$a->strings["Edit contact"] = "编辑联系人";
-$a->strings["Toggle Blocked status"] = "切换屏蔽状态";
-$a->strings["Toggle Ignored status"] = "交替忽视现状";
-$a->strings["Toggle Archive status"] = "交替档案现状";
-$a->strings["Delete contact"] = "删除联系人";
-$a->strings["Event can not end before it has started."] = "事件不能在开始前结束。";
-$a->strings["Event title and start time are required."] = "项目标题和开始时间是必须的。";
-$a->strings["Create New Event"] = "创建新的事件";
-$a->strings["Event details"] = "事件细节";
-$a->strings["Starting date and Title are required."] = "需要开始日期和标题。";
-$a->strings["Event Starts:"] = "事件开始:";
-$a->strings["Required"] = "必须的";
-$a->strings["Finish date/time is not known or not relevant"] = "结束日期/时间未知或无关";
-$a->strings["Event Finishes:"] = "事件结束:";
-$a->strings["Adjust for viewer timezone"] = "调整为浏览者的时区";
-$a->strings["Description:"] = "描述:";
-$a->strings["Title:"] = "标题:";
-$a->strings["Share this event"] = "分享这个事件";
-$a->strings["Basic"] = "基本";
-$a->strings["Permissions"] = "权限";
-$a->strings["Failed to remove event"] = "删除事件失败";
-$a->strings["Event removed"] = "事件已删除";
-$a->strings["The contact could not be added."] = "无法添加此联系人。";
-$a->strings["You already added this contact."] = "您已添加此联系人。";
-$a->strings["Diaspora support isn't enabled. Contact can't be added."] = "Diaspora 支持没被启用。无法添加联系人。";
-$a->strings["OStatus support is disabled. Contact can't be added."] = "OStatus 支持没被启用。无法添加联系人。";
-$a->strings["The network type couldn't be detected. Contact can't be added."] = "网络类型无法被检测。无法添加联系人。";
-$a->strings["Contact Photos"] = "联系人照片";
-$a->strings["Files"] = "文件";
-$a->strings["Post successful."] = "评论发表了。";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s关注着%2\$s的%3\$s";
-$a->strings["Credits"] = "贡献";
-$a->strings["Friendica is a community project, that would not be possible without the help of many people. Here is a list of those who have contributed to the code or the translation of Friendica. Thank you all!"] = "Friendica 是一个社区项目,如果没有许多人的努力她将无法实现。这里列出了那些为代码作出贡献或者参与本地化翻译的人们。感谢大家的努力!";
-$a->strings["Item not available."] = "项目不可用的";
-$a->strings["Item was not found."] = "找不到项目。";
-$a->strings["No more system notifications."] = "没别系统通知。";
-$a->strings["Community option not available."] = "社区选项不可用。";
-$a->strings["Not available."] = "不可用的";
-$a->strings["Local Community"] = "本地社区";
-$a->strings["Posts from local users on this server"] = "";
-$a->strings["Global Community"] = "全球社区";
-$a->strings["Posts from users of the whole federated network"] = "";
-$a->strings["This community stream shows all public posts received by this node. They may not reflect the opinions of this node’s users."] = "";
-$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-$a->strings["Time Conversion"] = "时间装换";
-$a->strings["Friendica provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica提供这个服务目的是分享项目跟别的网络和朋友们在别的时区。";
-$a->strings["UTC time: %s"] = "UTC时间: %s";
-$a->strings["Current timezone: %s"] = "现在时区: %s";
-$a->strings["Converted localtime: %s"] = "装换的当地时间:%s";
-$a->strings["Please select your timezone:"] = "请选择你的时区:";
-$a->strings["Poke/Prod"] = "戳";
-$a->strings["poke, prod or do other things to somebody"] = "把人家戳或别的行动";
-$a->strings["Recipient"] = "接受者";
-$a->strings["Choose what you wish to do to recipient"] = "选择您想把别人作";
-$a->strings["Make this post private"] = "使这个文章私人";
+$a->strings["Group created."] = "群组已创建。";
+$a->strings["Could not create group."] = "无法创建群组。";
+$a->strings["Group not found."] = "组找不到。";
+$a->strings["Group name changed."] = "组名变化了。";
+$a->strings["Permission denied"] = "权限不够";
+$a->strings["Save Group"] = "保存组";
+$a->strings["Filter"] = "";
+$a->strings["Create a group of contacts/friends."] = "创建一组联系人/朋友。";
+$a->strings["Group Name: "] = "组名:";
+$a->strings["Contacts not in any group"] = "不在任何组的联系人";
+$a->strings["Group removed."] = "组删除了。";
+$a->strings["Unable to remove group."] = "不能删除组。";
+$a->strings["Delete Group"] = "删除群组";
+$a->strings["Edit Group Name"] = "编辑群组名称";
+$a->strings["Members"] = "成员";
+$a->strings["All Contacts"] = "所有联系人";
+$a->strings["Group is empty"] = "组没有成员";
+$a->strings["Remove contact from group"] = "";
+$a->strings["Click on a contact to add or remove."] = "单击联系人以添加或删除。";
+$a->strings["Add contact to group"] = "";
+$a->strings["No profile"] = "无简介";
+$a->strings["Help:"] = "帮助:";
+$a->strings["Help"] = "帮助";
+$a->strings["Not Found"] = "未发现";
+$a->strings["Welcome to %s"] = "%s欢迎你";
 $a->strings["Total invitation limit exceeded."] = "邀请限超过了。";
 $a->strings["%s : Not a valid email address."] = "%s : 不是效的电子邮件地址.";
 $a->strings["Please join us on Friendica"] = "请加入我们再Friendica";
@@ -1605,146 +880,844 @@ $a->strings["Friendica sites all inter-connect to create a huge privacy-enhanced
 $a->strings["To accept this invitation, please visit and register at %s."] = "要接受这个邀请,请在 %s 访问并注册。";
 $a->strings["Send invitations"] = "发请柬";
 $a->strings["Enter email addresses, one per line:"] = "输入电子邮件地址,一行一个:";
+$a->strings["Your message:"] = "你的消息:";
 $a->strings["You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web."] = "在 Friendica,你被诚挚地邀请来加入我和其他亲密的朋友-并帮助我们创建更好的社会网络。";
 $a->strings["You will need to supply this invitation code: \$invite_code"] = "您要输入这个邀请密码:\$invite_code";
 $a->strings["Once you have registered, please connect with me via my profile page at:"] = "您一注册,请页跟我连接,用我的简介在:";
 $a->strings["For more information about the Friendica project and why we feel it is important, please visit http://friendi.ca"] = "欲了解更多关于 Friendica 项目的信息以及为什么我们认为这很重要,请访问 http://friendi.ca";
-$a->strings["Personal Notes"] = "私人便条";
-$a->strings["Profile deleted."] = "简介删除了。";
-$a->strings["Profile-"] = "简介-";
-$a->strings["New profile created."] = "新的简介已创建。";
-$a->strings["Profile unavailable to clone."] = "简介不可用为复制。";
-$a->strings["Profile Name is required."] = "必要简介名";
-$a->strings["Marital Status"] = "婚姻状况 ";
-$a->strings["Romantic Partner"] = "情人";
-$a->strings["Work/Employment"] = "工作";
-$a->strings["Religion"] = "宗教";
-$a->strings["Political Views"] = "政治观念";
-$a->strings["Gender"] = "性别";
-$a->strings["Sexual Preference"] = "性取向";
-$a->strings["XMPP"] = "XMPP";
-$a->strings["Homepage"] = "主页";
-$a->strings["Interests"] = "兴趣";
-$a->strings["Location"] = "位置";
-$a->strings["Profile updated."] = "简介更新了。";
-$a->strings["Hide contacts and friends:"] = "隐藏联系人和朋友:";
-$a->strings["Hide your contact/friend list from viewers of this profile?"] = "藏起来发现您的熟人/朋友单不让这个简介看着看?";
-$a->strings["Show more profile fields:"] = "显示更多简介内容:";
-$a->strings["Profile Actions"] = "";
-$a->strings["Edit Profile Details"] = "剪辑简介消息";
-$a->strings["Change Profile Photo"] = "改变简介照片";
-$a->strings["View this profile"] = "看这个简介";
-$a->strings["View all profiles"] = "";
-$a->strings["Edit visibility"] = "修改能见度";
-$a->strings["Create a new profile using these settings"] = "使用这些设置创建一份新的简介";
-$a->strings["Clone this profile"] = "复制这个简介";
-$a->strings["Delete this profile"] = "删除这个简介";
-$a->strings["Basic information"] = "基本信息";
-$a->strings["Profile picture"] = "头像";
-$a->strings["Preferences"] = "偏好";
-$a->strings["Status information"] = "状态信息";
-$a->strings["Additional information"] = "更多信息";
-$a->strings["Relation"] = "关系";
-$a->strings["Miscellaneous"] = "形形色色";
-$a->strings["Your Gender:"] = "你的性:";
-$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span>婚姻状况:";
-$a->strings["Sexual Preference:"] = "性取向:";
-$a->strings["Example: fishing photography software"] = "例如:钓鱼 照片 软件";
-$a->strings["Profile Name:"] = "简介名:";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "这是你的<strong>公开的</strong>简介。<br />它<strong>可能</strong>被所有的因特网用的看到。";
-$a->strings["Your Full Name:"] = "你的全名:";
-$a->strings["Title/Description:"] = "标题/描述:";
-$a->strings["Street Address:"] = "地址:";
-$a->strings["Locality/City:"] = "现场/城市:";
-$a->strings["Region/State:"] = "区域/省";
-$a->strings["Postal/Zip Code:"] = "邮政编码:";
-$a->strings["Country:"] = "国家:";
-$a->strings["Age: "] = "年纪:";
-$a->strings["Who: (if applicable)"] = "谁:(要是使用)";
-$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "比如:limou,李某,limou@example。com";
-$a->strings["Since [date]:"] = "追溯[日期]:";
-$a->strings["Tell us about yourself..."] = "给我们自我介绍...";
-$a->strings["XMPP (Jabber) address:"] = "XMPP (Jabber) 地址:";
-$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "这个 XMPP 地址会被传播到你的联系人从而他们可以关注你。";
-$a->strings["Homepage URL:"] = "主页URL:";
-$a->strings["Hometown:"] = "故乡:";
-$a->strings["Political Views:"] = "政治观念:";
-$a->strings["Religious Views:"] = " 宗教信仰 :";
-$a->strings["Public Keywords:"] = "公开关键字 :";
-$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(用于建议可能的朋友们,会被别人看)";
-$a->strings["Private Keywords:"] = "私人关键字";
-$a->strings["(Used for searching profiles, never shown to others)"] = "(用于搜索简介,没有给别人看)";
-$a->strings["Likes:"] = "喜欢:";
-$a->strings["Dislikes:"] = "不喜欢:";
-$a->strings["Musical interests"] = "音乐兴趣";
-$a->strings["Books, literature"] = "书,文学";
-$a->strings["Television"] = "电视";
-$a->strings["Film/dance/culture/entertainment"] = "电影/跳舞/文化/娱乐";
-$a->strings["Hobbies/Interests"] = "爱好/兴趣";
-$a->strings["Love/romance"] = "爱情/浪漫";
-$a->strings["Work/employment"] = "工作";
-$a->strings["School/education"] = "学院/教育";
-$a->strings["Contact information and Social Networks"] = "熟人信息和社会化网络";
-$a->strings["Profile Image"] = "简介图像";
-$a->strings["visible to everybody"] = "给打假可见的";
-$a->strings["Edit/Manage Profiles"] = "编辑/管理简介";
-$a->strings["Change profile photo"] = "换简介照片";
-$a->strings["Create New Profile"] = "创建新的简介";
-$a->strings["Photo Albums"] = "相册";
-$a->strings["Recent Photos"] = "最近的照片";
-$a->strings["Upload New Photos"] = "上传新照片";
-$a->strings["Contact information unavailable"] = "联系人信息不可用";
-$a->strings["Album not found."] = "取回不了相册.";
-$a->strings["Delete Album"] = "删除相册";
-$a->strings["Do you really want to delete this photo album and all its photos?"] = "您真的想删除这个相册和所有里面的照相吗?";
-$a->strings["Delete Photo"] = "删除照片";
-$a->strings["Do you really want to delete this photo?"] = "您真的想删除这个照相吗?";
-$a->strings["a photo"] = "一张照片";
-$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s被%3\$s标签在%2\$s";
-$a->strings["Image upload didn't complete, please try again"] = "图片上传未完成,请重试";
-$a->strings["Image file is missing"] = "缺少图片文件";
-$a->strings["Server can't accept new file upload at this time, please contact your administrator"] = "服务器目前无法接受新的上传文件,请联系您的管理员";
-$a->strings["Image file is empty."] = "图片文件空的。";
-$a->strings["No photos selected"] = "没有照片挑选了";
-$a->strings["Upload Photos"] = "上传照片";
-$a->strings["New album name: "] = "新册名:";
-$a->strings["or select existing album:"] = "";
-$a->strings["Do not show a status post for this upload"] = "别显示现状报到关于这个上传";
-$a->strings["Edit Album"] = "编照片册";
-$a->strings["Show Newest First"] = "先表示最新的";
-$a->strings["Show Oldest First"] = "先表示最老的";
-$a->strings["View Photo"] = "看照片";
-$a->strings["Permission denied. Access to this item may be restricted."] = "无权利。用这个项目可能受限制。";
-$a->strings["Photo not available"] = "不可获得的照片";
-$a->strings["View photo"] = "看照片";
-$a->strings["Edit photo"] = "编辑照片";
-$a->strings["Use as profile photo"] = "用为资料图";
-$a->strings["Private Message"] = "私人的新闻";
-$a->strings["View Full Size"] = "看全尺寸";
-$a->strings["Tags: "] = "标签:";
-$a->strings["[Remove any tag]"] = "[删除任何标签]";
-$a->strings["New album name"] = "新册名";
-$a->strings["Caption"] = "字幕";
-$a->strings["Add a Tag"] = "加标签";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "例子:@zhang, @Zhang_San, @li@example.com, #Beijing, #ktv";
-$a->strings["Do not rotate"] = "不要旋转";
-$a->strings["Rotate CW (right)"] = "顺时针地转动(左)";
-$a->strings["Rotate CCW (left)"] = "反顺时针地转动(右)";
-$a->strings["I like this (toggle)"] = "我喜欢这(交替)";
-$a->strings["I don't like this (toggle)"] = "我不喜欢这(交替)";
-$a->strings["Comment"] = "评论";
-$a->strings["Map"] = "地图";
-$a->strings["<span><a href=\"%s\" target=\"_blank\" class=\"shared-wall-item-name\">%s</a> wrote the following <a href=\"%s\" target=\"_blank\">post</a>"] = "";
+$a->strings["Unable to locate original post."] = "找不到当初的新闻";
+$a->strings["Empty post discarded."] = "空帖子被丢弃了。";
+$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "这个新闻是由%s,Friendica社会化网络成员之一,发给你。";
+$a->strings["You may visit them online at %s"] = "你可以网上拜访他在%s";
+$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "你不想受到这些新闻的话,请回答这个新闻给发者联系。";
+$a->strings["%s posted an update."] = "%s贴上一个新闻。";
+$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+$a->strings["Time Conversion"] = "时间装换";
+$a->strings["Friendica provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica提供这个服务目的是分享项目跟别的网络和朋友们在别的时区。";
+$a->strings["UTC time: %s"] = "UTC时间: %s";
+$a->strings["Current timezone: %s"] = "现在时区: %s";
+$a->strings["Converted localtime: %s"] = "装换的当地时间:%s";
+$a->strings["Please select your timezone:"] = "请选择你的时区:";
+$a->strings["Remote privacy information not available."] = "摇隐私信息无效";
+$a->strings["Visible to:"] = "可见给:";
+$a->strings["No valid account found."] = "找不到效的账户。";
+$a->strings["Password reset request issued. Check your email."] = "重设密码要求发布了。核对您的收件箱。";
+$a->strings["\n\t\tDear %1\$s,\n\t\t\tA request was recently received at \"%2\$s\" to reset your account\n\t\tpassword. In order to confirm this request, please select the verification link\n\t\tbelow or paste it into your web browser address bar.\n\n\t\tIf you did NOT request this change, please DO NOT follow the link\n\t\tprovided and ignore and/or delete this email, the request will expire shortly.\n\n\t\tYour password will not be changed unless we can verify that you\n\t\tissued this request."] = "";
+$a->strings["\n\t\tFollow this link soon to verify your identity:\n\n\t\t%1\$s\n\n\t\tYou will then receive a follow-up message containing the new password.\n\t\tYou may change that password from your account settings page after logging in.\n\n\t\tThe login details are as follows:\n\n\t\tSite Location:\t%2\$s\n\t\tLogin Name:\t%3\$s"] = "";
+$a->strings["Password reset requested at %s"] = "重设密码要求被发布%s";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "要求确认不了。(您可能已经提交它。)重设密码失败了。";
+$a->strings["Request has expired, please make a new one."] = "请求超时,请重试。";
+$a->strings["Forgot your Password?"] = "忘记你的密码吗?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "输入您的邮件地址和提交为重置密码。然后核对收件箱看别的说明。";
+$a->strings["Nickname or Email: "] = "昵称或邮件地址:";
+$a->strings["Reset"] = "复位";
+$a->strings["Password Reset"] = "复位密码";
+$a->strings["Your password has been reset as requested."] = "您的密码被重设如要求的。";
+$a->strings["Your new password is"] = "你的新的密码是";
+$a->strings["Save or copy your new password - and then"] = "保存或复制新密码-之后";
+$a->strings["click here to login"] = "点击这里登录";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "您的密码可以在成功登录后在<em>设置</em>页修改。";
+$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tYour password has been changed as requested. Please retain this\n\t\t\tinformation for your records (or change your password immediately to\n\t\t\tsomething that you will remember).\n\t\t"] = "";
+$a->strings["\n\t\t\tYour login details are as follows:\n\n\t\t\tSite Location:\t%1\$s\n\t\t\tLogin Name:\t%2\$s\n\t\t\tPassword:\t%3\$s\n\n\t\t\tYou may change that password from your account settings page after logging in.\n\t\t"] = "";
+$a->strings["Your password has been changed at %s"] = "您密码被变化在%s";
+$a->strings["System down for maintenance"] = "系统关闭为了维持";
+$a->strings["Manage Identities and/or Pages"] = "管理身份或页";
+$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "交替不同同一人或社会/组页合用您的账户或给您「管理」批准";
+$a->strings["Select an identity to manage: "] = "选择同一个人管理:";
+$a->strings["No keywords to match. Please add keywords to your default profile."] = "没有符合的关键字。请在您的默认简介加关键字。";
+$a->strings["first"] = "首先";
+$a->strings["next"] = "下个";
+$a->strings["Profile Match"] = "简介符合";
+$a->strings["New Message"] = "新的消息";
+$a->strings["No recipient selected."] = "没有选择的接受者。";
+$a->strings["Unable to locate contact information."] = "无法找到联系人信息。";
+$a->strings["Message could not be sent."] = "消息发不了。";
+$a->strings["Message collection failure."] = "通信受到错误。";
+$a->strings["Message sent."] = "消息发了";
+$a->strings["Discard"] = "丢弃";
+$a->strings["Messages"] = "消息";
+$a->strings["Do you really want to delete this message?"] = "您真的想删除这个通知吗?";
+$a->strings["Conversation not found."] = "";
+$a->strings["Message deleted."] = "消息删除了。";
+$a->strings["Conversation removed."] = "交流删除了。";
+$a->strings["Please enter a link URL:"] = "请输入一个链接 URL:";
+$a->strings["Send Private Message"] = "发私人的通信";
+$a->strings["To:"] = "到:";
+$a->strings["Subject:"] = "题目:";
+$a->strings["No messages."] = "没有消息";
+$a->strings["Message not available."] = "通信不可用的";
+$a->strings["Delete message"] = "删除消息";
+$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
+$a->strings["Delete conversation"] = "删除交谈";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "没可用的安全交通。您<strong>可能</strong>会在发送人的简介页会回答。";
+$a->strings["Send Reply"] = "发回答";
+$a->strings["Unknown sender - %s"] = "生发送人-%s";
+$a->strings["You and %s"] = "您和%s";
+$a->strings["%s and You"] = "%s和您";
+$a->strings["%d message"] = [
+       0 => "%d通知",
+];
+$a->strings["Remove term"] = "删除关键字";
+$a->strings["Saved Searches"] = "保存的搜索";
+$a->strings["add"] = "添加";
+$a->strings["Warning: This group contains %s member from a network that doesn't allow non public messages."] = [
+       0 => "警告:这个组包含 %s 来自不允许非公开消息的网络的成员。",
+];
+$a->strings["Messages in this group won't be send to these receivers."] = "这个组中的消息不会被发送至这些接收者。";
+$a->strings["No such group"] = "没有这个组";
+$a->strings["Group: %s"] = "组:%s";
+$a->strings["Private messages to this person are at risk of public disclosure."] = "私人通信给这个人回被公开。";
+$a->strings["Invalid contact."] = "无效的联系人。";
+$a->strings["Commented Order"] = "评论时间顺序";
+$a->strings["Sort by Comment Date"] = "按评论日期顺序排列";
+$a->strings["Posted Order"] = "发布时间顺序";
+$a->strings["Sort by Post Date"] = "按发布日期顺序排列";
+$a->strings["Personal"] = "私人";
+$a->strings["Posts that mention or involve you"] = "提及你或你参与的文章";
+$a->strings["New"] = "新";
+$a->strings["Activity Stream - by date"] = "活动流-按日期";
+$a->strings["Shared Links"] = "共享的链接";
+$a->strings["Interesting Links"] = "有意思的超链接";
+$a->strings["Starred"] = "被星";
+$a->strings["Favourite Posts"] = "最喜欢的文章";
+$a->strings["Welcome to Friendica"] = "Friendica欢迎你";
+$a->strings["New Member Checklist"] = "新成员清单";
+$a->strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear."] = "我们想提供一些建议和链接以助于让你有愉快的经历。点击任意一项访问相应的网页。在你注册之后,到这个页面的链接会在你的主页显示两周,之后悄声地消失。";
+$a->strings["Getting Started"] = "入门";
+$a->strings["Friendica Walk-Through"] = "Friendica 漫游";
+$a->strings["On your <em>Quick Start</em> page - find a brief introduction to your profile and network tabs, make some new connections, and find some groups to join."] = "在你的<em>快速上手</em>页-找到一个简要的对你的简介和网络标签的介绍,创建一些新的连接,并找一些群组加入。";
+$a->strings["Go to Your Settings"] = "您的设置";
+$a->strings["On your <em>Settings</em> page -  change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web."] = "在你的<em>设置</em>页 - 改变你最初的密码。同时也记住你的身份地址。这看起来像一个电子邮件地址 - 并且在这个自由的社交网络交友时会有用。";
+$a->strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "校对别的设置,特别是隐私设置。一个未发布的目录项目是跟未出版的电话号码一样。平时,你可能应该出版你的目录项目-除非都你的朋友们和可交的朋友们已经知道确切地怎么找你。";
+$a->strings["Profile"] = "简介";
+$a->strings["Upload Profile Photo"] = "上传简历照片";
+$a->strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "上传一张简历照片除非你已经做过。研究表明有真正自己的照片的人比没有的交朋友们可能多十倍。";
+$a->strings["Edit Your Profile"] = "编辑您的简介";
+$a->strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "随意编你的<strong>公开的</strong>简历。评论设置为藏起来你的朋友表和简历过陌生来客。";
+$a->strings["Profile Keywords"] = "简介关键字";
+$a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "指定一些公开关键字在您的默认简介描述您兴趣。我们可能找得了别人有相似兴趣和建议友谊。";
+$a->strings["Connecting"] = "连接着";
+$a->strings["Importing Emails"] = "进口着邮件";
+$a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "输入你电子邮件使用信息在插销设置页,要是你想用你的电子邮件进口和互动朋友们或邮件表。";
+$a->strings["Go to Your Contacts Page"] = "转到您的联系人页面";
+$a->strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog."] = "您熟人页是您门口为管理熟人和连接朋友们在别的网络。典型您输入他的地址或者网站URL在<em>添加新熟人</em>对话框。";
+$a->strings["Go to Your Site's Directory"] = "您网站的目录";
+$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "目录页让你在这个网络或者其他的联邦的站点找到其他人。在他们的简介页找一个<em>连接</em>或<em>关注</em>链接。如果需要,提供你自己的身份地址。";
+$a->strings["Finding New People"] = "找新人";
+$a->strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "在熟人页的工具栏有一些工具为找新朋友们。我们会使人们相配按名或兴趣,和以网络关系作为提醒建议的根据。在新网站,朋友建议平常开始24小时后。";
+$a->strings["Groups"] = "组";
+$a->strings["Group Your Contacts"] = "给你的联系人分组";
+$a->strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "您交朋友们后,组织他们分私人交流组在您熟人页的边栏,您会私下地跟组交流在您的网络页。";
+$a->strings["Why Aren't My Posts Public?"] = "我文章怎么没公开的?";
+$a->strings["Friendica respects your privacy. By default, your posts will only show up to people you've added as friends. For more information, see the help section from the link above."] = "Friendica尊敬您的隐私。默认是您文章只被您朋友们看。更多消息在帮助部分在上面的链接。";
+$a->strings["Getting Help"] = "获取帮助";
+$a->strings["Go to the Help Section"] = "看帮助部分";
+$a->strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "我们<strong>帮助</strong>页可查阅到详情关于别的编程特点和资源。";
+$a->strings["Personal Notes"] = "私人便条";
+$a->strings["Invalid request identifier."] = "无效要求身份号。";
+$a->strings["Ignore"] = "忽视";
+$a->strings["Notifications"] = "通知";
+$a->strings["Network Notifications"] = "网络通知";
+$a->strings["System Notifications"] = "系统通知";
+$a->strings["Personal Notifications"] = "私人通知";
+$a->strings["Home Notifications"] = "主页通知";
+$a->strings["Show unread"] = "显示未读";
+$a->strings["Show all"] = "显示全部";
+$a->strings["Show Ignored Requests"] = "显示被忽视的请求";
+$a->strings["Hide Ignored Requests"] = "隐藏被忽视的请求";
+$a->strings["Notification type:"] = "";
+$a->strings["Suggested by:"] = "";
+$a->strings["Hide this contact from others"] = "对其他人隐藏这个联系人";
+$a->strings["Claims to be known to you: "] = "声称被您认识:";
+$a->strings["yes"] = "是";
+$a->strings["no"] = "否";
+$a->strings["Shall your connection be bidirectional or not?"] = "是否启用双向连接?";
+$a->strings["Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed."] = "";
+$a->strings["Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "";
+$a->strings["Accepting %s as a sharer allows them to subscribe to your posts, but you will not receive updates from them in your news feed."] = "";
+$a->strings["Friend"] = "朋友";
+$a->strings["Sharer"] = "分享者";
+$a->strings["Subscriber"] = "订阅者";
+$a->strings["Network:"] = "网络";
+$a->strings["No introductions."] = "没有介绍。";
+$a->strings["No more %s notifications."] = "没有更多的 %s 通知。";
+$a->strings["No more system notifications."] = "没别系统通知。";
+$a->strings["Post successful."] = "评论发表了。";
+$a->strings["OpenID protocol error. No ID returned."] = "OpenID协议错误。没ID还。 ";
+$a->strings["Account not found and OpenID registration is not permitted on this site."] = "找不到账户和OpenID注册不允许。";
+$a->strings["Login failed."] = "登录失败。";
+$a->strings["Subscribing to OStatus contacts"] = "正在订阅 OStatus 联系人";
+$a->strings["No contact provided."] = "未提供联系人。";
+$a->strings["Couldn't fetch information for contact."] = "无法获取联系人信息。";
+$a->strings["Couldn't fetch friends for contact."] = "无法取得联系人的朋友信息。";
+$a->strings["Done"] = "完成";
+$a->strings["success"] = "成功";
+$a->strings["failed"] = "失败";
+$a->strings["ignored"] = "已忽视的";
+$a->strings["Keep this window open until done."] = "保持窗口打开直到完成。";
+$a->strings["Photo Albums"] = "相册";
+$a->strings["Recent Photos"] = "最近的照片";
+$a->strings["Upload New Photos"] = "上传新照片";
+$a->strings["everybody"] = "每人";
+$a->strings["Contact information unavailable"] = "联系人信息不可用";
+$a->strings["Album not found."] = "取回不了相册.";
+$a->strings["Delete Album"] = "删除相册";
+$a->strings["Do you really want to delete this photo album and all its photos?"] = "您真的想删除这个相册和所有里面的照相吗?";
+$a->strings["Delete Photo"] = "删除照片";
+$a->strings["Do you really want to delete this photo?"] = "您真的想删除这个照相吗?";
+$a->strings["a photo"] = "一张照片";
+$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s被%3\$s标签在%2\$s";
+$a->strings["Image exceeds size limit of %s"] = "图片超过 %s 的大小限制";
+$a->strings["Image upload didn't complete, please try again"] = "图片上传未完成,请重试";
+$a->strings["Image file is missing"] = "缺少图片文件";
+$a->strings["Server can't accept new file upload at this time, please contact your administrator"] = "服务器目前无法接受新的上传文件,请联系您的管理员";
+$a->strings["Image file is empty."] = "图片文件空的。";
+$a->strings["Unable to process image."] = "处理不了图像.";
+$a->strings["Image upload failed."] = "图像上载失败了.";
+$a->strings["No photos selected"] = "没有照片挑选了";
+$a->strings["Access to this item is restricted."] = "这个项目使用权限的。";
+$a->strings["Upload Photos"] = "上传照片";
+$a->strings["New album name: "] = "新册名:";
+$a->strings["or select existing album:"] = "";
+$a->strings["Do not show a status post for this upload"] = "别显示现状报到关于这个上传";
+$a->strings["Show to Groups"] = "给组表示";
+$a->strings["Show to Contacts"] = "展示给联系人";
+$a->strings["Edit Album"] = "编照片册";
+$a->strings["Show Newest First"] = "先表示最新的";
+$a->strings["Show Oldest First"] = "先表示最老的";
+$a->strings["View Photo"] = "看照片";
+$a->strings["Permission denied. Access to this item may be restricted."] = "无权利。用这个项目可能受限制。";
+$a->strings["Photo not available"] = "不可获得的照片";
+$a->strings["View photo"] = "看照片";
+$a->strings["Edit photo"] = "编辑照片";
+$a->strings["Use as profile photo"] = "用为资料图";
+$a->strings["Private Message"] = "私人的新闻";
+$a->strings["View Full Size"] = "看全尺寸";
+$a->strings["Tags: "] = "标签:";
+$a->strings["[Select tags to remove]"] = "";
+$a->strings["New album name"] = "新册名";
+$a->strings["Caption"] = "字幕";
+$a->strings["Add a Tag"] = "加标签";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "例子:@zhang, @Zhang_San, @li@example.com, #Beijing, #ktv";
+$a->strings["Do not rotate"] = "不要旋转";
+$a->strings["Rotate CW (right)"] = "顺时针地转动(左)";
+$a->strings["Rotate CCW (left)"] = "反顺时针地转动(右)";
+$a->strings["I like this (toggle)"] = "我喜欢这(交替)";
+$a->strings["I don't like this (toggle)"] = "我不喜欢这(交替)";
+$a->strings["This is you"] = "这是你";
+$a->strings["Comment"] = "评论";
+$a->strings["Map"] = "地图";
+$a->strings["View Album"] = "看照片册";
+$a->strings["{0} wants to be your friend"] = "{0}想成为您的朋友";
+$a->strings["{0} requested registration"] = "{0}要求注册";
+$a->strings["Poke/Prod"] = "戳";
+$a->strings["poke, prod or do other things to somebody"] = "把人家戳或别的行动";
+$a->strings["Recipient"] = "接受者";
+$a->strings["Choose what you wish to do to recipient"] = "选择您想把别人作";
+$a->strings["Make this post private"] = "使这个文章私人";
+$a->strings["Only logged in users are permitted to perform a probing."] = "只有已登录用户才被允许进行探测。";
+$a->strings["%s's timeline"] = "%s 的时间线";
+$a->strings["%s's posts"] = "%s的帖子";
+$a->strings["%s's comments"] = "%s 的评论";
+$a->strings["Profile deleted."] = "简介删除了。";
+$a->strings["Profile-"] = "简介-";
+$a->strings["New profile created."] = "新的简介已创建。";
+$a->strings["Profile unavailable to clone."] = "简介不可用为复制。";
+$a->strings["Profile Name is required."] = "必要简介名";
+$a->strings["Marital Status"] = "婚姻状况 ";
+$a->strings["Romantic Partner"] = "情人";
+$a->strings["Work/Employment"] = "工作";
+$a->strings["Religion"] = "宗教";
+$a->strings["Political Views"] = "政治观念";
+$a->strings["Gender"] = "性别";
+$a->strings["Sexual Preference"] = "性取向";
+$a->strings["XMPP"] = "XMPP";
+$a->strings["Homepage"] = "主页";
+$a->strings["Interests"] = "兴趣";
+$a->strings["Location"] = "位置";
+$a->strings["Profile updated."] = "简介更新了。";
+$a->strings["Hide contacts and friends:"] = "隐藏联系人和朋友:";
+$a->strings["Hide your contact/friend list from viewers of this profile?"] = "藏起来发现您的熟人/朋友单不让这个简介看着看?";
+$a->strings["Show more profile fields:"] = "显示更多简介内容:";
+$a->strings["Profile Actions"] = "";
+$a->strings["Edit Profile Details"] = "剪辑简介消息";
+$a->strings["Change Profile Photo"] = "改变简介照片";
+$a->strings["View this profile"] = "看这个简介";
+$a->strings["View all profiles"] = "";
+$a->strings["Edit visibility"] = "修改能见度";
+$a->strings["Create a new profile using these settings"] = "使用这些设置创建一份新的简介";
+$a->strings["Clone this profile"] = "复制这个简介";
+$a->strings["Delete this profile"] = "删除这个简介";
+$a->strings["Basic information"] = "基本信息";
+$a->strings["Profile picture"] = "头像";
+$a->strings["Preferences"] = "偏好";
+$a->strings["Status information"] = "状态信息";
+$a->strings["Additional information"] = "更多信息";
+$a->strings["Relation"] = "关系";
+$a->strings["Miscellaneous"] = "形形色色";
+$a->strings["Your Gender:"] = "你的性:";
+$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span>婚姻状况:";
+$a->strings["Sexual Preference:"] = "性取向:";
+$a->strings["Example: fishing photography software"] = "例如:钓鱼 照片 软件";
+$a->strings["Profile Name:"] = "简介名:";
+$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "这是你的<strong>公开的</strong>简介。<br />它<strong>可能</strong>被所有的因特网用的看到。";
+$a->strings["Your Full Name:"] = "你的全名:";
+$a->strings["Title/Description:"] = "标题/描述:";
+$a->strings["Street Address:"] = "地址:";
+$a->strings["Locality/City:"] = "现场/城市:";
+$a->strings["Region/State:"] = "区域/省";
+$a->strings["Postal/Zip Code:"] = "邮政编码:";
+$a->strings["Country:"] = "国家:";
+$a->strings["Age: "] = "年纪:";
+$a->strings["Who: (if applicable)"] = "谁:(要是使用)";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "比如:limou,李某,limou@example。com";
+$a->strings["Since [date]:"] = "追溯[日期]:";
+$a->strings["Tell us about yourself..."] = "给我们自我介绍...";
+$a->strings["XMPP (Jabber) address:"] = "XMPP (Jabber) 地址:";
+$a->strings["The XMPP address will be propagated to your contacts so that they can follow you."] = "这个 XMPP 地址会被传播到你的联系人从而他们可以关注你。";
+$a->strings["Homepage URL:"] = "主页URL:";
+$a->strings["Hometown:"] = "故乡:";
+$a->strings["Political Views:"] = "政治观念:";
+$a->strings["Religious Views:"] = " 宗教信仰 :";
+$a->strings["Public Keywords:"] = "公开关键字 :";
+$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(用于建议可能的朋友们,会被别人看)";
+$a->strings["Private Keywords:"] = "私人关键字";
+$a->strings["(Used for searching profiles, never shown to others)"] = "(用于搜索简介,没有给别人看)";
+$a->strings["Likes:"] = "喜欢:";
+$a->strings["Dislikes:"] = "不喜欢:";
+$a->strings["Musical interests"] = "音乐兴趣";
+$a->strings["Books, literature"] = "书,文学";
+$a->strings["Television"] = "电视";
+$a->strings["Film/dance/culture/entertainment"] = "电影/跳舞/文化/娱乐";
+$a->strings["Hobbies/Interests"] = "爱好/兴趣";
+$a->strings["Love/romance"] = "爱情/浪漫";
+$a->strings["Work/employment"] = "工作";
+$a->strings["School/education"] = "学院/教育";
+$a->strings["Contact information and Social Networks"] = "熟人信息和社会化网络";
+$a->strings["Profile Image"] = "简介图像";
+$a->strings["visible to everybody"] = "给打假可见的";
+$a->strings["Edit/Manage Profiles"] = "编辑/管理简介";
+$a->strings["Change profile photo"] = "换简介照片";
+$a->strings["Create New Profile"] = "创建新的简介";
+$a->strings["Image uploaded but image cropping failed."] = "照片上传去了,但修剪失灵。";
+$a->strings["Image size reduction [%s] failed."] = "照片减少[%s]失灵。";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "万一新照片一会出现,换档重新加载或者成为空浏览器高速缓存。";
+$a->strings["Unable to process image"] = "不能处理照片";
+$a->strings["Upload File:"] = "上传文件:";
+$a->strings["Select a profile:"] = "选择一个简介";
+$a->strings["or"] = "或者";
+$a->strings["skip this step"] = "略过这步";
+$a->strings["select a photo from your photo albums"] = "从您的照片册选择一片。";
+$a->strings["Crop Image"] = "修剪照片";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "请调图片剪裁为最好看。";
+$a->strings["Done Editing"] = "编辑完成";
+$a->strings["Image uploaded successfully."] = "照片成功地上传了。";
+$a->strings["Invalid profile identifier."] = "无限的简介标识符。";
+$a->strings["Profile Visibility Editor"] = "简介能见度编辑器。";
+$a->strings["Visible To"] = "能见被";
+$a->strings["All Contacts (with secure profile access)"] = "";
+$a->strings["Registration successful. Please check your email for further instructions."] = "注册成功了。请咨询说明再您的收件箱。";
+$a->strings["Failed to send email message. Here your accout details:<br> login: %s<br> password: %s<br><br>You can change your password after login."] = "发送邮件失败。你的账户消息是:<br>用户名:%s<br> 密码: %s<br><br>。登录后能改密码。";
+$a->strings["Registration successful."] = "注册成功。";
+$a->strings["Your registration can not be processed."] = "处理不了您的注册。";
+$a->strings["Your registration is pending approval by the site owner."] = "您的注册等网页主的批准。";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "这个网站超过一天最多账户注册。请明天再试。";
+$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "您会(可选的)用OpenID填这个表格通过提供您的OpenID和点击「注册」。";
+$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "如果您没熟悉OpenID,请留空这个栏和填另些栏。";
+$a->strings["Your OpenID (optional): "] = "您的OpenID(可选的):";
+$a->strings["Include your profile in member directory?"] = "放您的简介再员目录?";
+$a->strings["Note for the admin"] = "给管理员的便条";
+$a->strings["Leave a message for the admin, why you want to join this node"] = "给管理员留条消息,为什么你想加入这个节点";
+$a->strings["Membership on this site is by invitation only."] = "会员身份在这个网站是光通过邀请。";
+$a->strings["Your invitation code: "] = "您的邀请码:";
+$a->strings["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "你的全名 (比如张三,真名或看起来是真名):";
+$a->strings["Your Email Address: (Initial information will be send there, so this has to be an existing address.)"] = "您的电子邮件地址:(初始信息将发送到这里,所以这必须是一个存在的地址。)";
+$a->strings["New Password:"] = "新密码:";
+$a->strings["Leave empty for an auto generated password."] = "留空以使用自动生成的密码。";
+$a->strings["Confirm:"] = "确认:";
+$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@%s</strong>'."] = "";
+$a->strings["Choose a nickname: "] = "选择昵称:";
+$a->strings["Register"] = "注册";
+$a->strings["Import"] = "";
+$a->strings["Import your profile to this friendica instance"] = "进口您的简介到这个friendica服务器";
+$a->strings["Note: This node explicitly contains adult content"] = "";
+$a->strings["Account approved."] = "账户已被批准。";
+$a->strings["Registration revoked for %s"] = "撤销了 %s 的注册";
+$a->strings["Please login."] = "请登录。";
+$a->strings["User deleted their account"] = "";
+$a->strings["On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups."] = "";
+$a->strings["The user id is %d"] = "用户 id 为 %d";
+$a->strings["Remove My Account"] = "删除我的账户";
+$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "这要完全删除您的账户。这一做过,就不能恢复。";
+$a->strings["Please enter your password for verification:"] = "请输入密码为确认:";
+$a->strings["Resubscribing to OStatus contacts"] = "重新订阅 OStatus 联系人";
+$a->strings["Error"] = "错误";
+$a->strings["Only logged in users are permitted to perform a search."] = "只有已登录的用户被允许进行搜索。";
+$a->strings["Too Many Requests"] = "过多请求";
+$a->strings["Only one search per minute is permitted for not logged in users."] = "对未登录的用户,每分钟只允许一条搜索。";
+$a->strings["Search"] = "搜索";
+$a->strings["Items tagged with: %s"] = "项目标记为:%s";
+$a->strings["Results for: %s"] = "";
+$a->strings["Account"] = "帐户";
+$a->strings["Profiles"] = "简介";
+$a->strings["Display"] = "显示";
+$a->strings["Social Networks"] = "社会化网络";
+$a->strings["Delegations"] = "代表";
+$a->strings["Connected apps"] = "连接着应用";
+$a->strings["Export personal data"] = "导出个人信息";
+$a->strings["Remove account"] = "删除账户";
+$a->strings["Missing some important data!"] = "缺失一些重要数据!";
+$a->strings["Update"] = "更新";
+$a->strings["Failed to connect with email account using the settings provided."] = "不能连接电子邮件账户用输入的设置。";
+$a->strings["Email settings updated."] = "电子邮件设置更新了";
+$a->strings["Features updated"] = "特点更新了";
+$a->strings["Relocate message has been send to your contacts"] = "调动消息已发送给您的联系人";
+$a->strings["Passwords do not match."] = "密码不匹配。";
+$a->strings["Password update failed. Please try again."] = "密码更新失败了。请再试。";
+$a->strings["Password changed."] = "密码变化了。";
+$a->strings["Password unchanged."] = "密码未改变。";
+$a->strings[" Please use a shorter name."] = " 请用一个更短的名字。";
+$a->strings[" Name too short."] = " 名字过短。";
+$a->strings["Wrong Password"] = "密码不正确";
+$a->strings["Invalid email."] = "无效的邮箱。";
+$a->strings["Cannot change to that email."] = "无法更改到此电子邮件地址。";
+$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "私人评坛没有隐私批准。默认隐私组用者。";
+$a->strings["Private forum has no privacy permissions and no default privacy group."] = "私人评坛没有隐私批准或默认隐私组。";
+$a->strings["Settings updated."] = "设置更新了。";
+$a->strings["Add application"] = "加入应用";
+$a->strings["Consumer Key"] = "钥匙(Consumer Key)";
+$a->strings["Consumer Secret"] = "密码(Consumer Secret)";
+$a->strings["Redirect"] = "重定向";
+$a->strings["Icon url"] = "图符URL";
+$a->strings["You can't edit this application."] = "您不能编辑这个应用。";
+$a->strings["Connected Apps"] = "连接着应用";
+$a->strings["Edit"] = "编辑";
+$a->strings["Client key starts with"] = "客户钥匙头字是";
+$a->strings["No name"] = "无名";
+$a->strings["Remove authorization"] = "撤消权能";
+$a->strings["No Addon settings configured"] = "无插件设置配置完成";
+$a->strings["Addon Settings"] = "插件设置";
+$a->strings["Additional Features"] = "附加特性";
+$a->strings["Diaspora"] = "Diaspora";
+$a->strings["enabled"] = "能够做的";
+$a->strings["disabled"] = "已停用";
+$a->strings["Built-in support for %s connectivity is %s"] = "包括的支持为%s连通性是%s";
+$a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)";
+$a->strings["Email access is disabled on this site."] = "电子邮件访问在这个站上被禁用。";
+$a->strings["General Social Media Settings"] = "通用社交媒体设置";
+$a->strings["Disable Content Warning"] = "禁用内容警告";
+$a->strings["Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn't affect any other content filtering you eventually set up."] = "";
+$a->strings["Disable intelligent shortening"] = "";
+$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "";
+$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "自动关注任何 GNU Social (OStatus) 关注者/提及者";
+$a->strings["If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user."] = "";
+$a->strings["Default group for OStatus contacts"] = "用于 OStatus 联系人的默认组";
+$a->strings["Your legacy GNU Social account"] = "您遗留的 GNU Social 账户";
+$a->strings["If you enter your old GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done."] = "如果您在这里输入您旧的 GNU Social/Statusnet 账号名 (格式示例 user@domain.tld) ,您的联系人列表将会被自动添加。完成后该字段将被清空。";
+$a->strings["Repair OStatus subscriptions"] = "修复 OStatus 订阅";
+$a->strings["Email/Mailbox Setup"] = "邮件收件箱设置";
+$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "如果您想用这股服务(可选的)跟邮件熟人交流,请指定怎么连通您的收件箱。";
+$a->strings["Last successful email check:"] = "上个成功收件箱检查:";
+$a->strings["IMAP server name:"] = "IMAP服务器名字:";
+$a->strings["IMAP port:"] = "IMAP服务器端口:";
+$a->strings["Security:"] = "安全:";
+$a->strings["Email login name:"] = "邮件登录名:";
+$a->strings["Email password:"] = "邮件密码:";
+$a->strings["Reply-to address:"] = "回答地址:";
+$a->strings["Send public posts to all email contacts:"] = "发送公开文章给所有的邮件联系人:";
+$a->strings["Action after import:"] = "进口后行动:";
+$a->strings["Mark as seen"] = "标注看过";
+$a->strings["Move to folder"] = "搬到文件夹";
+$a->strings["Move to folder:"] = "搬到文件夹:";
+$a->strings["%s - (Unsupported)"] = "%s - (不支持的)";
+$a->strings["%s - (Experimental)"] = "%s - (实验性)";
+$a->strings["Sunday"] = "星期天";
+$a->strings["Monday"] = "星期一";
+$a->strings["Display Settings"] = "表示设置";
+$a->strings["Display Theme:"] = "显示主题:";
+$a->strings["Mobile Theme:"] = "手机主题:";
+$a->strings["Suppress warning of insecure networks"] = "";
+$a->strings["Should the system suppress the warning that the current group contains members of networks that can't receive non public postings."] = "";
+$a->strings["Update browser every xx seconds"] = "更新游览器每XX秒";
+$a->strings["Minimum of 10 seconds. Enter -1 to disable it."] = "至少 10 秒。输入 -1 禁用。";
+$a->strings["Number of items to display per page:"] = "每页表示多少项目:";
+$a->strings["Maximum of 100 items"] = "最多100项目";
+$a->strings["Number of items to display per page when viewed from mobile device:"] = "用手机看一页展示多少项目:";
+$a->strings["Don't show emoticons"] = "不显示表情符号";
+$a->strings["Calendar"] = "日历";
+$a->strings["Beginning of week:"] = "一周的开始:";
+$a->strings["Don't show notices"] = "不显示提示";
+$a->strings["Infinite scroll"] = "无限的滚动";
+$a->strings["Automatic updates only at the top of the network page"] = "仅在返回到网页头部时自动更新";
+$a->strings["When disabled, the network page is updated all the time, which could be confusing while reading."] = "禁用后,网页将会一直更新,这可能会对阅读造成干扰。";
+$a->strings["Bandwidth Saver Mode"] = "";
+$a->strings["When enabled, embedded content is not displayed on automatic updates, they only show on page reload."] = "当启用时,嵌入的内容不会在自动更新时显示,它们只在页面重载时显示。";
+$a->strings["Smart Threading"] = "";
+$a->strings["When enabled, suppress extraneous thread indentation while keeping it where it matters. Only works if threading is available and enabled."] = "";
+$a->strings["General Theme Settings"] = "通用主题设置";
+$a->strings["Custom Theme Settings"] = "自定义主题设置";
+$a->strings["Content Settings"] = "内容设置";
+$a->strings["Theme settings"] = "主题设置";
+$a->strings["Unable to find your profile. Please contact your admin."] = "无法找到您的简介。请联系您的管理员。";
+$a->strings["Account Types"] = "账户类型";
+$a->strings["Personal Page Subtypes"] = "";
+$a->strings["Community Forum Subtypes"] = "";
+$a->strings["Account for a personal profile."] = "";
+$a->strings["Account for an organisation that automatically approves contact requests as \"Followers\"."] = "";
+$a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "";
+$a->strings["Account for community discussions."] = "";
+$a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "";
+$a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "";
+$a->strings["Automatically approves all contact requests."] = "自动批准所有联系人请求。";
+$a->strings["Account for a popular profile that automatically approves contact requests as \"Friends\"."] = "";
+$a->strings["Private Forum [Experimental]"] = "隐私评坛[实验性的 ]";
+$a->strings["Requires manual approval of contact requests."] = "需要人工批准联系人请求。";
+$a->strings["OpenID:"] = "OpenID:";
+$a->strings["(Optional) Allow this OpenID to login to this account."] = "(可选的) 允许这个 OpenID 登录这个账户。";
+$a->strings["Publish your default profile in your local site directory?"] = "出版您默认简介在您当地的网站目录?";
+$a->strings["Your profile will be published in this node's <a href=\"%s\">local directory</a>. Your profile details may be publicly visible depending on the system settings."] = "";
+$a->strings["Publish your default profile in the global social directory?"] = "出版您默认简介在综合社会目录?";
+$a->strings["Your profile will be published in the global friendica directories (e.g. <a href=\"%s\">%s</a>). Your profile will be visible in public."] = "";
+$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "在您的默认简介中向访问者隐藏您的联系人/朋友列表?";
+$a->strings["Your contact list won't be shown in your default profile page. You can decide to show your contact list separately for each additional profile you create"] = "您的联系人列表将不会在您的默认简介页面展示。您可以决定在您自建的各附加简介中分别展示您的联系人列表";
+$a->strings["Hide your profile details from anonymous viewers?"] = "对匿名访问者隐藏详细简介?";
+$a->strings["Anonymous visitors will only see your profile picture, your display name and the nickname you are using on your profile page. Your public posts and replies will still be accessible by other means."] = "";
+$a->strings["Allow friends to post to your profile page?"] = "允许朋友们贴文章在您的简介页?";
+$a->strings["Your contacts may write posts on your profile wall. These posts will be distributed to your contacts"] = "";
+$a->strings["Allow friends to tag your posts?"] = "允许朋友们标签您的文章?";
+$a->strings["Your contacts can add additional tags to your posts."] = "您的联系人可以为您的帖子添加额外的标签。";
+$a->strings["Allow us to suggest you as a potential friend to new members?"] = "允许我们建议您潜力朋友给新成员?";
+$a->strings["If you like, Friendica may suggest new members to add you as a contact."] = "如果您愿意,Friendica 可能会建议新成员将您添加为联系人。";
+$a->strings["Permit unknown people to send you private mail?"] = "允许生人寄给您私人邮件?";
+$a->strings["Friendica network users may send you private messages even if they are not in your contact list."] = "Friendica 网络用户可能会向您发送私人信息,即使他们不在您的联系人列表中。";
+$a->strings["Profile is <strong>not published</strong>."] = "简介<strong>未发布</strong>。";
+$a->strings["Your Identity Address is <strong>'%s'</strong> or '%s'."] = "你的身份地址是 <strong>'%s'</strong> 或者 '%s'.";
+$a->strings["Automatically expire posts after this many days:"] = "在这数天后自动使文章过期:";
+$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "如果为空,文章不会过期。过期的文章将被删除";
+$a->strings["Advanced expiration settings"] = "高级过期设置";
+$a->strings["Advanced Expiration"] = "先进的过期";
+$a->strings["Expire posts:"] = "把文章过期:";
+$a->strings["Expire personal notes:"] = "把私人便条过期:";
+$a->strings["Expire starred posts:"] = "把星的文章过期:";
+$a->strings["Expire photos:"] = "把照片过期:";
+$a->strings["Only expire posts by others:"] = "只别人的文章过期:";
+$a->strings["Account Settings"] = "帐户设置";
+$a->strings["Password Settings"] = "密码设置";
+$a->strings["Allowed characters are a-z, A-Z, 0-9 and special characters except white spaces, accentuated letters and colon (:)."] = "";
+$a->strings["Leave password fields blank unless changing"] = "留空密码字段,除非要修改";
+$a->strings["Current Password:"] = "当前密码:";
+$a->strings["Your current password to confirm the changes"] = "你的当前密码,来确认修改";
+$a->strings["Password:"] = "密码:";
+$a->strings["Basic Settings"] = "基础设置";
+$a->strings["Full Name:"] = "全名:";
+$a->strings["Email Address:"] = "电子邮件地址:";
+$a->strings["Your Timezone:"] = "你的时区:";
+$a->strings["Your Language:"] = "你的语言:";
+$a->strings["Set the language we use to show you friendica interface and to send you emails"] = "";
+$a->strings["Default Post Location:"] = "默认文章位置:";
+$a->strings["Use Browser Location:"] = "使用浏览器位置:";
+$a->strings["Security and Privacy Settings"] = "安全和隐私设置";
+$a->strings["Maximum Friend Requests/Day:"] = "每天最大朋友请求数:";
+$a->strings["(to prevent spam abuse)"] = "(用于防止垃圾信息滥用)";
+$a->strings["Default Post Permissions"] = "默认文章权限";
+$a->strings["(click to open/close)"] = "(点击来打开/关闭)";
+$a->strings["Default Private Post"] = "默认私人文章";
+$a->strings["Default Public Post"] = "默认公开文章";
+$a->strings["Default Permissions for New Posts"] = "新文章的默认权限";
+$a->strings["Maximum private messages per day from unknown people:"] = "每天来自未知的人的私信:";
+$a->strings["Notification Settings"] = "通知设置";
+$a->strings["Send a notification email when:"] = "发一个消息要是:";
+$a->strings["You receive an introduction"] = "你收到一份介绍";
+$a->strings["Your introductions are confirmed"] = "你的介绍被确认了";
+$a->strings["Someone writes on your profile wall"] = "某人写在你的简历墙";
+$a->strings["Someone writes a followup comment"] = "某人写一个后续的评论";
+$a->strings["You receive a private message"] = "你收到一封私信";
+$a->strings["You receive a friend suggestion"] = "你受到一个朋友建议";
+$a->strings["You are tagged in a post"] = "你被在新闻标签";
+$a->strings["You are poked/prodded/etc. in a post"] = "您在文章被戳";
+$a->strings["Activate desktop notifications"] = "启用桌面通知";
+$a->strings["Show desktop popup on new notifications"] = "在有新的提示时显示桌面弹出窗口";
+$a->strings["Text-only notification emails"] = "纯文本通知邮件";
+$a->strings["Send text only notification emails, without the html part"] = "发送纯文本通知邮件,无 html 部分";
+$a->strings["Show detailled notifications"] = "显示详细通知";
+$a->strings["Per default, notifications are condensed to a single notification per item. When enabled every notification is displayed."] = "";
+$a->strings["Advanced Account/Page Type Settings"] = "专家账户/页种设置";
+$a->strings["Change the behaviour of this account for special situations"] = "把这个账户特别情况的时候行动变化";
+$a->strings["Relocate"] = "调动";
+$a->strings["If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."] = "如果您调动这个简介从别的服务器但有的熟人没收到您的更新,尝试按这个钮。";
+$a->strings["Resend relocate message to contacts"] = "把调动信息寄给熟人";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s关注着%2\$s的%3\$s";
+$a->strings["Do you really want to delete this suggestion?"] = "您真的想删除这个建议吗?";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "没有建议。如果这是新网站,请24小时后再试。";
+$a->strings["Ignore/Hide"] = "忽视/隐藏";
+$a->strings["Friend Suggestions"] = "朋友推荐";
+$a->strings["Tag(s) removed"] = "";
+$a->strings["Remove Item Tag"] = "去除项目标签";
+$a->strings["Select a tag to remove: "] = "选择删除一个标签: ";
+$a->strings["Export account"] = "导出账户";
+$a->strings["Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server."] = "导出你的账户信息和联系人。用这个功能来生成一个你的账户的备份,并且/或者把它移到另外一个服务器。";
+$a->strings["Export all"] = "导出全部";
+$a->strings["Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account (photos are not exported)"] = "导出你的账户信息、联系人和所有你的项目为 json 格式。可能会是一个很大的文件,并可能花费很多时间。用这个功能来做一个你的账户的全备份(照片不会被导出)";
+$a->strings["User imports on closed servers can only be done by an administrator."] = "";
+$a->strings["Move account"] = "把账户搬出";
+$a->strings["You can import an account from another Friendica server."] = "您会从别的Friendica服务器进口账户";
+$a->strings["You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here."] = "你需要从老服务器导出你的账户并在这里上传。我们会在这里重建你的账户,包括你所有的联系人。我们也会通知你的朋友们你搬到了这里。";
+$a->strings["This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"] = "这个特性是实验性的。我们不能从 OStatus 网络 (GNU Social/Statusnet) 或者 Diaspora 导入联系人";
+$a->strings["Account file"] = "账户文件";
+$a->strings["To export your account, go to \"Settings->Export your personal data\" and select \"Export account\""] = "为了导出你的账户,点击「设置→导出你的个人信息」和选择「导出账户」";
+$a->strings["You aren't following this contact."] = "";
+$a->strings["Unfollowing is currently not supported by your network."] = "取消关注现在不被你的网络支持。";
+$a->strings["Contact unfollowed"] = "取消关注了的联系人";
+$a->strings["Disconnect/Unfollow"] = "断开连接/取消关注";
+$a->strings["[Embedded content - reload page to view]"] = "[嵌入内容-重新加载页为看]";
+$a->strings["Do you really want to delete this video?"] = "你真的想删除这个视频吗?";
+$a->strings["Delete Video"] = "删除视频";
+$a->strings["No videos selected"] = "没有视频被选择";
+$a->strings["View Video"] = "察看视频";
+$a->strings["Recent Videos"] = "最近的视频";
+$a->strings["Upload New Videos"] = "上传新视频";
+$a->strings["No contacts."] = "没有联系人。";
+$a->strings["Visit %s's profile [%s]"] = "看%s的简介[%s]";
+$a->strings["Contacts"] = "联系人";
+$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "一天最多墙通知给%s超过了。通知没有通过 。";
+$a->strings["Unable to check your home location."] = "核对不了您的主页。";
+$a->strings["No recipient."] = "没有接受者。";
+$a->strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "如果您想%s回答,请核对您网站的隐私设置允许生发送人的私人邮件。";
+$a->strings["Invalid request."] = "无效请求。";
+$a->strings["Sorry, maybe your upload is bigger than the PHP configuration allows"] = "不好意思,可能你上传的是PHP设置允许的大";
+$a->strings["Or - did you try to upload an empty file?"] = "或者,你是不是上传空的文件?";
+$a->strings["File exceeds size limit of %s"] = "文件超过了 %s 的大小限制";
+$a->strings["File upload failed."] = "文件上传失败。";
+$a->strings["Wall Photos"] = "墙照片";
+$a->strings["Delete this item?"] = "删除这个项目?";
+$a->strings["show fewer"] = "显示更小";
+$a->strings["toggle mobile"] = "切换移动设备";
+$a->strings["No system theme config value set."] = "";
+$a->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."] = "表格安全令牌不对。最可能因为表格开着太久(三个小时以上)提交前。";
+$a->strings["Frequently"] = "";
+$a->strings["Hourly"] = "每小时";
+$a->strings["Twice daily"] = "每天两次";
+$a->strings["Daily"] = "每天";
+$a->strings["Weekly"] = "每周";
+$a->strings["Monthly"] = "每月";
+$a->strings["DFRN"] = "";
+$a->strings["OStatus"] = "OStatus";
+$a->strings["RSS/Atom"] = "RSS/Atom";
+$a->strings["Zot!"] = "Zot!";
+$a->strings["LinkedIn"] = "LinkedIn";
+$a->strings["XMPP/IM"] = "XMPP/IM";
+$a->strings["MySpace"] = "MySpace";
+$a->strings["Google+"] = "Google+";
+$a->strings["pump.io"] = "pump.io";
+$a->strings["Twitter"] = "推特";
+$a->strings["Diaspora Connector"] = "";
+$a->strings["GNU Social Connector"] = "GNU Social 连接器";
+$a->strings["ActivityPub"] = "";
+$a->strings["pnut"] = "";
+$a->strings["Male"] = "男";
+$a->strings["Female"] = "女";
+$a->strings["Currently Male"] = "目前为男";
+$a->strings["Currently Female"] = "目前为女";
+$a->strings["Mostly Male"] = "更多为男";
+$a->strings["Mostly Female"] = "更多为女";
+$a->strings["Transgender"] = "跨性别";
+$a->strings["Intersex"] = "双性人";
+$a->strings["Transsexual"] = "换性者";
+$a->strings["Hermaphrodite"] = "雌雄间性";
+$a->strings["Neuter"] = "中性";
+$a->strings["Non-specific"] = "不明确的";
+$a->strings["Other"] = "别的";
+$a->strings["Males"] = "男人";
+$a->strings["Females"] = "女人";
+$a->strings["Gay"] = "男同性恋的";
+$a->strings["Lesbian"] = "女同性恋的";
+$a->strings["No Preference"] = "无偏爱";
+$a->strings["Bisexual"] = "双性恋的";
+$a->strings["Autosexual"] = "自性的";
+$a->strings["Abstinent"] = "有节制的";
+$a->strings["Virgin"] = "原始的";
+$a->strings["Deviant"] = "变态";
+$a->strings["Fetish"] = "恋物对象";
+$a->strings["Oodles"] = "多多";
+$a->strings["Nonsexual"] = "无性";
+$a->strings["Single"] = "单身";
+$a->strings["Lonely"] = "寂寞";
+$a->strings["Available"] = "单身的";
+$a->strings["Unavailable"] = "不可获得的";
+$a->strings["Has crush"] = "迷恋";
+$a->strings["Infatuated"] = "痴迷";
+$a->strings["Dating"] = "约会";
+$a->strings["Unfaithful"] = "外遇";
+$a->strings["Sex Addict"] = "性交因成瘾者";
+$a->strings["Friends"] = "朋友";
+$a->strings["Friends/Benefits"] = "朋友/益";
+$a->strings["Casual"] = "休闲";
+$a->strings["Engaged"] = "已订婚的";
+$a->strings["Married"] = "结婚";
+$a->strings["Imaginarily married"] = "想像结婚";
+$a->strings["Partners"] = "伴侣";
+$a->strings["Cohabiting"] = "同居";
+$a->strings["Common law"] = "普通法结婚";
+$a->strings["Happy"] = "幸福";
+$a->strings["Not looking"] = "没找";
+$a->strings["Swinger"] = "交换性伴侣的";
+$a->strings["Betrayed"] = "被背叛";
+$a->strings["Separated"] = "分手";
+$a->strings["Unstable"] = "不稳";
+$a->strings["Divorced"] = "离婚";
+$a->strings["Imaginarily divorced"] = "想像离婚";
+$a->strings["Widowed"] = "寡妇";
+$a->strings["Uncertain"] = "不确定";
+$a->strings["It's complicated"] = "是复杂";
+$a->strings["Don't care"] = "无所谓";
+$a->strings["Ask me"] = "问我";
+$a->strings["General Features"] = "通用特性";
+$a->strings["Multiple Profiles"] = "多简介";
+$a->strings["Ability to create multiple profiles"] = "能穿凿多简介";
+$a->strings["Photo Location"] = "照片地点";
+$a->strings["Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map."] = "";
+$a->strings["Export Public Calendar"] = "导出公共日历";
+$a->strings["Ability for visitors to download the public calendar"] = "";
+$a->strings["Post Composition Features"] = "文章编写特性";
+$a->strings["Auto-mention Forums"] = "自动提示论坛";
+$a->strings["Add/remove mention when a forum page is selected/deselected in ACL window."] = "";
+$a->strings["Network Sidebar"] = "";
+$a->strings["Ability to select posts by date ranges"] = "能按时期范围选择文章";
+$a->strings["Protocol Filter"] = "";
+$a->strings["Enable widget to display Network posts only from selected protocols"] = "";
+$a->strings["Network Tabs"] = "网络分页";
+$a->strings["Network New Tab"] = "网络新分页";
+$a->strings["Enable tab to display only new Network posts (from the last 12 hours)"] = "启用只显示新的网络文章(过去12小时)的标签页";
+$a->strings["Network Shared Links Tab"] = "网络分享链接分页";
+$a->strings["Enable tab to display only Network posts with links in them"] = "使表示光网络文章包括链接分页可用";
+$a->strings["Post/Comment Tools"] = "文章/评论工具";
+$a->strings["Post Categories"] = "文章种类";
+$a->strings["Add categories to your posts"] = "加入种类给您的文章";
+$a->strings["Advanced Profile Settings"] = "";
+$a->strings["List Forums"] = "列出各论坛";
+$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "";
+$a->strings["Tag Cloud"] = "标签云";
+$a->strings["Provide a personal tag cloud on your profile page"] = "在您的个人简介中提供个人标签云";
+$a->strings["Display Membership Date"] = "";
+$a->strings["Display membership date in profile"] = "";
+$a->strings["Forums"] = "论坛";
+$a->strings["External link to forum"] = "到论坛的外链";
+$a->strings["Nothing new here"] = "这里没有什么新的";
+$a->strings["Clear notifications"] = "清理出通知";
+$a->strings["@name, !forum, #tags, content"] = "";
+$a->strings["Logout"] = "注销";
+$a->strings["End this session"] = "结束此次会话";
+$a->strings["Status"] = "状态";
+$a->strings["Your posts and conversations"] = "你的消息和交谈";
+$a->strings["Your profile page"] = "你的简介页";
+$a->strings["Your photos"] = "你的照片";
+$a->strings["Videos"] = "视频";
+$a->strings["Your videos"] = "你的视频";
+$a->strings["Your events"] = "你的项目";
+$a->strings["Personal notes"] = "私人的便条";
+$a->strings["Your personal notes"] = "你的私人便条";
+$a->strings["Sign in"] = "登录";
+$a->strings["Home"] = "主页";
+$a->strings["Home Page"] = "主页";
+$a->strings["Create an account"] = "注册";
+$a->strings["Help and documentation"] = "帮助及文档";
+$a->strings["Apps"] = "应用程序";
+$a->strings["Addon applications, utilities, games"] = "可加的应用,设施,游戏";
+$a->strings["Search site content"] = "搜索网站内容";
+$a->strings["Full Text"] = "全文";
+$a->strings["Tags"] = "标签:";
+$a->strings["Community"] = "社会";
+$a->strings["Conversations on this and other servers"] = "";
+$a->strings["Events and Calendar"] = "事件和日历";
+$a->strings["Directory"] = "名录";
+$a->strings["People directory"] = "人物名录";
+$a->strings["Information about this friendica instance"] = "资料关于这个Friendica服务器";
+$a->strings["Terms of Service of this Friendica instance"] = "";
+$a->strings["Conversations from your friends"] = "来自你的朋友们的交谈";
+$a->strings["Network Reset"] = "网络重设";
+$a->strings["Load Network page with no filters"] = "表示网络页无滤器";
+$a->strings["Introductions"] = "介绍";
+$a->strings["Friend Requests"] = "友谊邀请";
+$a->strings["See all notifications"] = "看所有的通知";
+$a->strings["Mark all system notifications seen"] = "记号各系统通知看过的";
+$a->strings["Private mail"] = "私人的邮件";
+$a->strings["Inbox"] = "收件箱";
+$a->strings["Outbox"] = "发件箱";
+$a->strings["Manage"] = "管理";
+$a->strings["Manage other pages"] = "管理别的页";
+$a->strings["Account settings"] = "帐户设置";
+$a->strings["Manage/Edit Profiles"] = "管理/编辑简介";
+$a->strings["Manage/edit friends and contacts"] = "管理/编辑朋友和联系人";
+$a->strings["Site setup and configuration"] = "网站开办和配置";
+$a->strings["Navigation"] = "导航";
+$a->strings["Site map"] = "网站地图";
+$a->strings["Embedding disabled"] = "嵌入已停用";
+$a->strings["Embedded content"] = "嵌入内容";
+$a->strings["newer"] = "更新";
+$a->strings["older"] = "更旧";
+$a->strings["prev"] = "上个";
+$a->strings["last"] = "最后";
+$a->strings["view full size"] = "看全尺寸";
+$a->strings["Image/photo"] = "图像/照片";
 $a->strings["<a href=\"%1\$s\" target=\"_blank\">%2\$s</a> %3\$s"] = "";
-$a->strings["<span><a href=\"%s\" target=\"_blank\">%s</a> wrote the following <a href=\"%s\" target=\"_blank\">post</a>"] = "";
-$a->strings["Update %s failed. See error logs."] = "更新 %s 失败。查看错误日志。";
-$a->strings["There are no tables on MyISAM."] = "未在 MyISAM 中发现表。";
-$a->strings["\n\t\t\t\tThe friendica developers released update %s recently,\n\t\t\t\tbut when I tried to install it, something went terribly wrong.\n\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n\t\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."] = "";
-$a->strings["The error message is\n[pre]%s[/pre]"] = "错误消息是\n[pre]%s[/pre]";
-$a->strings["\nError %d occurred during database update:\n%s\n"] = "\n在数据库更新的时候发生了错误 %d\n%s\n";
-$a->strings["Errors encountered performing database changes: "] = "操作数据库更改的时候遇到了错误:";
-$a->strings["%s: Database update"] = "";
-$a->strings["%s: updating %s table."] = "%s: 正在更新 %s 表。";
+$a->strings["$1 wrote:"] = "$1写:";
+$a->strings["Encrypted content"] = "加密的内容";
+$a->strings["Invalid source protocol"] = "无效的源协议";
+$a->strings["Invalid link protocol"] = "无效的连接协议";
+$a->strings["Loading more entries..."] = "没有项目...";
+$a->strings["The end"] = "";
+$a->strings["No contacts"] = "没有联系人";
+$a->strings["%d Contact"] = [
+       0 => "%d 联系人",
+];
+$a->strings["View Contacts"] = "查看联系人";
+$a->strings["Follow"] = "关注";
+$a->strings["Click to open/close"] = "点击为开关";
+$a->strings["Export"] = "导出";
+$a->strings["Export calendar as ical"] = "导出日历为 ical";
+$a->strings["Export calendar as csv"] = "导出日历为 csv";
+$a->strings["Add New Contact"] = "添加新的联系人";
+$a->strings["Enter address or web location"] = "输入地址或网络位置";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "比如:li@example.com, http://example.com/li";
+$a->strings["%d invitation available"] = [
+       0 => "%d邀请可用的",
+];
+$a->strings["Find People"] = "找人物";
+$a->strings["Enter name or interest"] = "输入名字或兴趣";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "比如:罗伯特·摩根斯坦,钓鱼";
+$a->strings["Similar Interests"] = "相似兴趣";
+$a->strings["Random Profile"] = "随机简介";
+$a->strings["Invite Friends"] = "邀请朋友们";
+$a->strings["Local Directory"] = "本地目录";
+$a->strings["Protocols"] = "";
+$a->strings["All Protocols"] = "";
+$a->strings["Saved Folders"] = "保存的文件夹";
+$a->strings["Everything"] = "一切";
+$a->strings["Categories"] = "种类";
+$a->strings["%d contact in common"] = [
+       0 => "%d 个共同的联系人",
+];
+$a->strings["Post to Email"] = "电邮发布";
+$a->strings["Hide your profile details from unknown viewers?"] = "使简介信息给陌生的看着看不了?";
+$a->strings["Connectors disabled, since \"%s\" is enabled."] = "连接器已停用,因为\"%s\"启用。";
+$a->strings["Visible to everybody"] = "任何人可见的";
+$a->strings["show"] = "显示";
+$a->strings["don't show"] = "不要显示";
+$a->strings["Close"] = "关闭";
+$a->strings["Welcome "] = "欢迎";
+$a->strings["Please upload a profile photo."] = "请上传一张简介照片";
+$a->strings["Welcome back "] = "欢迎回来";
+$a->strings["Could not find any unarchived contact entry for this URL (%s)"] = "";
+$a->strings["The contact entries have been archived"] = "";
+$a->strings["Enter new password: "] = "";
+$a->strings["Post update version number has been set to %s."] = "";
+$a->strings["Check for pending update actions."] = "";
+$a->strings["Done."] = "";
+$a->strings["Execute pending post updates."] = "";
+$a->strings["All pending post updates are done."] = "";
+$a->strings["The database configuration file \"config/local.config.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "";
+$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "您可能要手工地进口文件「database.sql」用phpmyadmin或mysql。";
+$a->strings["Please see the file \"INSTALL.txt\"."] = "请看文件「INSTALL.txt」";
 $a->strings["Could not find a command line version of PHP in the web server PATH."] = "没找到命令行PHP在网服务器PATH。";
 $a->strings["If you don't have a command line version of PHP installed on your server, you will not be able to run the background processing. See <a href='https://github.com/friendica/friendica/blob/master/doc/Install.md#set-up-the-worker'>'Setup the worker'</a>"] = "";
 $a->strings["PHP executable path"] = "PHP可执行路径";
@@ -1759,154 +1732,134 @@ $a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
 $a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "错误:这系统的「register_argc_argv」子程序不能产生加密钥匙";
 $a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "如果您用Windows,请看「http://www.php.net/manual/en/openssl.installation.php」。";
 $a->strings["Generate encryption keys"] = "产生加密钥匙";
-$a->strings["libCurl PHP module"] = "libCurl PHP模块";
-$a->strings["GD graphics PHP module"] = "GD显示PHP模块";
-$a->strings["OpenSSL PHP module"] = "OpenSSL PHP模块";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "错误:Apache服务器的mod-rewrite模块是必要的可却不安装的。";
+$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite部件";
+$a->strings["Error: PDO or MySQLi PHP module required but not installed."] = "";
+$a->strings["Error: The MySQL driver for PDO is not installed."] = "错误:MySQL 的 PHP 数据对象 (PDO) 扩展驱动未安装。";
 $a->strings["PDO or MySQLi PHP module"] = "PDO 或者 MySQLi PHP 模块";
-$a->strings["mb_string PHP module"] = "mb_string PHP模块";
+$a->strings["Error, XML PHP module required but not installed."] = "部件错误,需要 XML PHP 模块但它并没有被安装。";
 $a->strings["XML PHP module"] = "XML PHP 模块";
-$a->strings["iconv PHP module"] = "iconv PHP 模块";
-$a->strings["POSIX PHP module"] = "POSIX PHP 模块";
-$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite部件";
-$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "错误:Apache服务器的mod-rewrite模块是必要的可却不安装的。";
+$a->strings["libCurl PHP module"] = "libCurl PHP模块";
 $a->strings["Error: libCURL PHP module required but not installed."] = "错误:libCurl PHP模块是必要的可却不安装的。";
+$a->strings["GD graphics PHP module"] = "GD显示PHP模块";
 $a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "错误:GD显示PHP模块跟JPEG支持是必要的可却安装的。";
+$a->strings["OpenSSL PHP module"] = "OpenSSL PHP模块";
 $a->strings["Error: openssl PHP module required but not installed."] = "错误:openssl PHP模块是必要的可却不安装的。";
-$a->strings["Error: PDO or MySQLi PHP module required but not installed."] = "";
-$a->strings["Error: The MySQL driver for PDO is not installed."] = "错误:MySQL 的 PHP 数据对象 (PDO) 扩展驱动未安装。";
+$a->strings["mb_string PHP module"] = "mb_string PHP模块";
 $a->strings["Error: mb_string PHP module required but not installed."] = "错误:mbstring PHP模块必要可没安装的。";
+$a->strings["iconv PHP module"] = "iconv PHP 模块";
 $a->strings["Error: iconv PHP module required but not installed."] = "错误:需要 iconv PHP 模块但它并没有被安装。";
+$a->strings["POSIX PHP module"] = "POSIX PHP 模块";
 $a->strings["Error: POSIX PHP module required but not installed."] = "";
-$a->strings["Error, XML PHP module required but not installed."] = "部件错误,需要 XML PHP 模块但它并没有被安装。";
-$a->strings["The web installer needs to be able to create a file called \"local.ini.php\" in the \"config\" folder of your web server and it is unable to do so."] = "";
+$a->strings["JSON PHP module"] = "";
+$a->strings["Error: JSON PHP module required but not installed."] = "";
+$a->strings["The web installer needs to be able to create a file called \"local.config.php\" in the \"config\" folder of your web server and it is unable to do so."] = "";
 $a->strings["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."] = "这常常是一个权设置,因为网服务器可能不会写文件在文件夹-即使您会。";
-$a->strings["At the end of this procedure, we will give you a text to save in a file named local.ini.php in your Friendica \"config\" folder."] = "";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named local.config.php in your Friendica \"config\" folder."] = "";
 $a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "或者您会这个步骤不做还是实行手动的安装。请看INSTALL.txt文件为说明。";
-$a->strings["config/local.ini.php is writable"] = "";
+$a->strings["config/local.config.php is writable"] = "";
 $a->strings["Friendica uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Friendica用Smarty3模板机车为建筑网页。Smarty3把模板编译成PHP为催建筑网页。";
 $a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/smarty3/ under the Friendica top level folder."] = "为了保存这些模板,网服务器要写权利于view/smarty3/目录在Friendica主目录下。";
 $a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "请保险您网服务器用户(比如www-data)有这个目录的写权利。";
 $a->strings["Note: as a security measure, you should give the web server write access to view/smarty3/ only--not the template files (.tpl) that it contains."] = "注意:为了安全,您应该只给网服务器写权利于view/smarty3/-没有模板文件(.tpl)之下。";
 $a->strings["view/smarty3 is writable"] = "能写view/smarty3";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "在 .htaccess 中的 URL 重写不工作。请检查你的服务器配置。";
+$a->strings["Url rewrite in .htaccess is not working. Make sure you copied .htaccess-dist to .htaccess."] = "";
 $a->strings["Error message from Curl when fetching"] = "";
 $a->strings["Url rewrite is working"] = "URL改写发挥机能";
 $a->strings["ImageMagick PHP extension is not installed"] = "ImageMagick PHP 扩展没有安装";
 $a->strings["ImageMagick PHP extension is installed"] = "ImageMagick PHP 扩展已安装";
 $a->strings["ImageMagick supports GIF"] = "ImageMagick 支持 GIF";
-$a->strings["Post to Email"] = "电邮发布";
-$a->strings["Hide your profile details from unknown viewers?"] = "使简介信息给陌生的看着看不了?";
-$a->strings["Connectors disabled, since \"%s\" is enabled."] = "连接器已停用,因为\"%s\"启用。";
-$a->strings["Visible to everybody"] = "任何人可见的";
-$a->strings["Close"] = "关闭";
-$a->strings["Could not find any unarchived contact entry for this URL (%s)"] = "";
-$a->strings["The contact entries have been archived"] = "";
-$a->strings["Execute pending post updates."] = "";
-$a->strings["All pending post updates are done."] = "";
-$a->strings["Enter new password: "] = "";
-$a->strings["Password can't be empty"] = "";
+$a->strings["Could not connect to database."] = "解不了数据库。";
+$a->strings["Database already in use."] = "数据库已经被使用。";
+$a->strings["Tuesday"] = "星期二";
+$a->strings["Wednesday"] = "星期三";
+$a->strings["Thursday"] = "星期四";
+$a->strings["Friday"] = "星期五";
+$a->strings["Saturday"] = "星期六";
+$a->strings["January"] = "一月";
+$a->strings["February"] = "二月";
+$a->strings["March"] = "三月";
+$a->strings["April"] = "四月";
+$a->strings["May"] = "五月";
+$a->strings["June"] = "六月";
+$a->strings["July"] = "七月";
+$a->strings["August"] = "八月";
+$a->strings["September"] = "九月";
+$a->strings["October"] = "十月";
+$a->strings["November"] = "十一月";
+$a->strings["December"] = "十二月";
+$a->strings["Mon"] = "星期一";
+$a->strings["Tue"] = "星期二";
+$a->strings["Wed"] = "星期三";
+$a->strings["Thu"] = "星期四";
+$a->strings["Fri"] = "星期五";
+$a->strings["Sat"] = "星期六";
+$a->strings["Sun"] = "星期日";
+$a->strings["Jan"] = "一月";
+$a->strings["Feb"] = "二月";
+$a->strings["Mar"] = "三月";
+$a->strings["Apr"] = "四月";
+$a->strings["Jul"] = "七月";
+$a->strings["Aug"] = "八月";
+$a->strings["Sep"] = "";
+$a->strings["Oct"] = "十月";
+$a->strings["Nov"] = "十一月";
+$a->strings["Dec"] = "十二月";
+$a->strings["poke"] = "戳";
+$a->strings["poked"] = "戳了";
+$a->strings["ping"] = "砰";
+$a->strings["pinged"] = "砰了";
+$a->strings["prod"] = "柔戳";
+$a->strings["prodded"] = "柔戳了";
+$a->strings["slap"] = "掌击";
+$a->strings["slapped"] = "掌击了";
+$a->strings["finger"] = "指";
+$a->strings["fingered"] = "指了";
+$a->strings["rebuff"] = "拒绝";
+$a->strings["rebuffed"] = "已拒绝";
 $a->strings["System"] = "系统";
-$a->strings["Home"] = "主页";
-$a->strings["Introductions"] = "介绍";
 $a->strings["%s commented on %s's post"] = "%s 在 %s 的文章发表了评论";
 $a->strings["%s created a new post"] = "%s 创建了一个新文章";
 $a->strings["%s liked %s's post"] = "%s喜欢了%s的消息";
 $a->strings["%s disliked %s's post"] = "%s不喜欢了%s的消息";
-$a->strings["%s is attending %s's event"] = "%s 正在参加 %s 的事件";
-$a->strings["%s is not attending %s's event"] = "%s 不在参加 %s 的事件";
-$a->strings["%s may attend %s's event"] = "%s 可以参加 %s 的事件";
-$a->strings["%s is now friends with %s"] = "%s成为%s的朋友";
-$a->strings["Friend Suggestion"] = "朋友建议";
-$a->strings["Friend/Connect Request"] = "友谊/联络要求";
-$a->strings["New Follower"] = "新关注者";
-$a->strings["Error decoding account file"] = "解码账户文件出错误";
-$a->strings["Error! No version data in file! This is not a Friendica account file?"] = "错误!文件没有版本数!这不是Friendica账户文件吗?";
-$a->strings["User '%s' already exists on this server!"] = "用户「%s」已经存在这个服务器!";
-$a->strings["User creation error"] = "用户创建错误";
-$a->strings["User profile creation error"] = "用户简介创建错误";
-$a->strings["%d contact not imported"] = [
-       0 => "%d 个联系人没导入",
-];
-$a->strings["Done. You can now login with your username and password"] = "完成。你现在可以用你的用户名和密码登录";
-$a->strings["(no subject)"] = "(无主题)";
-$a->strings["This entry was edited"] = "这个条目被编辑了";
-$a->strings["Delete globally"] = "";
-$a->strings["Remove locally"] = "";
-$a->strings["save to folder"] = "保存在文件夹";
-$a->strings["I will attend"] = "我将会参加";
-$a->strings["I will not attend"] = "我将不会参加";
-$a->strings["I might attend"] = "我可能会参加";
-$a->strings["ignore thread"] = "忽视主题";
-$a->strings["unignore thread"] = "取消忽视主题";
-$a->strings["toggle ignore status"] = "切换忽视状态";
-$a->strings["add star"] = "加星";
-$a->strings["remove star"] = "消星";
-$a->strings["toggle star status"] = "转变星现状";
-$a->strings["starred"] = "已标星";
-$a->strings["add tag"] = "加标签";
-$a->strings["like"] = "喜欢";
-$a->strings["dislike"] = "不喜欢";
-$a->strings["Share this"] = "分享这个";
-$a->strings["share"] = "分享";
-$a->strings["to"] = "至";
-$a->strings["via"] = "经过";
-$a->strings["Wall-to-Wall"] = "从墙到墙";
-$a->strings["via Wall-To-Wall:"] = "通过从墙到墙";
-$a->strings["%d comment"] = [
-       0 => "%d 条评论",
+$a->strings["%s is attending %s's event"] = "%s 正在参加 %s 的事件";
+$a->strings["%s is not attending %s's event"] = "%s 不在参加 %s 的事件";
+$a->strings["%s may attend %s's event"] = "%s 可以参加 %s 的事件";
+$a->strings["%s is now friends with %s"] = "%s成为%s的朋友";
+$a->strings["Friend Suggestion"] = "朋友建议";
+$a->strings["Friend/Connect Request"] = "友谊/联络要求";
+$a->strings["New Follower"] = "新关注者";
+$a->strings["Error 400 - Bad Request"] = "";
+$a->strings["Error 401 - Unauthorized"] = "";
+$a->strings["Error 403 - Forbidden"] = "";
+$a->strings["Error 404 - Not Found"] = "";
+$a->strings["Error 500 - Internal Server Error"] = "";
+$a->strings["Error 503 - Service Unavailable"] = "";
+$a->strings["The server cannot or will not process the request due to an apparent client error."] = "";
+$a->strings["Authentication is required and has failed or has not yet been provided."] = "";
+$a->strings["The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource, or may need an account."] = "";
+$a->strings["The requested resource could not be found but may be available in the future."] = "";
+$a->strings["An unexpected condition was encountered and no more specific message is suitable."] = "";
+$a->strings["The server is currently unavailable (because it is overloaded or down for maintenance). Please try again later."] = "";
+$a->strings["Update %s failed. See error logs."] = "更新 %s 失败。查看错误日志。";
+$a->strings["\n\t\t\t\tThe friendica developers released update %s recently,\n\t\t\t\tbut when I tried to install it, something went terribly wrong.\n\t\t\t\tThis needs to be fixed soon and I can't do it alone. Please contact a\n\t\t\t\tfriendica developer if you can not help me on your own. My database might be invalid."] = "";
+$a->strings["The error message is\n[pre]%s[/pre]"] = "错误消息是\n[pre]%s[/pre]";
+$a->strings["\n\t\t\t\t\tThe friendica database was successfully updated from %s to %s."] = "";
+$a->strings["Error decoding account file"] = "解码账户文件出错误";
+$a->strings["Error! No version data in file! This is not a Friendica account file?"] = "错误!文件没有版本数!这不是Friendica账户文件吗?";
+$a->strings["User '%s' already exists on this server!"] = "用户「%s」已经存在这个服务器!";
+$a->strings["User creation error"] = "用户创建错误";
+$a->strings["User profile creation error"] = "用户简介创建错误";
+$a->strings["%d contact not imported"] = [
+       0 => "%d 个联系人没导入",
 ];
-$a->strings["Bold"] = "粗体";
-$a->strings["Italic"] = "斜体";
-$a->strings["Underline"] = "下划线";
-$a->strings["Quote"] = "引语";
-$a->strings["Code"] = "源代码";
-$a->strings["Image"] = "图片";
-$a->strings["Link"] = "链接";
-$a->strings["Video"] = "录像";
-$a->strings["Delete this item?"] = "删除这个项目?";
-$a->strings["show fewer"] = "显示更小";
-$a->strings["No system theme config value set."] = "";
-$a->strings["Logged out."] = "已注销。";
-$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "我们用您输入的OpenID登录的时候碰到问题。请核实拼法是对的。";
-$a->strings["The error message was:"] = "错误通知是:";
-$a->strings["Create a New Account"] = "创建新的账户";
-$a->strings["Password: "] = "密码:";
-$a->strings["Remember me"] = "记住我";
-$a->strings["Or login using OpenID: "] = "或者使用 OpenID 登录: ";
-$a->strings["Forgot your password?"] = "忘记你的密码吗?";
-$a->strings["Website Terms of Service"] = "网站服务条款";
-$a->strings["terms of service"] = "服务条款";
-$a->strings["Website Privacy Policy"] = "网站隐私政策";
-$a->strings["privacy policy"] = "隐私政策";
-$a->strings["At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node's user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication."] = "";
-$a->strings["This data is required for communication and is passed on to the nodes of the communication partners and is stored there. Users can enter additional private data that may be transmitted to the communication partners accounts."] = "";
-$a->strings["At any point in time a logged in user can export their account data from the <a href=\"%1\$s/settings/uexport\">account settings</a>. If the user wants to delete their account they can do so at <a href=\"%1\$s/removeme\">%1\$s/removeme</a>. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners."] = "";
-$a->strings["Privacy Statement"] = "隐私声明";
-$a->strings["%s is now following %s."] = "%s 正在关注 %s.";
-$a->strings["following"] = "关注";
-$a->strings["%s stopped following %s."] = "%s 停止关注了 %s.";
-$a->strings["stopped following"] = "取消关注";
-$a->strings["%s's birthday"] = "%s的生日";
-$a->strings["Happy Birthday %s"] = "生日快乐%s";
-$a->strings["Sharing notification from Diaspora network"] = "分享通知从Diaspora网络";
-$a->strings["Attachments:"] = "附件:";
-$a->strings["Birthday:"] = "生日:";
-$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD 或 MM-DD";
-$a->strings["never"] = "从未";
-$a->strings["less than a second ago"] = "一秒以内";
-$a->strings["year"] = "年";
-$a->strings["years"] = "年";
-$a->strings["months"] = "月";
-$a->strings["weeks"] = "星期";
-$a->strings["days"] = "天";
-$a->strings["hour"] = "小时";
-$a->strings["hours"] = "小时";
-$a->strings["minute"] = "分钟";
-$a->strings["minutes"] = "分钟";
-$a->strings["second"] = "秒";
-$a->strings["seconds"] = "秒";
-$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s以前";
-$a->strings["[no subject]"] = "[无题目]";
+$a->strings["Done. You can now login with your username and password"] = "完成。你现在可以用你的用户名和密码登录";
+$a->strings["There are no tables on MyISAM."] = "未在 MyISAM 中发现表。";
+$a->strings["\nError %d occurred during database update:\n%s\n"] = "\n在数据库更新的时候发生了错误 %d\n%s\n";
+$a->strings["Errors encountered performing database changes: "] = "操作数据库更改的时候遇到了错误:";
+$a->strings["%s: Database update"] = "";
+$a->strings["%s: updating %s table."] = "%s: 正在更新 %s 表。";
+$a->strings["Legacy module file not found: %s"] = "";
 $a->strings["Drop Contact"] = "删除联系人";
 $a->strings["Organisation"] = "组织";
 $a->strings["News"] = "新闻";
@@ -1933,35 +1886,14 @@ $a->strings["l, F j"] = "l, F j";
 $a->strings["Edit event"] = "编辑事件";
 $a->strings["Duplicate event"] = "";
 $a->strings["Delete event"] = "删除事件";
+$a->strings["link to source"] = "链接到来源";
 $a->strings["D g:i A"] = "";
 $a->strings["g:i A"] = "";
 $a->strings["Show map"] = "显示地图";
 $a->strings["Hide map"] = "隐藏地图";
-$a->strings["Login failed"] = "登录失败";
-$a->strings["Not enough information to authenticate"] = "没有足够信息以认证";
-$a->strings["An invitation is required."] = "需要邀请。";
-$a->strings["Invitation could not be verified."] = "不能验证邀请。";
-$a->strings["Invalid OpenID url"] = "无效的OpenID url";
-$a->strings["Please enter the required information."] = "请输入必要的信息。";
-$a->strings["Please use a shorter name."] = "请用一个短一点的名字。";
-$a->strings["Name too short."] = "名字太短。";
-$a->strings["That doesn't appear to be your full (First Last) name."] = "这看上去不是您的全姓名。";
-$a->strings["Your email domain is not among those allowed on this site."] = "这网站允许的域名中没有您的";
-$a->strings["Not a valid email address."] = "无效的邮件地址。";
-$a->strings["The nickname was blocked from registration by the nodes admin."] = "";
-$a->strings["Cannot use that email."] = "无法使用此邮件地址。";
-$a->strings["Your nickname can only contain a-z, 0-9 and _."] = "您的昵称只能由字母、数字和下划线组成。";
-$a->strings["Nickname is already registered. Please choose another."] = "此昵称已被注册。请选择新的昵称。";
-$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "严重错误:安全密钥生成失败。";
-$a->strings["An error occurred during registration. Please try again."] = "注册出现问题。请再次尝试。";
-$a->strings["An error occurred creating your default profile. Please try again."] = "创建你的默认简介的时候出现了一个错误。请再试。";
-$a->strings["An error occurred creating your self contact. Please try again."] = "";
-$a->strings["Friends"] = "朋友";
-$a->strings["An error occurred creating your default contact group. Please try again."] = "";
-$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tThank you for registering at %2\$s. Your account is pending for approval by the administrator.\n\t\t"] = "";
-$a->strings["Registration at %s"] = "在 %s 的注册";
-$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tThank you for registering at %2\$s. Your account has been created.\n\t\t"] = "\n\t\t\t亲爱的 %1\$s,\n\t\t\t\t感谢您在 %2\$s 注册。您的账户已被创建。\n\t\t";
-$a->strings["\n\t\t\tThe login details are as follows:\n\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t\t%1\$s\n\t\t\tPassword:\t\t%5\$s\n\n\t\t\tYou may change your password from your account \"Settings\" page after logging\n\t\t\tin.\n\n\t\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\t\tYou may also wish to add some basic information to your default profile\n\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\t\tWe recommend setting your full name, adding a profile photo,\n\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\t\tthan that.\n\n\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\t\tIf you are new and do not know anybody here, they may help\n\t\t\tyou to make some new and interesting friends.\n\n\t\t\tIf you ever want to delete your account, you can do so at %3\$s/removeme\n\n\t\t\tThank you and welcome to %2\$s."] = "";
+$a->strings["%s's birthday"] = "%s的生日";
+$a->strings["Happy Birthday %s"] = "生日快乐%s";
+$a->strings["Item filed"] = "把项目归档了";
 $a->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>对这个组和任何未来的成员有效。如果这不是你想要的,请用一个不同的名字创建另一个组。";
 $a->strings["Default privacy group for new contacts"] = "对新联系人的默认隐私组";
 $a->strings["Everybody"] = "每人";
@@ -1969,10 +1901,22 @@ $a->strings["edit"] = "编辑";
 $a->strings["Edit group"] = "编辑组";
 $a->strings["Create a new group"] = "创建新组";
 $a->strings["Edit groups"] = "编辑组";
+$a->strings["activity"] = "活动";
+$a->strings["comment"] = [
+       0 => "评论",
+];
+$a->strings["post"] = "文章";
+$a->strings["Content warning: %s"] = "内容警告:%s";
+$a->strings["bytes"] = "字节";
+$a->strings["View on separate page"] = "在另一页面中查看";
+$a->strings["view on separate page"] = "在另一页面中查看";
+$a->strings["[no subject]"] = "[无题目]";
 $a->strings["Requested account is not available."] = "要求的账户不可用。";
+$a->strings["Requested profile is not available."] = "要求的简介联系不上的。";
 $a->strings["Edit profile"] = "修改简介";
 $a->strings["Atom feed"] = "Atom 源";
 $a->strings["Manage/edit profiles"] = "管理/修改简介";
+$a->strings["XMPP:"] = "XMPP:";
 $a->strings["g A l F d"] = "g A l d F";
 $a->strings["F d"] = "F d";
 $a->strings["[today]"] = "[今天]";
@@ -1984,6 +1928,7 @@ $a->strings["Upcoming events the next 7 days:"] = "";
 $a->strings["Member since:"] = "";
 $a->strings["j F, Y"] = "j F, Y";
 $a->strings["j F"] = "j F";
+$a->strings["Birthday:"] = "生日:";
 $a->strings["Age:"] = "年龄:";
 $a->strings["for %1\$d %2\$s"] = "为%1\$d %2\$s";
 $a->strings["Religion:"] = "宗教:";
@@ -1997,185 +1942,279 @@ $a->strings["Love/Romance:"] = "爱情/浪漫";
 $a->strings["Work/employment:"] = "工作";
 $a->strings["School/education:"] = "学院/教育";
 $a->strings["Forums:"] = "";
+$a->strings["Profile Details"] = "简介内容";
 $a->strings["Only You Can See This"] = "只有你可以看这个";
 $a->strings["Tips for New Members"] = "新人建议";
 $a->strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "";
-$a->strings["Add New Contact"] = "添加新的联系人";
-$a->strings["Enter address or web location"] = "输入地址或网络位置";
-$a->strings["Example: bob@example.com, http://example.com/barbara"] = "比如:li@example.com, http://example.com/li";
-$a->strings["%d invitation available"] = [
-       0 => "%d邀请可用的",
+$a->strings["Database storage failed to update %s"] = "";
+$a->strings["Database storage failed to insert data"] = "";
+$a->strings["Filesystem storage failed to create \"%s\". Check you write permissions."] = "";
+$a->strings["Filesystem storage failed to save data to \"%s\". Check your write permissions"] = "";
+$a->strings["Storage base path"] = "";
+$a->strings["Folder were uploaded files are saved. For maximum security, This should be a path outside web server folder tree"] = "";
+$a->strings["Enter a valid existing folder"] = "";
+$a->strings["Login failed"] = "登录失败";
+$a->strings["Not enough information to authenticate"] = "没有足够信息以认证";
+$a->strings["Password can't be empty"] = "";
+$a->strings["Empty passwords are not allowed."] = "";
+$a->strings["The new password has been exposed in a public data dump, please choose another."] = "新密码已暴露在公共数据转储中,请务必另选密码。";
+$a->strings["The password can't contain accentuated letters, white spaces or colons (:)"] = "";
+$a->strings["Passwords do not match. Password unchanged."] = "密码不匹配。密码没改变。";
+$a->strings["An invitation is required."] = "需要邀请。";
+$a->strings["Invitation could not be verified."] = "不能验证邀请。";
+$a->strings["Invalid OpenID url"] = "无效的OpenID url";
+$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "我们用您输入的OpenID登录的时候碰到问题。请核实拼法是对的。";
+$a->strings["The error message was:"] = "错误通知是:";
+$a->strings["Please enter the required information."] = "请输入必要的信息。";
+$a->strings["system.username_min_length (%s) and system.username_max_length (%s) are excluding each other, swapping values."] = "";
+$a->strings["Username should be at least %s character."] = [
+       0 => "",
 ];
-$a->strings["Networks"] = "网络";
-$a->strings["All Networks"] = "所有网络";
-$a->strings["Saved Folders"] = "保存的文件夹";
-$a->strings["Everything"] = "一切";
-$a->strings["Categories"] = "种类";
-$a->strings["%d contact in common"] = [
-       0 => "%d 个共同的联系人",
+$a->strings["Username should be at most %s character."] = [
+       0 => "",
+];
+$a->strings["That doesn't appear to be your full (First Last) name."] = "这看上去不是您的全姓名。";
+$a->strings["Your email domain is not among those allowed on this site."] = "这网站允许的域名中没有您的";
+$a->strings["Not a valid email address."] = "无效的邮件地址。";
+$a->strings["The nickname was blocked from registration by the nodes admin."] = "";
+$a->strings["Cannot use that email."] = "无法使用此邮件地址。";
+$a->strings["Your nickname can only contain a-z, 0-9 and _."] = "您的昵称只能由字母、数字和下划线组成。";
+$a->strings["Nickname is already registered. Please choose another."] = "此昵称已被注册。请选择新的昵称。";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "严重错误:安全密钥生成失败。";
+$a->strings["An error occurred during registration. Please try again."] = "注册出现问题。请再次尝试。";
+$a->strings["default"] = "默认";
+$a->strings["An error occurred creating your default profile. Please try again."] = "创建你的默认简介的时候出现了一个错误。请再试。";
+$a->strings["An error occurred creating your self contact. Please try again."] = "";
+$a->strings["An error occurred creating your default contact group. Please try again."] = "";
+$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tThank you for registering at %2\$s. Your account is pending for approval by the administrator.\n\n\t\t\tYour login details are as follows:\n\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t\t%4\$s\n\t\t\tPassword:\t\t%5\$s\n\t\t"] = "";
+$a->strings["Registration at %s"] = "在 %s 的注册";
+$a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tThank you for registering at %2\$s. Your account has been created.\n\t\t"] = "\n\t\t\t亲爱的 %1\$s,\n\t\t\t\t感谢您在 %2\$s 注册。您的账户已被创建。\n\t\t";
+$a->strings["\n\t\t\tThe login details are as follows:\n\n\t\t\tSite Location:\t%3\$s\n\t\t\tLogin Name:\t\t%1\$s\n\t\t\tPassword:\t\t%5\$s\n\n\t\t\tYou may change your password from your account \"Settings\" page after logging\n\t\t\tin.\n\n\t\t\tPlease take a few moments to review the other account settings on that page.\n\n\t\t\tYou may also wish to add some basic information to your default profile\n\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n\n\t\t\tWe recommend setting your full name, adding a profile photo,\n\t\t\tadding some profile \"keywords\" (very useful in making new friends) - and\n\t\t\tperhaps what country you live in; if you do not wish to be more specific\n\t\t\tthan that.\n\n\t\t\tWe fully respect your right to privacy, and none of these items are necessary.\n\t\t\tIf you are new and do not know anybody here, they may help\n\t\t\tyou to make some new and interesting friends.\n\n\t\t\tIf you ever want to delete your account, you can do so at %3\$s/removeme\n\n\t\t\tThank you and welcome to %2\$s."] = "";
+$a->strings["Item was not found."] = "找不到项目。";
+$a->strings["%d contact edited."] = [
+       0 => "%d 个联系人被编辑了。",
+];
+$a->strings["Could not access contact record."] = "无法访问联系人记录。";
+$a->strings["Could not locate selected profile."] = "找不到选择的简介。";
+$a->strings["Contact updated."] = "联系人更新了。";
+$a->strings["Contact has been blocked"] = "联系人已被屏蔽";
+$a->strings["Contact has been unblocked"] = "联系人已被解除屏蔽";
+$a->strings["Contact has been ignored"] = "联系人已被忽视";
+$a->strings["Contact has been unignored"] = "联系人已被解除忽视";
+$a->strings["Contact has been archived"] = "联系人已存档";
+$a->strings["Contact has been unarchived"] = "联系人已被解除存档";
+$a->strings["Drop contact"] = "";
+$a->strings["Do you really want to delete this contact?"] = "您真的想删除这个联系人吗?";
+$a->strings["Contact has been removed."] = "联系人被删除了。";
+$a->strings["You are mutual friends with %s"] = "您和 %s 互为朋友";
+$a->strings["You are sharing with %s"] = "你正在和 %s 分享";
+$a->strings["%s is sharing with you"] = "%s 正在和你分享";
+$a->strings["Private communications are not available for this contact."] = "私人交流对这个联系人不可用。";
+$a->strings["Never"] = "从未";
+$a->strings["(Update was successful)"] = "(更新成功)";
+$a->strings["(Update was not successful)"] = "(更新不成功)";
+$a->strings["Suggest friends"] = "建议朋友们";
+$a->strings["Network type: %s"] = "网络种类: %s";
+$a->strings["Communications lost with this contact!"] = "和这个联系人的通信断开了!";
+$a->strings["Fetch further information for feeds"] = "拿文源别的消息";
+$a->strings["Fetch information like preview pictures, title and teaser from the feed item. You can activate this if the feed doesn't contain much text. Keywords are taken from the meta header in the feed item and are posted as hash tags."] = "";
+$a->strings["Fetch information"] = "取消息";
+$a->strings["Fetch keywords"] = "获取关键字";
+$a->strings["Fetch information and keywords"] = "取消息和关键词";
+$a->strings["Profile Visibility"] = "简历可见量";
+$a->strings["Contact Information / Notes"] = "联系人信息/便条";
+$a->strings["Contact Settings"] = "联系人设置";
+$a->strings["Contact"] = "联系人";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "请选择简介您想给%s显示他安全地看您的简介的时候。";
+$a->strings["Their personal note"] = "";
+$a->strings["Edit contact notes"] = "编辑联系人便条";
+$a->strings["Block/Unblock contact"] = "屏蔽/解除屏蔽联系人";
+$a->strings["Ignore contact"] = "忽略联系人";
+$a->strings["Repair URL settings"] = "维修URL设置";
+$a->strings["View conversations"] = "看交流";
+$a->strings["Last update:"] = "上个更新:";
+$a->strings["Update public posts"] = "更新公开文章";
+$a->strings["Update now"] = "现在更新";
+$a->strings["Unignore"] = "取消忽视";
+$a->strings["Currently blocked"] = "现在被封禁的";
+$a->strings["Currently ignored"] = "现在不理的";
+$a->strings["Currently archived"] = "当前已存档";
+$a->strings["Awaiting connection acknowledge"] = "等待连接确认";
+$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "回答/喜欢关您公开文章<strong>会</strong>还可见的";
+$a->strings["Notification for new posts"] = "新消息提示";
+$a->strings["Send a notification of every new post of this contact"] = "发送这个联系人的每篇新文章的通知";
+$a->strings["Blacklisted keywords"] = "黑名单关键词";
+$a->strings["Comma separated list of keywords that should not be converted to hashtags, when \"Fetch information and keywords\" is selected"] = "逗号分的关键词不应该翻译成主题标签,如果“取消息和关键词”选择的。";
+$a->strings["Actions"] = "";
+$a->strings["Suggestions"] = "建议";
+$a->strings["Suggest potential friends"] = "建议潜在朋友们";
+$a->strings["Show all contacts"] = "显示所有的联系人";
+$a->strings["Unblocked"] = "未屏蔽的";
+$a->strings["Only show unblocked contacts"] = "只显示没被屏蔽的联系人";
+$a->strings["Blocked"] = "被屏蔽的";
+$a->strings["Only show blocked contacts"] = "只显示被屏蔽的联系人";
+$a->strings["Ignored"] = "忽视的";
+$a->strings["Only show ignored contacts"] = "只显示忽略的联系人";
+$a->strings["Archived"] = "已存档";
+$a->strings["Only show archived contacts"] = "只显示已存档联系人";
+$a->strings["Hidden"] = "隐藏的";
+$a->strings["Only show hidden contacts"] = "只显示隐藏的联系人";
+$a->strings["Organize your contact groups"] = "";
+$a->strings["Search your contacts"] = "搜索您的联系人";
+$a->strings["Archive"] = "存档";
+$a->strings["Unarchive"] = "从存档拿来";
+$a->strings["Batch Actions"] = "批量操作";
+$a->strings["Conversations started by this contact"] = "";
+$a->strings["Posts and Comments"] = "";
+$a->strings["View all contacts"] = "查看所有联系人";
+$a->strings["View all common friends"] = "查看所有公共好友";
+$a->strings["Advanced Contact Settings"] = "高级联系人设置";
+$a->strings["Mutual Friendship"] = "共同友谊";
+$a->strings["is a fan of yours"] = "是你的粉丝";
+$a->strings["you are a fan of"] = "您已关注";
+$a->strings["Edit contact"] = "编辑联系人";
+$a->strings["Toggle Blocked status"] = "切换屏蔽状态";
+$a->strings["Toggle Ignored status"] = "交替忽视现状";
+$a->strings["Toggle Archive status"] = "交替档案现状";
+$a->strings["Delete contact"] = "删除联系人";
+$a->strings["Friendica Communications Server - Setup"] = "";
+$a->strings["System check"] = "系统检测";
+$a->strings["Check again"] = "再检测";
+$a->strings["Database connection"] = "数据库接通";
+$a->strings["In order to install Friendica we need to know how to connect to your database."] = "为安装Friendica我们要知道怎么连接您的数据库。";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "你有关于这些设置有问题的话,请给互联网托管服务或者网页管理联系。";
+$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "您下边指定的数据库应该已经存在。如果还没有,请创建后继续。";
+$a->strings["Database Server Name"] = "数据库服务器名";
+$a->strings["Database Login Name"] = "数据库登录名";
+$a->strings["Database Login Password"] = "数据库登录密码";
+$a->strings["For security reasons the password must not be empty"] = "由于安全的原因,密码不能为空";
+$a->strings["Database Name"] = "数据库名字";
+$a->strings["Site administrator email address"] = "网站行政人员邮件地址";
+$a->strings["Your account email address must match this in order to use the web admin panel."] = "您账户邮件地址必要符合这个为用网站处理仪表板";
+$a->strings["Please select a default timezone for your website"] = "请选择您网站的默认时区";
+$a->strings["Site settings"] = "网站设置";
+$a->strings["System Language:"] = "系统语言:";
+$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "为 Friendica 安装界面及邮件发送设置默认语言。";
+$a->strings["Your Friendica site database has been installed."] = "您Friendica网站数据库被安装了。";
+$a->strings["Installation finished"] = "";
+$a->strings["<h1>What next</h1>"] = "<h1>下步是什么</h1>";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the worker."] = "";
+$a->strings["Go to your new Friendica node <a href=\"%s/register\">registration page</a> and register as new user. Remember to use the same email you have entered as administrator email. This will allow you to enter the site admin panel."] = "";
+$a->strings["Item Guid"] = "";
+$a->strings["Create a New Account"] = "创建新的账户";
+$a->strings["Password: "] = "密码:";
+$a->strings["Remember me"] = "记住我";
+$a->strings["Or login using OpenID: "] = "或者使用 OpenID 登录: ";
+$a->strings["Forgot your password?"] = "忘记你的密码吗?";
+$a->strings["Website Terms of Service"] = "网站服务条款";
+$a->strings["terms of service"] = "服务条款";
+$a->strings["Website Privacy Policy"] = "网站隐私政策";
+$a->strings["privacy policy"] = "隐私政策";
+$a->strings["Logged out."] = "已注销。";
+$a->strings["Bad Request."] = "";
+$a->strings["At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node's user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication."] = "";
+$a->strings["This data is required for communication and is passed on to the nodes of the communication partners and is stored there. Users can enter additional private data that may be transmitted to the communication partners accounts."] = "";
+$a->strings["At any point in time a logged in user can export their account data from the <a href=\"%1\$s/settings/uexport\">account settings</a>. If the user wants to delete their account they can do so at <a href=\"%1\$s/removeme\">%1\$s/removeme</a>. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners."] = "";
+$a->strings["Privacy Statement"] = "隐私声明";
+$a->strings["This entry was edited"] = "这个条目被编辑了";
+$a->strings["Delete locally"] = "";
+$a->strings["Delete globally"] = "";
+$a->strings["Remove locally"] = "";
+$a->strings["save to folder"] = "保存在文件夹";
+$a->strings["I will attend"] = "我将会参加";
+$a->strings["I will not attend"] = "我将不会参加";
+$a->strings["I might attend"] = "我可能会参加";
+$a->strings["ignore thread"] = "忽视主题";
+$a->strings["unignore thread"] = "取消忽视主题";
+$a->strings["toggle ignore status"] = "切换忽视状态";
+$a->strings["add star"] = "加星";
+$a->strings["remove star"] = "消星";
+$a->strings["toggle star status"] = "转变星现状";
+$a->strings["starred"] = "已标星";
+$a->strings["add tag"] = "加标签";
+$a->strings["like"] = "喜欢";
+$a->strings["dislike"] = "不喜欢";
+$a->strings["Share this"] = "分享这个";
+$a->strings["share"] = "分享";
+$a->strings["to"] = "至";
+$a->strings["via"] = "经过";
+$a->strings["Wall-to-Wall"] = "从墙到墙";
+$a->strings["via Wall-To-Wall:"] = "通过从墙到墙";
+$a->strings["Notifier task is pending"] = "";
+$a->strings["Delivery to remote servers is pending"] = "";
+$a->strings["Delivery to remote servers is underway"] = "";
+$a->strings["Delivery to remote servers is mostly done"] = "";
+$a->strings["%d comment"] = [
+       0 => "%d 条评论",
 ];
-$a->strings["Frequently"] = "";
-$a->strings["Hourly"] = "每小时";
-$a->strings["Twice daily"] = "每天两次";
-$a->strings["Daily"] = "每天";
-$a->strings["Weekly"] = "每周";
-$a->strings["Monthly"] = "每月";
-$a->strings["OStatus"] = "OStatus";
-$a->strings["RSS/Atom"] = "RSS/Atom";
-$a->strings["Zot!"] = "Zot!";
-$a->strings["LinkedIn"] = "LinkedIn";
-$a->strings["XMPP/IM"] = "XMPP/IM";
-$a->strings["MySpace"] = "MySpace";
-$a->strings["Google+"] = "Google+";
-$a->strings["pump.io"] = "pump.io";
-$a->strings["Twitter"] = "推特";
-$a->strings["Diaspora Connector"] = "";
-$a->strings["GNU Social Connector"] = "GNU Social 连接器";
-$a->strings["pnut"] = "";
-$a->strings["Male"] = "男";
-$a->strings["Female"] = "女";
-$a->strings["Currently Male"] = "目前为男";
-$a->strings["Currently Female"] = "目前为女";
-$a->strings["Mostly Male"] = "更多为男";
-$a->strings["Mostly Female"] = "更多为女";
-$a->strings["Transgender"] = "跨性别";
-$a->strings["Intersex"] = "双性人";
-$a->strings["Transsexual"] = "换性者";
-$a->strings["Hermaphrodite"] = "雌雄间性";
-$a->strings["Neuter"] = "中性";
-$a->strings["Non-specific"] = "不明确的";
-$a->strings["Other"] = "别的";
-$a->strings["Males"] = "男人";
-$a->strings["Females"] = "女人";
-$a->strings["Gay"] = "男同性恋的";
-$a->strings["Lesbian"] = "女同性恋的";
-$a->strings["No Preference"] = "无偏爱";
-$a->strings["Bisexual"] = "双性恋的";
-$a->strings["Autosexual"] = "自性的";
-$a->strings["Abstinent"] = "有节制的";
-$a->strings["Virgin"] = "原始的";
-$a->strings["Deviant"] = "变态";
-$a->strings["Fetish"] = "恋物对象";
-$a->strings["Oodles"] = "多多";
-$a->strings["Nonsexual"] = "无性";
-$a->strings["Single"] = "单身";
-$a->strings["Lonely"] = "寂寞";
-$a->strings["Available"] = "单身的";
-$a->strings["Unavailable"] = "不可获得的";
-$a->strings["Has crush"] = "迷恋";
-$a->strings["Infatuated"] = "痴迷";
-$a->strings["Dating"] = "约会";
-$a->strings["Unfaithful"] = "外遇";
-$a->strings["Sex Addict"] = "性交因成瘾者";
-$a->strings["Friends/Benefits"] = "朋友/益";
-$a->strings["Casual"] = "休闲";
-$a->strings["Engaged"] = "已订婚的";
-$a->strings["Married"] = "结婚";
-$a->strings["Imaginarily married"] = "想像结婚";
-$a->strings["Partners"] = "伴侣";
-$a->strings["Cohabiting"] = "同居";
-$a->strings["Common law"] = "普通法结婚";
-$a->strings["Happy"] = "幸福";
-$a->strings["Not looking"] = "没找";
-$a->strings["Swinger"] = "交换性伴侣的";
-$a->strings["Betrayed"] = "被背叛";
-$a->strings["Separated"] = "分手";
-$a->strings["Unstable"] = "不稳";
-$a->strings["Divorced"] = "离婚";
-$a->strings["Imaginarily divorced"] = "想像离婚";
-$a->strings["Widowed"] = "寡妇";
-$a->strings["Uncertain"] = "不确定";
-$a->strings["It's complicated"] = "是复杂";
-$a->strings["Don't care"] = "无所谓";
-$a->strings["Ask me"] = "问我";
-$a->strings["General Features"] = "通用特性";
-$a->strings["Multiple Profiles"] = "多简介";
-$a->strings["Ability to create multiple profiles"] = "能穿凿多简介";
-$a->strings["Photo Location"] = "照片地点";
-$a->strings["Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map."] = "";
-$a->strings["Export Public Calendar"] = "导出公共日历";
-$a->strings["Ability for visitors to download the public calendar"] = "";
-$a->strings["Post Composition Features"] = "文章编写特性";
-$a->strings["Post Preview"] = "文章预览";
-$a->strings["Allow previewing posts and comments before publishing them"] = "在发布前允许预览文章和评论";
-$a->strings["Auto-mention Forums"] = "自动提示论坛";
-$a->strings["Add/remove mention when a forum page is selected/deselected in ACL window."] = "";
-$a->strings["Network Sidebar"] = "";
-$a->strings["Ability to select posts by date ranges"] = "能按时期范围选择文章";
-$a->strings["List Forums"] = "列出各论坛";
-$a->strings["Enable widget to display the forums your are connected with"] = "";
-$a->strings["Group Filter"] = "组过滤器";
-$a->strings["Enable widget to display Network posts only from selected group"] = "启用用于只显示从所选组发出的网络文章的小组件";
-$a->strings["Network Filter"] = "网络滤器";
-$a->strings["Enable widget to display Network posts only from selected network"] = "使光表示网络文章从选择的网络小窗口";
-$a->strings["Save search terms for re-use"] = "保存搜索关键为再用";
-$a->strings["Network Tabs"] = "网络分页";
-$a->strings["Network Personal Tab"] = "网络私人分页";
-$a->strings["Enable tab to display only Network posts that you've interacted on"] = "启用只显示你参与了的网络文章的标签页";
-$a->strings["Network New Tab"] = "网络新分页";
-$a->strings["Enable tab to display only new Network posts (from the last 12 hours)"] = "启用只显示新的网络文章(过去12小时)的标签页";
-$a->strings["Network Shared Links Tab"] = "网络分享链接分页";
-$a->strings["Enable tab to display only Network posts with links in them"] = "使表示光网络文章包括链接分页可用";
-$a->strings["Post/Comment Tools"] = "文章/评论工具";
-$a->strings["Multiple Deletion"] = "多删除";
-$a->strings["Select and delete multiple posts/comments at once"] = "选择和删除多文章/评论一次";
-$a->strings["Edit Sent Posts"] = "编辑发送的文章";
-$a->strings["Edit and correct posts and comments after sending"] = "编辑或修改文章和评论发送后";
-$a->strings["Tagging"] = "标签";
-$a->strings["Ability to tag existing posts"] = "能把目前的文章标签";
-$a->strings["Post Categories"] = "文章种类";
-$a->strings["Add categories to your posts"] = "加入种类给您的文章";
-$a->strings["Ability to file posts under folders"] = "能把文章归档在文件夹 ";
-$a->strings["Dislike Posts"] = "不喜欢文章";
-$a->strings["Ability to dislike posts/comments"] = "能不喜欢文章/评论";
-$a->strings["Star Posts"] = "加星的文章";
-$a->strings["Ability to mark special posts with a star indicator"] = "能把优秀文章跟星标注";
-$a->strings["Mute Post Notifications"] = "";
-$a->strings["Ability to mute notifications for a thread"] = "";
-$a->strings["Advanced Profile Settings"] = "";
-$a->strings["Show visitors public community forums at the Advanced Profile Page"] = "";
-$a->strings["Tag Cloud"] = "标签云";
-$a->strings["Provide a personal tag cloud on your profile page"] = "在您的个人简介中提供个人标签云";
-$a->strings["Display Membership Date"] = "";
-$a->strings["Display membership date in profile"] = "";
-$a->strings["Nothing new here"] = "这里没有什么新的";
-$a->strings["Clear notifications"] = "清理出通知";
-$a->strings["Personal notes"] = "私人的便条";
-$a->strings["Your personal notes"] = "你的私人便条";
-$a->strings["Sign in"] = "登录";
-$a->strings["Home Page"] = "主页";
-$a->strings["Create an account"] = "注册";
-$a->strings["Help and documentation"] = "帮助及文档";
-$a->strings["Apps"] = "应用程序";
-$a->strings["Addon applications, utilities, games"] = "可加的应用,设施,游戏";
-$a->strings["Search site content"] = "搜索网站内容";
-$a->strings["Community"] = "社会";
-$a->strings["Conversations on this and other servers"] = "";
-$a->strings["Directory"] = "名录";
-$a->strings["People directory"] = "人物名录";
-$a->strings["Information about this friendica instance"] = "资料关于这个Friendica服务器";
-$a->strings["Terms of Service of this Friendica instance"] = "";
-$a->strings["Network Reset"] = "网络重设";
-$a->strings["Load Network page with no filters"] = "表示网络页无滤器";
-$a->strings["Friend Requests"] = "友谊邀请";
-$a->strings["See all notifications"] = "看所有的通知";
-$a->strings["Mark all system notifications seen"] = "记号各系统通知看过的";
-$a->strings["Inbox"] = "收件箱";
-$a->strings["Outbox"] = "发件箱";
-$a->strings["Manage"] = "管理";
-$a->strings["Manage other pages"] = "管理别的页";
-$a->strings["Manage/Edit Profiles"] = "管理/编辑简介";
-$a->strings["Site setup and configuration"] = "网站开办和配置";
-$a->strings["Navigation"] = "导航";
-$a->strings["Site map"] = "网站地图";
-$a->strings["Export"] = "导出";
-$a->strings["Export calendar as ical"] = "导出日历为 ical";
-$a->strings["Export calendar as csv"] = "导出日历为 csv";
-$a->strings["Embedding disabled"] = "嵌入已停用";
-$a->strings["Embedded content"] = "嵌入内容";
-$a->strings["view full size"] = "看全尺寸";
-$a->strings["Image/photo"] = "图像/照片";
-$a->strings["$1 wrote:"] = "$1写:";
-$a->strings["Encrypted content"] = "加密的内容";
-$a->strings["Invalid source protocol"] = "无效的源协议";
-$a->strings["Invalid link protocol"] = "无效的连接协议";
+$a->strings["Sharing notification from Diaspora network"] = "分享通知从Diaspora网络";
+$a->strings["Attachments:"] = "附件:";
+$a->strings["%s is now following %s."] = "%s 正在关注 %s.";
+$a->strings["following"] = "关注";
+$a->strings["%s stopped following %s."] = "%s 停止关注了 %s.";
+$a->strings["stopped following"] = "取消关注";
+$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD 或 MM-DD";
+$a->strings["never"] = "从未";
+$a->strings["less than a second ago"] = "一秒以内";
+$a->strings["year"] = "年";
+$a->strings["years"] = "年";
+$a->strings["months"] = "月";
+$a->strings["weeks"] = "星期";
+$a->strings["days"] = "天";
+$a->strings["hour"] = "小时";
+$a->strings["hours"] = "小时";
+$a->strings["minute"] = "分钟";
+$a->strings["minutes"] = "分钟";
+$a->strings["second"] = "秒";
+$a->strings["seconds"] = "秒";
+$a->strings["in %1\$d %2\$s"] = "";
+$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s以前";
+$a->strings["(no subject)"] = "(无主题)";
+$a->strings["%s: Updating author-id and owner-id in item and thread table. "] = "";
+$a->strings["%s: Updating post-type."] = "";
+$a->strings["greenzero"] = "greenzero";
+$a->strings["purplezero"] = "purplezero";
+$a->strings["easterbunny"] = "easterbunny";
+$a->strings["darkzero"] = "darkzero";
+$a->strings["comix"] = "comix";
+$a->strings["slackr"] = "slackr";
+$a->strings["Variations"] = "变化";
+$a->strings["Custom"] = "";
+$a->strings["Note"] = "便条";
+$a->strings["Check image permissions if all users are allowed to see the image"] = "";
+$a->strings["Select color scheme"] = "";
+$a->strings["Navigation bar background color"] = "";
+$a->strings["Navigation bar icon color "] = "";
+$a->strings["Link color"] = "链接颜色";
+$a->strings["Set the background color"] = "设置背景色";
+$a->strings["Content background opacity"] = "";
+$a->strings["Set the background image"] = "设置背景图片";
+$a->strings["Background image style"] = "";
+$a->strings["Login page background image"] = "登录页面背景图片";
+$a->strings["Login page background color"] = "登录页面背景色";
+$a->strings["Leave background image and color empty for theme defaults"] = "";
+$a->strings["Top Banner"] = "";
+$a->strings["Resize image to the width of the screen and show background color below on long pages."] = "";
+$a->strings["Full screen"] = "";
+$a->strings["Resize image to fill entire screen, clipping either the right or the bottom."] = "";
+$a->strings["Single row mosaic"] = "";
+$a->strings["Resize image to repeat it on a single row, either vertical or horizontal."] = "";
+$a->strings["Mosaic"] = "";
+$a->strings["Repeat image to fill the screen."] = "";
+$a->strings["Guest"] = "";
+$a->strings["Visitor"] = "访客";
+$a->strings["Alignment"] = "对齐";
+$a->strings["Left"] = "左边";
+$a->strings["Center"] = "中间";
+$a->strings["Color scheme"] = "色彩方案";
+$a->strings["Posts font size"] = "文章";
+$a->strings["Textareas font size"] = "文本区字体大小";
+$a->strings["Comma separated list of helper forums"] = "";
+$a->strings["Set style"] = "设置风格";
+$a->strings["Community Pages"] = "社会页";
+$a->strings["Community Profiles"] = "社会简介";
+$a->strings["Help or @NewHere ?"] = "需要帮助或@第一次来这儿?";
+$a->strings["Connect Services"] = "连接服务";
+$a->strings["Find Friends"] = "找朋友们";
+$a->strings["Last users"] = "上次用户";
+$a->strings["Quick Start"] = "快速入门";
index 9412b681ebf55afb2bd0f547f00b16d47a19127b..352ff417f0e01ab9812498e5a6165b7dbc26d807 100644 (file)
@@ -17,7 +17,7 @@
                                        <a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
                                </div>
                                <div class="comment-edit-photo-end"></div>
-                               <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});" onBlur="commentClose(this,{{$id}});">{{$default}}</textarea>
+                               <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});" onBlur="commentClose(this,{{$id}});">{{if $threaded != false}}{{$default}}{{/if}}</textarea>
                                {{if $qcomment}}
                                        <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});" >
                                        <option value=""></option>
index efe2c77c1b38b35977d36fa46009434dcf16b1af..399cf0c4316ea57384eb57cb11467ef7d1d1f575 100644 (file)
@@ -1,8 +1,8 @@
        
        <div class='field input' id='wrapper_{{$field.0}}'>
                <label for='id_{{$field.0}}'>{{$field.1}}</label>
-               <input{{if $field.6 eq 'email'}} type='email'{{elseif $field.6 eq 'url'}} type='url'{{else}} type="text"{{/if}} name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2 nofilter}}"{{if $field.4 eq 'required'}} required{{/if}}{{if $field.5 eq "autofocus"}} autofocus{{elseif $field.5}} {{$field.5}}{{/if}} aria-describedby='{{$field.0}}_tip'>
-               {{if $field.3}}
+               <input{{if $field.6 eq 'email'}} type='email'{{elseif $field.6 eq 'url'}} type='url'{{else}} type="text"{{/if}} name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2 nofilter}}"{{if $field.4 eq 'required'}} required{{/if}}{{if $field.5 eq "autofocus"}} autofocus{{elseif $field.5}} {{$field.5 nofilter}}{{/if}} aria-describedby='{{$field.0}}_tip'>
+       {{if $field.3}}
                <span class='field_help' role='tooltip' id='{{$field.0}}_tip'>{{$field.3 nofilter}}</span>
-               {{/if}}
+       {{/if}}
        </div>
index 2016a0bb7e81a4c538bae6fc599204a41ebe2ad4..c174078e21aa11339d9cf903d1f89edd07a41e46 100644 (file)
@@ -1,11 +1,12 @@
 
-       
        <div class='field select'>
                <label for='id_{{$field.0}}'>{{$field.1}}</label>
                <select name='{{$field.0}}' id='id_{{$field.0}}' aria-describedby='{{$field.0}}_tip'>
-                       {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
+       {{foreach $field.4 as $opt=>$val}}
+                       <option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>
+       {{/foreach}}
                </select>
-               {{if $field.3}}
+       {{if $field.3}}
                <span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span>
-               {{/if}}
+       {{/if}}
        </div>
index 1f4630e995eb0825b4becbd340a5b1c08c1df76e..534ec34fc0b7ad889b982fe8834f02898ae0530c 100644 (file)
@@ -1,11 +1,10 @@
 
-       
-       <div class='field select'>
-               <label for='id_{{$field.0}}'>{{$field.1}}</label>
-               <select name='{{$field.0}}' id='id_{{$field.0}}' aria-describedby='{{$field.0}}_tip'>
+       <div class="field select">
+               <label for="id_{{$field.0}}">{{$field.1}}</label>
+               <select name="{{$field.0}}" id="id_{{$field.0}}" aria-describedby="{{$field.0}}_tip">
                        {{$field.4 nofilter}}
                </select>
-               {{if $field.3}}
+       {{if $field.3}}
                <span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span>
-               {{/if}}
+       {{/if}}
        </div>
index 2ee145b0c4d6185a13596503767d98a2eb812f67..eadcbe56c7d6ab806327eff4989e82ba4ff7e352 100644 (file)
@@ -1,9 +1,8 @@
 
-       
-       <div class='field textarea'>
-               <label for='id_{{$field.0}}'>{{$field.1}}</label>
-               <textarea name='{{$field.0}}' id='id_{{$field.0}}' aria-describedby='{{$field.0}}_tip'>{{$field.2 nofilter}}</textarea>
-               {{if $field.3}}
+       <div class="field textarea">
+               <label for="id_{{$field.0}}">{{$field.1}}</label>
+               <textarea name="{{$field.0}}" id="id_{{$field.0}}" aria-describedby="{{$field.0}}_tip">{{$field.2}}</textarea>
+       {{if $field.3}}
                <span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span>
-               {{/if}}
+       {{/if}}
        </div>
index 6242cc67119162f99ca3e515735342d0ce67cbce..922797eb2d3badaf58838886d1088a5ed0cf75e9 100644 (file)
@@ -1,12 +1,18 @@
 
-       {{if $field.5}}<script>$(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>{{/if}}
-       <div class='field select'>
-               <label for='id_{{$field.0}}'>{{$field.1}}</label>
-               <select name='{{$field.0}}' id='id_{{$field.0}}' {{if $field.5}}onchange="previewTheme(this);"{{/if}} aria-describedby='{{$field.0}}_tip'>
-                       {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
+{{if $field.5}}
+       <script>$(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>
+{{/if}}
+       <div class="field select">
+               <label for="id_{{$field.0}}">{{$field.1}}</label>
+               <select name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.5}}onchange="previewTheme(this);"{{/if}} aria-describedby="{{$field.0}}_tip">
+       {{foreach $field.4 as $opt=>$val}}
+                       <option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>
+       {{/foreach}}
                </select>
-               {{if $field.3}}
+       {{if $field.3}}
                <span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span>
-               {{/if}}
-               {{if $field.5}}<div id="theme-preview"></div>{{/if}}
+       {{/if}}
+       {{if $field.5}}
+               <div id="theme-preview"></div>
+       {{/if}}
        </div>
index 182efcf18d35b9a01ef01ff50bd8b23bd5d9c4b5..64f0816647ddd890a937ab03432c847d06b44b96 100644 (file)
@@ -1,12 +1,12 @@
 
-       <div class='field yesno'>
-               <label for='id_{{$field.0}}'>{{$field.1}}</label>
-               <div class='onoff' id="id_{{$field.0}}_onoff">
-                       <input  type="hidden" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2 nofilter}}" aria-describedby='{{$field.0}}_tip'>
-                       <a href="#" class='off'>
+       <div class="field yesno">
+               <label for="id_{{$field.0}}">{{$field.1}}</label>
+               <div class="onoff" id="id_{{$field.0}}_onoff">
+                       <input  type="hidden" name="{{$field.0}}" id="id_{{$field.0}}" value="{{$field.2 nofilter}}" aria-describedby="{{$field.0}}_tip">
+                       <a href="#" class="off">
                                {{if $field.4}}{{$field.4.0}}{{else}}OFF{{/if}}
                        </a>
-                       <a href="#" class='on'>
+                       <a href="#" class="on">
                                {{if $field.4}}{{$field.4.1}}{{else}}ON{{/if}}
                        </a>
                </div>
index e6d81ac2bd69f2a2a2b3edb0f74015bcaa96c380..bfa5f093884d5cce04866eee21c2abc4bfb9c242 100644 (file)
@@ -44,7 +44,7 @@
                                                data-role="insert-formatting" data-bbcode="video" data-id="{{$id}}"></a></li>
                                </ul>
                                <div class="comment-edit-bb-end"></div>
-                               <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});cmtBbOpen(this, {{$id}});" onBlur="commentClose(this,{{$id}});cmtBbClose(this,{{$id}});">{{$default}}</textarea>
+                               <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});cmtBbOpen(this, {{$id}});" onBlur="commentClose(this,{{$id}});cmtBbClose(this,{{$id}});">{{if $threaded != false}}{{$default}}{{/if}}</textarea>
                                {{if $qcomment}}
                                        <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});">
                                        <option value=""></option>
index eed3f194806905197214542d7182911aea437648..c2ad62d3c3eec05dfbf9b8c26a3463bc77ee4e8f 100644 (file)
@@ -1135,7 +1135,9 @@ aside .vcard .p-addr {
     white-space: nowrap;
     padding-bottom: 2px;
 }
-
+aside .vcard .title {
+    margin-top: 10px;
+}
 aside .vcard .detail {
     display: table;
     padding: 5px 0;
@@ -1150,6 +1152,7 @@ aside .vcard .icon {
 }
 #profile-extra-links {
     overflow: auto;
+    margin-bottom: 10px;
 }
 aside .vcard #dfrn-request-link-button,
 aside .vcard #wallmessage-link-botton {
@@ -1904,6 +1907,10 @@ code > .hl-main {
 .wall-item-bottom .label a {
     color: #fff;
 }
+.wall-item-tags .category,
+.wall-item-tags .folder {
+    margin-right: 3px;
+}
 
 /* item social action buttons */
 .wall-item-actions {
index ef55203a05b51973fd0868cbed2fa4adf5e49a1a..1a92393a8032ee55d57913f63cabdb196c1a75db 100644 (file)
@@ -1,11 +1,11 @@
 
-<div id="id_{{$field.0}}_wrapper" class="form-group field input">
+       <div id="id_{{$field.0}}_wrapper" class="form-group field input">
        {{if !isset($label) || $label != false }}
-       <label for="id_{{$field.0}}" id="label_{{$field.0}}">{{$field.1}}{{if $field.4}}<span class="required"> {{$field.4}}</span>{{/if}}</label>
+               <label for="id_{{$field.0}}" id="label_{{$field.0}}">{{$field.1}}{{if $field.4}}<span class="required"> {{$field.4}}</span>{{/if}}</label>
        {{/if}}
-       <input class="form-control" name="{{$field.0}}" id="id_{{$field.0}}"{{if $field.6 eq "email"}} type="email"{{elseif $field.6 eq "url"}} type="url"{{else}} type="text"{{/if}} value="{{$field.2 nofilter}}"{{if $field.4 eq "required"}} required{{/if}}{{if $field.5 eq "autofocus"}} autofocus{{elseif $field.5}} {{$field.5}}{{/if}} aria-describedby="{{$field.0}}_tip">
+               <input class="form-control" name="{{$field.0}}" id="id_{{$field.0}}"{{if $field.6 eq "email"}} type="email"{{elseif $field.6 eq "url"}} type="url"{{else}} type="text"{{/if}} value="{{$field.2 nofilter}}"{{if $field.4 eq "required"}} required{{/if}}{{if $field.5 eq "autofocus"}} autofocus{{elseif $field.5}} {{$field.5 nofilter}}{{/if}} aria-describedby="{{$field.0}}_tip">
        {{if $field.3}}
-       <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
+               <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
        {{/if}}
-       <div class="clear"></div>
-</div>
+               <div class="clear"></div>
+       </div>
index 2a609ed71dadbca0fd1b8707f811f842abe0ffe7..25cfd652cd22970aa223e35c2237586c001df919 100644 (file)
@@ -1,10 +1,12 @@
 
-<div class="form-group field select">
+       <div class="form-group field select">
                <label for="id_{{$field.0}}">{{$field.1}}</label>
                <select name="{{$field.0}}" id="id_{{$field.0}}" class="form-control" aria-describedby="{{$field.0}}_tip">
-                       {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
+       {{foreach $field.4 as $opt=>$val}}
+                       <option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>
+       {{/foreach}}
                </select>
-               {{if $field.3}}
+       {{if $field.3}}
                <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
-               {{/if}}
-</div>
+       {{/if}}
+       </div>
index bbd8368f261ed7e64ed83c24b349b8e3cfcbecf3..7cae7144bef0f30df626d0089cd086de15853a4d 100644 (file)
@@ -1,10 +1,10 @@
 
-<div class="form-group field select">
-       <label for="id_{{$field.0}}">{{$field.1}}</label>
-       <select class="form-control" name="{{$field.0}}" id="id_{{$field.0}}" aria-describedby="{{$field.0}}_tip">
-               {{$field.4 nofilter}}
-       </select>
+       <div class="form-group field select">
+               <label for="id_{{$field.0}}">{{$field.1}}</label>
+               <select class="form-control" name="{{$field.0}}" id="id_{{$field.0}}" aria-describedby="{{$field.0}}_tip">
+                       {{$field.4 nofilter}}
+               </select>
        {{if $field.3}}
-       <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
+               <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
        {{/if}}
-</div>
+       </div>
index baf2e844870f04fbd48445cc9766e17380083cd5..769a8357aefd5d4d32dfeb55918c1c9c384d0cf2 100644 (file)
@@ -1,9 +1,9 @@
 
        <div class="form-group field textarea">
                <label for="id_{{$field.0}}">{{$field.1}}</label>
-               <textarea class="form-control text-autosize" name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.4}}{{$field.4}}{{/if}} aria-describedby="{{$field.0}}_tip">{{$field.2}}</textarea>
-               {{if $field.3}}
+               <textarea class="form-control text-autosize" name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.4}}{{$field.4 nofilter}}{{/if}} aria-describedby="{{$field.0}}_tip">{{$field.2}}</textarea>
+       {{if $field.3}}
                <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
-               {{/if}}
+       {{/if}}
                <div class="clear"></div>
        </div>
index 78c179436bac2cf6cfd408f01bac85697760a96a..f71b19131ac152e4a194030442e8f8cb0018a83b 100644 (file)
@@ -1,12 +1,18 @@
 
-{{if $field.5=="preview"}}<script type="text/javascript">$(document).ready(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>{{/if}}
-<div class="form-group field select">
-       <label for="id_{{$field.0}}">{{$field.1}}</label>
-       <select class="form-control" name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.5=="preview"}}onchange="previewTheme(this);"{{/if}} aria-describedby="{{$field.0}}_tip" >
-               {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
-       </select>
+{{if $field.5=="preview"}}
+       <script type="text/javascript">$(document).ready(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>
+{{/if}}
+       <div class="form-group field select">
+               <label for="id_{{$field.0}}">{{$field.1}}</label>
+               <select class="form-control" name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.5=="preview"}}onchange="previewTheme(this);"{{/if}} aria-describedby="{{$field.0}}_tip" >
+       {{foreach $field.4 as $opt=>$val}}
+                       <option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>
+       {{/foreach}}
+               </select>
        {{if $field.3}}
-       <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
+               <span class="help-block" id="{{$field.0}}_tip" role="tooltip">{{$field.3 nofilter}}</span>
        {{/if}}
-       {{if $field.5=="preview"}}<div id="theme-preview"></div>{{/if}}
-</div>
+       {{if $field.5=="preview"}}
+               <div id="theme-preview"></div>
+       {{/if}}
+       </div>
index 462fb356775eea68eea3ac5bf21ce9161d17d7d5..02aa89fcccc3eb3f53954d923446d0106f593719 100644 (file)
@@ -42,6 +42,8 @@
                        {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
 
                        {{if $profile.pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
+
+                       {{if $account_type}}<div class="account-type">({{$account_type}})</div>{{/if}}
                </div>
 
                <div id="profile-extra-links">
index b668229e8af5ebb2b71017475cafabd905c8ab12..c6f90ac05d63dce6d584201d1dfb38f1e1af5c85 100644 (file)
                        {{/if}}
 
                                {{foreach $item.folders as $cat}}
-                                       <span class="folder label btn-danger sm">{{$cat.name}}</a>{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
+                                       <span class="folder label btn-danger sm">{{$cat.name}}{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
                                {{/foreach}}
 
                                {{foreach $item.categories as $cat}}
-                                       <span class="category label btn-success sm">{{$cat.name}}</a>{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
+                                       <span class="category label btn-success sm">{{$cat.name}}{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
                                {{/foreach}}
                                </div>
                                {{if $item.edited}}<div class="itemedited text-muted">{{$item.edited['label']}} (<span title="{{$item.edited['date']}}">{{$item.edited['relative']}}</span>)</div>{{/if}}
index 0eae2841bd3e200d19e06e5ca96017f7e5284c77..d1b41728b19fb7895e99e9ca4cc60541279128e7 100644 (file)
@@ -28,9 +28,9 @@
 
                        {{if $addr}}<div class="p-addr">{{$addr}}</div>{{/if}}
 
-                       {{if $pdesc}}<div class="title">{{$pdesc}}</div>{{/if}}
+                       {{if $account_type}}<div class="account-type">({{$account_type}})</div>{{/if}}
 
-                       {{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
+                       {{if $pdesc}}<div class="title">{{$pdesc}}</div>{{/if}}
 
                        {{if $network_link}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$network_link nofilter}}</dd></dl>{{/if}}
                </div>
index 12e419f8a59f8562ac06fea94aa475d8171ad090..c149b58a515edabedab9fc051469d09eb653614d 100644 (file)
@@ -293,11 +293,11 @@ as the value of $top_child_total (this is done at the end of this file)
                {{/if}}
 
                        {{foreach $item.folders as $cat}}
-                               <span class="folder label btn-danger sm"><span class="p-category">{{$cat.name}}</span></a>{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
+                               <span class="folder label btn-danger sm p-category">{{$cat.name}}{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
                        {{/foreach}}
 
                        {{foreach $item.categories as $cat}}
-                               <span class="category label btn-success sm"><span class="p-category">{{$cat.name}}</span></a>{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
+                               <span class="category label btn-success sm p-category">{{$cat.name}}{{if $cat.removeurl}} (<a href="{{$cat.removeurl}}" title="{{$remove}}">x</a>) {{/if}} </span>
                        {{/foreach}}
                        </div>
                        {{if $item.edited}}<div class="itemedited text-muted">{{$item.edited['label']}} (<span title="{{$item.edited['date']}}">{{$item.edited['relative']}}</span>)</div>{{/if}}
index f1365035a473205fd300e4a6f0c0733bc0249dd1..774ffac2757e887a511a6ba6ad181b40f42cb71f 100644 (file)
@@ -42,7 +42,7 @@
                                        class="comment-edit-text-empty"
                                        name="body"
                                        placeholder="{{$comment}}"
-                                       onFocus="commentOpen(this,{{$id}}) && cmtBbOpen({{$id}});">{{$default}}</textarea>
+                                       onFocus="commentOpen(this,{{$id}}) && cmtBbOpen({{$id}});">{{if $threaded != false}}{{$default}}{{/if}}</textarea>
                                {{if $qcomment}}
                                        <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});">
                                        <option value=""></option>
index 4ef31b7af807fe49393088a3ccedda1e325fe581..8ccdccb80d2878f17e9e9d8ab395ec11e3864e11 100644 (file)
@@ -17,7 +17,7 @@
                                        <a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
                                </div>
                                <div class="comment-edit-photo-end"></div>
-                               <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});">{{$default}}</textarea>
+                               <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});">{{if $threaded != false}}{{$default}}{{/if}}</textarea>
                                {{if $qcomment}}
                                        <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});">
                                        <option value=""></option>