]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #4849 from M-arcus/installation-script
authorHypolite Petovan <mrpetovan@gmail.com>
Thu, 19 Apr 2018 11:57:02 +0000 (07:57 -0400)
committerGitHub <noreply@github.com>
Thu, 19 Apr 2018 11:57:02 +0000 (07:57 -0400)
[FEATURE] Install Script: Add first version

33 files changed:
boot.php
composer.json
composer.lock
doc/Accesskeys.md
doc/Account-Basics.md
doc/Making-Friends.md
include/conversation.php
include/dba.php
include/enotify.php
include/security.php
include/text.php
index.php
mod/admin.php
mod/friendica.php
mod/removeme.php
src/Core/Cache/MemcachedCacheDriver.php
src/Core/Session/CacheSessionHandler.php
src/Core/System.php
src/Database/DBStructure.php
src/Model/Contact.php
src/Model/Term.php
src/Model/User.php
src/Module/Tos.php
src/Protocol/Diaspora.php
src/Protocol/PortableContact.php
src/Util/Network.php
view/lang/fi-fi/messages.po
view/lang/fi-fi/strings.php
view/lang/nl/messages.po
view/lang/nl/strings.php
view/lang/pl/messages.po
view/lang/pl/strings.php
view/templates/tos.tpl

index 65867593df34008db274d34a4a7210d57bd85d73..217a5f4e1d9ba834df26bcc3ba5f3455e933f4a6 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -953,10 +953,12 @@ function public_contact()
  */
 function remote_user()
 {
-       // You cannot be both local and remote
-       if (local_user()) {
-               return false;
-       }
+       // You cannot be both local and remote.
+       // Unncommented by rabuzarus because remote authentication to local
+       // profiles wasn't possible anymore (2018-04-12).
+//     if (local_user()) {
+//             return false;
+//     }
        if (x($_SESSION, 'authenticated') && x($_SESSION, 'visitor_id')) {
                return intval($_SESSION['visitor_id']);
        }
index 52b4f2c8678c1a6fbb34e1169c17da8ef684d754..5cb33e67d604ebca8c87bcc3f621b246309ddab7 100644 (file)
@@ -30,6 +30,7 @@
                "bower-asset/base64": "^1.0",
                "bower-asset/Chart-js": "^2.7",
                "bower-asset/perfect-scrollbar": "^0.6",
+               "bower-asset/vue": "^2.5",
                "npm-asset/jquery": "^2.0",
                "npm-asset/jquery-colorbox": "^1.6",
                "npm-asset/jquery-datetimepicker": "^2.4.0",
index 28199f4f5139d364e49b28c9ace7dbfc2ed7dc9e..34362cb1bbca845108dbbfb7b81598015db600ef 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "12b8df66213734281765cb6e2c5a786e",
+    "content-hash": "96062c2020a40f14b52e5e91c79995a7",
     "packages": [
         {
             "name": "asika/simple-console",
             "description": "Minimalistic but perfect custom scrollbar plugin",
             "time": "2017-01-10T01:04:09+00:00"
         },
+        {
+            "name": "bower-asset/vue",
+            "version": "v2.5.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/vuejs/vue.git",
+                "reference": "25342194016dc3bcc81cb3e8e229b0fb7ba1d1d6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/vuejs/vue/zipball/25342194016dc3bcc81cb3e8e229b0fb7ba1d1d6",
+                "reference": "25342194016dc3bcc81cb3e8e229b0fb7ba1d1d6",
+                "shasum": ""
+            },
+            "type": "bower-asset-library"
+        },
         {
             "name": "divineomega/password_exposed",
             "version": "v2.5.1",
index 550a00e5a9261c8b29b6b605a8a8db6e2d10ef7d..7434fc049867d326cde28e6aa1033e3dd588fd6d 100644 (file)
@@ -1,81 +1,88 @@
-Accesskeys in Friendica
+Accesskeys reference
 =======================
 
 * [Home](help)
 
-For an overview of the modifier key of the different browsers we suggest this [Wikipedia](https://en.wikipedia.org/wiki/Access_key) article.
+Access keys are keyboard shortcuts that allow you to easily navigate the user interface.
+Access keys are currently not available with the Frio theme.
+
+The specific key combinations depend on how your browser's the modifier key setting.
+For an overview of modifier keys in different browsers, have a lookat [Wikipedia](https://en.wikipedia.org/wiki/Access_key) article.
+For example, for moving to profile page in Firefox, press these three keys simultaneously.
+
+[Shift] [Alt] [p]
 
 General
 -------
-* p: profile
-* n: network
-* c: community
-* s: search
-* a: admin
-* f: notifications
-* u: user menu (in themes "vier" and "quattro")
+* p - Profile
+* n - Network
+* c - Community
+* s -  Search
+* a - Admin
+* f - Notifications
+* u - User menu
 
-/community
+../community
 --------
-* l: Local community
-* g: Global community
+* l - Local community
+* g - Global community
 
-/profile
+../profile
 --------
-* m: Status Messages and Posts
-* r: Profile Details
-* h: Photo Albums
-* v: Videos
-* e: Events and Calendar
-* t: Personal Notes
-* k: View Contacts
+* m - Status Messages and Posts
+* r - Profile Details
+* h - Photo Albums
+* v - Videos
+* e - Events and Calendar
+* t - Personal Notes
+* k - View Contacts
 
-/contacts (contact list)
+../contacts (contact list)
 ---------
-* g: Suggestions
-* l: Show all Contacts
-* o: Only show unblocked contacts
-* b: Only show blocked contacts
-* i: Only show ignored contacts
-* y: Only show archived contacts
-* h: Only show hidden contacts
+* g - Suggestions
+* l - Show all Contacts
+* o - Only show unblocked contacts
+* b - Only show blocked contacts
+* i - Only show ignored contacts
+* y - Only show archived contacts
+* h - Only show hidden contacts
 
-/contacts (single contact view)
+../contacts (single contact view)
 -------------------------------
-* m: Status messages
-* o: Profile
-* t: Contacts
-* d: Common friends
-* r: Advanced
+* m - Status messages
+* o - Profile
+* t - Contacts
+* d - Common friends
+* r - Advanced
 
-/message
+../message
 --------
-* m: New message
+* m - New message
 
-/network
+../network
 --------
-* e: Sort by Comment Date
-* t: Sort by Post Date
-* r: Conversation (Posts that mention or involve you)
-* w: New posts
-* b: Bookmarks
-* m: Favourite Posts
+* e - Sort by Comment Date
+* t - Sort by Post Date
+* r - Conversation (Posts that mention or involve you)
+* w - New posts
+* b - Bookmarks
+* m - Favourite Posts
 
-/notifications
+../notifications
 --------------
-* y: System
-* w: Network
-* r: Personal
-* h: Home
-* i: Introductions
+* y - System
+* w - Network
+* r - Personal
+* h - Home
+* i - Introductions
 
-/settings
+../settings
 ---------
-* o: Account
-* t: Additional features
-* w: Social Networks
-* l: Addons
-* d: Delegations
-* b: Connected apps
-* e: Export personal data
-* r: Remove account
+* o - Account
+* t - Additional features
+* w - Social Networks
+* l - Addons
+* d - Delegations
+* b - Connected apps
+* e - Export personal data
+* r - Remove account
index 6d7f86c08529f8d4a6e8ed79b3347c0c9057fdcf..7883a346fd87836f8f642cf63c19e33ed57843cc 100644 (file)
@@ -7,10 +7,10 @@ Registration
 ---
 
 Not all Friendica sites allow open registration.
-If registration is allowed, you will see a "Register" link immediately below the login prompt on the site home page.
+If registration is allowed, you will see a "Register" link immediately below the login prompt on the site's home page.
 Following this link will take you to the site registration page.
 The strength of our network is that lots of different sites are all completely compatible with each other.
-If the site you're visting doesn't allow registration, or you think you might prefer another one, you can find a [list of public servers here](https://dir.friendica.social/servers), and find one that meets your needs.
+If the site you're visting doesn't allow registration, or you think you might prefer another one, there is a [list of public servers here](https://dir.friendica.social/servers) and hopefully you will find one that meets your needs.
 
 If you'd like to have your own server, you can do that too.
 Visit [the Friendica website](http://friendi.ca/) to download the code with setup instructions.
@@ -44,12 +44,12 @@ A nickname is used to generate web addresses for many of your personal pages, an
 Due to the way that the nickname is used, it has some limitations. 
 It must contain only US-ASCII text characters and numbers, and must also start with a text character.
 It also must be unique on this system. 
-This is used in many places to identify your account, and once set - cannot be changed.
+This is used in many places to identify your account, and once set it cannot be changed.
 
 
 ###Directory Publishing
 
-The registration form also allows you to choose whether or not to list your account in the online directory.
+The registration form also allows you to choose whether or not to list your account in the online directory of your node.
 This is like a "phone book" and you may choose to be unlisted.
 We recommend that you select 'Yes' so that other people (friends, family, etc.) will be able to find you.
 If you choose 'No', you will essentially be invisible and have few opportunities for interaction.
@@ -59,7 +59,7 @@ Whichever you choose, this can be changed any time from your Settings page after
 
 Once you have provided the necessary details, click the 'Register' button.
 An email will be sent to you providing your account login details.
-Please watch your email (including spam folders) for your registration details and initial password. 
+Please check your email (including spam folders) for your registration details and initial password. 
 
 Login Page
 ---
@@ -67,9 +67,9 @@ Login Page
 On the 'Login' page, please enter your login information that was provided during registration.
 You may use either your nickname or email address as a Login Name. 
 
-If you use your account to manage multiple '[Pages](help/Pages)' and these all have the same email address, please enter the nickname for the account you wish to manage.
+If you use your account to manage other accounts and these all have the same email address, please enter the nickname for the account you wish to manage.
 
-*If* your account has been OpenID enabled, you may use your OpenID address as a login name and leave the password blank.
+If your account has been OpenID enabled, you may use your OpenID address as a login name and leave the password blank.
 You will be redirected to your OpenID provider to complete your authorisation. 
 
 Otherwise, enter your password.
@@ -84,7 +84,7 @@ After your first login, please visit the 'Settings' page from the top menu bar a
 Getting Started
 ---
 
-A ['Tips for New Members'](newmember) link will show up on your network and home pages for two weeks to provide some important Getting Started information.
+A link with ['Tips for New Members'](newmember) will show up on your network and home pages for two weeks providing key information for getting started.
 
 Retrieving Personal Data
 ---
@@ -99,6 +99,8 @@ See Also
 
 * [Profiles](help/Profiles)
 
+* [Global Directory](help/Making-Friends#1_1) 
+
 * [Groups and Privacy](help/Groups-and-Privacy)
 
 * [Move Account](help/Move-Account)
index 448f125d79d711e0d0c07d169f5581d3d25cfed8..d7f18298c50319e1ed2d9b8ec286b69dcbf7549d 100644 (file)
@@ -3,21 +3,23 @@ Making Friends
 
 * [Home](help)
 
-Friendship in Friendica can take on a great many different meanings.
-But let's keep it simple, you want to be friends with somebody.
+Friendship in Friendica can sometimes take on different meaning.
+But let's keep it simple; you want to be friends with somebody.
 How do you do it?
 
 The Directories
 ---
-Friendica has two different kinds of "address book":
-The directory of the Friendica server you are registered on and the global directory that collects account information across all Friendica instances.
+Friendica has two different kinds of "address book".
+The directory of the Friendica server you are registered on and a global directory to which your and other Friendica servers submit account information.
 
 The first thing you can do is look at the **Directory**.
 The directory is split up into two parts.
 If you click the directory button, you will be presented with a list of all members (who chose to be listed) on your server.
 
-You'll also see a link to the **Global Directory**.
-If you click through to the global directory, you will be presented with a list of everybody who chose to be listed across all instances of Friendica.
+You'll also see a link to a **Global Directory**.
+There are several global directories across the globe that regularly exchange information with each other.
+The specific global directory that you see usually depends on where your server is located.
+If you click through to the global directory, you will be presented with a list of everybody who choses to be listed across all instances of Friendica.
 You will also see a "Show Community Forums" link, which will direct you to Groups, Forums and Fanpages.
 You connect to people, groups and forums in the same way, except groups and forums will automatically accept your introduction request, whereas a human will approve you manually.
 
@@ -26,21 +28,18 @@ Connect to other Friendica users
 
 Visit their profile.
 Just beneath their profile picture will be the word 'Connect' (we're assuming this is an English language profile).
-Click that 'Connect' button.
-It will take you to a 'Connect' form.
+Click that 'Connect' button and it will take you to a 'Connect' form.
 
 The form is going to ask you for your Identity Address.
 This is necessary so that this person's website can find yours. 
 
-What do you put in the box?
-
-If your Friendica site is called "demo.friendica.com" and your username/nickname on that site is "bob", you would put in "bob@demo.friendica.com". 
+If your Friendica site is called "demo.friendica.com" and your username/nickname on that site is "bob", you would enter "bob@demo.friendica.com" in this form. 
 
 Notice this looks just like an email address.
-It was meant to be that way.
+It's meant to be that way.
 It's easy for people to remember.
 
-You *could* also put in the URL of your "home" page, such as "http://demo.friendica.com/profile/bob", but the email-style address is certainly easier.
+You *could* also put in the URL of your "home" page, such as "http://demo.friendica.com/profile/bob" instead of the email-style address.
 
 When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site.
 Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request). 
@@ -51,31 +50,40 @@ This will take you through a similar process.
 
 Connect to users of alternate networks
 ---
-###GNU Social, Twitter, Diaspora
-You can also use your Identity Address or other people's Identity Addresses to become friends across networks.
-The list of possible networks is growing all the time.
-If you know (for instance) "bob" on gnusocial.de (a GNU Social site) you could put bob@gnusocial.de into your Contact page and become friends across networks.
-(Or you can put in the URL to Bob's gnusocial.de page if you wish).
+###Across the Federation and Fedivese
+You can also use your Identity Address or other people's Identity Addresses to become friends across the so-called Federation/Fedivese of open source social media.
+Currently, Friendica supports connections with people on diaspora*, Red, Hubzilla, GNU Social, StatusNet, Mastodon, Pleroma, socialhome, and ganggo platforms.
+
+If you know (for instance) "alice" on gnusocial.net (a GNU Social site) you could put alice@gnusocial.net into your Contact page and become friends across networks.
+Likwise you can put in the URL to Alice's gnusocial.net page, if you wish.
+Note: Some versions of GNU Social software may require the full URL to your profile and may not work with the identity address.
 
-You can do the same for Twitter accounts and Diaspora accounts.
+People on these networks can also initiate contact with you, if they know your contact details.
 
-In fact, you can "follow" almost anybody or any website that produces a syndication feed (RSS/Atom,etc.).
-If we can find an information stream and a name to attach to the contact, we'll try to connect with them. 
+###Other social media
+If you server provides this functionality, you can also connect with people one
+Twitter or important feeds from Tumblr, Wordpress, and many more.
+
+To connect, enter their contact details in the "connect" box on your "Contacts" page.
 
 ###Email
 If you have supplied your mailbox connection information on your Settings page, you can enter the email address of anybody that has sent you a message recently and have their email messages show up in your social stream.
 You can also reply to them from within Friendica.  
 
-People can also become friends with you from other networks.
-If a friend of yours has an GNU Social account, they can become friends with you by putting your Friendica Identity Address into their GNU Social subscription dialog box.
-A similar mechanism is available for Diaspora members, by putting your identity address into their search bar. 
+Create an email contact with for example Alice on Gmail, enter her email in following format "mailto:alice@gmail.no".
+In order to avoid abuse or spam, you must have an email from Alice with the correct email address in your email inbox.
 
-Note: Some versions of GNU Social software may require the full URL to your profile and may not work with the identity address.
+Subscribing to mailing lists is done in the same way, but without the use of the "mailto:" prefix.
+To subscribe to a mailing list, enter the email in following example format "mailling-list@list-server.net".
+
+###Syndication feeds
+You can "follow" almost anybody or any website that produces a syndication feed (RSS/Atom,etc.).
+If we can find an information stream and a name to attach to the contact, we'll try to connect with them. 
 
 Notification
 ---
 When somebody requests friendship you will receive a notification.
-You will need to approve this before the friendship is complete.
+You will usually need to approve this before the friendship is complete.
 
 Approval
 ---
@@ -84,16 +92,16 @@ Friendica does not allow this by default, as it would open a gateway for spam.
 
 Unilateral or bilateral friendships
 ---
-When you receive a friendship notification from another Friendica member, you will have the option of allowing them as a "fan" or as a "friend".
-If they are a fan, they can see what you have to say, including private communications that you send to them, but not vice versa.
+When you receive a friendship notification from another Friendica member, you will have the option of allowing them as a "Follower" or as a "Friend".
+If they are a follower, they can see what you have to say, including private communications that you send to them, but not vice versa.
 As a friend, you can both communicate with each other. 
 
-Diaspora uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends. 
+diaspora* uses a different terminology, and you are given the option of allowing them to "share with you", or being full friends. 
 
 Ignoring, blocking and deleting contacts
 ---
 Once you have become friends, if you find the person constantly sends you spam or worthless information, you can "Ignore" them - without breaking off the friendship or even alerting them to the fact that you aren't interested in anything they are saying.
-In many ways they are like a "fan" - but they don't know this.
+In many ways they are like a "follower" - but they don't know this.
 They think they are a friend. 
 
 You can also "block" a person.
index 8a2887d6b742f6f9d9aed74677469e69446ea102..41f10959b2c9524974046f907b6e969c50f501c3 100644 (file)
@@ -668,33 +668,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
                                        $profile_name = $item['author-link'];
                                }
 
-                               $tags = [];
-                               $hashtags = [];
-                               $mentions = [];
-
-                               $searchpath = System::baseUrl()."/search?tag=";
-
-                               $taglist = dba::select('term', ['type', 'term', 'url'],
-                                                       ["`otype` = ? AND `oid` = ? AND `type` IN (?, ?)", TERM_OBJ_POST, $item['id'], TERM_HASHTAG, TERM_MENTION],
-                                                       ['order' => ['tid']]);
-
-                               while ($tag = dba::fetch($taglist)) {
-                                       if ($tag["url"] == "") {
-                                               $tag["url"] = $searchpath . strtolower($tag["term"]);
-                                       }
-
-                                       $tag["url"] = best_link_url($item, $sp, $tag["url"]);
-
-                                       if ($tag["type"] == TERM_HASHTAG) {
-                                               $hashtags[] = "#<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
-                                               $prefix = "#";
-                                       } elseif ($tag["type"] == TERM_MENTION) {
-                                               $mentions[] = "@<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
-                                               $prefix = "@";
-                                       }
-                                       $tags[] = $prefix."<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
-                               }
-                               dba::close($taglist);
+                               $tags = \Friendica\Model\Term::populateTagsFromItem($item);
 
                                $sp = false;
                                $profile_link = best_link_url($item, $sp);
@@ -764,9 +738,9 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
                                }
 
                                $body_e = $body;
-                               $tags_e = $tags;
-                               $hashtags_e = $hashtags;
-                               $mentions_e = $mentions;
+                               $tags_e = $tags['tags'];
+                               $hashtags_e = $tags['hashtags'];
+                               $mentions_e = $tags['mentions'];
                                $location_e = $location;
                                $owner_name_e = $owner_name;
 
index 586fc092fb764c51b9c54587f167b30570b51c20..b24d9b409d00125ad7349848d822089a5e908aff 100644 (file)
@@ -52,8 +52,9 @@ class dba {
                }
 
                if ($install) {
-                       if (strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1')) {
-                               if (! dns_get_record($server, DNS_A + DNS_CNAME + DNS_PTR)) {
+                       // server has to be a non-empty string that is not 'localhost' and not an IP
+                       if (strlen($server) && ($server !== 'localhost') && filter_var($server, FILTER_VALIDATE_IP) === false) {
+                               if (! dns_get_record($server, DNS_A + DNS_CNAME)) {
                                        self::$error = L10n::t('Cannot locate DNS info for database server \'%s\'', $server);
                                        return false;
                                }
index 68208ec5ac612f2d59ac743dbab082d446abb5e7..39c74fdc64a0ae8c1c27156114ced1ea085db07e 100644 (file)
@@ -357,7 +357,7 @@ function notification($params)
        if ($params['type'] == NOTIFY_SYSTEM) {
                switch($params['event']) {
                        case "SYSTEM_REGISTER_REQUEST":
-                               $subject = L10n::t('[Friendica System:Notify] registration request');
+                               $subject = L10n::t('[Friendica System Notify]') . ' ' . L10n::t('registration request');
 
                                $preamble = L10n::t('You\'ve received a registration request from \'%1$s\' at %2$s', $params['source_name'], $sitename);
                                $epreamble = L10n::t('You\'ve received a [url=%1$s]registration request[/url] from %2$s.',
index af424df26c65c6122ff76a2070c936b426cdc46d..b13a507cf483c124e5e1de3ed3817b205784d3aa 100644 (file)
@@ -405,12 +405,21 @@ function get_form_security_token($typename = '')
 
 function check_form_security_token($typename = '', $formname = 'form_security_token')
 {
-       if (!x($_REQUEST, $formname)) {
-               return false;
+       $hash = null;
+
+       if (!empty($_REQUEST[$formname])) {
+               /// @TODO Careful, not secured!
+               $hash = $_REQUEST[$formname];
+       }
+
+       if (!empty($_SERVER['HTTP_X_CSRF_TOKEN'])) {
+               /// @TODO Careful, not secured!
+               $hash = $_SERVER['HTTP_X_CSRF_TOKEN'];
        }
 
-       /// @TODO Careful, not secured!
-       $hash = $_REQUEST[$formname];
+       if (empty($hash)) {
+               return false;
+       }
 
        $max_livetime = 10800; // 3 hours
 
index ee8a213ff659bfa3aa238e740ac51138346d25b3..2ec017caffa9bb613348d153f8cae2c47cc92a01 100644 (file)
@@ -1234,12 +1234,6 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
        $a = get_app();
        Addon::callHooks('prepare_body_init', $item);
 
-       $searchpath = System::baseUrl() . "/search?tag=";
-
-       $tags = [];
-       $hashtags = [];
-       $mentions = [];
-
        // In order to provide theme developers more possibilities, event items
        // are treated differently.
        if ($item['object-type'] === ACTIVITY_OBJ_EVENT && isset($item['event-id'])) {
@@ -1247,37 +1241,11 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
                return $ev;
        }
 
-       $taglist = dba::p("SELECT `type`, `term`, `url` FROM `term` WHERE `otype` = ? AND `oid` = ? AND `type` IN (?, ?) ORDER BY `tid`",
-                       intval(TERM_OBJ_POST), intval($item['id']), intval(TERM_HASHTAG), intval(TERM_MENTION));
-
-       while ($tag = dba::fetch($taglist)) {
-               if ($tag["url"] == "") {
-                       $tag["url"] = $searchpath . strtolower($tag["term"]);
-               }
-
-               $orig_tag = $tag["url"];
-
-               $tag["url"] = best_link_url($item, $sp, $tag["url"]);
-
-               if ($tag["type"] == TERM_HASHTAG) {
-                       if ($orig_tag != $tag["url"]) {
-                               $item['body'] = str_replace($orig_tag, $tag["url"], $item['body']);
-                       }
-
-                       $hashtags[] = "#<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
-                       $prefix = "#";
-               } elseif ($tag["type"] == TERM_MENTION) {
-                       $mentions[] = "@<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
-                       $prefix = "@";
-               }
-
-               $tags[] = $prefix . "<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
-       }
-       dba::close($taglist);
+       $tags = \Friendica\Model\Term::populateTagsFromItem($item);
 
-       $item['tags'] = $tags;
-       $item['hashtags'] = $hashtags;
-       $item['mentions'] = $mentions;
+       $item['tags'] = $tags['tags'];
+       $item['hashtags'] = $tags['hashtags'];
+       $item['mentions'] = $tags['mentions'];
 
        // Compile eventual content filter reasons
        $filter_reasons = [];
index e3ab16469b17f75d07a6e522b7206a18efec9229..2f23ea791a6e525009f5109652c911742c18096c 100644 (file)
--- a/index.php
+++ b/index.php
@@ -228,8 +228,36 @@ if (strlen($a->module)) {
         */
 
        // Compatibility with the Android Diaspora client
-       if ($a->module == "stream") {
-               $a->module = "network";
+       if ($a->module == 'stream') {
+               goaway('network?f=&order=post');
+       }
+
+       if ($a->module == 'conversations') {
+               goaway('message');
+       }
+
+       if ($a->module == 'commented') {
+               goaway('network?f=&order=comment');
+       }
+
+       if ($a->module == 'liked') {
+               goaway('network?f=&order=comment');
+       }
+
+       if ($a->module == 'activity') {
+               goaway('network/?f=&conv=1');
+       }
+
+       if (($a->module == 'status_messages') && ($a->cmd == 'status_messages/new')) {
+               goaway('bookmarklet');
+       }
+
+       if (($a->module == 'user') && ($a->cmd == 'user/edit')) {
+               goaway('settings');
+       }
+
+       if (($a->module == 'tag_followings') && ($a->cmd == 'tag_followings/manage')) {
+               goaway('search');
        }
 
        // Compatibility with the Firefox App
index a51cbd8d389c86a41fa0bbd6a1fa62cf10dbe9ce..74849ea9ed4f59b3a3638df75712625737cb161f 100644 (file)
@@ -1384,7 +1384,7 @@ function admin_page_site(App $a)
                '$allowed_oembed'       => ['allowed_oembed', L10n::t("Allowed OEmbed domains"), Config::get('system','allowed_oembed'), L10n::t("Comma separated list of domains which oembed content is allowed to be displayed. Wildcards are accepted.")],
                '$block_public'         => ['block_public', L10n::t("Block public"), Config::get('system','block_public'), L10n::t("Check to block public access to all otherwise public personal pages on this site unless you are currently logged in.")],
                '$force_publish'        => ['publish_all', L10n::t("Force publish"), Config::get('system','publish_all'), L10n::t("Check to force all profiles on this site to be listed in the site directory.")],
-               '$global_directory'     => ['directory', L10n::t("Global directory URL"), Config::get('system','directory'), L10n::t("URL to the global directory. If this is not set, the global directory is completely unavailable to the application.")],
+               '$global_directory'     => ['directory', L10n::t("Global directory URL"), Config::get('system', 'directory', 'https://dir.friendica.social'), L10n::t("URL to the global directory. If this is not set, the global directory is completely unavailable to the application.")],
                '$newuser_private'      => ['newuser_private', L10n::t("Private posts by default for new users"), Config::get('system','newuser_private'), L10n::t("Set default post permissions for all new members to the default privacy group rather than public.")],
                '$enotify_no_content'   => ['enotify_no_content', L10n::t("Don't include post content in email notifications"), Config::get('system','enotify_no_content'), L10n::t("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.")],
                '$private_addons'       => ['private_addons', L10n::t("Disallow public access to addons listed in the apps menu."), Config::get('config','private_addons'), L10n::t("Checking this box will restrict addons listed in the apps menu to members only.")],
@@ -1400,17 +1400,17 @@ function admin_page_site(App $a)
                '$ostatus_not_able'     => L10n::t("OStatus support can only be enabled if threading is enabled."),
                '$diaspora_able'        => $diaspora_able,
                '$diaspora_not_able'    => L10n::t("Diaspora support can't be enabled because Friendica was installed into a sub directory."),
-               '$diaspora_enabled'     => ['diaspora_enabled', L10n::t("Enable Diaspora support"), Config::get('system','diaspora_enabled'), L10n::t("Provide built-in Diaspora network compatibility.")],
+               '$diaspora_enabled'     => ['diaspora_enabled', L10n::t("Enable Diaspora support"), Config::get('system', 'diaspora_enabled', $diaspora_able), L10n::t("Provide built-in Diaspora network compatibility.")],
                '$dfrn_only'            => ['dfrn_only', L10n::t('Only allow Friendica contacts'), Config::get('system','dfrn_only'), L10n::t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")],
                '$verifyssl'            => ['verifyssl', L10n::t("Verify SSL"), Config::get('system','verifyssl'), L10n::t("If you wish, you can turn on strict certificate checking. This will mean you cannot connect \x28at all\x29 to self-signed SSL sites.")],
                '$proxyuser'            => ['proxyuser', L10n::t("Proxy user"), Config::get('system','proxyuser'), ""],
                '$proxy'                => ['proxy', L10n::t("Proxy URL"), Config::get('system','proxy'), ""],
-               '$timeout'              => ['timeout', L10n::t("Network timeout"), (x(Config::get('system','curl_timeout'))?Config::get('system','curl_timeout'):60), L10n::t("Value is in seconds. Set to 0 for unlimited \x28not recommended\x29.")],
-               '$maxloadavg'           => ['maxloadavg', L10n::t("Maximum Load Average"), ((intval(Config::get('system','maxloadavg')) > 0)?Config::get('system','maxloadavg'):50), L10n::t("Maximum system load before delivery and poll processes are deferred - default 50.")],
-               '$maxloadavg_frontend'  => ['maxloadavg_frontend', L10n::t("Maximum Load Average \x28Frontend\x29"), ((intval(Config::get('system','maxloadavg_frontend')) > 0)?Config::get('system','maxloadavg_frontend'):50), L10n::t("Maximum system load before the frontend quits service - default 50.")],
-               '$min_memory'           => ['min_memory', L10n::t("Minimal Memory"), ((intval(Config::get('system','min_memory')) > 0)?Config::get('system','min_memory'):0), L10n::t("Minimal free memory in MB for the worker. Needs access to /proc/meminfo - default 0 \x28deactivated\x29.")],
+               '$timeout'              => ['timeout', L10n::t("Network timeout"), Config::get('system', 'curl_timeout', 60), L10n::t("Value is in seconds. Set to 0 for unlimited \x28not recommended\x29.")],
+               '$maxloadavg'           => ['maxloadavg', L10n::t("Maximum Load Average"), Config::get('system', 'maxloadavg', 50), L10n::t("Maximum system load before delivery and poll processes are deferred - default 50.")],
+               '$maxloadavg_frontend'  => ['maxloadavg_frontend', L10n::t("Maximum Load Average \x28Frontend\x29"), Config::get('system', 'maxloadavg_frontend', 50), L10n::t("Maximum system load before the frontend quits service - default 50.")],
+               '$min_memory'           => ['min_memory', L10n::t("Minimal Memory"), Config::get('system', 'min_memory', 0), L10n::t("Minimal free memory in MB for the worker. Needs access to /proc/meminfo - default 0 \x28deactivated\x29.")],
                '$optimize_max_tablesize'=> ['optimize_max_tablesize', L10n::t("Maximum table size for optimization"), $optimize_max_tablesize, L10n::t("Maximum table size \x28in MB\x29 for the automatic optimization - default 100 MB. Enter -1 to disable it.")],
-               '$optimize_fragmentation'=> ['optimize_fragmentation', L10n::t("Minimum level of fragmentation"), ((intval(Config::get('system','optimize_fragmentation')) > 0)?Config::get('system','optimize_fragmentation'):30), L10n::t("Minimum fragmenation level to start the automatic optimization - default value is 30%.")],
+               '$optimize_fragmentation'=> ['optimize_fragmentation', L10n::t("Minimum level of fragmentation"), Config::get('system', 'optimize_fragmentation', 30), L10n::t("Minimum fragmenation level to start the automatic optimization - default value is 30%.")],
 
                '$poco_completion'      => ['poco_completion', L10n::t("Periodical check of global contacts"), Config::get('system','poco_completion'), L10n::t("If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers.")],
                '$poco_requery_days'    => ['poco_requery_days', L10n::t("Days between requery"), Config::get('system','poco_requery_days'), L10n::t("Number of days after which a server is requeried for his contacts.")],
@@ -1440,11 +1440,11 @@ function admin_page_site(App $a)
                '$worker_frontend'      => ['worker_frontend', L10n::t('Enable frontend worker'), Config::get('system','frontend_worker'), L10n::t('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.', System::baseUrl())],
 
                '$relay_subscribe'      => ['relay_subscribe', L10n::t("Subscribe to relay"), Config::get('system','relay_subscribe'), L10n::t("Enables the receiving of public posts from the relay. They will be included in the search, subscribed tags and on the global community page.")],
-               '$relay_server'         => ['relay_server', L10n::t("Relay server"), Config::get('system','relay_server'), L10n::t("Address of the relay server where public posts should be send to. For example https://relay.diasp.org")],
+               '$relay_server'         => ['relay_server', L10n::t("Relay server"), Config::get('system', 'relay_server', 'https://relay.diasp.org'), L10n::t("Address of the relay server where public posts should be send to. For example https://relay.diasp.org")],
                '$relay_directly'       => ['relay_directly', L10n::t("Direct relay transfer"), Config::get('system','relay_directly'), L10n::t("Enables the direct transfer to other servers without using the relay servers")],
                '$relay_scope'          => ['relay_scope', L10n::t("Relay scope"), Config::get('system','relay_scope'), L10n::t("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."), ['' => L10n::t('Disabled'), 'all' => L10n::t('all'), 'tags' => L10n::t('tags')]],
                '$relay_server_tags'    => ['relay_server_tags', L10n::t("Server tags"), Config::get('system','relay_server_tags'), L10n::t("Comma separated list of tags for the 'tags' subscription.")],
-               '$relay_user_tags'      => ['relay_user_tags', L10n::t("Allow user tags"), Config::get('system','relay_user_tags'), L10n::t("If enabled, the tags from the saved searches will used for the 'tags' subscription in addition to the 'relay_server_tags'.")],
+               '$relay_user_tags'      => ['relay_user_tags', L10n::t("Allow user tags"), Config::get('system', 'relay_user_tags', true), L10n::t("If enabled, the tags from the saved searches will used for the 'tags' subscription in addition to the 'relay_server_tags'.")],
 
                '$form_security_token'  => get_form_security_token("admin_site")
        ]);
index 43e518359842dee094aad794fc567d2a87954bdc..661c4bf98d6c148fd4630139f5f2367bf9c7491d 100644 (file)
@@ -86,7 +86,7 @@ function friendica_content(App $a)
        $o .= L10n::t('Bug reports and issues: please visit') . ' ' . '<a href="https://github.com/friendica/friendica/issues?state=open">'.L10n::t('the bugtracker at github').'</a>';
        $o .= '</p>' . PHP_EOL;
        $o .= '<p>';
-       $o .= L10n::t('Suggestions, praise, donations, etc. - please email "Info" at Friendica - dot com');
+       $o .= L10n::t('Suggestions, praise, etc. - please email "info" at "friendi - dot - ca');
        $o .= '</p>' . PHP_EOL;
 
        $visible_addons = [];
index 0363bf9f32990ad900d182c2c14bd5719b22eaf9..252357c80d06f907c02efae331c57055dcc3b5ed 100644 (file)
@@ -7,6 +7,8 @@ use Friendica\Core\L10n;
 use Friendica\Core\System;
 use Friendica\Model\User;
 
+require_once 'include/enotify.php';
+
 function removeme_post(App $a)
 {
        if (!local_user()) {
@@ -29,6 +31,25 @@ function removeme_post(App $a)
                return;
        }
 
+       // send notification to admins so that they can clean um the backups
+       // send email to admins
+       $admin_mail_list = "'" . implode("','", array_map(dbesc, explode(",", str_replace(" ", "", $a->config['admin_email'])))) . "'";
+       $adminlist = q("SELECT uid, language, email FROM user WHERE email IN (%s)",
+               $admin_mail_list
+       );
+       foreach ($adminlist as $admin) {
+               notification([
+                       'type'         => SYSTEM_EMAIL,
+                       'subject'      => L10n::t('[Friendica System Notify]') . ' ' . L10n::t('User deleted their account'),
+                       'preamble'     => L10n::t('On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'),
+                       'body'         => L10n::t('The user id is %d', local_user()),
+                       'to_email'     => $admin['email'],
+                       'uid'          => $admin['uid'],
+                       'language'     => $admin['language'] ? $admin['language'] : 'en',
+                       'show_in_notification_page' => false
+               ]);
+       }
+
        if (User::authenticate($a->user, trim($_POST['qxz_password']))) {
                User::remove($a->user['uid']);
                // NOTREACHED
index d6b8d4ad5808146d00d9b8110c30770eaf019834..78a4a6bdfe28c8fd477afd5f8ac37ad23be61337 100644 (file)
@@ -50,7 +50,7 @@ class MemcachedCacheDriver extends BaseObject implements ICacheDriver
        {
                // We store with the hostname as key to avoid problems with other applications
                return $this->memcached->set(
-                       self::getApp()->get_hostname() . ":" . $key,
+                       self::getApp()->get_hostname() . ':' . $key,
                        $value,
                        time() + $duration
                );
@@ -58,7 +58,9 @@ class MemcachedCacheDriver extends BaseObject implements ICacheDriver
 
        public function delete($key)
        {
-               return $this->memcached->delete($key);
+               $return = $this->memcached->delete(self::getApp()->get_hostname() . ':' . $key);
+
+               return $return;
        }
 
        public function clear()
index 463fd33d3eff0d40de528b1446d64a892f9bef7d..507735c4fc41a11391c9b70deefb416ab337d653 100644 (file)
@@ -24,7 +24,7 @@ class CacheSessionHandler extends BaseObject implements SessionHandlerInterface
 
        public function read($session_id)
        {
-               if (!x($session_id)) {
+               if (empty($session_id)) {
                        return '';
                }
 
@@ -58,9 +58,9 @@ class CacheSessionHandler extends BaseObject implements SessionHandlerInterface
                        return true;
                }
 
-               Cache::set('session:' . $session_id, $session_data, Session::$expire);
+               $return = Cache::set('session:' . $session_id, $session_data, Session::$expire);
 
-               return true;
+               return $return;
        }
 
        public function close()
@@ -70,8 +70,9 @@ class CacheSessionHandler extends BaseObject implements SessionHandlerInterface
 
        public function destroy($id)
        {
-               Cache::delete('session:' . $id);
-               return true;
+               $return = Cache::delete('session:' . $id);
+
+               return $return;
        }
 
        public function gc($maxlifetime)
index 9d360dff0c58095d139aff816ae5ca1dc2c61f0a..1db417eb88c4ac20dfcb34bea8563e2bc4b458a9 100644 (file)
@@ -64,8 +64,8 @@ class System extends BaseObject
 
                while ($func = array_pop($trace)) {
                        if (!empty($func['class'])) {
-                               // Don't show multiple calls from the same function (mostly used for "dba" class)
-                               if (($previous['class'] != $func['class']) && ($previous['function'] != 'q')) {
+                               // Don't show multiple calls from the "dba" class to show the essential parts of the callstack
+                               if ((($previous['class'] != $func['class']) || ($func['class'] != 'dba')) && ($previous['function'] != 'q')) {
                                        $classparts = explode("\\", $func['class']);
                                        $callstack[] = array_pop($classparts).'::'.$func['function'];
                                        $previous = $func;
index 67c8d7b8a646a49bbb0cf44f49747cd72088ba32..bccd703720af4fb590eb46eda9cb9d44935745ba 100644 (file)
@@ -1803,6 +1803,8 @@ class DBStructure
                                                ]
                                ];
 
+               \Friendica\Core\Addon::callHooks('dbstructure_definition', $database);
+
                return $database;
        }
 }
index 644662e4ecb8dc91de48dc4c72faa18ae98812b8..48e8be31069307e5272c9dcbdd10f01eca8c8a7d 100644 (file)
@@ -220,6 +220,11 @@ class Contact extends BaseObject
 
                        // Update the public contact as well
                        dba::update('contact', $fields, ['uid' => 0, 'nurl' => $self['nurl']]);
+
+                       // Update the profile
+                       $fields = ['photo' => System::baseUrl() . '/photo/profile/' .$uid . '.jpg',
+                               'thumb' => System::baseUrl() . '/photo/avatar/' . $uid .'.jpg'];
+                       dba::update('profile', $fields, ['uid' => $uid, 'is-default' => true]);
                }
        }
 
@@ -1477,6 +1482,11 @@ class Contact extends BaseObject
                        }
                        // send email notification to owner?
                } else {
+                       if (dba::exists('contact', ['nurl' => normalise_link($url), 'uid' => $importer['uid'], 'pending' => true])) {
+                               logger('ignoring duplicated connection request from pending contact ' . $url);
+                               return;
+                       }
+
                        // create contact record
                        q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `name`, `nick`, `photo`, `network`, `rel`,
                                `blocked`, `readonly`, `pending`, `writable`)
index d950d1d5fbff9cd7693b0b0acffc701745336cff..03f19197a361705910867c8400e6c6d24f119713 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\Database\DBM;
 use dba;
 
 require_once 'boot.php';
+require_once 'include/conversation.php';
 require_once 'include/dba.php';
 
 class Term
@@ -168,4 +169,56 @@ class Term
                        }
                }
        }
+
+       /**
+        * Sorts an item's tags into mentions, hashtags and other tags. Generate personalized URLs by user and modify the
+        * provided item's body with them.
+        *
+        * @param array $item
+        * @return array
+        */
+       public static function populateTagsFromItem(&$item)
+       {
+               $return = [
+                       'tags' => [],
+                       'hashtags' => [],
+                       'mentions' => [],
+               ];
+
+               $searchpath = System::baseUrl() . "/search?tag=";
+
+               $taglist = dba::select(
+                       'term',
+                       ['type', 'term', 'url'],
+                       ["`otype` = ? AND `oid` = ? AND `type` IN (?, ?)", TERM_OBJ_POST, $item['id'], TERM_HASHTAG, TERM_MENTION],
+                       ['order' => ['tid']]
+               );
+
+               while ($tag = dba::fetch($taglist)) {
+                       if ($tag["url"] == "") {
+                               $tag["url"] = $searchpath . strtolower($tag["term"]);
+                       }
+
+                       $orig_tag = $tag["url"];
+
+                       $tag["url"] = best_link_url($item, $sp, $tag["url"]);
+
+                       if ($tag["type"] == TERM_HASHTAG) {
+                               if ($orig_tag != $tag["url"]) {
+                                       $item['body'] = str_replace($orig_tag, $tag["url"], $item['body']);
+                               }
+
+                               $return['hashtags'][] = "#<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
+                               $prefix = "#";
+                       } elseif ($tag["type"] == TERM_MENTION) {
+                               $return['mentions'][] = "@<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
+                               $prefix = "@";
+                       }
+
+                       $return['tags'][] = $prefix . "<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
+               }
+               dba::close($taglist);
+
+               return $return;
+       }
 }
index 4ae43c3e11839ae45cf1505b26f569010f1db076..2621897f4eb87084a97040bba458d7c8f1078560 100644 (file)
@@ -127,13 +127,23 @@ class User
        {
                $user = self::getAuthenticationInfo($user_info);
 
-               if ($user['legacy_password']) {
+               if (strpos($user['password'], '$') === false) {
+                       //Legacy hash that has not been replaced by a new hash yet
+                       if (self::hashPasswordLegacy($password) === $user['password']) {
+                               self::updatePassword($user['uid'], $password);
+
+                               return $user['uid'];
+                       }
+               } elseif (!empty($user['legacy_password'])) {
+                       //Legacy hash that has been double-hashed and not replaced by a new hash yet
+                       //Warning: `legacy_password` is not necessary in sync with the content of `password`
                        if (password_verify(self::hashPasswordLegacy($password), $user['password'])) {
                                self::updatePassword($user['uid'], $password);
 
                                return $user['uid'];
                        }
                } elseif (password_verify($password, $user['password'])) {
+                       //New password hash
                        if (password_needs_rehash($user['password'], PASSWORD_DEFAULT)) {
                                self::updatePassword($user['uid'], $password);
                        }
index a5ace51950c5d4386951afaf3b21d6938194c4dc..e08e5a1f45312125774cd08f5ac5252752c6da64 100644 (file)
@@ -50,6 +50,7 @@ class Tos extends BaseModule
                        '$displayprivstatement' => Config::get('system', 'tosprivstatement'),
                        '$privstatementtitle' => L10n::t("Privacy Statement"),
                        '$privoperate' => L10n::t('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.'),
+                       '$privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners. Users can enter additional private data that may be transmitted to the communication partners accounts.'),
                        '$privdelete' => L10n::t('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.', System::baseurl())
                ]);
                } else {
index f8e4c11b241b382b6d362a38f859b16a110bdb43..8120fea8a5556deddbb373346ee58ea0bb7285b3 100644 (file)
@@ -1528,36 +1528,29 @@ class Diaspora
         */
        private static function plink($addr, $guid, $parent_guid = '')
        {
-               $r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", dbesc($addr));
+               $contact = Contact::getDetailsByAddr($addr);
 
                // Fallback
-               if (!DBM::is_result($r)) {
+               if (!$contact) {
                        if ($parent_guid != '') {
-                               return "https://".substr($addr, strpos($addr, "@") + 1) . "/posts/" . $parent_guid . "#" . $guid;
+                               return "https://" . substr($addr, strpos($addr, "@") + 1) . "/posts/" . $parent_guid . "#" . $guid;
                        } else {
-                               return "https://".substr($addr, strpos($addr, "@") + 1) . "/posts/" . $guid;
+                               return "https://" . substr($addr, strpos($addr, "@") + 1) . "/posts/" . $guid;
                        }
                }
 
-               // Friendica contacts are often detected as Diaspora contacts in the "fcontact" table
-               // So we try another way as well.
-               $s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"])));
-               if (DBM::is_result($s)) {
-                       $r[0]["network"] = $s[0]["network"];
-               }
-
-               if ($r[0]["network"] == NETWORK_DFRN) {
-                       return str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/");
+               if ($contact["network"] == NETWORK_DFRN) {
+                       return str_replace("/profile/" . $contact["nick"] . "/", "/display/" . $guid, $contact["url"] . "/");
                }
 
-               if (self::isRedmatrix($r[0]["url"])) {
-                       return $r[0]["url"]."/?f=&mid=".$guid;
+               if (self::isRedmatrix($contact["url"])) {
+                       return $contact["url"] . "/?f=&mid=" . $guid;
                }
 
                if ($parent_guid != '') {
-                       return "https://".substr($addr, strpos($addr, "@") + 1) . "/posts/" . $parent_guid . "#" . $guid;
+                       return "https://" . substr($addr, strpos($addr, "@") + 1) . "/posts/" . $parent_guid . "#" . $guid;
                } else {
-                       return "https://".substr($addr, strpos($addr, "@") + 1) . "/posts/" . $guid;
+                       return "https://" . substr($addr, strpos($addr, "@") + 1) . "/posts/" . $guid;
                }
        }
 
@@ -2744,35 +2737,33 @@ class Diaspora
         *
         * @return array The fetched item
         */
-       private static function originalItem($guid, $orig_author, $author)
+       public static function originalItem($guid, $orig_author)
        {
                // Do we already have this item?
-               $r = q(
-                       "SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`,
-                               `author-name`, `author-link`, `author-avatar`
-                               FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
-                       dbesc($guid)
-               );
+               $fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid',
+                       'author-name', 'author-link', 'author-avatar'];
+               $condition = ['guid' => $guid, 'visible' => true, 'deleted' => false];
+               $item = dba::selectfirst('item', $fields, $condition);
 
-               if (DBM::is_result($r)) {
+               if (DBM::is_result($item)) {
                        logger("reshared message ".$guid." already exists on system.");
 
                        // Maybe it is already a reshared item?
                        // Then refetch the content, if it is a reshare from a reshare.
                        // If it is a reshared post from another network then reformat to avoid display problems with two share elements
-                       if (self::isReshare($r[0]["body"], true)) {
+                       if (self::isReshare($item["body"], true)) {
                                $r = [];
-                       } elseif (self::isReshare($r[0]["body"], false) || strstr($r[0]["body"], "[share")) {
-                               $r[0]["body"] = Markdown::toBBCode(BBCode::toMarkdown($r[0]["body"]));
+                       } elseif (self::isReshare($item["body"], false) || strstr($item["body"], "[share")) {
+                               $item["body"] = Markdown::toBBCode(BBCode::toMarkdown($item["body"]));
 
-                               $r[0]["body"] = self::replacePeopleGuid($r[0]["body"], $r[0]["author-link"]);
+                               $item["body"] = self::replacePeopleGuid($item["body"], $item["author-link"]);
 
                                // Add OEmbed and other information to the body
-                               $r[0]["body"] = add_page_info_to_body($r[0]["body"], false, true);
+                               $item["body"] = add_page_info_to_body($item["body"], false, true);
 
-                               return $r[0];
+                               return $item;
                        } else {
-                               return $r[0];
+                               return $item;
                        }
                }
 
@@ -2788,21 +2779,19 @@ class Diaspora
                        }
 
                        if ($item_id) {
-                               $r = q(
-                                       "SELECT `body`, `tag`, `app`, `created`, `object-type`, `uri`, `guid`,
-                                               `author-name`, `author-link`, `author-avatar`
-                                       FROM `item` WHERE `id` = %d AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
-                                       intval($item_id)
-                               );
+                               $fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid',
+                                       'author-name', 'author-link', 'author-avatar'];
+                               $condition = ['id' => $item_id, 'visible' => true, 'deleted' => false];
+                               $item = dba::selectfirst('item', $fields, $condition);
 
-                               if (DBM::is_result($r)) {
+                               if (DBM::is_result($item)) {
                                        // If it is a reshared post from another network then reformat to avoid display problems with two share elements
-                                       if (self::isReshare($r[0]["body"], false)) {
-                                               $r[0]["body"] = Markdown::toBBCode(BBCode::toMarkdown($r[0]["body"]));
-                                               $r[0]["body"] = self::replacePeopleGuid($r[0]["body"], $r[0]["author-link"]);
+                                       if (self::isReshare($item["body"], false)) {
+                                               $item["body"] = Markdown::toBBCode(BBCode::toMarkdown($item["body"]));
+                                               $item["body"] = self::replacePeopleGuid($item["body"], $item["author-link"]);
                                        }
 
-                                       return $r[0];
+                                       return $item;
                                }
                        }
                }
@@ -2838,7 +2827,7 @@ class Diaspora
                        return true;
                }
 
-               $original_item = self::originalItem($root_guid, $root_author, $author);
+               $original_item = self::originalItem($root_guid, $root_author);
                if (!$original_item) {
                        return false;
                }
@@ -3556,24 +3545,21 @@ class Diaspora
                // Skip if it isn't a pure repeated messages
                // Does it start with a share?
                if ((strpos($body, "[share") > 0) && $complete) {
-                       return(false);
+                       return false;
                }
 
                // Does it end with a share?
                if (strlen($body) > (strrpos($body, "[/share]") + 8)) {
-                       return(false);
+                       return false;
                }
 
                $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism", "$1", $body);
                // Skip if there is no shared message in there
                if ($body == $attributes) {
-                       return(false);
+                       return false;
                }
 
                // If we don't do the complete check we quit here
-               if (!$complete) {
-                       return true;
-               }
 
                $guid = "";
                preg_match("/guid='(.*?)'/ism", $attributes, $matches);
@@ -3586,18 +3572,14 @@ class Diaspora
                        $guid = $matches[1];
                }
 
-               if ($guid != "") {
-                       $r = q(
-                               "SELECT `contact-id` FROM `item` WHERE `guid` = '%s' AND `network` IN ('%s', '%s') LIMIT 1",
-                               dbesc($guid),
-                               NETWORK_DFRN,
-                               NETWORK_DIASPORA
-                       );
-                       if ($r) {
+               if (($guid != "") && $complete) {
+                       $condition = ['guid' => $guid, 'network' => [NETWORK_DFRN, NETWORK_DIASPORA]];
+                       $item = dba::selectFirst('item', ['contact-id'], $condition);
+                       if (DBM::is_result($item)) {
                                $ret= [];
-                               $ret["root_handle"] = self::handleFromContact($r[0]["contact-id"]);
+                               $ret["root_handle"] = self::handleFromContact($item["contact-id"]);
                                $ret["root_guid"] = $guid;
-                               return($ret);
+                               return $ret;
                        }
                }
 
@@ -3614,28 +3596,22 @@ class Diaspora
 
                $ret= [];
 
-               $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
-               if (($ret["root_handle"] == $profile) || ($ret["root_handle"] == "")) {
-                       return(false);
-               }
-
-               $link = "";
-               preg_match("/link='(.*?)'/ism", $attributes, $matches);
-               if ($matches[1] != "") {
-                       $link = $matches[1];
+               if ($profile != "") {
+                       if (Contact::getIdForURL($profile)) {
+                               $author = Contact::getDetailsByURL($profile);
+                               $ret["root_handle"] = $author['addr'];
+                       }
                }
 
-               preg_match('/link="(.*?)"/ism', $attributes, $matches);
-               if ($matches[1] != "") {
-                       $link = $matches[1];
+               if (!empty($guid)) {
+                       $ret["root_guid"] = $guid;
                }
 
-               $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link);
-               if (($ret["root_guid"] == $link) || (trim($ret["root_guid"]) == "")) {
-                       return(false);
+               if (empty($ret) && !$complete) {
+                       return true;
                }
 
-               return($ret);
+               return $ret;
        }
 
        /**
@@ -3760,6 +3736,12 @@ class Diaspora
                        $title = $item["title"];
                        $body = $item["body"];
 
+                       if ($item['author-link'] != $item['owner-link']) {
+                               require_once 'mod/share.php';
+                               $body = share_header($item['author-name'], $item['author-link'], $item['author-avatar'],
+                                       "", $item['created'], $item['plink']) . $body . '[/share]';
+                       }
+
                        // convert to markdown
                        $body = html_entity_decode(BBCode::toMarkdown($body));
 
index f7ea27d67972522d2efa3bc3d9994a3676145d59..06c2636aca8b33931ede15a5494feeda4f078267 100644 (file)
@@ -1421,7 +1421,7 @@ class PortableContact
                        // Avoid duplicates
                        $tags = [];
                        foreach ($data->tags as $tag) {
-                               $tag = strtolower($tag);
+                               $tag = mb_strtolower($tag);
                                $tags[$tag] = $tag;
                        }
 
index bbdc51fbbb535f2e1adef957c8dbeda77d5adae4..4a11f9259579e31272b57fdfbe9a1c6d363a8212 100644 (file)
@@ -446,7 +446,7 @@ class Network
                /// @TODO Really suppress function outcomes? Why not find them + debug them?
                $h = @parse_url($url);
 
-               if ((is_array($h)) && (@dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
+               if ((is_array($h)) && (@dns_get_record($h['host'], DNS_A + DNS_CNAME) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
                        return $url;
                }
 
@@ -471,7 +471,7 @@ class Network
 
                $h = substr($addr, strpos($addr, '@') + 1);
 
-               if (($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
+               if (($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
                        return true;
                }
                return false;
index c49bde651be84a409e5958f5b9c984b7c12e834b..4b3b95b80d7a4bc5f4f09dbd67c18c6f601f6cf5 100644 (file)
@@ -15,7 +15,7 @@ msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-04-06 16:58+0200\n"
-"PO-Revision-Date: 2018-04-10 18:27+0000\n"
+"PO-Revision-Date: 2018-04-18 01:42+0000\n"
 "Last-Translator: Kris\n"
 "Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
 "MIME-Version: 1.0\n"
@@ -51,21 +51,21 @@ msgstr "'%s' tietokantapalvelimen DNS-tieto ei löydy"
 #, 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] ""
-msgstr[1] ""
+msgstr[0] "Päivittäinen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty."
+msgstr[1] "Päivittäinen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty."
 
 #: include/api.php:1223
 #, 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] ""
-msgstr[1] ""
+msgstr[0] "Viikottainen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty."
+msgstr[1] "Viikottainen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty."
 
 #: include/api.php:1247
 #, php-format
 msgid "Monthly posting limit of %d post reached. The post was rejected."
-msgstr ""
+msgstr "Kuukausittainen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty."
 
 #: include/api.php:4400 mod/photos.php:88 mod/photos.php:194
 #: mod/photos.php:722 mod/photos.php:1149 mod/photos.php:1166
@@ -106,7 +106,7 @@ msgstr "[Friendica:Notify] Uusi viesti, katso %s"
 #: include/enotify.php:100
 #, php-format
 msgid "%1$s sent you a new private message at %2$s."
-msgstr ""
+msgstr "%1$s lähetti sinulle uuden yksityisviestin kohteessa %2$s."
 
 #: include/enotify.php:101
 msgid "a private message"
@@ -120,7 +120,7 @@ msgstr "%1$s lähetti sinulle %2$s."
 #: include/enotify.php:103
 #, php-format
 msgid "Please visit %s to view and/or reply to your private messages."
-msgstr ""
+msgstr "Katso yksityisviestisi kohteessa %s."
 
 #: include/enotify.php:141
 #, php-format
@@ -140,12 +140,12 @@ msgstr ""
 #: include/enotify.php:171
 #, php-format
 msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
-msgstr ""
+msgstr "[Friendica:Notify] %2$s kommentoi keskustelussa #%1$d"
 
 #: include/enotify.php:173
 #, php-format
 msgid "%s commented on an item/conversation you have been following."
-msgstr ""
+msgstr "%s kommentoi kohteessa/keskustelussa jota seuraat."
 
 #: include/enotify.php:176 include/enotify.php:191 include/enotify.php:206
 #: include/enotify.php:221 include/enotify.php:240 include/enotify.php:255
@@ -156,17 +156,17 @@ msgstr ""
 #: include/enotify.php:183
 #, php-format
 msgid "[Friendica:Notify] %s posted to your profile wall"
-msgstr ""
+msgstr "[Friendica:Notify] %s kirjoitti profiiliseinällesi"
 
 #: include/enotify.php:185
 #, php-format
 msgid "%1$s posted to your profile wall at %2$s"
-msgstr ""
+msgstr "%1$s kirjoitti seinällesi kohteessa %2$s"
 
 #: include/enotify.php:186
 #, php-format
 msgid "%1$s posted to [url=%2$s]your wall[/url]"
-msgstr ""
+msgstr "%1$s kirjoitti [url=%2$s]seinällesi[/url]"
 
 #: include/enotify.php:198
 #, php-format
@@ -206,7 +206,7 @@ msgstr "[Friendica:Notify] %1$s tökkäsi sinua."
 #: include/enotify.php:230
 #, php-format
 msgid "%1$s poked you at %2$s"
-msgstr ""
+msgstr "%1$s tökkäsi sinua kohteessa %2$s"
 
 #: include/enotify.php:231
 #, php-format
@@ -277,7 +277,7 @@ msgstr "[Friendica:Notify] Kaveripyyntö vastaanotettu"
 #: include/enotify.php:307
 #, php-format
 msgid "You've received a friend suggestion from '%1$s' at %2$s"
-msgstr ""
+msgstr "Sait kaverikutsun henkilöltä '%1$s' (%2$s)"
 
 #: include/enotify.php:308
 #, php-format
@@ -536,7 +536,7 @@ msgstr "Poista"
 #: src/Object/Post.php:364
 #, php-format
 msgid "View %s's profile @ %s"
-msgstr ""
+msgstr "Katso %s-henkilön profiilia @ %s"
 
 #: include/conversation.php:795 src/Object/Post.php:351
 msgid "Categories:"
@@ -714,7 +714,7 @@ msgstr "Lisää ääni URL-linkki:"
 
 #: include/conversation.php:1288 include/conversation.php:1304
 msgid "Tag term:"
-msgstr ""
+msgstr "Tunniste:"
 
 #: include/conversation.php:1289 include/conversation.php:1305
 #: mod/filer.php:34
@@ -867,8 +867,8 @@ msgstr[1] "Ei osallistu"
 #: include/conversation.php:1693 src/Content/ContactSelector.php:125
 msgid "Undecided"
 msgid_plural "Undecided"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "En ole varma"
+msgstr[1] "En ole varma"
 
 #: include/text.php:302
 msgid "newer"
@@ -989,11 +989,11 @@ msgstr "läimäsi"
 
 #: include/text.php:1078
 msgid "finger"
-msgstr ""
+msgstr "näytä keskisormea"
 
 #: include/text.php:1078
 msgid "fingered"
-msgstr ""
+msgstr "näytti keskisormea"
 
 #: include/text.php:1079
 msgid "rebuff"
@@ -1151,7 +1151,7 @@ msgstr "Jou."
 #: include/text.php:1275
 #, php-format
 msgid "Content warning: %s"
-msgstr ""
+msgstr "Sisältövaroitus: %s"
 
 #: include/text.php:1345 mod/videos.php:380
 msgid "View Video"
@@ -1197,7 +1197,7 @@ msgstr ""
 
 #: mod/allfriends.php:51
 msgid "No friends to display."
-msgstr ""
+msgstr "Ei näytettäviä kavereita."
 
 #: mod/allfriends.php:90 mod/suggest.php:101 mod/match.php:105
 #: mod/dirfind.php:215 src/Content/Widget.php:37 src/Model/Profile.php:297
@@ -1234,7 +1234,7 @@ msgstr "Ei"
 
 #: mod/apps.php:14 index.php:245
 msgid "You must be logged in to use addons. "
-msgstr ""
+msgstr "Sinun pitää kirjautua sisään, jotta voit käyttää lisäosia"
 
 #: mod/apps.php:19
 msgid "Applications"
@@ -1298,15 +1298,15 @@ msgstr "Ole hyvä ja paina selaimesi 'Takaisin'-painiketta <strong>nyt</strong>,
 
 #: mod/crepair.php:129 mod/crepair.php:131
 msgid "No mirroring"
-msgstr ""
+msgstr "Ei peilausta"
 
 #: mod/crepair.php:129
 msgid "Mirror as forwarded posting"
-msgstr ""
+msgstr "Peilaa välitettynä julkaisuna"
 
 #: mod/crepair.php:129 mod/crepair.php:131
 msgid "Mirror as my own posting"
-msgstr ""
+msgstr "Peilaa omana julkaisuna"
 
 #: mod/crepair.php:144
 msgid "Return to contact editor"
@@ -1334,7 +1334,7 @@ msgstr ""
 
 #: mod/crepair.php:152
 msgid "Mirror postings from this contact"
-msgstr ""
+msgstr "Peilaa tämän kontaktin julkaisut"
 
 #: mod/crepair.php:154
 msgid ""
@@ -1561,7 +1561,7 @@ msgstr ""
 
 #: mod/newmember.php:40
 msgid "Go to Your Site's Directory"
-msgstr ""
+msgstr "Näytä oman sivuston luettelo"
 
 #: mod/newmember.php:40
 msgid ""
@@ -1615,7 +1615,7 @@ msgstr "Avun saaminen"
 
 #: mod/newmember.php:54
 msgid "Go to the Help Section"
-msgstr ""
+msgstr "Näytä ohjeet"
 
 #: mod/newmember.php:54
 msgid ""
@@ -1627,7 +1627,7 @@ msgstr ""
 #: mod/contacts.php:959
 #, php-format
 msgid "Visit %s's profile [%s]"
-msgstr ""
+msgstr "Näytä %s-käyttäjän profiili [%s]"
 
 #: mod/nogroup.php:43 mod/contacts.php:960
 msgid "Edit contact"
@@ -1665,7 +1665,7 @@ msgstr "Haluatko varmasti poistaa ehdotuksen?"
 msgid ""
 "No suggestions available. If this is a new site, please try again in 24 "
 "hours."
-msgstr ""
+msgstr "Ehdotuksia ei löydy. Jos tämä on uusi sivusto, kokeile uudelleen vuorokauden kuluttua."
 
 #: mod/suggest.php:84 mod/suggest.php:104
 msgid "Ignore/Hide"
@@ -1679,7 +1679,7 @@ msgstr "Ystäväehdotukset"
 msgid ""
 "This site has exceeded the number of allowed daily account registrations. "
 "Please try again tomorrow."
-msgstr ""
+msgstr "Sivuston päivittäinen rekisteröintiraja ylitetty. Yritä uudelleen huomenna."
 
 #: mod/uimport.php:70 mod/register.php:285
 msgid "Import"
@@ -1704,7 +1704,7 @@ msgstr ""
 msgid ""
 "This feature is experimental. We can't import contacts from the OStatus "
 "network (GNU Social/Statusnet) or from Diaspora"
-msgstr ""
+msgstr "Tämä on kokeellinen ominaisuus. Emme voi tuoda kontakteja OStatus-verkolta (GNU social/Statusnet) tai Diasporalta."
 
 #: mod/uimport.php:76
 msgid "Account file"
@@ -1732,7 +1732,7 @@ msgstr ""
 
 #: mod/match.php:104
 msgid "is interested in:"
-msgstr ""
+msgstr "on kiinnostunut seuraavista aiheista:"
 
 #: mod/match.php:120
 msgid "Profile Match"
@@ -1904,7 +1904,7 @@ msgstr "Näytä kaikki"
 #: mod/notifications.php:322
 #, php-format
 msgid "No more %s notifications."
-msgstr ""
+msgstr "Ei muita %s ilmoituksia."
 
 #: mod/openid.php:29
 msgid "OpenID protocol error. No ID returned."
@@ -1913,7 +1913,7 @@ msgstr "OpenID -protokollavirhe. Tunnusta ei vastaanotettu."
 #: mod/openid.php:66
 msgid ""
 "Account not found and OpenID registration is not permitted on this site."
-msgstr ""
+msgstr "Käyttäjätiliä ei löytynyt. Rekisteröityminen OpenID:n kautta ei ole sallittua tällä sivustolla."
 
 #: mod/openid.php:116 src/Module/Login.php:86 src/Module/Login.php:134
 msgid "Login failed."
@@ -1956,7 +1956,7 @@ msgstr ""
 
 #: mod/dfrn_confirm.php:396
 msgid "Unable to set contact photo."
-msgstr ""
+msgstr "Kontaktin kuvaa ei voitu asettaa"
 
 #: mod/dfrn_confirm.php:498
 #, php-format
@@ -1965,7 +1965,7 @@ msgstr ""
 
 #: mod/dfrn_confirm.php:508
 msgid "Our site encryption key is apparently messed up."
-msgstr ""
+msgstr "Sivustomme salausavain on sekaisin."
 
 #: mod/dfrn_confirm.php:519
 msgid "Empty site URL was provided or URL could not be decrypted by us."
@@ -2002,7 +2002,7 @@ msgstr "[Nimi jätetty pois]"
 #: mod/dfrn_confirm.php:694
 #, php-format
 msgid "%1$s has joined %2$s"
-msgstr ""
+msgstr "%1$s on liittynyt kohteeseen %2$s"
 
 #: mod/invite.php:33
 msgid "Total invitation limit exceeded."
@@ -2019,7 +2019,7 @@ msgstr "Tervetuloa Friendicaan"
 
 #: mod/invite.php:91
 msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr ""
+msgstr "Kutsuraja ylitetty. Ota yhteyttä ylläpitäjään."
 
 #: mod/invite.php:95
 #, php-format
@@ -2035,7 +2035,7 @@ msgstr[1] "%d viestiä lähetetty."
 
 #: mod/invite.php:117
 msgid "You have no more invitations available"
-msgstr ""
+msgstr "Sinulla ei ole kutsuja jäljellä"
 
 #: mod/invite.php:125
 #, php-format
@@ -2294,7 +2294,7 @@ msgstr "Ystävä/yhteyspyyntö"
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@gnusocial.de"
-msgstr ""
+msgstr "Esim. jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"
 
 #: mod/dfrn_request.php:652 mod/follow.php:149
 msgid "Please answer the following:"
@@ -2387,7 +2387,7 @@ msgstr ""
 
 #: mod/profperm.php:115 mod/group.php:265
 msgid "Click on a contact to add or remove."
-msgstr ""
+msgstr "Valitse kontakti, jota haluat poistaa tai lisätä."
 
 #: mod/profperm.php:124
 msgid "Visible To"
@@ -2418,7 +2418,7 @@ msgstr "Poista tilini"
 msgid ""
 "This will completely remove your account. Once this has been done it is not "
 "recoverable."
-msgstr ""
+msgstr "Tämä poistaa käyttäjätilisi pysyvästi. Poistoa ei voi perua myöhemmin."
 
 #: mod/removeme.php:57
 msgid "Please enter your password for verification:"
@@ -2435,7 +2435,7 @@ msgstr "Käyttö estetty."
 #: mod/wallmessage.php:49 mod/wallmessage.php:112
 #, php-format
 msgid "Number of daily wall messages for %s exceeded. Message failed."
-msgstr ""
+msgstr "%s-käyttäjän päivittäinen seinäviestiraja ylitetty. Viestin lähettäminen epäonnistui."
 
 #: mod/wallmessage.php:57 mod/message.php:73
 msgid "No recipient selected."
@@ -2443,7 +2443,7 @@ msgstr "Vastaanottaja puuttuu."
 
 #: mod/wallmessage.php:60
 msgid "Unable to check your home location."
-msgstr ""
+msgstr "Kotisijaintisi ei voitu tarkistaa."
 
 #: mod/wallmessage.php:63 mod/message.php:80
 msgid "Message could not be sent."
@@ -2451,7 +2451,7 @@ msgstr "Viestiä ei voitu lähettää."
 
 #: mod/wallmessage.php:66 mod/message.php:83
 msgid "Message collection failure."
-msgstr ""
+msgstr "Viestin noutaminen epäonnistui."
 
 #: mod/wallmessage.php:69 mod/message.php:86
 msgid "Message sent."
@@ -2515,7 +2515,7 @@ msgstr "Ei enää järjestelmäilmoituksia."
 
 #: mod/ping.php:292
 msgid "{0} wants to be your friend"
-msgstr ""
+msgstr "{0} lähetti kaveripyynnön"
 
 #: mod/ping.php:307
 msgid "{0} sent you a message"
@@ -2617,7 +2617,7 @@ msgstr "Kohteet joilla tunnisteet: %s"
 #: mod/search.php:236 mod/contacts.php:819
 #, php-format
 msgid "Results for: %s"
-msgstr ""
+msgstr "Tulokset haulla: %s"
 
 #: mod/bookmarklet.php:23 src/Content/Nav.php:114 src/Module/Login.php:312
 msgid "Login"
@@ -2641,7 +2641,7 @@ msgstr "Paikallinen yhteisö"
 
 #: mod/community.php:79
 msgid "Posts from local users on this server"
-msgstr ""
+msgstr "Tämän palvelimen julkaisut"
 
 #: mod/community.php:87
 msgid "Global Community"
@@ -2649,7 +2649,7 @@ msgstr "Maailmanlaajuinen yhteisö"
 
 #: mod/community.php:90
 msgid "Posts from users of the whole federated network"
-msgstr ""
+msgstr "Maailmanlaajuisen verkon julkaisut"
 
 #: mod/community.php:180
 msgid ""
@@ -2675,7 +2675,7 @@ msgstr "Esimerkki: bob@example.com, mary@example.com"
 
 #: mod/feedtest.php:20
 msgid "You must be logged in to use this module"
-msgstr ""
+msgstr "Sinun pitää kirjautua sisään, jotta voit käyttää tätä moduulia"
 
 #: mod/feedtest.php:48
 msgid "Source URL"
@@ -2907,7 +2907,7 @@ msgstr "Virheellinen kontakti."
 
 #: mod/network.php:921
 msgid "Commented Order"
-msgstr ""
+msgstr "Järjestä viimeisimpien kommenttien mukaan"
 
 #: mod/network.php:924
 msgid "Sort by Comment Date"
@@ -2915,7 +2915,7 @@ msgstr "Kommentit päivämäärän mukaan"
 
 #: mod/network.php:929
 msgid "Posted Order"
-msgstr ""
+msgstr "Järjestä julkaisupäivämäärän mukaan"
 
 #: mod/network.php:932
 msgid "Sort by Post Date"
@@ -2928,7 +2928,7 @@ msgstr "Henkilökohtainen"
 
 #: mod/network.php:943
 msgid "Posts that mention or involve you"
-msgstr ""
+msgstr "Julkaisut jotka liittyvät sinuun"
 
 #: mod/network.php:951
 msgid "New"
@@ -3373,7 +3373,7 @@ msgstr "Tietokannan käyttäjän salasana"
 
 #: mod/install.php:239
 msgid "For security reasons the password must not be empty"
-msgstr ""
+msgstr "Turvallisuussyistä salasanakenttä ei saa olla tyhjä"
 
 #: mod/install.php:240
 msgid "Database Name"
@@ -3405,7 +3405,7 @@ msgstr "Järjestelmän kieli:"
 msgid ""
 "Set the default language for your Friendica installation interface and to "
 "send emails."
-msgstr ""
+msgstr "Valitse Friendica-sivustosi oletuskieli."
 
 #: mod/install.php:325
 msgid "Could not find a command line version of PHP in the web server PATH."
@@ -3613,11 +3613,11 @@ msgstr "view/smarty3 on kirjoitettava"
 #: mod/install.php:501
 msgid ""
 "Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr ""
+msgstr "URL-osoitteen uudelleenkirjoitus .htaccess-tiedostossa ei toimi. Tarkista palvelimen asetukset."
 
 #: mod/install.php:503
 msgid "Url rewrite is working"
-msgstr ""
+msgstr "URL-osoitteen uudellenkirjoitus toimii"
 
 #: mod/install.php:522
 msgid "ImageMagick PHP extension is not installed"
@@ -3666,7 +3666,7 @@ msgstr "Kontakti puuttuu."
 
 #: mod/ostatus_subscribe.php:40
 msgid "Couldn't fetch information for contact."
-msgstr ""
+msgstr "Kontaktin tietoja ei voitu hakea."
 
 #: mod/ostatus_subscribe.php:50
 msgid "Couldn't fetch friends for contact."
@@ -3839,7 +3839,7 @@ msgstr "Kuva ladattu mutta kuvan rajaus epäonnistui."
 #: mod/profile_photo.php:315
 #, php-format
 msgid "Image size reduction [%s] failed."
-msgstr ""
+msgstr "Kuvan pienentäminen [%s] epäonnistui."
 
 #: mod/profile_photo.php:125
 msgid ""
@@ -3877,7 +3877,7 @@ msgstr "Rajaa kuva"
 
 #: mod/profile_photo.php:267
 msgid "Please adjust the image cropping for optimum viewing."
-msgstr ""
+msgstr "Rajaa kuva sopivasti."
 
 #: mod/profile_photo.php:269
 msgid "Done Editing"
@@ -3909,7 +3909,7 @@ msgstr ""
 
 #: mod/directory.php:208
 msgid "Site Directory"
-msgstr ""
+msgstr "Sivuston luettelo"
 
 #: mod/directory.php:209 mod/contacts.php:820 src/Content/Widget.php:63
 msgid "Find"
@@ -3985,7 +3985,7 @@ msgstr "BBCode"
 
 #: mod/babel.php:110
 msgid "Markdown"
-msgstr ""
+msgstr "Markdown"
 
 #: mod/babel.php:111
 msgid "HTML"
@@ -4116,7 +4116,7 @@ msgstr ""
 
 #: mod/profiles.php:658
 msgid "Show more profile fields:"
-msgstr ""
+msgstr "Näytä lisää profiilikenttiä:"
 
 #: mod/profiles.php:670
 msgid "Profile Actions"
@@ -4568,7 +4568,7 @@ msgstr "Arkistoitu tällä hetkellä"
 
 #: mod/contacts.php:645
 msgid "Awaiting connection acknowledge"
-msgstr ""
+msgstr "Odotetaan yhteyden kuittausta"
 
 #: mod/contacts.php:646
 msgid ""
@@ -4700,7 +4700,7 @@ msgstr "Kontakti-lisäasetukset"
 
 #: mod/contacts.php:930
 msgid "Mutual Friendship"
-msgstr ""
+msgstr "Yhteinen kaveruus"
 
 #: mod/contacts.php:934
 msgid "is a fan of yours"
@@ -4813,7 +4813,7 @@ msgstr ""
 
 #: mod/lostpass.php:39
 msgid "Password reset request issued. Check your email."
-msgstr ""
+msgstr "Salasanan nollauspyyntö lähetetty. Tarkista sähköpostisi."
 
 #: mod/lostpass.php:45
 #, php-format
@@ -4851,7 +4851,7 @@ msgstr ""
 #: mod/lostpass.php:73
 #, php-format
 msgid "Password reset requested at %s"
-msgstr ""
+msgstr "Salasanan nollauspyyntö kohteessa %s"
 
 #: mod/lostpass.php:89
 msgid ""
@@ -4861,7 +4861,7 @@ msgstr ""
 
 #: mod/lostpass.php:102
 msgid "Request has expired, please make a new one."
-msgstr ""
+msgstr "Pyyntö on vanhentunut, tehkää uusi pyyntö."
 
 #: mod/lostpass.php:117
 msgid "Forgot your Password?"
@@ -4895,7 +4895,7 @@ msgstr "Uusi salasanasi on"
 
 #: mod/lostpass.php:139
 msgid "Save or copy your new password - and then"
-msgstr ""
+msgstr "Tallenna tai kopioi uusi salasanasi, ja sitten"
 
 #: mod/lostpass.php:140
 msgid "click here to login"
@@ -4940,7 +4940,7 @@ msgstr "Salasanasi on vaihdettu sivustolla %s"
 #: mod/register.php:99
 msgid ""
 "Registration successful. Please check your email for further instructions."
-msgstr ""
+msgstr "Rekisteröityminen onnistui. Saat kohta lisäohjeita sähköpostitse."
 
 #: mod/register.php:103
 #, php-format
@@ -4955,11 +4955,11 @@ msgstr "Rekisteröityminen onnistui."
 
 #: mod/register.php:115
 msgid "Your registration can not be processed."
-msgstr ""
+msgstr "Rekisteröintisi ei voida käsitellä."
 
 #: mod/register.php:162
 msgid "Your registration is pending approval by the site owner."
-msgstr ""
+msgstr "Rekisteröintisi odottaa ylläpitäjän hyväksyntää."
 
 #: mod/register.php:220
 msgid ""
@@ -4971,7 +4971,7 @@ msgstr ""
 msgid ""
 "If you are not familiar with OpenID, please leave that field blank and fill "
 "in the rest of the items."
-msgstr ""
+msgstr "Jos OpenID ei ole tuttu, jätä kenttä tyhjäksi."
 
 #: mod/register.php:222
 msgid "Your OpenID (optional): "
@@ -4979,7 +4979,7 @@ msgstr "OpenID -tunnus (valinnainen):"
 
 #: mod/register.php:234
 msgid "Include your profile in member directory?"
-msgstr ""
+msgstr "Lisää profiilisi jäsenluetteloon?"
 
 #: mod/register.php:259
 msgid "Note for the admin"
@@ -4987,7 +4987,7 @@ msgstr "Viesti ylläpidolle"
 
 #: mod/register.php:259
 msgid "Leave a message for the admin, why you want to join this node"
-msgstr ""
+msgstr "Kerro yllåpitäjälle miksi haluat liittyä tähän Friendica -sivustoon"
 
 #: mod/register.php:260
 msgid "Membership on this site is by invitation only."
@@ -5003,13 +5003,13 @@ msgstr "Rekisteröityminen"
 
 #: mod/register.php:270
 msgid "Your Full Name (e.g. Joe Smith, real or real-looking): "
-msgstr ""
+msgstr "Koko nimi (esim. Matti Meikäläinen, Aku Ankka):"
 
 #: mod/register.php:271
 msgid ""
 "Your Email Address: (Initial information will be send there, so this has to "
 "be an existing address.)"
-msgstr ""
+msgstr "Sähköpostiosoite: (pitää olla toimiva osoite että rekisteröityminen onnistuu)"
 
 #: mod/register.php:273 mod/settings.php:1201
 msgid "New Password:"
@@ -5017,7 +5017,7 @@ msgstr "Uusi salasana:"
 
 #: mod/register.php:273
 msgid "Leave empty for an auto generated password."
-msgstr ""
+msgstr "Jätä tyhjäksi jos haluat automaattisesti luotu salasanan."
 
 #: mod/register.php:274 mod/settings.php:1202
 msgid "Confirm:"
@@ -5144,7 +5144,7 @@ msgstr "Lisäosaominaisuudet"
 
 #: mod/admin.php:224
 msgid "User registrations waiting for confirmation"
-msgstr ""
+msgstr "Käyttäjärekisteröinnit odottavat hyväksyntää"
 
 #: mod/admin.php:301 mod/admin.php:361 mod/admin.php:478 mod/admin.php:520
 #: mod/admin.php:717 mod/admin.php:752 mod/admin.php:848 mod/admin.php:1344
@@ -5239,7 +5239,7 @@ msgstr "Lisää merkintä"
 
 #: mod/admin.php:369
 msgid "Save changes to the blocklist"
-msgstr ""
+msgstr "Tallenna muutoksia estolistaan"
 
 #: mod/admin.php:370
 msgid "Current Entries in the Blocklist"
@@ -5319,8 +5319,8 @@ msgstr "Kuva"
 #, php-format
 msgid "%s total blocked contact"
 msgid_plural "%s total blocked contacts"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Yhteensä %s estetty kontakti"
+msgstr[1] "Yhteensä %s estettyjä kontakteja"
 
 #: mod/admin.php:500
 msgid "URL of the remote contact to block."
@@ -5349,11 +5349,11 @@ msgstr "GUID"
 
 #: mod/admin.php:525
 msgid "The GUID of the item you want to delete."
-msgstr ""
+msgstr "Poistettavan kohteen GUID."
 
 #: mod/admin.php:564
 msgid "Item marked for deletion."
-msgstr ""
+msgstr "Kohde merkitty poistettavaksi."
 
 #: mod/admin.php:635
 msgid "unknown"
@@ -5457,7 +5457,7 @@ msgstr ""
 
 #: mod/admin.php:818 mod/admin.php:1741
 msgid "Public Forum Account"
-msgstr ""
+msgstr "Julkinen foorumitili"
 
 #: mod/admin.php:819 mod/admin.php:1742
 msgid "Automatic Friend Account"
@@ -5465,11 +5465,11 @@ msgstr ""
 
 #: mod/admin.php:820
 msgid "Blog Account"
-msgstr ""
+msgstr "Blogitili"
 
 #: mod/admin.php:821
 msgid "Private Forum Account"
-msgstr ""
+msgstr "Yksityinen foorumitili"
 
 #: mod/admin.php:843
 msgid "Message queues"
@@ -5481,7 +5481,7 @@ msgstr "Yhteenveto"
 
 #: mod/admin.php:851
 msgid "Registered users"
-msgstr ""
+msgstr "Rekisteröityneet käyttäjät"
 
 #: mod/admin.php:853
 msgid "Pending registrations"
@@ -5505,11 +5505,11 @@ msgstr "Sivuston asetukset päivitettiin."
 
 #: mod/admin.php:1236 mod/settings.php:905
 msgid "No special theme for mobile devices"
-msgstr ""
+msgstr "Ei mobiiliteemaa"
 
 #: mod/admin.php:1265
 msgid "No community page"
-msgstr ""
+msgstr "Ei yhteisösivua"
 
 #: mod/admin.php:1266
 msgid "Public postings from users of this site"
@@ -5557,7 +5557,7 @@ msgstr "Suljettu"
 
 #: mod/admin.php:1311
 msgid "Requires approval"
-msgstr ""
+msgstr "Edellyttää hyväksyntää"
 
 #: mod/admin.php:1312
 msgid "Open"
@@ -5597,7 +5597,7 @@ msgstr "Tiedoston lataus"
 
 #: mod/admin.php:1350
 msgid "Policies"
-msgstr ""
+msgstr "Käytännöt"
 
 #: mod/admin.php:1352
 msgid "Auto Discovered Contact Directory"
@@ -5643,7 +5643,7 @@ msgstr "Banneri/logo"
 
 #: mod/admin.php:1363
 msgid "Shortcut icon"
-msgstr ""
+msgstr "Pikakuvake"
 
 #: mod/admin.php:1363
 msgid "Link to an icon that will be used for browsers."
@@ -5651,7 +5651,7 @@ msgstr ""
 
 #: mod/admin.php:1364
 msgid "Touch icon"
-msgstr ""
+msgstr "Kosketusnäyttökuvake"
 
 #: mod/admin.php:1364
 msgid "Link to an icon that will be used for tablets and mobiles."
@@ -5688,7 +5688,7 @@ msgstr "Mobiili järjestelmäteema"
 
 #: mod/admin.php:1368
 msgid "Theme for mobile devices"
-msgstr ""
+msgstr "Mobiiliteema"
 
 #: mod/admin.php:1369
 msgid "SSL link policy"
@@ -5700,7 +5700,7 @@ msgstr ""
 
 #: mod/admin.php:1370
 msgid "Force SSL"
-msgstr ""
+msgstr "Pakoita SSL-yhteyden käyttöä"
 
 #: mod/admin.php:1370
 msgid ""
@@ -5773,13 +5773,13 @@ msgstr ""
 
 #: mod/admin.php:1379
 msgid "Register text"
-msgstr ""
+msgstr "Rekisteröitymisteksti"
 
 #: mod/admin.php:1379
 msgid ""
 "Will be displayed prominently on the registration page. You can use BBCode "
 "here."
-msgstr ""
+msgstr "Näkyvästi esillä rekisteröitymissivulla. Voit käyttää BBCodeia."
 
 #: mod/admin.php:1380
 msgid "Accounts abandoned after x days"
@@ -5893,7 +5893,7 @@ msgstr ""
 
 #: mod/admin.php:1391
 msgid "Don't embed private images in posts"
-msgstr ""
+msgstr "Älä upota yksityisiä kuvia julkaisuissa"
 
 #: mod/admin.php:1391
 msgid ""
@@ -5998,7 +5998,7 @@ msgstr "Salli Diaspora-tuki"
 
 #: mod/admin.php:1403
 msgid "Provide built-in Diaspora network compatibility."
-msgstr ""
+msgstr "Ota käyttöön Diaspora-yhteensopivuus"
 
 #: mod/admin.php:1404
 msgid "Only allow Friendica contacts"
@@ -6008,7 +6008,7 @@ msgstr "Salli ainoastaan Friendica -kontakteja"
 msgid ""
 "All contacts must use Friendica protocols. All other built-in communication "
 "protocols disabled."
-msgstr ""
+msgstr "Kaikkien kontaktien on käytettävä Friendica-protokollaa. Kaikki muut protokollat poistetaan käytöstä."
 
 #: mod/admin.php:1405
 msgid "Verify SSL"
@@ -6128,7 +6128,7 @@ msgstr ""
 
 #: mod/admin.php:1419
 msgid "Search the local directory"
-msgstr ""
+msgstr "Paikallisluettelohaku"
 
 #: mod/admin.php:1419
 msgid ""
@@ -6139,7 +6139,7 @@ msgstr ""
 
 #: mod/admin.php:1421
 msgid "Publish server information"
-msgstr ""
+msgstr "Julkaise palvelintiedot"
 
 #: mod/admin.php:1421
 msgid ""
@@ -6161,7 +6161,7 @@ msgstr ""
 
 #: mod/admin.php:1424
 msgid "Suppress Tags"
-msgstr ""
+msgstr "Piilota tunnisteet"
 
 #: mod/admin.php:1424
 msgid "Suppress showing a list of hashtags at the end of the posting."
@@ -6187,7 +6187,7 @@ msgstr ""
 
 #: mod/admin.php:1427
 msgid "Maximum numbers of comments per post"
-msgstr ""
+msgstr "Julkaisun kommentiraja"
 
 #: mod/admin.php:1427
 msgid "How much comments should be shown for each post? Default value is 100."
@@ -6372,7 +6372,7 @@ msgstr ""
 #: mod/admin.php:1482
 #, php-format
 msgid "Database structure update %s was successfully applied."
-msgstr ""
+msgstr "Tietokannan rakenteen %s-päivitys onnistui."
 
 #: mod/admin.php:1485
 #, php-format
@@ -6387,7 +6387,7 @@ msgstr ""
 #: mod/admin.php:1500
 #, php-format
 msgid "Update %s was successfully applied."
-msgstr ""
+msgstr "%s-päivitys onnistui."
 
 #: mod/admin.php:1503
 #, php-format
@@ -6473,8 +6473,8 @@ msgstr ""
 #, php-format
 msgid "%s user blocked/unblocked"
 msgid_plural "%s users blocked/unblocked"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s käyttäjä estetty / poistettu estolistalta"
+msgstr[1] "%s käyttäjää estetty / poistettu estolistalta"
 
 #: mod/admin.php:1627
 #, php-format
@@ -6730,7 +6730,7 @@ msgstr "Päällä"
 #: mod/admin.php:2429
 #, php-format
 msgid "Lock feature %s"
-msgstr ""
+msgstr "Lukitse ominaisuus %s"
 
 #: mod/admin.php:2437
 msgid "Manage Additional Features"
@@ -6778,11 +6778,11 @@ msgstr ""
 
 #: mod/settings.php:384 src/Model/User.php:325
 msgid "Passwords do not match. Password unchanged."
-msgstr ""
+msgstr "Salasanat eivät täsmää. Salasana ennallaan."
 
 #: mod/settings.php:389
 msgid "Empty passwords are not allowed. Password unchanged."
-msgstr ""
+msgstr "Tyhjä salasanakenttä ei ole sallittu. Salasana ennallaan."
 
 #: mod/settings.php:394 src/Core/Console/NewPassword.php:78
 msgid ""
@@ -6852,11 +6852,11 @@ msgstr "Uudelleenohjaus"
 
 #: mod/settings.php:681 mod/settings.php:707
 msgid "Icon url"
-msgstr ""
+msgstr "Kuvakkeen URL-osoite"
 
 #: mod/settings.php:692
 msgid "You can't edit this application."
-msgstr ""
+msgstr "Et voi muokata tätä sovellusta."
 
 #: mod/settings.php:735
 msgid "Connected Apps"
@@ -6880,7 +6880,7 @@ msgstr "Poista lupa"
 
 #: mod/settings.php:752
 msgid "No Addon settings configured"
-msgstr ""
+msgstr "Lisäosa-asetukset puuttuvat"
 
 #: mod/settings.php:761
 msgid "Addon Settings"
@@ -6921,7 +6921,7 @@ msgstr "Yleiset some asetukset"
 
 #: mod/settings.php:848
 msgid "Disable Content Warning"
-msgstr ""
+msgstr "Poista sisältövaroitus käytöstä"
 
 #: mod/settings.php:848
 msgid ""
@@ -6944,7 +6944,7 @@ msgstr ""
 
 #: mod/settings.php:850
 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners"
-msgstr ""
+msgstr "Automaattisesti seuraa GNU social (OStatus) seuraajat/mainitsijat"
 
 #: mod/settings.php:850
 msgid ""
@@ -6959,7 +6959,7 @@ msgstr "Oletusryhmä OStatus kontakteille"
 
 #: mod/settings.php:852
 msgid "Your legacy GNU Social account"
-msgstr ""
+msgstr "Vanha GNU social käyttäjätilisi"
 
 #: mod/settings.php:852
 msgid ""
@@ -6996,7 +6996,7 @@ msgstr "IMAP-porttti:"
 
 #: mod/settings.php:865
 msgid "Security:"
-msgstr ""
+msgstr "Turvallisuus:"
 
 #: mod/settings.php:865 mod/settings.php:870
 msgid "None"
@@ -7208,7 +7208,7 @@ msgstr ""
 
 #: mod/settings.php:1069
 msgid "Normal Account Page"
-msgstr ""
+msgstr "Tavallinen käyttäjätili"
 
 #: mod/settings.php:1070
 msgid ""
@@ -7262,7 +7262,7 @@ msgstr ""
 
 #: mod/settings.php:1105
 msgid "Publish your default profile in your local site directory?"
-msgstr ""
+msgstr "Julkaise oletusprofiilisi tämän sivuston paikallisluettelossa?"
 
 #: mod/settings.php:1105
 #, php-format
@@ -7273,7 +7273,7 @@ msgstr ""
 
 #: mod/settings.php:1111
 msgid "Publish your default profile in the global social directory?"
-msgstr ""
+msgstr "Julkaise oletusprofiilisi maailmanlaajuisessa sosiaaliluettelossa?"
 
 #: mod/settings.php:1111
 #, php-format
@@ -7349,7 +7349,7 @@ msgstr "Profiili <strong>ei ole julkaistu</strong>."
 #: mod/settings.php:1148
 #, php-format
 msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
-msgstr ""
+msgstr "Identiteettisi osoite on <strong>'%s'</strong> tai '%s'."
 
 #: mod/settings.php:1155
 msgid "Automatically expire posts after this many days:"
@@ -7357,7 +7357,7 @@ msgstr ""
 
 #: mod/settings.php:1155
 msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr ""
+msgstr "Jos kenttä jää tyhjäksi, julkaisut eivät vanhene. Vanhentuneet julkaisut poistetaan."
 
 #: mod/settings.php:1156
 msgid "Advanced expiration settings"
@@ -7369,7 +7369,7 @@ msgstr ""
 
 #: mod/settings.php:1158
 msgid "Expire posts:"
-msgstr ""
+msgstr "Julkaisujen vanheneminen:"
 
 #: mod/settings.php:1159
 msgid "Expire personal notes:"
@@ -7377,11 +7377,11 @@ msgstr ""
 
 #: mod/settings.php:1160
 msgid "Expire starred posts:"
-msgstr ""
+msgstr "Tähtimerkityt julkaisut vanhenee:"
 
 #: mod/settings.php:1161
 msgid "Expire photos:"
-msgstr ""
+msgstr "Kuvat vanhenee:"
 
 #: mod/settings.php:1162
 msgid "Only expire posts by others:"
@@ -7397,7 +7397,7 @@ msgstr "Salasana-asetukset"
 
 #: mod/settings.php:1202
 msgid "Leave password fields blank unless changing"
-msgstr ""
+msgstr "Jätä salasana kenttää tyhjäksi jos et halua vaihtaa salasanaa"
 
 #: mod/settings.php:1203
 msgid "Current Password:"
@@ -7439,7 +7439,7 @@ msgstr ""
 
 #: mod/settings.php:1213
 msgid "Default Post Location:"
-msgstr ""
+msgstr "Julkaisun oletussijainti:"
 
 #: mod/settings.php:1214
 msgid "Use Browser Location:"
@@ -7451,15 +7451,15 @@ msgstr "Turvallisuus ja tietosuoja-asetukset"
 
 #: mod/settings.php:1219
 msgid "Maximum Friend Requests/Day:"
-msgstr ""
+msgstr "Kaveripyyntöraja päivässä:"
 
 #: mod/settings.php:1219 mod/settings.php:1248
 msgid "(to prevent spam abuse)"
-msgstr ""
+msgstr "(roskapostin estämiseksi)"
 
 #: mod/settings.php:1220
 msgid "Default Post Permissions"
-msgstr ""
+msgstr "Julkaisun oletuskäyttöoikeudet:"
 
 #: mod/settings.php:1221
 msgid "(click to open/close)"
@@ -7475,7 +7475,7 @@ msgstr ""
 
 #: mod/settings.php:1236
 msgid "Default Permissions for New Posts"
-msgstr ""
+msgstr "Uuden julkaisun oletuskäyttöoikeudet"
 
 #: mod/settings.php:1248
 msgid "Maximum private messages per day from unknown people:"
@@ -7507,19 +7507,19 @@ msgstr "Lähetä sähköposti-ilmoitus kun:"
 
 #: mod/settings.php:1257
 msgid "You receive an introduction"
-msgstr ""
+msgstr "Vastaanotat kaverikutsun"
 
 #: mod/settings.php:1258
 msgid "Your introductions are confirmed"
-msgstr ""
+msgstr "Kaverikutsusi on hyväksytty"
 
 #: mod/settings.php:1259
 msgid "Someone writes on your profile wall"
-msgstr ""
+msgstr "Joku kirjoittaa profiiliseinällesi"
 
 #: mod/settings.php:1260
 msgid "Someone writes a followup comment"
-msgstr ""
+msgstr "Joku vastaa kommenttiin"
 
 #: mod/settings.php:1261
 msgid "You receive a private message"
@@ -7547,15 +7547,15 @@ msgstr ""
 
 #: mod/settings.php:1268
 msgid "Text-only notification emails"
-msgstr ""
+msgstr "Ilmoitussähköposteissa vain tekstiä"
 
 #: mod/settings.php:1270
 msgid "Send text only notification emails, without the html part"
-msgstr ""
+msgstr "Lähetä ilmoitussähköposteissa vain tekstiä ilman HTML-koodia"
 
 #: mod/settings.php:1272
 msgid "Show detailled notifications"
-msgstr ""
+msgstr "Näytä yksityiskohtaiset ilmoitukset"
 
 #: mod/settings.php:1274
 msgid ""
@@ -7596,26 +7596,26 @@ msgstr ""
 #: src/Core/UserImport.php:118
 #, php-format
 msgid "User '%s' already exists on this server!"
-msgstr ""
+msgstr "Käyttäjä '%s' on jo olemassa tällä palvelimella!"
 
 #: src/Core/UserImport.php:151
 msgid "User creation error"
-msgstr ""
+msgstr "Virhe käyttäjän luomisessa"
 
 #: src/Core/UserImport.php:169
 msgid "User profile creation error"
-msgstr ""
+msgstr "Virhe käyttäjäprofiilin luomisessa"
 
 #: src/Core/UserImport.php:213
 #, php-format
 msgid "%d contact not imported"
 msgid_plural "%d contacts not imported"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d kontakti ei tuotu"
+msgstr[1] "%d kontakteja ei tuotu"
 
 #: src/Core/UserImport.php:278
 msgid "Done. You can now login with your username and password"
-msgstr ""
+msgstr "Suoritettu. Voit nyt kirjautua sisään käyttäjätunnuksellasi."
 
 #: src/Core/NotificationsManager.php:171
 msgid "System"
@@ -7633,7 +7633,7 @@ msgstr "Esittelyt"
 #: src/Core/NotificationsManager.php:256 src/Core/NotificationsManager.php:268
 #, php-format
 msgid "%s commented on %s's post"
-msgstr ""
+msgstr "%s kommentoi julkaisuun jonka kirjoitti %s"
 
 #: src/Core/NotificationsManager.php:267
 #, php-format
@@ -7643,12 +7643,12 @@ msgstr "%s loi uuden julkaisun"
 #: src/Core/NotificationsManager.php:281
 #, php-format
 msgid "%s liked %s's post"
-msgstr ""
+msgstr "%s tykkäsi julkaisusta jonka kirjoitti %s"
 
 #: src/Core/NotificationsManager.php:294
 #, php-format
 msgid "%s disliked %s's post"
-msgstr ""
+msgstr "%s ei tykännyt julkaisusta jonka kirjoitti %s"
 
 #: src/Core/NotificationsManager.php:307
 #, php-format
@@ -7668,7 +7668,7 @@ msgstr ""
 #: src/Core/NotificationsManager.php:350
 #, php-format
 msgid "%s is now friends with %s"
-msgstr ""
+msgstr "%s ja %s ovat kavereita"
 
 #: src/Core/NotificationsManager.php:825
 msgid "Friend Suggestion"
@@ -7688,7 +7688,7 @@ msgstr "Viesti sähköpostiin"
 
 #: src/Core/ACL.php:301
 msgid "Hide your profile details from unknown viewers?"
-msgstr ""
+msgstr "Piilota profiilitietosi tuntemattomilta?"
 
 #: src/Core/ACL.php:300
 #, php-format
@@ -7774,7 +7774,7 @@ msgstr "sekuntia"
 #: src/Util/Temporal.php:318
 #, php-format
 msgid "%1$d %2$s ago"
-msgstr ""
+msgstr "%1$d %2$s sitten"
 
 #: src/Content/Text/BBCode.php:555
 msgid "view full size"
@@ -7800,15 +7800,15 @@ msgstr "Salattu sisältö"
 
 #: src/Content/Text/BBCode.php:1879
 msgid "Invalid source protocol"
-msgstr ""
+msgstr "Virheellinen lähdeprotokolla"
 
 #: src/Content/Text/BBCode.php:1890
 msgid "Invalid link protocol"
-msgstr ""
+msgstr "Virheellinen linkkiprotokolla"
 
 #: src/Content/ForumManager.php:127 view/theme/vier/theme.php:256
 msgid "External link to forum"
-msgstr ""
+msgstr "Ulkoinen linkki foorumiin"
 
 #: src/Content/Nav.php:53
 msgid "Nothing new here"
@@ -7976,7 +7976,7 @@ msgstr "Hallitse/muokkaa kaverit ja kontaktit"
 
 #: src/Content/Nav.php:217
 msgid "Site setup and configuration"
-msgstr ""
+msgstr "Sivuston asennus ja asetukset"
 
 #: src/Content/Nav.php:220
 msgid "Navigation"
@@ -7988,7 +7988,7 @@ msgstr "Sivustokartta"
 
 #: src/Content/OEmbed.php:253
 msgid "Embedding disabled"
-msgstr ""
+msgstr "Upottaminen poistettu käytöstä"
 
 #: src/Content/OEmbed.php:373
 msgid "Embedded content"
@@ -8030,7 +8030,7 @@ msgstr ""
 
 #: src/Content/Feature.php:83
 msgid "Export Public Calendar"
-msgstr ""
+msgstr "Vie julkinen kalenteri"
 
 #: src/Content/Feature.php:83
 msgid "Ability for visitors to download the public calendar"
@@ -8179,7 +8179,7 @@ msgstr ""
 
 #: src/Content/Feature.php:120
 msgid "Star Posts"
-msgstr ""
+msgstr "Tähtimerkityt julkaisut"
 
 #: src/Content/Feature.php:120
 msgid "Ability to mark special posts with a star indicator"
@@ -8211,11 +8211,11 @@ msgstr ""
 
 #: src/Content/Feature.php:129
 msgid "Display Membership Date"
-msgstr ""
+msgstr "Näytä liittymispäivämäärä"
 
 #: src/Content/Feature.php:129
 msgid "Display membership date in profile"
-msgstr ""
+msgstr "Näytä liittymispäivämäärä profiilissa"
 
 #: src/Content/Widget.php:33
 msgid "Add New Contact"
@@ -8223,7 +8223,7 @@ msgstr "Lisää uusi kontakti"
 
 #: src/Content/Widget.php:34
 msgid "Enter address or web location"
-msgstr ""
+msgstr "Syötä verkko-osoite"
 
 #: src/Content/Widget.php:35
 msgid "Example: bob@example.com, http://example.com/barbara"
@@ -8233,24 +8233,24 @@ msgstr "Esimerkki: bob@example.com, http://example.com/barbara"
 #, php-format
 msgid "%d invitation available"
 msgid_plural "%d invitations available"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d kutsu saatavilla"
+msgstr[1] "%d kutsuja saatavilla"
 
 #: src/Content/Widget.php:59
 msgid "Find People"
-msgstr ""
+msgstr "Löydä ihmisiä"
 
 #: src/Content/Widget.php:60
 msgid "Enter name or interest"
-msgstr ""
+msgstr "Syötä nimi tai harrastus"
 
 #: src/Content/Widget.php:62
 msgid "Examples: Robert Morgenstein, Fishing"
-msgstr ""
+msgstr "Esim. Matti Meikäläinen, kalastus yms."
 
 #: src/Content/Widget.php:65 view/theme/vier/theme.php:202
 msgid "Similar Interests"
-msgstr ""
+msgstr "Yhteiset harrastukset"
 
 #: src/Content/Widget.php:66
 msgid "Random Profile"
@@ -8262,7 +8262,7 @@ msgstr "Kutsu kavereita"
 
 #: src/Content/Widget.php:68
 msgid "View Global Directory"
-msgstr ""
+msgstr "Katso maailmanlaajuista luetteloa"
 
 #: src/Content/Widget.php:159
 msgid "Networks"
@@ -8284,8 +8284,8 @@ msgstr "Luokat"
 #, php-format
 msgid "%d contact in common"
 msgid_plural "%d contacts in common"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%d yhteinen kontakti"
+msgstr[1] "%d yhteistä kontaktia"
 
 #: src/Content/ContactSelector.php:55
 msgid "Frequently"
@@ -8353,11 +8353,11 @@ msgstr "Twitter"
 
 #: src/Content/ContactSelector.php:92
 msgid "Diaspora Connector"
-msgstr ""
+msgstr "Diaspora -liitin"
 
 #: src/Content/ContactSelector.php:93
 msgid "GNU Social Connector"
-msgstr ""
+msgstr "GNU social -liitin"
 
 #: src/Content/ContactSelector.php:94
 msgid "pnut"
@@ -8377,43 +8377,43 @@ msgstr "Nainen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Currently Male"
-msgstr ""
+msgstr "Tällä hetkellä mies"
 
 #: src/Content/ContactSelector.php:125
 msgid "Currently Female"
-msgstr ""
+msgstr "Tällä hetkellä nainen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Mostly Male"
-msgstr ""
+msgstr "Enimmäkseen mies"
 
 #: src/Content/ContactSelector.php:125
 msgid "Mostly Female"
-msgstr ""
+msgstr "Enimmäkseen nainen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Transgender"
-msgstr ""
+msgstr "Transsukupuolinen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Intersex"
-msgstr ""
+msgstr "Intersukupuolinen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Transsexual"
-msgstr ""
+msgstr "Transsukupuolinen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Hermaphrodite"
-msgstr ""
+msgstr "Hermafrodiitti"
 
 #: src/Content/ContactSelector.php:125
 msgid "Neuter"
-msgstr ""
+msgstr "Neutri"
 
 #: src/Content/ContactSelector.php:125
 msgid "Non-specific"
-msgstr ""
+msgstr "Ei-binäärinen"
 
 #: src/Content/ContactSelector.php:125
 msgid "Other"
@@ -8449,11 +8449,11 @@ msgstr ""
 
 #: src/Content/ContactSelector.php:147
 msgid "Abstinent"
-msgstr ""
+msgstr "Selibaatissa elävä"
 
 #: src/Content/ContactSelector.php:147
 msgid "Virgin"
-msgstr ""
+msgstr "Neitsyt"
 
 #: src/Content/ContactSelector.php:147
 msgid "Deviant"
@@ -8469,7 +8469,7 @@ msgstr ""
 
 #: src/Content/ContactSelector.php:147
 msgid "Nonsexual"
-msgstr ""
+msgstr "Aseksuaali"
 
 #: src/Content/ContactSelector.php:169
 msgid "Single"
@@ -8537,11 +8537,11 @@ msgstr "Kumppanit"
 
 #: src/Content/ContactSelector.php:169
 msgid "Cohabiting"
-msgstr ""
+msgstr "Avoliitossa"
 
 #: src/Content/ContactSelector.php:169
 msgid "Common law"
-msgstr ""
+msgstr "Avoliitossa"
 
 #: src/Content/ContactSelector.php:169
 msgid "Happy"
@@ -8585,15 +8585,15 @@ msgstr "Epävarma"
 
 #: src/Content/ContactSelector.php:169
 msgid "It's complicated"
-msgstr ""
+msgstr "Se on monimutkaista"
 
 #: src/Content/ContactSelector.php:169
 msgid "Don't care"
-msgstr ""
+msgstr "Ei ole väliä"
 
 #: src/Content/ContactSelector.php:169
 msgid "Ask me"
-msgstr ""
+msgstr "Kysy minulta"
 
 #: src/Database/DBStructure.php:32
 msgid "There are no tables on MyISAM."
@@ -8614,7 +8614,7 @@ msgstr ""
 msgid ""
 "The error message is\n"
 "[pre]%s[/pre]"
-msgstr ""
+msgstr "Virheviesti on\n[pre]%s[/pre]"
 
 #: src/Database/DBStructure.php:191
 #, php-format
@@ -8622,7 +8622,7 @@ msgid ""
 "\n"
 "Error %d occurred during database update:\n"
 "%s\n"
-msgstr ""
+msgstr "\n%d virhe tapahtui tietokannan päivityksen aikana:\n%s\n"
 
 #: src/Database/DBStructure.php:194
 msgid "Errors encountered performing database changes: "
@@ -8643,7 +8643,7 @@ msgstr "[ei aihetta]"
 
 #: src/Model/Profile.php:97
 msgid "Requested account is not available."
-msgstr ""
+msgstr "Pyydetty käyttäjätili ei ole saatavilla."
 
 #: src/Model/Profile.php:168 src/Model/Profile.php:399
 #: src/Model/Profile.php:859
@@ -8692,7 +8692,7 @@ msgstr "Tapahtumia tällä viikolla:"
 
 #: src/Model/Profile.php:741
 msgid "Member since:"
-msgstr ""
+msgstr "Liittymispäivämäärä:"
 
 #: src/Model/Profile.php:749
 msgid "j F, Y"
@@ -8757,7 +8757,7 @@ msgstr "Foorumit:"
 
 #: src/Model/Profile.php:949
 msgid "Only You Can See This"
-msgstr ""
+msgstr "Vain sinä näet tämän"
 
 #: src/Model/Item.php:1676
 #, php-format
@@ -8783,7 +8783,7 @@ msgstr ""
 
 #: src/Model/Group.php:328
 msgid "Default privacy group for new contacts"
-msgstr ""
+msgstr "Oletusryhmä uusille kontakteille"
 
 #: src/Model/Group.php:361
 msgid "Everybody"
@@ -8799,7 +8799,7 @@ msgstr "Muokkaa ryhmää"
 
 #: src/Model/Group.php:406
 msgid "Contacts not in any group"
-msgstr ""
+msgstr "Kontaktit ilman ryhmää"
 
 #: src/Model/Group.php:407
 msgid "Create a new group"
@@ -8811,7 +8811,7 @@ msgstr "Muokkaa ryhmiä"
 
 #: src/Model/Contact.php:645
 msgid "Drop Contact"
-msgstr ""
+msgstr "Poista kontakti"
 
 #: src/Model/Contact.php:1048
 msgid "Organisation"
@@ -8827,7 +8827,7 @@ msgstr "Keskustelupalsta"
 
 #: src/Model/Contact.php:1233
 msgid "Connect URL missing."
-msgstr ""
+msgstr "Yhteys URL-linkki puuttuu."
 
 #: src/Model/Contact.php:1242
 msgid ""
@@ -8916,7 +8916,7 @@ msgstr "Syy."
 
 #: src/Model/Event.php:417
 msgid "No events to display"
-msgstr ""
+msgstr "Ei näytettäviä tapahtumia."
 
 #: src/Model/Event.php:543
 msgid "l, F j"
@@ -8986,7 +8986,7 @@ msgstr "Syötä tarvittavat tiedot."
 
 #: src/Model/User.php:375
 msgid "Please use a shorter name."
-msgstr ""
+msgstr "Käytä lyhyempää nimeä."
 
 #: src/Model/User.php:378
 msgid "Name too short."
@@ -8998,7 +8998,7 @@ msgstr ""
 
 #: src/Model/User.php:391
 msgid "Your email domain is not among those allowed on this site."
-msgstr ""
+msgstr "Sähköpostiosoitteesi verkkotunnus on tämän sivuston estolistalla."
 
 #: src/Model/User.php:395
 msgid "Not a valid email address."
@@ -9006,23 +9006,23 @@ msgstr "Virheellinen sähköpostiosoite."
 
 #: src/Model/User.php:399 src/Model/User.php:407
 msgid "Cannot use that email."
-msgstr ""
+msgstr "Sähköpostiosoitetta ei voitu käyttää."
 
 #: src/Model/User.php:414
 msgid "Your nickname can only contain a-z, 0-9 and _."
-msgstr ""
+msgstr "Nimimerkki voi sisältää a-z, 0-9 ja _."
 
 #: src/Model/User.php:421 src/Model/User.php:477
 msgid "Nickname is already registered. Please choose another."
-msgstr ""
+msgstr "Valitsemasi nimimerkki on jo käytössä. Valitse toinen nimimerkki."
 
 #: src/Model/User.php:431
 msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr ""
+msgstr "VAKAVA VIRHE: Salausavainten luominen epäonnistui."
 
 #: src/Model/User.php:464 src/Model/User.php:468
 msgid "An error occurred during registration. Please try again."
-msgstr ""
+msgstr "Rekisteröityminen epäonnistui. Yritä uudelleen."
 
 #: src/Model/User.php:488 view/theme/duepuntozero/config.php:54
 msgid "default"
@@ -9030,7 +9030,7 @@ msgstr "oletus"
 
 #: src/Model/User.php:493
 msgid "An error occurred creating your default profile. Please try again."
-msgstr ""
+msgstr "Oletusprofiilin luominen epäonnistui. Yritä uudelleen."
 
 #: src/Model/User.php:500
 msgid "An error occurred creating your self contact. Please try again."
@@ -9053,7 +9053,7 @@ msgstr ""
 #: src/Model/User.php:593
 #, php-format
 msgid "Registration at %s"
-msgstr ""
+msgstr "Rekisteröityminen kohteessa %s"
 
 #: src/Model/User.php:611
 #, php-format
@@ -9117,7 +9117,7 @@ msgstr "ei enää seuraa"
 #: src/Protocol/DFRN.php:1477
 #, php-format
 msgid "%s\\'s birthday"
-msgstr ""
+msgstr "%s\\ käyttäjän syntymäpäivä"
 
 #: src/Protocol/Diaspora.php:2651
 msgid "Sharing notification from Diaspora network"
@@ -9189,7 +9189,7 @@ msgstr "tykkää"
 
 #: src/Object/Post.php:297
 msgid "dislike"
-msgstr ""
+msgstr "en tykkää"
 
 #: src/Object/Post.php:300
 msgid "Share this"
@@ -9440,11 +9440,11 @@ msgstr "Värimalli"
 
 #: view/theme/quattro/config.php:78
 msgid "Posts font size"
-msgstr ""
+msgstr "Julkaisujen fonttikoko"
 
 #: view/theme/quattro/config.php:79
 msgid "Textareas font size"
-msgstr ""
+msgstr "Tekstikenttien fonttikoko"
 
 #: view/theme/vier/config.php:75
 msgid "Comma separated list of helper forums"
@@ -9472,11 +9472,11 @@ msgstr "Yhdistä palvelut"
 
 #: view/theme/vier/config.php:127 view/theme/vier/theme.php:199
 msgid "Find Friends"
-msgstr ""
+msgstr "Etsi kavereita"
 
 #: view/theme/vier/config.php:128 view/theme/vier/theme.php:181
 msgid "Last users"
-msgstr ""
+msgstr "Viimeisimmät käyttäjät"
 
 #: view/theme/vier/theme.php:200
 msgid "Local Directory"
@@ -9493,4 +9493,4 @@ msgstr "Mobiilisivusto päälle/pois"
 #: boot.php:791
 #, php-format
 msgid "Update %s failed. See error logs."
-msgstr ""
+msgstr "%s päivitys epäonnistui, katso virhelokit."
index 5bf2c3754f65afea946274ac3c06b1a92390eacf..c8bd472fbb407baf78f29b1d3429656620f0f980 100644 (file)
@@ -11,14 +11,14 @@ $a->strings["Welcome back "] = "Tervetuloa takaisin";
 $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["Cannot locate DNS info for database server '%s'"] = "'%s' tietokantapalvelimen DNS-tieto ei löydy";
 $a->strings["Daily posting limit of %d post reached. The post was rejected."] = [
-       0 => "",
-       1 => "",
+       0 => "Päivittäinen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty.",
+       1 => "Päivittäinen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty.",
 ];
 $a->strings["Weekly posting limit of %d post reached. The post was rejected."] = [
-       0 => "",
-       1 => "",
+       0 => "Viikottainen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty.",
+       1 => "Viikottainen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty.",
 ];
-$a->strings["Monthly posting limit of %d post reached. The post was rejected."] = "";
+$a->strings["Monthly posting limit of %d post reached. The post was rejected."] = "Kuukausittainen julkaisuraja (%d) on tullut täyteen. Julkaisu hylätty.";
 $a->strings["Profile Photos"] = "Profiilin valokuvat";
 $a->strings["Friendica Notification"] = "Friendica-huomautus";
 $a->strings["Thank You,"] = "Kiitos,";
@@ -26,19 +26,19 @@ $a->strings["%s Administrator"] = "%s Ylläpitäjä";
 $a->strings["%1\$s, %2\$s Administrator"] = "%1\$s, %2\$s Ylläpitäjä";
 $a->strings["noreply"] = "eivast";
 $a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica:Notify] Uusi viesti, katso %s";
-$a->strings["%1\$s sent you a new private message at %2\$s."] = "";
+$a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s lähetti sinulle uuden yksityisviestin kohteessa %2\$s.";
 $a->strings["a private message"] = "yksityisviesti";
 $a->strings["%1\$s sent you %2\$s."] = "%1\$s lähetti sinulle %2\$s.";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "Katso yksityisviestisi kohteessa %s.";
 $a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "";
 $a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "";
 $a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "";
-$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "";
-$a->strings["%s commented on an item/conversation you have been following."] = "";
+$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica:Notify] %2\$s kommentoi keskustelussa #%1\$d";
+$a->strings["%s commented on an item/conversation you have been following."] = "%s kommentoi kohteessa/keskustelussa jota seuraat.";
 $a->strings["Please visit %s to view and/or reply to the conversation."] = "";
-$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "";
-$a->strings["%1\$s posted to your profile wall at %2\$s"] = "";
-$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "";
+$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Notify] %s kirjoitti profiiliseinällesi";
+$a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s kirjoitti seinällesi kohteessa %2\$s";
+$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s kirjoitti [url=%2\$s]seinällesi[/url]";
 $a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Notify] %s merkitsi sinut";
 $a->strings["%1\$s tagged you at %2\$s"] = "";
 $a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]merkitsi sinut[/url].";
@@ -46,7 +46,7 @@ $a->strings["[Friendica:Notify] %s shared a new post"] = "[Friendica:Notify] %s
 $a->strings["%1\$s shared a new post at %2\$s"] = "";
 $a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "";
 $a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica:Notify] %1\$s tökkäsi sinua.";
-$a->strings["%1\$s poked you at %2\$s"] = "";
+$a->strings["%1\$s poked you at %2\$s"] = "%1\$s tökkäsi sinua kohteessa %2\$s";
 $a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "%1\$s [url=%2\$s]tökkasi sinua[/url].";
 $a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Notify] %s merkitsi julkaisusi";
 $a->strings["%1\$s tagged your post at %2\$s"] = "";
@@ -61,7 +61,7 @@ $a->strings["%1\$s is sharing with you at %2\$s"] = "";
 $a->strings["[Friendica:Notify] You have a new follower"] = "[Friendica:Notify] Sinulla on uusi seuraaja";
 $a->strings["You have a new follower at %2\$s : %1\$s"] = "Sinulla on uusi seuraaja sivustolla %2\$s : %1\$s";
 $a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Notify] Kaveripyyntö vastaanotettu";
-$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "";
+$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Sait kaverikutsun henkilöltä '%1\$s' (%2\$s)";
 $a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "";
 $a->strings["Name:"] = "Nimi:";
 $a->strings["Photo:"] = "Kuva:";
@@ -109,7 +109,7 @@ $a->strings["Not attending"] = "Ei osallistu";
 $a->strings["Might attend"] = "Ehkä";
 $a->strings["Select"] = "Valitse";
 $a->strings["Delete"] = "Poista";
-$a->strings["View %s's profile @ %s"] = "";
+$a->strings["View %s's profile @ %s"] = "Katso %s-henkilön profiilia @ %s";
 $a->strings["Categories:"] = "Luokat:";
 $a->strings["Filed under:"] = "";
 $a->strings["%s from %s"] = "";
@@ -147,7 +147,7 @@ $a->strings["Visible to <strong>everybody</strong>"] = "Näkyy <strong>kaikille<
 $a->strings["Please enter a link URL:"] = "Lisää URL-linkki:";
 $a->strings["Please enter a video link/URL:"] = "Lisää video URL-linkki:";
 $a->strings["Please enter an audio link/URL:"] = "Lisää ääni URL-linkki:";
-$a->strings["Tag term:"] = "";
+$a->strings["Tag term:"] = "Tunniste:";
 $a->strings["Save to Folder:"] = "Tallenna kansioon:";
 $a->strings["Where are you right now?"] = "Mikä on sijaintisi?";
 $a->strings["Delete item(s)?"] = "Poista kohde/kohteet?";
@@ -192,8 +192,8 @@ $a->strings["Not Attending"] = [
        1 => "Ei osallistu",
 ];
 $a->strings["Undecided"] = [
-       0 => "",
-       1 => "",
+       0 => "En ole varma",
+       1 => "En ole varma",
 ];
 $a->strings["newer"] = "uudempi";
 $a->strings["older"] = "vanhempi";
@@ -225,8 +225,8 @@ $a->strings["prod"] = "töki";
 $a->strings["prodded"] = "tökkäsi";
 $a->strings["slap"] = "läimäytä";
 $a->strings["slapped"] = "läimäsi";
-$a->strings["finger"] = "";
-$a->strings["fingered"] = "";
+$a->strings["finger"] = "näytä keskisormea";
+$a->strings["fingered"] = "näytti keskisormea";
 $a->strings["rebuff"] = "torju";
 $a->strings["rebuffed"] = "torjui";
 $a->strings["Monday"] = "Maanantai";
@@ -265,7 +265,7 @@ $a->strings["Sep"] = "Syy.";
 $a->strings["Oct"] = "Lok.";
 $a->strings["Nov"] = "Mar.";
 $a->strings["Dec"] = "Jou.";
-$a->strings["Content warning: %s"] = "";
+$a->strings["Content warning: %s"] = "Sisältövaroitus: %s";
 $a->strings["View Video"] = "Katso video";
 $a->strings["bytes"] = "tavua";
 $a->strings["Click to open/close"] = "Klikkaa auki/kiinni";
@@ -279,14 +279,14 @@ $a->strings["comment"] = [
 ];
 $a->strings["post"] = "julkaisu";
 $a->strings["Item filed"] = "";
-$a->strings["No friends to display."] = "";
+$a->strings["No friends to display."] = "Ei näytettäviä kavereita.";
 $a->strings["Connect"] = "Yhdistä";
 $a->strings["Authorize application connection"] = "Vahvista sovellusyhteys";
 $a->strings["Return to your app and insert this Securty Code:"] = "Palaa takaisin sovellukseen ja lisää tämä turvakoodi:";
 $a->strings["Please login to continue."] = "Ole hyvä ja kirjaudu jatkaaksesi.";
 $a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Haluatko antaa tälle sovellukselle luvan hakea viestejäsi ja yhteystietojasi ja/tai luoda uusia viestejä?";
 $a->strings["No"] = "Ei";
-$a->strings["You must be logged in to use addons. "] = "";
+$a->strings["You must be logged in to use addons. "] = "Sinun pitää kirjautua sisään, jotta voit käyttää lisäosia";
 $a->strings["Applications"] = "Sovellukset";
 $a->strings["No installed applications."] = "Ei asennettuja sovelluksia.";
 $a->strings["Item not available."] = "Kohde ei saatavilla.";
@@ -300,14 +300,14 @@ $a->strings["Contact update failed."] = "Kontaktipäivitys epäonnistui.";
 $a->strings["Contact not found."] = "Kontaktia ei ole.";
 $a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>VAROITUS: Tämä on erittäin vaativaa</strong> ja jos kirjoitat virheellisiä tietoja, viestintäsi tämän henkilön kanssa voi lakata toimimasta.";
 $a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Ole hyvä ja paina selaimesi 'Takaisin'-painiketta <strong>nyt</strong>, jos olet epävarma tämän sivun toiminnoista.";
-$a->strings["No mirroring"] = "";
-$a->strings["Mirror as forwarded posting"] = "";
-$a->strings["Mirror as my own posting"] = "";
+$a->strings["No mirroring"] = "Ei peilausta";
+$a->strings["Mirror as forwarded posting"] = "Peilaa välitettynä julkaisuna";
+$a->strings["Mirror as my own posting"] = "Peilaa omana julkaisuna";
 $a->strings["Return to contact editor"] = "Palaa kontaktin muokkaamiseen";
 $a->strings["Refetch contact data"] = "";
 $a->strings["Submit"] = "Lähetä";
 $a->strings["Remote Self"] = "";
-$a->strings["Mirror postings from this contact"] = "";
+$a->strings["Mirror postings from this contact"] = "Peilaa tämän kontaktin julkaisut";
 $a->strings["Mark this contact as remote_self, this will cause friendica to repost new entries from this contact."] = "";
 $a->strings["Name"] = "Nimi";
 $a->strings["Account Nickname"] = "Tilin lempinimi";
@@ -353,7 +353,7 @@ $a->strings["Importing Emails"] = "Sähköpostin tuominen";
 $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"] = "Näytä minun kontaktit";
 $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."] = "";
-$a->strings["Go to Your Site's Directory"] = "";
+$a->strings["Go to Your Site's Directory"] = "Näytä oman sivuston luettelo";
 $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."] = "";
 $a->strings["Finding New People"] = "Kavereiden hankkiminen";
 $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."] = "";
@@ -363,9 +363,9 @@ $a->strings["Once you have made some friends, organize them into private convers
 $a->strings["Why Aren't My Posts Public?"] = "Miksi julkaisuni eivät ole julkisia?";
 $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."] = "";
 $a->strings["Getting Help"] = "Avun saaminen";
-$a->strings["Go to the Help Section"] = "";
+$a->strings["Go to the Help Section"] = "Näytä ohjeet";
 $a->strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "";
-$a->strings["Visit %s's profile [%s]"] = "";
+$a->strings["Visit %s's profile [%s]"] = "Näytä %s-käyttäjän profiili [%s]";
 $a->strings["Edit contact"] = "Muokkaa kontaktia";
 $a->strings["Contacts who are not members of a group"] = "Kontaktit jotka eivät kuulu ryhmään";
 $a->strings["Not Extended"] = "Ei laajennettu";
@@ -374,21 +374,21 @@ $a->strings["Error"] = "Virhe";
 $a->strings["Done"] = "Valmis";
 $a->strings["Keep this window open until done."] = "";
 $a->strings["Do you really want to delete this suggestion?"] = "Haluatko varmasti poistaa ehdotuksen?";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Ehdotuksia ei löydy. Jos tämä on uusi sivusto, kokeile uudelleen vuorokauden kuluttua.";
 $a->strings["Ignore/Hide"] = "Jätä huomiotta/piilota";
 $a->strings["Friend Suggestions"] = "Ystäväehdotukset";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Sivuston päivittäinen rekisteröintiraja ylitetty. Yritä uudelleen huomenna.";
 $a->strings["Import"] = "Tuo";
 $a->strings["Move account"] = "Siirrä tili";
 $a->strings["You can import an account from another Friendica server."] = "Voit tuoda käyttäjätilin toiselta Friendica -palvelimelta.";
 $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"] = "";
+$a->strings["This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"] = "Tämä on kokeellinen ominaisuus. Emme voi tuoda kontakteja OStatus-verkolta (GNU social/Statusnet) tai Diasporalta.";
 $a->strings["Account file"] = "Tilitiedosto";
 $a->strings["To export your account, go to \"Settings->Export your personal data\" and select \"Export account\""] = "";
 $a->strings["[Embedded content - reload page to view]"] = "[Upotettu sisältö - näet sen päivittämällä sivun]";
 $a->strings["%1\$s welcomes %2\$s"] = "%1\$s toivottaa tervetulleeksi ystävän %2\$s";
 $a->strings["No keywords to match. Please add keywords to your default profile."] = "";
-$a->strings["is interested in:"] = "";
+$a->strings["is interested in:"] = "on kiinnostunut seuraavista aiheista:";
 $a->strings["Profile Match"] = "Vastaavien profiilien haku";
 $a->strings["No matches"] = "Ei täsmääviä profiileja";
 $a->strings["Invalid request identifier."] = "Virheellinen pyyntötunniste.";
@@ -426,9 +426,9 @@ $a->strings["Network:"] = "Verkko:";
 $a->strings["No introductions."] = "Ei esittelyjä.";
 $a->strings["Show unread"] = "Näytä lukemattomat";
 $a->strings["Show all"] = "Näytä kaikki";
-$a->strings["No more %s notifications."] = "";
+$a->strings["No more %s notifications."] = "Ei muita %s ilmoituksia.";
 $a->strings["OpenID protocol error. No ID returned."] = "OpenID -protokollavirhe. Tunnusta ei vastaanotettu.";
-$a->strings["Account not found and OpenID registration is not permitted on this site."] = "";
+$a->strings["Account not found and OpenID registration is not permitted on this site."] = "Käyttäjätiliä ei löytynyt. Rekisteröityminen OpenID:n kautta ei ole sallittua tällä sivustolla.";
 $a->strings["Login failed."] = "Kirjautuminen epäonnistui";
 $a->strings["Profile not found."] = "Profiilia ei löytynyt.";
 $a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "";
@@ -438,9 +438,9 @@ $a->strings["Confirmation completed successfully."] = "Vahvistus onnistui.";
 $a->strings["Temporary failure. Please wait and try again."] = "Tilapäinen vika. Yritä myöhemmin uudelleen.";
 $a->strings["Introduction failed or was revoked."] = "";
 $a->strings["Remote site reported: "] = "";
-$a->strings["Unable to set contact photo."] = "";
+$a->strings["Unable to set contact photo."] = "Kontaktin kuvaa ei voitu asettaa";
 $a->strings["No user record found for '%s' "] = "";
-$a->strings["Our site encryption key is apparently messed up."] = "";
+$a->strings["Our site encryption key is apparently messed up."] = "Sivustomme salausavain on sekaisin.";
 $a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "";
 $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."] = "";
@@ -448,17 +448,17 @@ $a->strings["The ID provided by your system is a duplicate on our system. It sho
 $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]"] = "[Nimi jätetty pois]";
-$a->strings["%1\$s has joined %2\$s"] = "";
+$a->strings["%1\$s has joined %2\$s"] = "%1\$s on liittynyt kohteeseen %2\$s";
 $a->strings["Total invitation limit exceeded."] = "Kutsuraja ylitetty.";
 $a->strings["%s : Not a valid email address."] = "%s : Virheellinen sähköpostiosoite.";
 $a->strings["Please join us on Friendica"] = "Tervetuloa Friendicaan";
-$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "";
+$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Kutsuraja ylitetty. Ota yhteyttä ylläpitäjään.";
 $a->strings["%s : Message delivery failed."] = "%s : Viestin toimitus epäonnistui.";
 $a->strings["%d message sent."] = [
        0 => "%d viesti lähetetty.",
        1 => "%d viestiä lähetetty.",
 ];
-$a->strings["You have no more invitations available"] = "";
+$a->strings["You have no more invitations available"] = "Sinulla ei ole kutsuja jäljellä";
 $a->strings["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."] = "";
 $a->strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "";
 $a->strings["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."] = "";
@@ -513,7 +513,7 @@ $a->strings["Public access denied."] = "Julkinen käyttö estetty.";
 $a->strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Anna \"henkilöllisyysosoitteesi\" joissakin seuraavista tuetuista viestintäverkoista:";
 $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->strings["Friend/Connection Request"] = "Ystävä/yhteyspyyntö";
-$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"] = "";
+$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de"] = "Esim. jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de";
 $a->strings["Please answer the following:"] = "Vastaa seuraavaan:";
 $a->strings["Does %s know you?"] = "Tunteeko %s sinut?";
 $a->strings["Add a personal note:"] = "Lisää oma merkintä:";
@@ -534,22 +534,22 @@ $a->strings["Only logged in users are permitted to perform a probing."] = "";
 $a->strings["Permission denied"] = "Käyttöoikeus evätty";
 $a->strings["Invalid profile identifier."] = "Virheellinen profiilitunniste.";
 $a->strings["Profile Visibility Editor"] = "";
-$a->strings["Click on a contact to add or remove."] = "";
+$a->strings["Click on a contact to add or remove."] = "Valitse kontakti, jota haluat poistaa tai lisätä.";
 $a->strings["Visible To"] = "Näkyvyys";
 $a->strings["All Contacts (with secure profile access)"] = "";
 $a->strings["Account approved."] = "Tili hyväksytty.";
 $a->strings["Registration revoked for %s"] = "";
 $a->strings["Please login."] = "Ole hyvä ja kirjaudu.";
 $a->strings["Remove My Account"] = "Poista tilini";
-$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "";
+$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Tämä poistaa käyttäjätilisi pysyvästi. Poistoa ei voi perua myöhemmin.";
 $a->strings["Please enter your password for verification:"] = "";
 $a->strings["No contacts."] = "Ei kontakteja.";
 $a->strings["Access denied."] = "Käyttö estetty.";
-$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "";
+$a->strings["Number of daily wall messages for %s exceeded. Message failed."] = "%s-käyttäjän päivittäinen seinäviestiraja ylitetty. Viestin lähettäminen epäonnistui.";
 $a->strings["No recipient selected."] = "Vastaanottaja puuttuu.";
-$a->strings["Unable to check your home location."] = "";
+$a->strings["Unable to check your home location."] = "Kotisijaintisi ei voitu tarkistaa.";
 $a->strings["Message could not be sent."] = "Viestiä ei voitu lähettää.";
-$a->strings["Message collection failure."] = "";
+$a->strings["Message collection failure."] = "Viestin noutaminen epäonnistui.";
 $a->strings["Message sent."] = "Viesti lähetetty.";
 $a->strings["No recipient."] = "Vastaanottaja puuttuu.";
 $a->strings["Send Private Message"] = "Lähetä yksityisviesti";
@@ -563,7 +563,7 @@ $a->strings["Export your accout info, contacts and all your items as json. Could
 $a->strings["Export personal data"] = "Vie henkilökohtaiset tiedot";
 $a->strings["- select -"] = "- valitse -";
 $a->strings["No more system notifications."] = "Ei enää järjestelmäilmoituksia.";
-$a->strings["{0} wants to be your friend"] = "";
+$a->strings["{0} wants to be your friend"] = "{0} lähetti kaveripyynnön";
 $a->strings["{0} sent you a message"] = "{0} lähetti sinulle viestin";
 $a->strings["{0} requested registration"] = "";
 $a->strings["Poke/Prod"] = "Tökkää";
@@ -587,21 +587,21 @@ $a->strings["Too Many Requests"] = "Liian monta pyyntöä";
 $a->strings["Only one search per minute is permitted for not logged in users."] = "";
 $a->strings["No results."] = "Ei tuloksia.";
 $a->strings["Items tagged with: %s"] = "Kohteet joilla tunnisteet: %s";
-$a->strings["Results for: %s"] = "";
+$a->strings["Results for: %s"] = "Tulokset haulla: %s";
 $a->strings["Login"] = "Kirjaudu sisään";
 $a->strings["The post was created"] = "Julkaisu luotu";
 $a->strings["Community option not available."] = "Yhteisö vaihtoehto ei saatavilla.";
 $a->strings["Not available."] = "Ei saatavilla.";
 $a->strings["Local Community"] = "Paikallinen yhteisö";
-$a->strings["Posts from local users on this server"] = "";
+$a->strings["Posts from local users on this server"] = "Tämän palvelimen julkaisut";
 $a->strings["Global Community"] = "Maailmanlaajuinen yhteisö";
-$a->strings["Posts from users of the whole federated network"] = "";
+$a->strings["Posts from users of the whole federated network"] = "Maailmanlaajuisen verkon julkaisut";
 $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["Item not found"] = "Kohdetta ei löytynyt";
 $a->strings["Edit post"] = "Muokkaa viestiä";
 $a->strings["CC: email addresses"] = "Kopio: sähköpostiosoitteet";
 $a->strings["Example: bob@example.com, mary@example.com"] = "Esimerkki: bob@example.com, mary@example.com";
-$a->strings["You must be logged in to use this module"] = "";
+$a->strings["You must be logged in to use this module"] = "Sinun pitää kirjautua sisään, jotta voit käyttää tätä moduulia";
 $a->strings["Source URL"] = "Lähde URL";
 $a->strings["Friend suggestion sent."] = "Ystäväehdotus lähetettiin.";
 $a->strings["Suggest Friends"] = "Ehdota ystäviä";
@@ -659,12 +659,12 @@ $a->strings["No such group"] = "Ryhmä ei ole olemassa";
 $a->strings["Group: %s"] = "Ryhmä: %s";
 $a->strings["Private messages to this person are at risk of public disclosure."] = "";
 $a->strings["Invalid contact."] = "Virheellinen kontakti.";
-$a->strings["Commented Order"] = "";
+$a->strings["Commented Order"] = "Järjestä viimeisimpien kommenttien mukaan";
 $a->strings["Sort by Comment Date"] = "Kommentit päivämäärän mukaan";
-$a->strings["Posted Order"] = "";
+$a->strings["Posted Order"] = "Järjestä julkaisupäivämäärän mukaan";
 $a->strings["Sort by Post Date"] = "Julkaisut päivämäärän mukaan";
 $a->strings["Personal"] = "Henkilökohtainen";
-$a->strings["Posts that mention or involve you"] = "";
+$a->strings["Posts that mention or involve you"] = "Julkaisut jotka liittyvät sinuun";
 $a->strings["New"] = "Uusi";
 $a->strings["Activity Stream - by date"] = "";
 $a->strings["Shared Links"] = "Jaetut linkit";
@@ -768,14 +768,14 @@ $a->strings["The database you specify below should already exist. If it does not
 $a->strings["Database Server Name"] = "Tietokannan palvelimen nimi";
 $a->strings["Database Login Name"] = "Tietokannan käyttäjän nimi";
 $a->strings["Database Login Password"] = "Tietokannan käyttäjän salasana";
-$a->strings["For security reasons the password must not be empty"] = "";
+$a->strings["For security reasons the password must not be empty"] = "Turvallisuussyistä salasanakenttä ei saa olla tyhjä";
 $a->strings["Database Name"] = "Tietokannan nimi";
 $a->strings["Site administrator email address"] = "Sivuston ylläpitäjän sähköpostiosoite";
 $a->strings["Your account email address must match this in order to use the web admin panel."] = "Tilisi sähköpostiosoitteen on vastattava tätä, jotta voit käyttää ylläpitokäyttöliittymää.";
 $a->strings["Please select a default timezone for your website"] = "Valitse oletusaikavyöhyke sivustollesi";
 $a->strings["Site settings"] = "Sivuston asetukset";
 $a->strings["System Language:"] = "Järjestelmän kieli:";
-$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "";
+$a->strings["Set the default language for your Friendica installation interface and to send emails."] = "Valitse Friendica-sivustosi oletuskieli.";
 $a->strings["Could not find a command line version of PHP in the web server PATH."] = "Komentoriviversiota PHP:stä ei löytynyt web-palvelimen PATH:ista.";
 $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"] = "Polku PHP-ohjelmaan";
@@ -819,8 +819,8 @@ $a->strings["In order to store these compiled templates, the web server needs to
 $a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "";
 $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."] = "";
 $a->strings["view/smarty3 is writable"] = "view/smarty3 on kirjoitettava";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "";
-$a->strings["Url rewrite is working"] = "";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "URL-osoitteen uudelleenkirjoitus .htaccess-tiedostossa ei toimi. Tarkista palvelimen asetukset.";
+$a->strings["Url rewrite is working"] = "URL-osoitteen uudellenkirjoitus toimii";
 $a->strings["ImageMagick PHP extension is not installed"] = "ImageMagick PHP-laajennus ei ole asetettu";
 $a->strings["ImageMagick PHP extension is installed"] = "ImageMagick PHP-laajennus on asetettu";
 $a->strings["ImageMagick supports GIF"] = "ImageMagik tukee GIF-formaattia";
@@ -830,7 +830,7 @@ $a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for t
 $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["Subscribing to OStatus contacts"] = "";
 $a->strings["No contact provided."] = "Kontakti puuttuu.";
-$a->strings["Couldn't fetch information for contact."] = "";
+$a->strings["Couldn't fetch information for contact."] = "Kontaktin tietoja ei voitu hakea.";
 $a->strings["Couldn't fetch friends for contact."] = "";
 $a->strings["success"] = "onnistui";
 $a->strings["failed"] = "epäonnistui";
@@ -871,7 +871,7 @@ $a->strings["Advanced"] = "";
 $a->strings["Failed to remove event"] = "Tapahtuman poisto epäonnistui";
 $a->strings["Event removed"] = "Tapahtuma poistettu";
 $a->strings["Image uploaded but image cropping failed."] = "Kuva ladattu mutta kuvan rajaus epäonnistui.";
-$a->strings["Image size reduction [%s] failed."] = "";
+$a->strings["Image size reduction [%s] failed."] = "Kuvan pienentäminen [%s] epäonnistui.";
 $a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "";
 $a->strings["Unable to process image"] = "Kuvan käsitteleminen epäonnistui";
 $a->strings["Upload File:"] = "Lähetä tiedosto:";
@@ -880,7 +880,7 @@ $a->strings["or"] = "tai";
 $a->strings["skip this step"] = "ohita tämä vaihe";
 $a->strings["select a photo from your photo albums"] = "valitse kuva albumeistasi";
 $a->strings["Crop Image"] = "Rajaa kuva";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Rajaa kuva sopivasti.";
 $a->strings["Done Editing"] = "Lopeta muokkaus";
 $a->strings["Image uploaded successfully."] = "Kuvan lähettäminen onnistui.";
 $a->strings["Status:"] = "Tila:";
@@ -888,7 +888,7 @@ $a->strings["Homepage:"] = "Kotisivu:";
 $a->strings["Global Directory"] = "Maailmanlaajuinen hakemisto";
 $a->strings["Find on this site"] = "";
 $a->strings["Results for:"] = "";
-$a->strings["Site Directory"] = "";
+$a->strings["Site Directory"] = "Sivuston luettelo";
 $a->strings["Find"] = "Etsi";
 $a->strings["No entries (some entries may be hidden)."] = "";
 $a->strings["Source input"] = "";
@@ -907,7 +907,7 @@ $a->strings["HTML::toBBCode"] = "HTML::toBBCode";
 $a->strings["HTML::toPlaintext"] = "HTML::toPlaintext";
 $a->strings["Source text"] = "Lähdeteksti";
 $a->strings["BBCode"] = "BBCode";
-$a->strings["Markdown"] = "";
+$a->strings["Markdown"] = "Markdown";
 $a->strings["HTML"] = "HTML";
 $a->strings["The contact could not be added."] = "Kontaktia ei voitu lisätä.";
 $a->strings["You already added this contact."] = "Olet jo lisännyt tämän kontaktin.";
@@ -939,7 +939,7 @@ $a->strings[" - Visit %1\$s's %2\$s"] = "";
 $a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "";
 $a->strings["Hide contacts and friends:"] = "Piilota kontaktit ja kaverit:";
 $a->strings["Hide your contact/friend list from viewers of this profile?"] = "";
-$a->strings["Show more profile fields:"] = "";
+$a->strings["Show more profile fields:"] = "Näytä lisää profiilikenttiä:";
 $a->strings["Profile Actions"] = "";
 $a->strings["Edit Profile Details"] = "Muokkaa profiilin yksityiskohdat";
 $a->strings["Change Profile Photo"] = "Vaihda profiilikuva";
@@ -1050,7 +1050,7 @@ $a->strings["Unignore"] = "Ota huomioon";
 $a->strings["Currently blocked"] = "Estetty tällä hetkellä";
 $a->strings["Currently ignored"] = "Jätetty huomiotta tällä hetkellä";
 $a->strings["Currently archived"] = "Arkistoitu tällä hetkellä";
-$a->strings["Awaiting connection acknowledge"] = "";
+$a->strings["Awaiting connection acknowledge"] = "Odotetaan yhteyden kuittausta";
 $a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "";
 $a->strings["Notification for new posts"] = "Uusien postausten ilmoitus";
 $a->strings["Send a notification of every new post of this contact"] = "Lähetä ilmoitus tälle henkilölle kaikista uusista postauksista";
@@ -1082,7 +1082,7 @@ $a->strings["Profile Details"] = "Profiilitiedot";
 $a->strings["View all contacts"] = "Näytä kaikki kontaktit";
 $a->strings["View all common friends"] = "Näytä kaikki yhteiset kaverit";
 $a->strings["Advanced Contact Settings"] = "Kontakti-lisäasetukset";
-$a->strings["Mutual Friendship"] = "";
+$a->strings["Mutual Friendship"] = "Yhteinen kaveruus";
 $a->strings["is a fan of yours"] = "on fanisi";
 $a->strings["you are a fan of"] = "fanitat";
 $a->strings["Toggle Blocked status"] = "Estetty tila päälle/pois";
@@ -1105,12 +1105,12 @@ $a->strings["Read about the <a href=\"%1\$s/tos\">Terms of Service</a> of this n
 $a->strings["On this server the following remote servers are blocked."] = "";
 $a->strings["Reason for the block"] = "Eston syy";
 $a->strings["No valid account found."] = "";
-$a->strings["Password reset request issued. Check your email."] = "";
+$a->strings["Password reset request issued. Check your email."] = "Salasanan nollauspyyntö lähetetty. Tarkista sähköpostisi.";
 $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"] = "";
+$a->strings["Password reset requested at %s"] = "Salasanan nollauspyyntö kohteessa %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["Request has expired, please make a new one."] = "Pyyntö on vanhentunut, tehkää uusi pyyntö.";
 $a->strings["Forgot your Password?"] = "Unohditko salasanasi?";
 $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: "] = "Lempinimi tai sähköposti:";
@@ -1118,30 +1118,30 @@ $a->strings["Reset"] = "Nollaus";
 $a->strings["Password Reset"] = "Salasanan nollaus";
 $a->strings["Your password has been reset as requested."] = "Salasanasi on nollattu pyynnöstäsi.";
 $a->strings["Your new password is"] = "Uusi salasanasi on";
-$a->strings["Save or copy your new password - and then"] = "";
+$a->strings["Save or copy your new password - and then"] = "Tallenna tai kopioi uusi salasanasi, ja sitten";
 $a->strings["click here to login"] = "kirjaudu klikkaamalla tästä";
 $a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "";
 $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"] = "Salasanasi on vaihdettu sivustolla %s";
-$a->strings["Registration successful. Please check your email for further instructions."] = "";
+$a->strings["Registration successful. Please check your email for further instructions."] = "Rekisteröityminen onnistui. Saat kohta lisäohjeita sähköpostitse.";
 $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."] = "";
 $a->strings["Registration successful."] = "Rekisteröityminen onnistui.";
-$a->strings["Your registration can not be processed."] = "";
-$a->strings["Your registration is pending approval by the site owner."] = "";
+$a->strings["Your registration can not be processed."] = "Rekisteröintisi ei voida käsitellä.";
+$a->strings["Your registration is pending approval by the site owner."] = "Rekisteröintisi odottaa ylläpitäjän hyväksyntää.";
 $a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "";
-$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "";
+$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Jos OpenID ei ole tuttu, jätä kenttä tyhjäksi.";
 $a->strings["Your OpenID (optional): "] = "OpenID -tunnus (valinnainen):";
-$a->strings["Include your profile in member directory?"] = "";
+$a->strings["Include your profile in member directory?"] = "Lisää profiilisi jäsenluetteloon?";
 $a->strings["Note for the admin"] = "Viesti ylläpidolle";
-$a->strings["Leave a message for the admin, why you want to join this node"] = "";
+$a->strings["Leave a message for the admin, why you want to join this node"] = "Kerro yllåpitäjälle miksi haluat liittyä tähän Friendica -sivustoon";
 $a->strings["Membership on this site is by invitation only."] = "";
 $a->strings["Your invitation code: "] = "Kutsukoodisi:";
 $a->strings["Registration"] = "Rekisteröityminen";
-$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["Your Full Name (e.g. Joe Smith, real or real-looking): "] = "Koko nimi (esim. Matti Meikäläinen, Aku Ankka):";
+$a->strings["Your Email Address: (Initial information will be send there, so this has to be an existing address.)"] = "Sähköpostiosoite: (pitää olla toimiva osoite että rekisteröityminen onnistuu)";
 $a->strings["New Password:"] = "Uusi salasana:";
-$a->strings["Leave empty for an auto generated password."] = "";
+$a->strings["Leave empty for an auto generated password."] = "Jätä tyhjäksi jos haluat automaattisesti luotu salasanan.";
 $a->strings["Confirm:"] = "Vahvista:";
 $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: "] = "Valitse lempinimi:";
@@ -1172,7 +1172,7 @@ $a->strings["probe address"] = "";
 $a->strings["check webfinger"] = "Tarkista webfinger";
 $a->strings["Admin"] = "Ylläpitäjä";
 $a->strings["Addon Features"] = "Lisäosaominaisuudet";
-$a->strings["User registrations waiting for confirmation"] = "";
+$a->strings["User registrations waiting for confirmation"] = "Käyttäjärekisteröinnit odottavat hyväksyntää";
 $a->strings["Administration"] = "Ylläpito";
 $a->strings["Display Terms of Service"] = "Näytä käyttöehdot";
 $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."] = "";
@@ -1191,7 +1191,7 @@ $a->strings["Server Domain"] = "Palvelimen verkkotunnus";
 $a->strings["The domain of the new server to add to the block list. Do not include the protocol."] = "";
 $a->strings["Block reason"] = "Estosyy";
 $a->strings["Add Entry"] = "Lisää merkintä";
-$a->strings["Save changes to the blocklist"] = "";
+$a->strings["Save changes to the blocklist"] = "Tallenna muutoksia estolistaan";
 $a->strings["Current Entries in the Blocklist"] = "";
 $a->strings["Delete entry from blocklist"] = "";
 $a->strings["Delete entry from blocklist?"] = "";
@@ -1213,16 +1213,16 @@ $a->strings["Blocked Remote Contacts"] = "";
 $a->strings["Block New Remote Contact"] = "";
 $a->strings["Photo"] = "Kuva";
 $a->strings["%s total blocked contact"] = [
-       0 => "",
-       1 => "",
+       0 => "Yhteensä %s estetty kontakti",
+       1 => "Yhteensä %s estettyjä kontakteja",
 ];
 $a->strings["URL of the remote contact to block."] = "";
 $a->strings["Delete this Item"] = "Poista tämä kohde";
 $a->strings["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."] = "";
 $a->strings["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."] = "";
 $a->strings["GUID"] = "GUID";
-$a->strings["The GUID of the item you want to delete."] = "";
-$a->strings["Item marked for deletion."] = "";
+$a->strings["The GUID of the item you want to delete."] = "Poistettavan kohteen GUID.";
+$a->strings["Item marked for deletion."] = "Kohde merkitty poistettavaksi.";
 $a->strings["unknown"] = "tuntematon";
 $a->strings["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."] = "";
 $a->strings["The <em>Auto Discovered Contact Directory</em> feature is not enabled, it will improve the data displayed here."] = "";
@@ -1241,20 +1241,20 @@ $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["Normal Account"] = "Perustili";
 $a->strings["Automatic Follower Account"] = "";
-$a->strings["Public Forum Account"] = "";
+$a->strings["Public Forum Account"] = "Julkinen foorumitili";
 $a->strings["Automatic Friend Account"] = "";
-$a->strings["Blog Account"] = "";
-$a->strings["Private Forum Account"] = "";
+$a->strings["Blog Account"] = "Blogitili";
+$a->strings["Private Forum Account"] = "Yksityinen foorumitili";
 $a->strings["Message queues"] = "Viestijonot";
 $a->strings["Summary"] = "Yhteenveto";
-$a->strings["Registered users"] = "";
+$a->strings["Registered users"] = "Rekisteröityneet käyttäjät";
 $a->strings["Pending registrations"] = "";
 $a->strings["Version"] = "Versio";
 $a->strings["Active addons"] = "Käytössäolevat lisäosat";
 $a->strings["Can not parse base url. Must have at least <scheme>://<domain>"] = "";
 $a->strings["Site settings updated."] = "Sivuston asetukset päivitettiin.";
-$a->strings["No special theme for mobile devices"] = "";
-$a->strings["No community page"] = "";
+$a->strings["No special theme for mobile devices"] = "Ei mobiiliteemaa";
+$a->strings["No community page"] = "Ei yhteisösivua";
 $a->strings["Public postings from users of this site"] = "";
 $a->strings["Public postings from the federated network"] = "";
 $a->strings["Public postings from local users and the federated network"] = "";
@@ -1266,7 +1266,7 @@ $a->strings["Half a year"] = "Puoli vuotta";
 $a->strings["One year"] = "Yksi vuosi";
 $a->strings["Multi user instance"] = "";
 $a->strings["Closed"] = "Suljettu";
-$a->strings["Requires approval"] = "";
+$a->strings["Requires approval"] = "Edellyttää hyväksyntää";
 $a->strings["Open"] = "Avoin";
 $a->strings["No SSL policy, links will track page SSL state"] = "";
 $a->strings["Force all links to use SSL"] = "";
@@ -1276,7 +1276,7 @@ $a->strings["check the stable version"] = "";
 $a->strings["check the development version"] = "";
 $a->strings["Republish users to directory"] = "";
 $a->strings["File upload"] = "Tiedoston lataus";
-$a->strings["Policies"] = "";
+$a->strings["Policies"] = "Käytännöt";
 $a->strings["Auto Discovered Contact Directory"] = "";
 $a->strings["Performance"] = "Suoritus";
 $a->strings["Worker"] = "Worker";
@@ -1287,9 +1287,9 @@ $a->strings["Host name"] = "Palvelimen nimi";
 $a->strings["Sender Email"] = "Lähettäjän sähköposti";
 $a->strings["The email address your server shall use to send notification emails from."] = "";
 $a->strings["Banner/Logo"] = "Banneri/logo";
-$a->strings["Shortcut icon"] = "";
+$a->strings["Shortcut icon"] = "Pikakuvake";
 $a->strings["Link to an icon that will be used for browsers."] = "";
-$a->strings["Touch icon"] = "";
+$a->strings["Touch icon"] = "Kosketusnäyttökuvake";
 $a->strings["Link to an icon that will be used for tablets and mobiles."] = "";
 $a->strings["Additional Info"] = "Lisätietoja";
 $a->strings["For public servers: you can add additional information here that will be listed at %s/servers."] = "";
@@ -1297,10 +1297,10 @@ $a->strings["System language"] = "Järjestelmän kieli";
 $a->strings["System theme"] = "Järjestelmäteema";
 $a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "";
 $a->strings["Mobile system theme"] = "Mobiili järjestelmäteema";
-$a->strings["Theme for mobile devices"] = "";
+$a->strings["Theme for mobile devices"] = "Mobiiliteema";
 $a->strings["SSL link policy"] = "";
 $a->strings["Determines whether generated links should be forced to use SSL"] = "";
-$a->strings["Force SSL"] = "";
+$a->strings["Force SSL"] = "Pakoita SSL-yhteyden käyttöä";
 $a->strings["Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops."] = "";
 $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."] = "";
@@ -1315,8 +1315,8 @@ $a->strings["Uploaded JPEGS will be saved at this quality setting [0-100]. Defau
 $a->strings["Register policy"] = "";
 $a->strings["Maximum Daily Registrations"] = "";
 $a->strings["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."] = "";
-$a->strings["Register text"] = "";
-$a->strings["Will be displayed prominently on the registration page. You can use BBCode here."] = "";
+$a->strings["Register text"] = "Rekisteröitymisteksti";
+$a->strings["Will be displayed prominently on the registration page. You can use BBCode here."] = "Näkyvästi esillä rekisteröitymissivulla. Voit käyttää BBCodeia.";
 $a->strings["Accounts abandoned after x days"] = "";
 $a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "";
 $a->strings["Allowed friend domains"] = "Sallittuja kaveri-verkkotunnuksia";
@@ -1339,7 +1339,7 @@ $a->strings["Don't include post content in email notifications"] = "";
 $a->strings["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."] = "";
 $a->strings["Disallow public access to addons listed in the apps menu."] = "";
 $a->strings["Checking this box will restrict addons listed in the apps menu to members only."] = "";
-$a->strings["Don't embed private images in posts"] = "";
+$a->strings["Don't embed private images in posts"] = "Älä upota yksityisiä kuvia julkaisuissa";
 $a->strings["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."] = "";
 $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."] = "";
@@ -1360,9 +1360,9 @@ $a->strings["Normally we import every content from our OStatus contacts. With th
 $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."] = "";
 $a->strings["Enable Diaspora support"] = "Salli Diaspora-tuki";
-$a->strings["Provide built-in Diaspora network compatibility."] = "";
+$a->strings["Provide built-in Diaspora network compatibility."] = "Ota käyttöön Diaspora-yhteensopivuus";
 $a->strings["Only allow Friendica contacts"] = "Salli ainoastaan Friendica -kontakteja";
-$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "";
+$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Kaikkien kontaktien on käytettävä Friendica-protokollaa. Kaikki muut protokollat poistetaan käytöstä.";
 $a->strings["Verify SSL"] = "Vahvista SSL";
 $a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "";
 $a->strings["Proxy user"] = "Välityspalvelimen käyttäjä";
@@ -1387,19 +1387,19 @@ $a->strings["Discover contacts from other servers"] = "";
 $a->strings["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'."] = "";
 $a->strings["Timeframe for fetching global contacts"] = "";
 $a->strings["When the discovery is activated, this value defines the timeframe for the activity of the global contacts that are fetched from other servers."] = "";
-$a->strings["Search the local directory"] = "";
+$a->strings["Search the local directory"] = "Paikallisluettelohaku";
 $a->strings["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."] = "";
-$a->strings["Publish server information"] = "";
+$a->strings["Publish server information"] = "Julkaise palvelintiedot";
 $a->strings["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."] = "";
 $a->strings["Check upstream version"] = "";
 $a->strings["Enables checking for new Friendica versions at github. If there is a new version, you will be informed in the admin panel overview."] = "";
-$a->strings["Suppress Tags"] = "";
+$a->strings["Suppress Tags"] = "Piilota tunnisteet";
 $a->strings["Suppress showing a list of hashtags at the end of the posting."] = "";
 $a->strings["Path to item cache"] = "";
 $a->strings["The item caches buffers generated bbcode and external images."] = "";
 $a->strings["Cache duration in seconds"] = "";
 $a->strings["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."] = "";
-$a->strings["Maximum numbers of comments per post"] = "";
+$a->strings["Maximum numbers of comments per post"] = "Julkaisun kommentiraja";
 $a->strings["How much comments should be shown for each post? Default value is 100."] = "";
 $a->strings["Temp path"] = "";
 $a->strings["If you have a restricted system where the webserver can't access the system temp path, enter another path here."] = "";
@@ -1437,10 +1437,10 @@ $a->strings["Comma separated list of tags for the 'tags' subscription."] = "";
 $a->strings["Allow user tags"] = "Salli käyttäjien tunnisteet";
 $a->strings["If enabled, the tags from the saved searches will used for the 'tags' subscription in addition to the 'relay_server_tags'."] = "";
 $a->strings["Update has been marked successful"] = "";
-$a->strings["Database structure update %s was successfully applied."] = "";
+$a->strings["Database structure update %s was successfully applied."] = "Tietokannan rakenteen %s-päivitys onnistui.";
 $a->strings["Executing of database structure update %s failed with error: %s"] = "";
 $a->strings["Executing %s failed with error: %s"] = "";
-$a->strings["Update %s was successfully applied."] = "";
+$a->strings["Update %s was successfully applied."] = "%s-päivitys onnistui.";
 $a->strings["Update %s did not return a status. Unknown if it succeeded."] = "";
 $a->strings["There was no additional update function %s that needed to be called."] = "";
 $a->strings["No failed updates."] = "Ei epäonnistuineita päivityksiä.";
@@ -1453,8 +1453,8 @@ $a->strings["\n\t\t\tDear %1\$s,\n\t\t\t\tthe administrator of %2\$s has set up
 $a->strings["\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."] = "";
 $a->strings["Registration details for %s"] = "";
 $a->strings["%s user blocked/unblocked"] = [
-       0 => "",
-       1 => "",
+       0 => "%s käyttäjä estetty / poistettu estolistalta",
+       1 => "%s käyttäjää estetty / poistettu estolistalta",
 ];
 $a->strings["%s user deleted"] = [
        0 => "%s käyttäjä poistettu",
@@ -1514,7 +1514,7 @@ $a->strings["Error trying to open <strong>%1\$s</strong> log file.\\r\\n<br/>Che
 $a->strings["Couldn't open <strong>%1\$s</strong> log file.\\r\\n<br/>Check to see if file %1\$s is readable."] = "";
 $a->strings["Off"] = "Pois päältä";
 $a->strings["On"] = "Päällä";
-$a->strings["Lock feature %s"] = "";
+$a->strings["Lock feature %s"] = "Lukitse ominaisuus %s";
 $a->strings["Manage Additional Features"] = "Hallitse lisäominaisuudet";
 $a->strings["Display"] = "Ulkonäkö";
 $a->strings["Social Networks"] = "Sosiaalinen media";
@@ -1526,8 +1526,8 @@ $a->strings["Failed to connect with email account using the settings provided."]
 $a->strings["Email settings updated."] = "Sähköpostin asetukset päivitettiin.";
 $a->strings["Features updated"] = "Ominaisuudet päivitetty";
 $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["Passwords do not match. Password unchanged."] = "Salasanat eivät täsmää. Salasana ennallaan.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Tyhjä salasanakenttä ei ole sallittu. Salasana ennallaan.";
 $a->strings["The new password has been exposed in a public data dump, please choose another."] = "";
 $a->strings["Wrong password."] = "Väärä salasana.";
 $a->strings["Password changed."] = "Salasana vaihdettu.";
@@ -1544,14 +1544,14 @@ $a->strings["Add application"] = "Lisää sovellus";
 $a->strings["Consumer Key"] = "";
 $a->strings["Consumer Secret"] = "";
 $a->strings["Redirect"] = "Uudelleenohjaus";
-$a->strings["Icon url"] = "";
-$a->strings["You can't edit this application."] = "";
+$a->strings["Icon url"] = "Kuvakkeen URL-osoite";
+$a->strings["You can't edit this application."] = "Et voi muokata tätä sovellusta.";
 $a->strings["Connected Apps"] = "Yhdistetyt sovellukset";
 $a->strings["Edit"] = "Muokkaa";
 $a->strings["Client key starts with"] = "";
 $a->strings["No name"] = "Ei nimeä";
 $a->strings["Remove authorization"] = "Poista lupa";
-$a->strings["No Addon settings configured"] = "";
+$a->strings["No Addon settings configured"] = "Lisäosa-asetukset puuttuvat";
 $a->strings["Addon Settings"] = "Lisäosa-asetukset";
 $a->strings["Additional Features"] = "Lisäominaisuuksia";
 $a->strings["Diaspora"] = "Diaspora";
@@ -1561,14 +1561,14 @@ $a->strings["Built-in support for %s connectivity is %s"] = "";
 $a->strings["GNU Social (OStatus)"] = "GNU Social (OStatus)";
 $a->strings["Email access is disabled on this site."] = "";
 $a->strings["General Social Media Settings"] = "Yleiset some asetukset";
-$a->strings["Disable Content Warning"] = "";
+$a->strings["Disable Content Warning"] = "Poista sisältövaroitus käytöstä";
 $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"] = "";
+$a->strings["Automatically follow any GNU Social (OStatus) followers/mentioners"] = "Automaattisesti seuraa GNU social (OStatus) seuraajat/mainitsijat";
 $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"] = "Oletusryhmä OStatus kontakteille";
-$a->strings["Your legacy GNU Social account"] = "";
+$a->strings["Your legacy GNU Social account"] = "Vanha GNU social käyttäjätilisi";
 $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."] = "";
 $a->strings["Repair OStatus subscriptions"] = "Korjaa OStatus tilaukset";
 $a->strings["Email/Mailbox Setup"] = "Sähköpostin asennus";
@@ -1576,7 +1576,7 @@ $a->strings["If you wish to communicate with email contacts using this service (
 $a->strings["Last successful email check:"] = "Viimeisin onnistunut sähköpostitarkistus:";
 $a->strings["IMAP server name:"] = "IMAP-palvelimen nimi:";
 $a->strings["IMAP port:"] = "IMAP-porttti:";
-$a->strings["Security:"] = "";
+$a->strings["Security:"] = "Turvallisuus:";
 $a->strings["None"] = "Ei mitään";
 $a->strings["Email login name:"] = "Sähköpostitilin käyttäjätunnus:";
 $a->strings["Email password:"] = "Sähköpostin salasana:";
@@ -1625,7 +1625,7 @@ $a->strings["News Page"] = "Uutissivu";
 $a->strings["Account for a news reflector that automatically approves contact requests as \"Followers\"."] = "";
 $a->strings["Community Forum"] = "Yhteisöfoorumi";
 $a->strings["Account for community discussions."] = "";
-$a->strings["Normal Account Page"] = "";
+$a->strings["Normal Account Page"] = "Tavallinen käyttäjätili";
 $a->strings["Account for a regular personal profile that requires manual approval of \"Friends\" and \"Followers\"."] = "";
 $a->strings["Soapbox Page"] = "Saarnatuoli sivu";
 $a->strings["Account for a public profile that automatically approves contact requests as \"Followers\"."] = "";
@@ -1637,9 +1637,9 @@ $a->strings["Private Forum [Experimental]"] = "Yksityisfoorumi [kokeellinen]";
 $a->strings["Requires manual approval of contact requests."] = "";
 $a->strings["OpenID:"] = "OpenID:";
 $a->strings["(Optional) Allow this OpenID to login to this account."] = "";
-$a->strings["Publish your default profile in your local site directory?"] = "";
+$a->strings["Publish your default profile in your local site directory?"] = "Julkaise oletusprofiilisi tämän sivuston paikallisluettelossa?";
 $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["Publish your default profile in the global social directory?"] = "";
+$a->strings["Publish your default profile in the global social directory?"] = "Julkaise oletusprofiilisi maailmanlaajuisessa sosiaaliluettelossa?";
 $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["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"] = "";
@@ -1654,19 +1654,19 @@ $a->strings["If you like, Friendica may suggest new members to add you as a cont
 $a->strings["Permit unknown people to send you private mail?"] = "Salli yksityisviesit tuntemattomilta?";
 $a->strings["Friendica network users may send you private messages even if they are not in your contact list."] = "";
 $a->strings["Profile is <strong>not published</strong>."] = "Profiili <strong>ei ole julkaistu</strong>.";
-$a->strings["Your Identity Address is <strong>'%s'</strong> or '%s'."] = "";
+$a->strings["Your Identity Address is <strong>'%s'</strong> or '%s'."] = "Identiteettisi osoite on <strong>'%s'</strong> tai '%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["If empty, posts will not expire. Expired posts will be deleted"] = "Jos kenttä jää tyhjäksi, julkaisut eivät vanhene. Vanhentuneet julkaisut poistetaan.";
 $a->strings["Advanced expiration settings"] = "";
 $a->strings["Advanced Expiration"] = "";
-$a->strings["Expire posts:"] = "";
+$a->strings["Expire posts:"] = "Julkaisujen vanheneminen:";
 $a->strings["Expire personal notes:"] = "";
-$a->strings["Expire starred posts:"] = "";
-$a->strings["Expire photos:"] = "";
+$a->strings["Expire starred posts:"] = "Tähtimerkityt julkaisut vanhenee:";
+$a->strings["Expire photos:"] = "Kuvat vanhenee:";
 $a->strings["Only expire posts by others:"] = "";
 $a->strings["Account Settings"] = "Tiliasetukset";
 $a->strings["Password Settings"] = "Salasana-asetukset";
-$a->strings["Leave password fields blank unless changing"] = "";
+$a->strings["Leave password fields blank unless changing"] = "Jätä salasana kenttää tyhjäksi jos et halua vaihtaa salasanaa";
 $a->strings["Current Password:"] = "Nykyinen salasana:";
 $a->strings["Your current password to confirm the changes"] = "";
 $a->strings["Password:"] = "Salasana:";
@@ -1676,16 +1676,16 @@ $a->strings["Email Address:"] = "Sähköpostiosoite:";
 $a->strings["Your Timezone:"] = "Aikavyöhyke:";
 $a->strings["Your Language:"] = "Kieli:";
 $a->strings["Set the language we use to show you friendica interface and to send you emails"] = "";
-$a->strings["Default Post Location:"] = "";
+$a->strings["Default Post Location:"] = "Julkaisun oletussijainti:";
 $a->strings["Use Browser Location:"] = "Käytä selaimen sijainti:";
 $a->strings["Security and Privacy Settings"] = "Turvallisuus ja tietosuoja-asetukset";
-$a->strings["Maximum Friend Requests/Day:"] = "";
-$a->strings["(to prevent spam abuse)"] = "";
-$a->strings["Default Post Permissions"] = "";
+$a->strings["Maximum Friend Requests/Day:"] = "Kaveripyyntöraja päivässä:";
+$a->strings["(to prevent spam abuse)"] = "(roskapostin estämiseksi)";
+$a->strings["Default Post Permissions"] = "Julkaisun oletuskäyttöoikeudet:";
 $a->strings["(click to open/close)"] = "(klikkaa auki/kiinni)";
 $a->strings["Default Private Post"] = "";
 $a->strings["Default Public Post"] = "";
-$a->strings["Default Permissions for New Posts"] = "";
+$a->strings["Default Permissions for New Posts"] = "Uuden julkaisun oletuskäyttöoikeudet";
 $a->strings["Maximum private messages per day from unknown people:"] = "";
 $a->strings["Notification Settings"] = "Huomautusasetukset";
 $a->strings["By default post a status message when:"] = "";
@@ -1693,19 +1693,19 @@ $a->strings["accepting a friend request"] = "hyväksyt kaveripyynnön";
 $a->strings["joining a forum/community"] = "liityt foorumiin/yhteisöön";
 $a->strings["making an <em>interesting</em> profile change"] = "";
 $a->strings["Send a notification email when:"] = "Lähetä sähköposti-ilmoitus kun:";
-$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 an introduction"] = "Vastaanotat kaverikutsun";
+$a->strings["Your introductions are confirmed"] = "Kaverikutsusi on hyväksytty";
+$a->strings["Someone writes on your profile wall"] = "Joku kirjoittaa profiiliseinällesi";
+$a->strings["Someone writes a followup comment"] = "Joku vastaa kommenttiin";
 $a->strings["You receive a private message"] = "Vastaanotat yksityisviestin";
 $a->strings["You receive a friend suggestion"] = "Vastaanotat kaveriehdotuksen";
 $a->strings["You are tagged in a post"] = "Sinut on merkitty julkaisuun";
 $a->strings["You are poked/prodded/etc. in a post"] = "";
 $a->strings["Activate desktop notifications"] = "Ota työpöytäilmoitukset käyttöön";
 $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"] = "";
-$a->strings["Show detailled notifications"] = "";
+$a->strings["Text-only notification emails"] = "Ilmoitussähköposteissa vain tekstiä";
+$a->strings["Send text only notification emails, without the html part"] = "Lähetä ilmoitussähköposteissa vain tekstiä ilman HTML-koodia";
+$a->strings["Show detailled notifications"] = "Näytä yksityiskohtaiset ilmoitukset";
 $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"] = "Käyttäjätili/sivutyyppi lisäasetuksia";
 $a->strings["Change the behaviour of this account for special situations"] = "";
@@ -1714,30 +1714,30 @@ $a->strings["If you have moved this profile from another server, and some of you
 $a->strings["Resend relocate message to contacts"] = "";
 $a->strings["Error decoding account file"] = "";
 $a->strings["Error! No version data in file! This is not a Friendica account file?"] = "";
-$a->strings["User '%s' already exists on this server!"] = "";
-$a->strings["User creation error"] = "";
-$a->strings["User profile creation error"] = "";
+$a->strings["User '%s' already exists on this server!"] = "Käyttäjä '%s' on jo olemassa tällä palvelimella!";
+$a->strings["User creation error"] = "Virhe käyttäjän luomisessa";
+$a->strings["User profile creation error"] = "Virhe käyttäjäprofiilin luomisessa";
 $a->strings["%d contact not imported"] = [
-       0 => "",
-       1 => "",
+       0 => "%d kontakti ei tuotu",
+       1 => "%d kontakteja ei tuotu",
 ];
-$a->strings["Done. You can now login with your username and password"] = "";
+$a->strings["Done. You can now login with your username and password"] = "Suoritettu. Voit nyt kirjautua sisään käyttäjätunnuksellasi.";
 $a->strings["System"] = "Järjestelmä";
 $a->strings["Home"] = "Koti";
 $a->strings["Introductions"] = "Esittelyt";
-$a->strings["%s commented on %s's post"] = "";
+$a->strings["%s commented on %s's post"] = "%s kommentoi julkaisuun jonka kirjoitti %s";
 $a->strings["%s created a new post"] = "%s loi uuden julkaisun";
-$a->strings["%s liked %s's post"] = "";
-$a->strings["%s disliked %s's post"] = "";
+$a->strings["%s liked %s's post"] = "%s tykkäsi julkaisusta jonka kirjoitti %s";
+$a->strings["%s disliked %s's post"] = "%s ei tykännyt julkaisusta jonka kirjoitti %s";
 $a->strings["%s is attending %s's event"] = "";
 $a->strings["%s is not attending %s's event"] = "";
 $a->strings["%s may attend %s's event"] = "";
-$a->strings["%s is now friends with %s"] = "";
+$a->strings["%s is now friends with %s"] = "%s ja %s ovat kavereita";
 $a->strings["Friend Suggestion"] = "Kaveriehdotus";
 $a->strings["Friend/Connect Request"] = "Ystävä/yhteyspyyntö";
 $a->strings["New Follower"] = "Uusi seuraaja";
 $a->strings["Post to Email"] = "Viesti sähköpostiin";
-$a->strings["Hide your profile details from unknown viewers?"] = "";
+$a->strings["Hide your profile details from unknown viewers?"] = "Piilota profiilitietosi tuntemattomilta?";
 $a->strings["Connectors disabled, since \"%s\" is enabled."] = "";
 $a->strings["Visible to everybody"] = "Näkyvissä kaikille";
 $a->strings["show"] = "näytä";
@@ -1758,15 +1758,15 @@ $a->strings["minute"] = "minuutti";
 $a->strings["minutes"] = "inuuttia";
 $a->strings["second"] = "sekunti";
 $a->strings["seconds"] = "sekuntia";
-$a->strings["%1\$d %2\$s ago"] = "";
+$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s sitten";
 $a->strings["view full size"] = "näytä täysikokoisena";
 $a->strings["Image/photo"] = "Kuva/valokuva";
 $a->strings["<a href=\"%1\$s\" target=\"_blank\">%2\$s</a> %3\$s"] = "";
 $a->strings["$1 wrote:"] = "$1 kirjoitti:";
 $a->strings["Encrypted content"] = "Salattu sisältö";
-$a->strings["Invalid source protocol"] = "";
-$a->strings["Invalid link protocol"] = "";
-$a->strings["External link to forum"] = "";
+$a->strings["Invalid source protocol"] = "Virheellinen lähdeprotokolla";
+$a->strings["Invalid link protocol"] = "Virheellinen linkkiprotokolla";
+$a->strings["External link to forum"] = "Ulkoinen linkki foorumiin";
 $a->strings["Nothing new here"] = "";
 $a->strings["Clear notifications"] = "Tyhjennä ilmoitukset";
 $a->strings["Logout"] = "Kirjaudu ulos";
@@ -1807,10 +1807,10 @@ $a->strings["Account settings"] = "Tiliasetukset";
 $a->strings["Profiles"] = "Profiilit";
 $a->strings["Manage/Edit Profiles"] = "Hallitse/muokka profiilit";
 $a->strings["Manage/edit friends and contacts"] = "Hallitse/muokkaa kaverit ja kontaktit";
-$a->strings["Site setup and configuration"] = "";
+$a->strings["Site setup and configuration"] = "Sivuston asennus ja asetukset";
 $a->strings["Navigation"] = "Navigointi";
 $a->strings["Site map"] = "Sivustokartta";
-$a->strings["Embedding disabled"] = "";
+$a->strings["Embedding disabled"] = "Upottaminen poistettu käytöstä";
 $a->strings["Embedded content"] = "Upotettu sisältö";
 $a->strings["Export"] = "Vie";
 $a->strings["Export calendar as ical"] = "Vie kalenteri ical -tiedostona";
@@ -1820,7 +1820,7 @@ $a->strings["Multiple Profiles"] = "";
 $a->strings["Ability to create multiple profiles"] = "";
 $a->strings["Photo Location"] = "Kuvan sijainti";
 $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["Export Public Calendar"] = "Vie julkinen kalenteri";
 $a->strings["Ability for visitors to download the public calendar"] = "";
 $a->strings["Post Composition Features"] = "";
 $a->strings["Post Preview"] = "Viestin esikatselu";
@@ -1857,7 +1857,7 @@ $a->strings["Saved Folders"] = "Tallennetut kansiot";
 $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["Star Posts"] = "Tähtimerkityt julkaisut";
 $a->strings["Ability to mark special posts with a star indicator"] = "";
 $a->strings["Mute Post Notifications"] = "Mykistä julkaisuilmoitukset";
 $a->strings["Ability to mute notifications for a thread"] = "";
@@ -1865,29 +1865,29 @@ $a->strings["Advanced Profile Settings"] = "Profiilin lisäasetukset";
 $a->strings["Show visitors public community forums at the Advanced Profile Page"] = "";
 $a->strings["Tag Cloud"] = "Tunnistepilvi";
 $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["Display Membership Date"] = "Näytä liittymispäivämäärä";
+$a->strings["Display membership date in profile"] = "Näytä liittymispäivämäärä profiilissa";
 $a->strings["Add New Contact"] = "Lisää uusi kontakti";
-$a->strings["Enter address or web location"] = "";
+$a->strings["Enter address or web location"] = "Syötä verkko-osoite";
 $a->strings["Example: bob@example.com, http://example.com/barbara"] = "Esimerkki: bob@example.com, http://example.com/barbara";
 $a->strings["%d invitation available"] = [
-       0 => "",
-       1 => "",
+       0 => "%d kutsu saatavilla",
+       1 => "%d kutsuja saatavilla",
 ];
-$a->strings["Find People"] = "";
-$a->strings["Enter name or interest"] = "";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "";
-$a->strings["Similar Interests"] = "";
+$a->strings["Find People"] = "Löydä ihmisiä";
+$a->strings["Enter name or interest"] = "Syötä nimi tai harrastus";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "Esim. Matti Meikäläinen, kalastus yms.";
+$a->strings["Similar Interests"] = "Yhteiset harrastukset";
 $a->strings["Random Profile"] = "Satunnainen profiili";
 $a->strings["Invite Friends"] = "Kutsu kavereita";
-$a->strings["View Global Directory"] = "";
+$a->strings["View Global Directory"] = "Katso maailmanlaajuista luetteloa";
 $a->strings["Networks"] = "Verkot";
 $a->strings["All Networks"] = "Kaikki verkot";
 $a->strings["Everything"] = "Kaikki";
 $a->strings["Categories"] = "Luokat";
 $a->strings["%d contact in common"] = [
-       0 => "",
-       1 => "",
+       0 => "%d yhteinen kontakti",
+       1 => "%d yhteistä kontaktia",
 ];
 $a->strings["Frequently"] = "Usein";
 $a->strings["Hourly"] = "Tunneittain";
@@ -1905,22 +1905,22 @@ $a->strings["MySpace"] = "MySpace";
 $a->strings["Google+"] = "Google+";
 $a->strings["pump.io"] = "pump.io";
 $a->strings["Twitter"] = "Twitter";
-$a->strings["Diaspora Connector"] = "";
-$a->strings["GNU Social Connector"] = "";
+$a->strings["Diaspora Connector"] = "Diaspora -liitin";
+$a->strings["GNU Social Connector"] = "GNU social -liitin";
 $a->strings["pnut"] = "pnut";
 $a->strings["App.net"] = "App.net";
 $a->strings["Male"] = "Mies";
 $a->strings["Female"] = "Nainen";
-$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["Currently Male"] = "Tällä hetkellä mies";
+$a->strings["Currently Female"] = "Tällä hetkellä nainen";
+$a->strings["Mostly Male"] = "Enimmäkseen mies";
+$a->strings["Mostly Female"] = "Enimmäkseen nainen";
+$a->strings["Transgender"] = "Transsukupuolinen";
+$a->strings["Intersex"] = "Intersukupuolinen";
+$a->strings["Transsexual"] = "Transsukupuolinen";
+$a->strings["Hermaphrodite"] = "Hermafrodiitti";
+$a->strings["Neuter"] = "Neutri";
+$a->strings["Non-specific"] = "Ei-binäärinen";
 $a->strings["Other"] = "Toinen";
 $a->strings["Males"] = "Miehet";
 $a->strings["Females"] = "Naiset";
@@ -1929,12 +1929,12 @@ $a->strings["Lesbian"] = "Lesbo";
 $a->strings["No Preference"] = "";
 $a->strings["Bisexual"] = "Biseksuaali";
 $a->strings["Autosexual"] = "";
-$a->strings["Abstinent"] = "";
-$a->strings["Virgin"] = "";
+$a->strings["Abstinent"] = "Selibaatissa elävä";
+$a->strings["Virgin"] = "Neitsyt";
 $a->strings["Deviant"] = "";
 $a->strings["Fetish"] = "";
 $a->strings["Oodles"] = "";
-$a->strings["Nonsexual"] = "";
+$a->strings["Nonsexual"] = "Aseksuaali";
 $a->strings["Single"] = "Sinkku";
 $a->strings["Lonely"] = "Yksinäinen";
 $a->strings["Available"] = "";
@@ -1951,8 +1951,8 @@ $a->strings["Engaged"] = "Kihloissa";
 $a->strings["Married"] = "Naimisissa";
 $a->strings["Imaginarily married"] = "";
 $a->strings["Partners"] = "Kumppanit";
-$a->strings["Cohabiting"] = "";
-$a->strings["Common law"] = "";
+$a->strings["Cohabiting"] = "Avoliitossa";
+$a->strings["Common law"] = "Avoliitossa";
 $a->strings["Happy"] = "Iloinen";
 $a->strings["Not looking"] = "";
 $a->strings["Swinger"] = "";
@@ -1963,18 +1963,18 @@ $a->strings["Divorced"] = "Eronnut";
 $a->strings["Imaginarily divorced"] = "";
 $a->strings["Widowed"] = "Leski";
 $a->strings["Uncertain"] = "Epävarma";
-$a->strings["It's complicated"] = "";
-$a->strings["Don't care"] = "";
-$a->strings["Ask me"] = "";
+$a->strings["It's complicated"] = "Se on monimutkaista";
+$a->strings["Don't care"] = "Ei ole väliä";
+$a->strings["Ask me"] = "Kysy minulta";
 $a->strings["There are no tables on 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]"] = "";
-$a->strings["\nError %d occurred during database update:\n%s\n"] = "";
+$a->strings["The error message is\n[pre]%s[/pre]"] = "Virheviesti on\n[pre]%s[/pre]";
+$a->strings["\nError %d occurred during database update:\n%s\n"] = "\n%d virhe tapahtui tietokannan päivityksen aikana:\n%s\n";
 $a->strings["Errors encountered performing database changes: "] = "";
 $a->strings[": Database update"] = ": Tietokannan päivitys";
 $a->strings["%s: updating %s table."] = "";
 $a->strings["[no subject]"] = "[ei aihetta]";
-$a->strings["Requested account is not available."] = "";
+$a->strings["Requested account is not available."] = "Pyydetty käyttäjätili ei ole saatavilla.";
 $a->strings["Edit profile"] = "Muokkaa profiilia";
 $a->strings["Atom feed"] = "Atom -syöte";
 $a->strings["Manage/edit profiles"] = "Hallitse/muokkaa profiilit";
@@ -1986,7 +1986,7 @@ $a->strings["Birthdays this week:"] = "Syntymäpäiviä tällä viikolla:";
 $a->strings["[No description]"] = "[Ei kuvausta]";
 $a->strings["Event Reminders"] = "Tapahtumamuistutukset";
 $a->strings["Events this week:"] = "Tapahtumia tällä viikolla:";
-$a->strings["Member since:"] = "";
+$a->strings["Member since:"] = "Liittymispäivämäärä:";
 $a->strings["j F, Y"] = "";
 $a->strings["j F"] = "";
 $a->strings["Age:"] = "Ikä:";
@@ -2002,23 +2002,23 @@ $a->strings["Love/Romance:"] = "Rakkaus/romanssi:";
 $a->strings["Work/employment:"] = "Työ:";
 $a->strings["School/education:"] = "Koulutus:";
 $a->strings["Forums:"] = "Foorumit:";
-$a->strings["Only You Can See This"] = "";
+$a->strings["Only You Can See This"] = "Vain sinä näet tämän";
 $a->strings["%1\$s is attending %2\$s's %3\$s"] = "";
 $a->strings["%1\$s is not attending %2\$s's %3\$s"] = "";
 $a->strings["%1\$s may attend %2\$s's %3\$s"] = "";
 $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."] = "";
-$a->strings["Default privacy group for new contacts"] = "";
+$a->strings["Default privacy group for new contacts"] = "Oletusryhmä uusille kontakteille";
 $a->strings["Everybody"] = "Kaikki";
 $a->strings["edit"] = "muokkaa";
 $a->strings["Edit group"] = "Muokkaa ryhmää";
-$a->strings["Contacts not in any group"] = "";
+$a->strings["Contacts not in any group"] = "Kontaktit ilman ryhmää";
 $a->strings["Create a new group"] = "Luo uusi ryhmä";
 $a->strings["Edit groups"] = "Muokkaa ryhmiä";
-$a->strings["Drop Contact"] = "";
+$a->strings["Drop Contact"] = "Poista kontakti";
 $a->strings["Organisation"] = "Järjestö";
 $a->strings["News"] = "Uutiset";
 $a->strings["Forum"] = "Keskustelupalsta";
-$a->strings["Connect URL missing."] = "";
+$a->strings["Connect URL missing."] = "Yhteys URL-linkki puuttuu.";
 $a->strings["The contact could not be added. Please check the relevant network credentials in your Settings -> Social Networks page."] = "";
 $a->strings["This site is not configured to allow communications with other networks."] = "";
 $a->strings["No compatible communication protocols or feeds were discovered."] = "";
@@ -2037,7 +2037,7 @@ $a->strings["Finishes:"] = "Päättyy:";
 $a->strings["all-day"] = "koko päivä";
 $a->strings["Jun"] = "Kes.";
 $a->strings["Sept"] = "Syy.";
-$a->strings["No events to display"] = "";
+$a->strings["No events to display"] = "Ei näytettäviä tapahtumia.";
 $a->strings["l, F j"] = "l, F j";
 $a->strings["Edit event"] = "Muokkaa tapahtumaa";
 $a->strings["Duplicate event"] = "Monista tapahtuma";
@@ -2054,29 +2054,29 @@ $a->strings["Invalid OpenID url"] = "Virheellinen OpenID url-osoite";
 $a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "";
 $a->strings["The error message was:"] = "Virheviesti oli:";
 $a->strings["Please enter the required information."] = "Syötä tarvittavat tiedot.";
-$a->strings["Please use a shorter name."] = "";
+$a->strings["Please use a shorter name."] = "Käytä lyhyempää nimeä.";
 $a->strings["Name too short."] = "Nimi on liian lyhyt.";
 $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["Your email domain is not among those allowed on this site."] = "Sähköpostiosoitteesi verkkotunnus on tämän sivuston estolistalla.";
 $a->strings["Not a valid email address."] = "Virheellinen sähköpostiosoite.";
-$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["Cannot use that email."] = "Sähköpostiosoitetta ei voitu käyttää.";
+$a->strings["Your nickname can only contain a-z, 0-9 and _."] = "Nimimerkki voi sisältää a-z, 0-9 ja _.";
+$a->strings["Nickname is already registered. Please choose another."] = "Valitsemasi nimimerkki on jo käytössä. Valitse toinen nimimerkki.";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "VAKAVA VIRHE: Salausavainten luominen epäonnistui.";
+$a->strings["An error occurred during registration. Please try again."] = "Rekisteröityminen epäonnistui. Yritä uudelleen.";
 $a->strings["default"] = "oletus";
-$a->strings["An error occurred creating your default profile. Please try again."] = "";
+$a->strings["An error occurred creating your default profile. Please try again."] = "Oletusprofiilin luominen epäonnistui. Yritä uudelleen.";
 $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\t\t"] = "";
-$a->strings["Registration at %s"] = "";
+$a->strings["Registration at %s"] = "Rekisteröityminen kohteessa %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"] = "";
 $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 is now following %s."] = "%s seuraa %s.";
 $a->strings["following"] = "seuraa";
 $a->strings["%s stopped following %s."] = "%s ei enää seuraa %s.";
 $a->strings["stopped following"] = "ei enää seuraa";
-$a->strings["%s\\'s birthday"] = "";
+$a->strings["%s\\'s birthday"] = "%s\\ käyttäjän syntymäpäivä";
 $a->strings["Sharing notification from Diaspora network"] = "";
 $a->strings["Attachments:"] = "Liitteitä:";
 $a->strings["(no subject)"] = "(ei aihetta)";
@@ -2094,7 +2094,7 @@ $a->strings["unignore thread"] = "";
 $a->strings["toggle ignore status"] = "";
 $a->strings["add tag"] = "lisää tägi";
 $a->strings["like"] = "tykkää";
-$a->strings["dislike"] = "";
+$a->strings["dislike"] = "en tykkää";
 $a->strings["Share this"] = "Jaa tämä";
 $a->strings["share"] = "jaa";
 $a->strings["to"] = "";
@@ -2159,17 +2159,17 @@ $a->strings["Alignment"] = "Kohdistaminen";
 $a->strings["Left"] = "Vasemmalle";
 $a->strings["Center"] = "Keskelle";
 $a->strings["Color scheme"] = "Värimalli";
-$a->strings["Posts font size"] = "";
-$a->strings["Textareas font size"] = "";
+$a->strings["Posts font size"] = "Julkaisujen fonttikoko";
+$a->strings["Textareas font size"] = "Tekstikenttien fonttikoko";
 $a->strings["Comma separated list of helper forums"] = "";
 $a->strings["Set style"] = "Aseta tyyli";
 $a->strings["Community Pages"] = "Yhteisösivut";
 $a->strings["Community Profiles"] = "Yhteisöprofiilit";
 $a->strings["Help or @NewHere ?"] = "";
 $a->strings["Connect Services"] = "Yhdistä palvelut";
-$a->strings["Find Friends"] = "";
-$a->strings["Last users"] = "";
+$a->strings["Find Friends"] = "Etsi kavereita";
+$a->strings["Last users"] = "Viimeisimmät käyttäjät";
 $a->strings["Local Directory"] = "Paikallinen hakemisto";
 $a->strings["Quick Start"] = "Pika-aloitus";
 $a->strings["toggle mobile"] = "Mobiilisivusto päälle/pois";
-$a->strings["Update %s failed. See error logs."] = "";
+$a->strings["Update %s failed. See error logs."] = "%s päivitys epäonnistui, katso virhelokit.";
index b3665824e420f65040c923adad380c74d342afae..43ddd04cb6d8d7cc34e1bff30dc078f65085c7ee 100644 (file)
@@ -17,7 +17,7 @@ msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-04-06 16:58+0200\n"
-"PO-Revision-Date: 2018-04-11 14:34+0000\n"
+"PO-Revision-Date: 2018-04-12 13:16+0000\n"
 "Last-Translator: Karel <karel@dasrakel.eu>\n"
 "Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -1649,7 +1649,7 @@ msgstr ""
 
 #: mod/repair_ostatus.php:34
 msgid "Error"
-msgstr ""
+msgstr "Fout"
 
 #: mod/repair_ostatus.php:48 mod/ostatus_subscribe.php:64
 msgid "Done"
@@ -5653,7 +5653,7 @@ msgstr ""
 
 #: mod/admin.php:1364
 msgid "Touch icon"
-msgstr ""
+msgstr "Pictogram voor smartphones"
 
 #: mod/admin.php:1364
 msgid "Link to an icon that will be used for tablets and mobiles."
index 64ba69524873f80b0d83622f7928cf3af37b14cb..5b74f580a243457e5ab0bd11a0f5cf092928f431 100644 (file)
@@ -370,7 +370,7 @@ $a->strings["Edit contact"] = "Contact bewerken";
 $a->strings["Contacts who are not members of a group"] = "Contacten die geen leden zijn van een groep";
 $a->strings["Not Extended"] = "";
 $a->strings["Resubscribing to OStatus contacts"] = "";
-$a->strings["Error"] = "";
+$a->strings["Error"] = "Fout";
 $a->strings["Done"] = "Klaar";
 $a->strings["Keep this window open until done."] = "Houd dit scherm open tot het klaar is";
 $a->strings["Do you really want to delete this suggestion?"] = "Wil je echt dit voorstel verwijderen?";
@@ -1289,7 +1289,7 @@ $a->strings["The email address your server shall use to send notification emails
 $a->strings["Banner/Logo"] = "Banner/Logo";
 $a->strings["Shortcut icon"] = "";
 $a->strings["Link to an icon that will be used for browsers."] = "";
-$a->strings["Touch icon"] = "";
+$a->strings["Touch icon"] = "Pictogram voor smartphones";
 $a->strings["Link to an icon that will be used for tablets and mobiles."] = "";
 $a->strings["Additional Info"] = "";
 $a->strings["For public servers: you can add additional information here that will be listed at %s/servers."] = "";
index d3781fc7354e068cc9ef648cd9389b04152ec2c5..986f551d1bbf1bd3505f96580317e4b45c5954a4 100644 (file)
@@ -39,7 +39,7 @@ msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-04-06 16:58+0200\n"
-"PO-Revision-Date: 2018-04-10 19:14+0000\n"
+"PO-Revision-Date: 2018-04-15 10:14+0000\n"
 "Last-Translator: Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>\n"
 "Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
 "MIME-Version: 1.0\n"
@@ -229,17 +229,17 @@ msgstr "%1$s[url=%2$s]udostępnił wpis[/url]."
 #: include/enotify.php:228
 #, php-format
 msgid "[Friendica:Notify] %1$s poked you"
-msgstr "[Friendica: Powiadomienie] %1$s poked you"
+msgstr "[Friendica: Powiadomienie] %1$s zaczepia Cię"
 
 #: include/enotify.php:230
 #, php-format
 msgid "%1$s poked you at %2$s"
-msgstr ""
+msgstr "%1$s zaczepił Cię %2$s"
 
 #: include/enotify.php:231
 #, php-format
 msgid "%1$s [url=%2$s]poked you[/url]."
-msgstr ""
+msgstr "%1$s[url=%2$s] zaczepił Cię[/url]."
 
 #: include/enotify.php:247
 #, php-format
@@ -511,7 +511,7 @@ msgstr "%1$s jest teraz znajomym z %2$s"
 #: include/conversation.php:250
 #, php-format
 msgid "%1$s poked %2$s"
-msgstr ""
+msgstr "%1$s zaczepił Cię %2$s"
 
 #: include/conversation.php:304 mod/tagger.php:110
 #, php-format
@@ -520,7 +520,7 @@ msgstr "%1$s zaznaczył %2$s'go %3$s przy użyciu %4$s"
 
 #: include/conversation.php:331
 msgid "post/item"
-msgstr ""
+msgstr "stanowisko/pozycja"
 
 #: include/conversation.php:332
 #, php-format
@@ -1001,7 +1001,7 @@ msgstr "zaczep"
 
 #: include/text.php:1074
 msgid "poked"
-msgstr "zaczepiony"
+msgstr "zaczepił Cię"
 
 #: include/text.php:1075
 msgid "ping"
@@ -1502,7 +1502,7 @@ msgstr "Pierwsze kroki"
 
 #: mod/newmember.php:17
 msgid "Friendica Walk-Through"
-msgstr ""
+msgstr "Friendica Przejdź-Przez"
 
 #: mod/newmember.php:17
 msgid ""
@@ -2384,7 +2384,7 @@ msgstr "Wyślij zgłoszenie"
 
 #: mod/localtime.php:19 src/Model/Event.php:36 src/Model/Event.php:814
 msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, R \\@ g:m AM/PM"
+msgstr ""
 
 #: mod/localtime.php:33
 msgid "Time Conversion"
@@ -6969,7 +6969,7 @@ msgstr "Wbudowane wsparcie dla %s łączność jest %s"
 
 #: mod/settings.php:806
 msgid "GNU Social (OStatus)"
-msgstr ""
+msgstr "GNU Społeczny (OStatus)"
 
 #: mod/settings.php:837
 msgid "Email access is disabled on this site."
@@ -7595,7 +7595,7 @@ msgstr "Jesteś oznaczony tagiem w poście"
 
 #: mod/settings.php:1264
 msgid "You are poked/prodded/etc. in a post"
-msgstr ""
+msgstr "Jesteś zaczepiony/zaczepiona/itp. w poście"
 
 #: mod/settings.php:1266
 msgid "Activate desktop notifications"
@@ -8423,7 +8423,7 @@ msgstr "Łącze Diaspora"
 
 #: src/Content/ContactSelector.php:93
 msgid "GNU Social Connector"
-msgstr ""
+msgstr "GNU Połączenie Społecznościowe"
 
 #: src/Content/ContactSelector.php:94
 msgid "pnut"
@@ -8431,7 +8431,7 @@ msgstr ""
 
 #: src/Content/ContactSelector.php:95
 msgid "App.net"
-msgstr ""
+msgstr "App.net"
 
 #: src/Content/ContactSelector.php:125
 msgid "Male"
@@ -8459,7 +8459,7 @@ msgstr "Głównie kobieta"
 
 #: src/Content/ContactSelector.php:125
 msgid "Transgender"
-msgstr ""
+msgstr "Transseksualny"
 
 #: src/Content/ContactSelector.php:125
 msgid "Intersex"
@@ -8961,12 +8961,12 @@ msgstr "Urodziny %s"
 #: src/Model/Event.php:53 src/Model/Event.php:70 src/Model/Event.php:419
 #: src/Model/Event.php:882
 msgid "Starts:"
-msgstr "Start:"
+msgstr "Rozpoczęcie:"
 
 #: src/Model/Event.php:56 src/Model/Event.php:76 src/Model/Event.php:420
 #: src/Model/Event.php:886
 msgid "Finishes:"
-msgstr "Wykończenia:"
+msgstr "Zakończenie:"
 
 #: src/Model/Event.php:368
 msgid "all-day"
@@ -9380,7 +9380,7 @@ msgstr ""
 
 #: view/theme/duepuntozero/config.php:57
 msgid "easterbunny"
-msgstr ""
+msgstr "Zajączek wielkanocny"
 
 #: view/theme/duepuntozero/config.php:58
 msgid "darkzero"
index 705afb5fbb8ac9a1700d25da2086eaf6bc5eac62..72f28b4a1517285474dfbbb94546f116875698c7 100644 (file)
@@ -49,9 +49,9 @@ $a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]oznaczył
 $a->strings["[Friendica:Notify] %s shared a new post"] = "[Friendica:Powiadomienie] %s udostępnił nowy wpis";
 $a->strings["%1\$s shared a new post at %2\$s"] = "%1\$sudostępnił nowy wpis na %2\$s ";
 $a->strings["%1\$s [url=%2\$s]shared a post[/url]."] = "%1\$s[url=%2\$s]udostępnił wpis[/url].";
-$a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica: Powiadomienie] %1\$s poked you";
-$a->strings["%1\$s poked you at %2\$s"] = "";
-$a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "";
+$a->strings["[Friendica:Notify] %1\$s poked you"] = "[Friendica: Powiadomienie] %1\$s zaczepia Cię";
+$a->strings["%1\$s poked you at %2\$s"] = "%1\$s zaczepił Cię %2\$s";
+$a->strings["%1\$s [url=%2\$s]poked you[/url]."] = "%1\$s[url=%2\$s] zaczepił Cię[/url].";
 $a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Powiadomienie] %s otagował Twój post";
 $a->strings["%1\$s tagged your post at %2\$s"] = "%1\$soznaczyłeś swój wpis na %2\$s ";
 $a->strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$soznacz [url=%2\$s]twój post[/url]";
@@ -99,9 +99,9 @@ $a->strings["%1\$s attends %2\$s's %3\$s"] = "%1\$sbierze udział w %2\$s's%3\$s
 $a->strings["%1\$s doesn't attend %2\$s's %3\$s"] = "%1\$s nie uczestniczy %2\$s 's %3\$s";
 $a->strings["%1\$s attends maybe %2\$s's %3\$s"] = "%1\$s może uczęszcza %2\$s 's %3\$s";
 $a->strings["%1\$s is now friends with %2\$s"] = "%1\$s jest teraz znajomym z %2\$s";
-$a->strings["%1\$s poked %2\$s"] = "";
+$a->strings["%1\$s poked %2\$s"] = "%1\$s zaczepił Cię %2\$s";
 $a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s zaznaczył %2\$s'go %3\$s przy użyciu %4\$s";
-$a->strings["post/item"] = "";
+$a->strings["post/item"] = "stanowisko/pozycja";
 $a->strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s oznacz %2\$s's %3\$s jako ulubione";
 $a->strings["Likes"] = "Lubię to";
 $a->strings["Dislikes"] = "Nie lubię tego";
@@ -234,7 +234,7 @@ $a->strings["Tags"] = "Tagi";
 $a->strings["Contacts"] = "Kontakty";
 $a->strings["Forums"] = "Fora";
 $a->strings["poke"] = "zaczep";
-$a->strings["poked"] = "zaczepiony";
+$a->strings["poked"] = "zaczepił Cię";
 $a->strings["ping"] = "ping";
 $a->strings["pinged"] = "";
 $a->strings["prod"] = "";
@@ -353,7 +353,7 @@ $a->strings["Welcome to Friendica"] = "Witamy na Friendica";
 $a->strings["New Member Checklist"] = "Lista nowych członków";
 $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."] = "Chcielibyśmy zaproponować kilka porad i linków, które pomogą uczynić twoje doświadczenie przyjemnym. Kliknij dowolny element, aby odwiedzić odpowiednią stronę. Link do tej strony będzie widoczny na stronie głównej przez dwa tygodnie od czasu rejestracji, a następnie zniknie.";
 $a->strings["Getting Started"] = "Pierwsze kroki";
-$a->strings["Friendica Walk-Through"] = "";
+$a->strings["Friendica Walk-Through"] = "Friendica Przejdź-Przez";
 $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."] = "Na stronie <em>Szybki start</em> - znajdź krótkie wprowadzenie do swojego profilu i kart sieciowych, stwórz nowe połączenia i znajdź kilka grup do przyłączenia się.";
 $a->strings["Settings"] = "Ustawienia";
 $a->strings["Go to Your Settings"] = "Idź do swoich ustawień";
@@ -545,7 +545,7 @@ $a->strings["Diaspora (Socialhome, Hubzilla)"] = "Diaspora (Socialhome, Hubzilla
 $a->strings[" - please do not use this form.  Instead, enter %s into your Diaspora search bar."] = "- proszę nie używać tego formularza. Zamiast tego wpisz %s do paska wyszukiwania Diaspory.";
 $a->strings["Your Identity Address:"] = "Twój adres tożsamości:";
 $a->strings["Submit Request"] = "Wyślij zgłoszenie";
-$a->strings["l F d, Y \\@ g:i A"] = "l F d, R \\@ g:m AM/PM";
+$a->strings["l F d, Y \\@ g:i A"] = "";
 $a->strings["Time Conversion"] = "Zmiana czasu";
 $a->strings["Friendica provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica udostępnia tę usługę do udostępniania wydarzeń innym sieciom i znajomym w nieznanych strefach czasowych.";
 $a->strings["UTC time: %s"] = "Czas UTC %s";
@@ -1594,7 +1594,7 @@ $a->strings["Diaspora"] = "Diaspora";
 $a->strings["enabled"] = "włączony";
 $a->strings["disabled"] = "wyłączony";
 $a->strings["Built-in support for %s connectivity is %s"] = "Wbudowane wsparcie dla %s łączność jest %s";
-$a->strings["GNU Social (OStatus)"] = "";
+$a->strings["GNU Social (OStatus)"] = "GNU Społeczny (OStatus)";
 $a->strings["Email access is disabled on this site."] = "Dostęp do e-maila nie jest w pełni sprawny na tej stronie";
 $a->strings["General Social Media Settings"] = "Ogólne ustawienia mediów społecznościowych";
 $a->strings["Disable Content Warning"] = "Wyłącz ostrzeżenie o treści";
@@ -1736,7 +1736,7 @@ $a->strings["Someone writes a followup comment"] = "Ktoś pisze komentarz nawią
 $a->strings["You receive a private message"] = "Otrzymałeś prywatną wiadomość";
 $a->strings["You receive a friend suggestion"] = "Otrzymane propozycje znajomych";
 $a->strings["You are tagged in a post"] = "Jesteś oznaczony tagiem w poście";
-$a->strings["You are poked/prodded/etc. in a post"] = "";
+$a->strings["You are poked/prodded/etc. in a post"] = "Jesteś zaczepiony/zaczepiona/itp. w poście";
 $a->strings["Activate desktop notifications"] = "Aktywuj powiadomienia na pulpicie";
 $a->strings["Show desktop popup on new notifications"] = "Pokaż wyskakujące okienko dla nowych powiadomień";
 $a->strings["Text-only notification emails"] = "E-maile z powiadomieniami tekstowymi";
@@ -1948,16 +1948,16 @@ $a->strings["Google+"] = "Google+";
 $a->strings["pump.io"] = "pump.io";
 $a->strings["Twitter"] = "Twitter";
 $a->strings["Diaspora Connector"] = "Łącze Diaspora";
-$a->strings["GNU Social Connector"] = "";
+$a->strings["GNU Social Connector"] = "GNU Połączenie Społecznościowe";
 $a->strings["pnut"] = "";
-$a->strings["App.net"] = "";
+$a->strings["App.net"] = "App.net";
 $a->strings["Male"] = "Mężczyzna";
 $a->strings["Female"] = "Kobieta";
 $a->strings["Currently Male"] = "Obecnie mężczyzna";
 $a->strings["Currently Female"] = "Obecnie Kobieta";
 $a->strings["Mostly Male"] = "Głównie mężczyzna";
 $a->strings["Mostly Female"] = "Głównie kobieta";
-$a->strings["Transgender"] = "";
+$a->strings["Transgender"] = "Transseksualny";
 $a->strings["Intersex"] = "Interseksualne";
 $a->strings["Transsexual"] = "Transseksualny";
 $a->strings["Hermaphrodite"] = "Hermafrodyta";
@@ -2074,8 +2074,8 @@ $a->strings["Limited profile. This person will be unable to receive direct/perso
 $a->strings["Unable to retrieve contact information."] = "Nie można otrzymać informacji kontaktowych";
 $a->strings["%s's birthday"] = "Urodziny %s";
 $a->strings["Happy Birthday %s"] = "Urodziny %s";
-$a->strings["Starts:"] = "Start:";
-$a->strings["Finishes:"] = "Wykończenia:";
+$a->strings["Starts:"] = "Rozpoczęcie:";
+$a->strings["Finishes:"] = "Zakończenie:";
 $a->strings["all-day"] = "cały dzień";
 $a->strings["Jun"] = "cze";
 $a->strings["Sept"] = "wrz";
@@ -2171,7 +2171,7 @@ $a->strings["Delete this item?"] = "Usunąć ten element?";
 $a->strings["show fewer"] = "Pokaż mniej";
 $a->strings["greenzero"] = "";
 $a->strings["purplezero"] = "";
-$a->strings["easterbunny"] = "";
+$a->strings["easterbunny"] = "Zajączek wielkanocny";
 $a->strings["darkzero"] = "";
 $a->strings["comix"] = "";
 $a->strings["slackr"] = "";
index 0f3d3c24be093d6d0fb08fa71f657c7e220072ef..2355678988d3f5f895bbf2a9e4d6dbb30c11077a 100644 (file)
@@ -5,6 +5,7 @@
 {{if $displayprivstatement}}
 <h2>{{$privstatementtitle}}</h2>
 <p>{{$privoperate}}</p>
+<p>{{$privdistribute}}</p>
 <p>{{$privdelete}}</p>
 {{/if}}