code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * List of replies
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Personal
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2008-2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

if (!defined('GNUSOCIAL')) { exit(1); }

/**
 * List of replies
 *
 * @category Personal
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class ShowfavoritesAction extends ShowstreamAction
{
    function title()
    {
        if ($this->page == 1) {
            // TRANS: Title for first page of favourite notices of a user.
            // TRANS: %s is the user for whom the favourite notices are displayed.
            return sprintf(_('%s\'s favorite notices'), $this->getTarget()->getNickname());
        } else {
            // TRANS: Title for all but the first page of favourite notices of a user.
            // TRANS: %1$s is the user for whom the favourite notices are displayed, %2$d is the page number.
            return sprintf(_('%1$s\'s favorite notices, page %2$d'),
                           $this->getTarget()->getNickname(),
                           $this->page);
        }
    }

    public function getStream()
    {
        return new FaveNoticeStream($this->getTarget(), $this->scoped);
    }

    function getFeeds()
    {
        return array(new Feed(Feed::JSON,
                              common_local_url('ApiTimelineFavorites',
                                               array(
                                                    'id' => $this->getTarget()->getNickname(),
                                                    'format' => 'as')),
                              // TRANS: Feed link text. %s is a username.
                              sprintf(_('Feed for favorites of %s (Activity Streams JSON)'),
                                      $this->getTarget()->getNickname())),
                     new Feed(Feed::RSS1,
                              common_local_url('favoritesrss',
                                               array('nickname' => $this->getTarget()->getNickname())),
                              // TRANS: Feed link text. %s is a username.
                              sprintf(_('Feed for favorites of %s (RSS 1.0)'),
                                      $this->getTarget()->getNickname())),
                     new Feed(Feed::RSS2,
                              common_local_url('ApiTimelineFavorites',
                                               array(
                                                    'id' => $this->getTarget()->getNickname(),
                                                    'format' => 'rss')),
                              // TRANS: Feed link text. %s is a username.
                              sprintf(_('Feed for favorites of %s (RSS 2.0)'),
                                      $this->getTarget()->getNickname())),
                     new Feed(Feed::ATOM,
                              common_local_url('ApiTimelineFavorites',
                                               array(
                                                    'id' => $this->getTarget()->getNickname(),
                                                    'format' => 'atom')),
                              // TRANS: Feed link text. %s is a username.
                              sprintf(_('Feed for favorites of %s (Atom)'),
                                      $this->getTarget()->getNickname())));
    }

    function showEmptyListMessage()
    {
        if (common_logged_in()) {
            if ($this->getTarget()->sameAs($this->getScoped())) {
                // TRANS: Text displayed instead of favourite notices for the current logged in user that has no favourites.
                $message = _('You haven\'t chosen any favorite notices yet. Click the fave button on notices you like to bookmark them for later or shed a spotlight on them.');
            } else {
                // TRANS: Text displayed instead of favourite notices for a user that has no favourites while logged in.
                // TRANS: %s is a username.
                $message = sprintf(_('%s hasn\'t added any favorite notices yet. Post something interesting they would add to their favorites :)'), $this->getTarget()->getNickname());
            }
        }
        else {
                // TRANS: Text displayed instead of favourite notices for a user that has no favourites while not logged in.
                // TRANS: %s is a username, %%%%action.register%%%% is a link to the user registration page.
                // TRANS: (link text)[link] is a Mark Down link.
            $message = sprintf(_('%s hasn\'t added any favorite notices yet. Why not [register an account](%%%%action.register%%%%) and then post something interesting they would add to their favorites :)'), $this->getTarget()->getNickname());
        }

        $this->elementStart('div', 'guide');
        $this->raw(common_markup_to_html($message));
        $this->elementEnd('div');
    }

    /**
     * Show the content
     *
     * A list of notices that this user has marked as a favorite
     *
     * @return void
     */
    function showNotices()
    {
        $nl = new FavoritesNoticeList($this->notice, $this);

        $cnt = $nl->show();
        if (0 == $cnt) {
            $this->showEmptyListMessage();
        }

        $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE,
                          $this->page, 'showfavorites',
                          array('nickname' => $this->getTarget()->getNickname()));
    }

    function showPageNotice() {
        // TRANS: Page notice for show favourites page.
        $this->element('p', 'instructions', _('This is a way to share what you like.'));
    }
}

class FavoritesNoticeList extends NoticeList
{
    function newListItem(Notice $notice)
    {
        return new FavoritesNoticeListItem($notice, $this->out);
    }
}

// All handled by superclass
class FavoritesNoticeListItem extends DoFollowListItem
{
}


code:
<?php
/**
 * Table Definition for fave
 */

class Fave extends Managed_DataObject
{
    public $__table = 'fave';                            // table name
    public $notice_id;                       // int(4)  primary_key not_null
    public $user_id;                         // int(4)  primary_key not_null
    public $uri;                             // varchar(191)   not 255 because utf8mb4 takes more space   not 255 because utf8mb4 takes more space
    public $created;                         // datetime  multiple_key not_null
    public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP

    public static function schemaDef()
    {
        return array(
            'fields' => array(
                'notice_id' => array('type' => 'int', 'not null' => true, 'description' => 'notice that is the favorite'),
                'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'user who likes this notice'),
                'uri' => array('type' => 'varchar', 'length' => 191, 'description' => 'universally unique identifier, usually a tag URI'),
                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
            ),
            'primary key' => array('notice_id', 'user_id'),
            'unique keys' => array(
                'fave_uri_key' => array('uri'),
            ),
            'foreign keys' => array(
                'fave_notice_id_fkey' => array('notice', array('notice_id' => 'id')),
                'fave_user_id_fkey' => array('profile', array('user_id' => 'id')), // note: formerly referenced notice.id, but we can now record remote users' favorites
            ),
            'indexes' => array(
                'fave_notice_id_idx' => array('notice_id'),
                'fave_user_id_idx' => array('user_id', 'modified'),
                'fave_modified_idx' => array('modified'),
            ),
        );
    }

    /**
     * Save a favorite record.
     * @fixme post-author notification should be moved here
     *
     * @param Profile $actor  the local or remote Profile who favorites
     * @param Notice  $target the notice that is favorited
     * @return Fave record on success
     * @throws Exception on failure
     */
    static function addNew(Profile $actor, Notice $target) {
        if (self::existsForProfile($target, $actor)) {
            // TRANS: Client error displayed when trying to mark a notice as favorite that already is a favorite.
            throw new AlreadyFulfilledException(_('You have already favorited this!'));
        }

        $act = new Activity();
        $act->type    = ActivityObject::ACTIVITY;
        $act->verb    = ActivityVerb::FAVORITE;
        $act->time    = time();
        $act->id      = self::newUri($actor, $target, common_sql_date($act->time));
        $act->title   = _("Favor");
        // TRANS: Message that is the "content" of a favorite (%1$s is the actor's nickname, %2$ is the favorited
        //        notice's nickname and %3$s is the content of the favorited notice.)
        $act->content = sprintf(_('%1$s favorited something by %2$s: %3$s'),
                                $actor->getNickname(), $target->getProfile()->getNickname(),
                                $target->getRendered());
        $act->actor   = $actor->asActivityObject();
        $act->target  = $target->asActivityObject();
        $act->objects = array(clone($act->target));

        $url = common_local_url('AtomPubShowFavorite', array('profile'=>$actor->id, 'notice'=>$target->id));
        $act->selfLink = $url;
        $act->editLink = $url;

        // saveActivity will in turn also call Fave::saveActivityObject which does
        // what this function used to do before this commit.
        $stored = Notice::saveActivity($act, $actor);

        return $stored;
    }

    static function removeEntry(Profile $actor, Notice $target)
    {
        $fave            = new Fave();
        $fave->user_id   = $actor->getID();
        $fave->notice_id = $target->getID();
        if (!$fave->find(true)) {
            // TRANS: Client error displayed when trying to remove a 'favor' when there is none in the first place.
            throw new AlreadyFulfilledException(_('This is already not favorited.'));
        }

        $result = $fave->delete();
        if ($result === false) {
            common_log_db_error($fave, 'DELETE', __FILE__);
            // TRANS: Server error displayed when removing a favorite from the database fails.
            throw new ServerException(_('Could not delete favorite.'));
        }

        Fave::blowCacheForProfileId($actor->getID());
        Fave::blowCacheForNoticeId($target->getID());
    }

    // exception throwing takeover!
    public function insert()
    {
        if (parent::insert()===false) {
            common_log_db_error($this, 'INSERT', __FILE__);
            throw new ServerException(sprintf(_m('Could not store new object of type %s'), get_called_class()));
        }
        self::blowCacheForProfileId($this->user_id);
        self::blowCacheForNoticeId($this->notice_id);
        return $this;
    }

    public function delete($useWhere=false)
    {
        $result = null;

        try {
            $profile = $this->getActor();
            $notice  = $this->getTarget();

            if (Event::handle('StartDisfavorNotice', array($profile, $notice, &$result))) {

                $result = parent::delete($useWhere);

                if ($result !== false) {
                    Event::handle('EndDisfavorNotice', array($profile, $notice));
                }
            }

        } catch (NoResultException $e) {
            // In case there's some inconsistency where the profile or notice was deleted without losing the fave db entry
            common_log(LOG_INFO, '"'.get_class($e->obj).'" with id=='.var_export($e->obj->id, true).' object not found when deleting favorite, ignoring...');
        } catch (EmptyPkeyValueException $e) {
            // Some buggy instances of GNU social have had favorites with notice id==0 stored in the database
            common_log(LOG_INFO, _ve($e->getMessage()));
        }

        // If we catch an exception above, then $result===null because parent::delete only returns an int>=0 or boolean false
        if (is_null($result)) {
            // Delete it without the event, as something is wrong and we don't want it anyway.
            $result = parent::delete($useWhere);
        }

        // Err, apparently we can reference $this->user_id after parent::delete,
        // I guess it's safe because this is the order it was before!
        self::blowCacheForProfileId($this->user_id);
        self::blowCacheForNoticeId($this->notice_id);
        self::blow('popular');

        return $result;
    }

    // FIXME: Instead of $own, send the scoped Profile so we can pass it along directly to FaveNoticeStream
    // and preferrably we should get a Profile instead of $user_id
    static function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false, $since_id=0, $max_id=0)
    {
        $target = Profile::getByID($user_id);
        $stream = new FaveNoticeStream($target, ($own ? $target : null));

        return $stream->getNotices($offset, $limit, $since_id, $max_id);
    }

    // FIXME: Instead of $own, send the scoped Profile so we can pass it along directly to FaveNoticeStream
    // and preferrably we should get a Profile instead of $user_id
    function idStream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false, $since_id=0, $max_id=0)
    {
        $target = Profile::getByID($user_id);
        $stream = new FaveNoticeStream($target, ($own ? $target : null));

        return $stream->getNoticeIds($offset, $limit, $since_id, $max_id);
    }

    function asActivity()
    {
        $target = $this->getTarget();
        $actor  = $this->getActor();

        $act = new Activity();

        $act->verb = ActivityVerb::FAVORITE;

        // FIXME: rationalize this with URL below

        $act->id   = $this->getUri();

        $act->time    = strtotime($this->created);
        // TRANS: Activity title when marking a notice as favorite.
        $act->title   = _("Favor");
        // TRANS: Message that is the "content" of a favorite (%1$s is the actor's nickname, %2$ is the favorited
        //        notice's nickname and %3$s is the content of the favorited notice.)
        $act->content = sprintf(_('%1$s favorited something by %2$s: %3$s'),
                                $actor->getNickname(), $target->getProfile()->getNickname(),
                                $target->getRendered());
        $act->context = new ActivityContext();
        $act->context->replyToID = $target->getUri();
        try {
            $act->context->replyToURL = $target->getUrl();
        } catch (InvalidUrlException $e) {
            // ok, no replyToURL, i.e. the href="" in <thr:in-reply-to/>
        }

        $act->actor     = $actor->asActivityObject();
        $act->target    = $target->asActivityObject();
        $act->objects   = array(clone($act->target));

        $url = common_local_url('AtomPubShowFavorite',
                                          array('profile' => $actor->id,
                                                'notice'  => $target->id));

        $act->selfLink = $url;
        $act->editLink = $url;

        return $act;
    }

    static function existsForProfile($notice, Profile $scoped)
    {
        $fave = self::pkeyGet(array('user_id'=>$scoped->id, 'notice_id'=>$notice->id));

        return ($fave instanceof Fave);
    }

    /**
     * Fetch a stream of favorites by profile
     *
     * @param integer $profileId Profile that faved
     * @param integer $offset    Offset from last
     * @param integer $limit     Number to get
     *
     * @return mixed stream of faves, use fetch() to iterate
     *
     * @todo Cache results
     * @todo integrate with Fave::stream()
     */

    static function byProfile($profileId, $offset, $limit)
    {
        $fav = new Fave();

        $fav->user_id = $profileId;

        $fav->orderBy('modified DESC');

        $fav->limit($offset, $limit);

        $fav->find();

        return $fav;
    }

    static function countByProfile(Profile $profile)
    {
        $c = Cache::instance();
        if (!empty($c)) {
            $cnt = $c->get(Cache::key('fave:count_by_profile:'.$profile->id));
            if (is_integer($cnt)) {
                return $cnt;
            }
        }

        $faves = new Fave();
        $faves->user_id = $profile->id;
        $cnt = (int) $faves->count('notice_id');

        if (!empty($c)) {
            $c->set(Cache::key('fave:count_by_profile:'.$profile->id), $cnt);
        }

        return $cnt;
    }

    static protected $_faves = array();

    /**
     * All faves of this notice
     *
     * @param Notice $notice A notice we wish to get faves for (may still be ArrayWrapper)
     *
     * @return array Array of Fave objects
     */
    static public function byNotice($notice)
    {
        if (!isset(self::$_faves[$notice->id])) {
            self::fillFaves(array($notice->id));
        }
        return self::$_faves[$notice->id];
    }

    static public function fillFaves(array $notice_ids)
    {
        $faveMap = Fave::listGet('notice_id', $notice_ids);
        self::$_faves = array_replace(self::$_faves, $faveMap);
    }

    static public function blowCacheForProfileId($profile_id)
    {
        $cache = Cache::instance();
        if ($cache) {
            // Faves don't happen chronologically, so we need to blow
            // ;last cache, too
            $cache->delete(Cache::key('fave:ids_by_user:'.$profile_id));
            $cache->delete(Cache::key('fave:ids_by_user:'.$profile_id.';last'));
            $cache->delete(Cache::key('fave:ids_by_user_own:'.$profile_id));
            $cache->delete(Cache::key('fave:ids_by_user_own:'.$profile_id.';last'));
            $cache->delete(Cache::key('fave:count_by_profile:'.$profile_id));
        }
    }
    static public function blowCacheForNoticeId($notice_id)
    {
        $cache = Cache::instance();
        if ($cache) {
            $cache->delete(Cache::key('fave:list-ids:notice_id:'.$notice_id));
        }
    }

    // Remember that we want the _activity_ notice here, not faves applied
    // to the supplied Notice (as with byNotice)!
    static public function fromStored(Notice $stored)
    {
        $class = get_called_class();
        $object = new $class;
        $object->uri = $stored->uri;
        if (!$object->find(true)) {
            throw new NoResultException($object);
        }
        return $object;
    }

    /**
     * Retrieves the _targeted_ notice of a verb (such as the notice that was
     * _favorited_, but not the favorite activity itself).
     *
     * @param Notice $stored    The activity notice.
     *
     * @throws NoResultException when it can't find what it's looking for.
     */
    static public function getTargetFromStored(Notice $stored)
    {
        return self::fromStored($stored)->getTarget();
    }

    static public function getObjectType()
    {
        return ActivityObject::ACTIVITY;
    }

    public function asActivityObject(Profile $scoped=null)
    {
        $actobj = new ActivityObject();
        $actobj->id = $this->getUri();
        $actobj->type = ActivityUtils::resolveUri(self::getObjectType());
        $actobj->actor = $this->getActorObject();
        $actobj->target = $this->getTargetObject();
        $actobj->objects = array(clone($actobj->target));
        $actobj->verb = ActivityVerb::FAVORITE;
        $actobj->title = ActivityUtils::verbToTitle($actobj->verb);
        $actobj->content = $this->getTarget()->getRendered();
        return $actobj;
    }

    /**
     * @param ActivityObject $actobj The _favored_ notice (which we're "in-reply-to")
     * @param Notice         $stored The _activity_ notice, i.e. the favor itself.
     */
    static public function parseActivityObject(ActivityObject $actobj, Notice $stored)
    {
        // throws exception if nothing was found, but it could also be a non-Notice...
        // FIXME: This should only test _one_ URI (and not the links etc.) though a function like this could be useful in other cases
        $local = ActivityUtils::findLocalObject($actobj->getIdentifiers());
        if (!$local instanceof Notice) {
            // $local always returns something, but this was not what we expected. Something is wrong.
            throw new Exception('Something other than a Notice was returned from findLocalObject');
        }

        $actor = $stored->getProfile();
        $object = new Fave();
        $object->user_id = $stored->getProfile()->id;
        $object->notice_id = $local->id;
        $object->uri = $stored->uri;
        $object->created = $stored->created;
        $object->modified = $stored->modified;
        return $object;
    }

    static public function extendActivity(Notice $stored, Activity $act, Profile $scoped=null)
    {
        $target = self::getTargetFromStored($stored);

        // The following logic was copied from StatusNet's Activity plugin
        if (ActivityUtils::compareVerbs($target->verb, array(ActivityVerb::POST))) {
            // "I like the thing you posted"
            $act->objects = $target->asActivity()->objects;
        } else {
            // "I like that you did whatever you did"
            $act->target = $target->asActivityObject();
            $act->objects = array(clone($act->target));
        }
        $act->context->replyToID = $target->getUri();
        $act->context->replyToUrl = $target->getUrl();
        $act->title = ActivityUtils::verbToTitle($act->verb);
    }

    static function saveActivityObject(ActivityObject $actobj, Notice $stored)
    {
        $object = self::parseActivityObject($actobj, $stored);
        $object->insert();  // exception throwing in Fave's case!

        self::blowCacheForProfileId($object->user_id);
        self::blowCacheForNoticeId($object->notice_id);
        self::blow('popular');

        Event::handle('EndFavorNotice', array($stored->getProfile(), $object->getTarget()));
        return $object;
    }

    public function getTarget()
    {
        return Notice::getByID($this->notice_id);
    }

    public function getTargetObject()
    {
        return $this->getTarget()->asActivityObject();
    }

    protected $_stored = array();

    public function getStored()
    {
        if (!isset($this->_stored[$this->uri])) {
            $stored = new Notice();
            $stored->uri = $this->uri;
            if (!$stored->find(true)) {
                throw new NoResultException($stored);
            }
            $this->_stored[$this->uri] = $stored;
        }
        return $this->_stored[$this->uri];
    }

    public function getActor()
    {
        return Profile::getByID($this->user_id);
    }

    public function getActorObject()
    {
        return $this->getActor()->asActivityObject();
    }

    public function getUri()
    {
        if (!empty($this->uri)) {
            return $this->uri;
        }

        // We (should've in this case) created it ourselves, so we tag it ourselves
        return self::newUri($this->getActor(), $this->getTarget(), $this->created);
    }
}

license: mit


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Form for disfavoring a notice
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Form
 * @package   GNUsocial
 * @author    Evan Prodromou <evan@status.net>
 * @author    Sarven Capadisli <csarven@status.net>
 * @author    Mikael Nordfeldth <mmn@hethane.se>
 * @copyright 2009 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://www.gnu.org/software/social/
 */

if (!defined('GNUSOCIAL')) { exit(1); }

/**
 * Form for disfavoring a notice
 *
 * @category Form
 * @package  GNUsocial
 * @author   Evan Prodromou <evan@status.net>
 * @author   Sarven Capadisli <csarven@status.net>
 * @author   Mikael Nordfeldth <mmn@hethane.se>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://www.gnu.org/software/social/
 *
 * @see      FavorForm
 */
class DisfavorForm extends Form
{
    /**
     * Notice to disfavor
     */
    var $notice = null;

    /**
     * Constructor
     *
     * @param HTMLOutputter $out    output channel
     * @param Notice        $notice notice to disfavor
     */
    function __construct($out=null, $notice=null)
    {
        parent::__construct($out);

        $this->notice = $notice;
    }

    /**
     * ID of the form
     *
     * @return int ID of the form
     */
    function id()
    {
        return 'disfavor-' . $this->notice->id;
    }

    /**
     * Action of the form
     *
     * @return string URL of the action
     */
    function action()
    {
        return common_local_url('activityverb',
                                array('id'   => $this->notice->getID(),
                                      'verb' => ActivityUtils::resolveUri(ActivityVerb::UNFAVORITE, true)));
    }

    /**
     * Legend of the Form
     *
     * @return void
     */
    function formLegend()
    {
        // TRANS: Form legend for removing the favourite status for a favourite notice.
        $this->out->element('legend', null, _('Disfavor this notice'));
    }

    /**
     * Data elements
     *
     * @return void
     */

    function formData()
    {
        if (Event::handle('StartDisFavorNoticeForm', array($this, $this->notice))) {
            $this->out->hidden('notice-n'.$this->notice->id,
                               $this->notice->id,
                               'notice');
            Event::handle('EndDisFavorNoticeForm', array($this, $this->notice));
        }
    }

    /**
     * Action elements
     *
     * @return void
     */
    function formActions()
    {
        $this->out->submit('disfavor-submit-' . $this->notice->id,
                           // TRANS: Button text for removing the favourite status for a favourite notice.
                           _m('BUTTON','Disfavor favorite'),
                           'submit',
                           null,
                           // TRANS: Button title for removing the favourite status for a favourite notice.
                           _('Remove this notice from your list of favorite notices.'));
    }

    /**
     * Class of the form.
     *
     * @return string the form's class
     */
    function formClass()
    {
        return 'form_disfavor ajax';
    }
}


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Form for favoring a notice
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Form
 * @package   GNUsocial
 * @author    Evan Prodromou <evan@status.net>
 * @author    Sarven Capadisli <csarven@status.net>
 * @author    Mikael Nordfeldth <mmn@hethane.se>
 * @copyright 2009 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://www.gnu.org/software/social/
 */

if (!defined('GNUSOCIAL')) { exit(1); }

/**
 * Form for favoring a notice
 *
 * @category Form
 * @package  GNUsocial
 * @author   Evan Prodromou <evan@status.net>
 * @author   Sarven Capadisli <csarven@status.net>
 * @author   Mikael Nordfeldth <mmn@hethane.se>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://www.gnu.org/software/social/
 *
 * @see      DisfavorForm
 */
class FavorForm extends Form
{
    /**
     * Notice to favor
     */
    var $notice = null;

    /**
     * Constructor
     *
     * @param HTMLOutputter $out    output channel
     * @param Notice        $notice notice to favor
     */
    function __construct($out=null, $notice=null)
    {
        parent::__construct($out);

        $this->notice = $notice;
    }

    /**
     * ID of the form
     *
     * @return int ID of the form
     */
    function id()
    {
        return 'favor-' . $this->notice->id;
    }

    /**
     * Action of the form
     *
     * @return string URL of the action
     */
    function action()
    {
        return common_local_url('activityverb',
                                array('id'   => $this->notice->getID(),
                                      'verb' => ActivityUtils::resolveUri(ActivityVerb::FAVORITE, true)));
    }

    /**
     * Legend of the Form
     *
     * @return void
     */
    function formLegend()
    {
        // TRANS: Form legend for adding the favourite status to a notice.
        $this->out->element('legend', null, _('Favor this notice'));
    }

    /**
     * Data elements
     *
     * @return void
     */
    function formData()
    {
        if (Event::handle('StartFavorNoticeForm', array($this, $this->notice))) {
            $this->out->hidden('notice-n'.$this->notice->id,
                               $this->notice->id,
                               'notice');
            Event::handle('EndFavorNoticeForm', array($this, $this->notice));
        }
    }

    /**
     * Action elements
     *
     * @return void
     */
    function formActions()
    {
        $this->out->submit('favor-submit-' . $this->notice->id,
                           // TRANS: Button text for adding the favourite status to a notice.
                           _m('BUTTON','Favor'),
                           'submit',
                           null,
                           // TRANS: Button title for adding the favourite status to a notice.
                           _('Add this notice to your list of favorite notices.'));
    }

    /**
     * Class of the form.
     *
     * @return string the form's class
     */
    function formClass()
    {
        return 'form_favor ajax';
    }
}


code:
<?php

class FavCommand extends Command
{
    var $other = null;

    function __construct($user, $other)
    {
        parent::__construct($user);
        $this->other = $other;
    }

    function handle($channel)
    {
        $notice = $this->getNotice($this->other);

        try {
            $fave = Fave::addNew($this->user->getProfile(), $notice);
        } catch (Exception $e) {
            $channel->error($this->user, $e->getMessage());
            return;
        }

        // TRANS: Text shown when a notice has been marked as favourite successfully.
        $channel->output($this->user, _('Notice marked as fave.'));
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Notice stream for favorites
 *
 * PHP version 5
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Stream
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

if (!defined('GNUSOCIAL')) { exit(1); }

/**
 * Notice stream for favorites
 *
 * @category  Stream
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class FaveNoticeStream extends ScopingNoticeStream
{
    function __construct(Profile $target, Profile $scoped=null)
    {
        $stream = new RawFaveNoticeStream($target, $scoped);
        if ($target->sameAs($scoped)) {
            $key = 'fave:ids_by_user_own:'.$target->getID();
        } else {
            $key = 'fave:ids_by_user:'.$target->getID();
        }
        parent::__construct(new CachingNoticeStream($stream, $key), $scoped);
    }
}

/**
 * Raw notice stream for favorites
 *
 * @category  Stream
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class RawFaveNoticeStream extends NoticeStream
{
    protected $user_id;
    protected $own;

    protected $selectVerbs = array();

    function __construct(Profile $target, Profile $scoped=null)
    {
        parent::__construct();

        $this->user_id = $target->getID();
        $this->own     = $target->sameAs($scoped);
    }

    /**
     * Note that the sorting for this is by order of *fave* not order of *notice*.
     *
     * @fixme add since_id, max_id support?
     *
     * @param <type> $user_id
     * @param <type> $own
     * @param <type> $offset
     * @param <type> $limit
     * @param <type> $since_id
     * @param <type> $max_id
     * @return <type>
     */
    function getNoticeIds($offset, $limit, $since_id, $max_id)
    {
        $fav = new Fave();
        $qry = null;

        if ($this->own) {
            $qry  = 'SELECT fave.* FROM fave ';
            $qry .= 'WHERE fave.user_id = ' . $this->user_id . ' ';
        } else {
             $qry =  'SELECT fave.* FROM fave ';
             $qry .= 'INNER JOIN notice ON fave.notice_id = notice.id ';
             $qry .= 'WHERE fave.user_id = ' . $this->user_id . ' ';
             $qry .= 'AND notice.is_local != ' . Notice::GATEWAY . ' ';
        }

        if ($since_id != 0) {
            $qry .= 'AND notice_id > ' . $since_id . ' ';
        }

        if ($max_id != 0) {
            $qry .= 'AND notice_id <= ' . $max_id . ' ';
        }

        // NOTE: we sort by fave time, not by notice time!

        $qry .= 'ORDER BY modified DESC ';

        if (!is_null($offset)) {
            $qry .= "LIMIT $limit OFFSET $offset";
        }

        $fav->query($qry);

        $ids = array();

        while ($fav->fetch()) {
            $ids[] = $fav->notice_id;
        }

        $fav->free();
        unset($fav);

        return $ids;
    }
}


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Base class for sections showing lists of notices
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Widget
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2009,2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

if (!defined('STATUSNET') && !defined('LACONICA')) {
    exit(1);
}

/**
 * Base class for sections showing lists of notices
 *
 * These are the widgets that show interesting data about a person
 * group, or site.
 *
 * @category Widget
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class PopularNoticeSection extends NoticeSection
{
    protected $viewer;

    function __construct($out, Profile $viewer=null)
    {
        parent::__construct($out);
        $this->viewer = $viewer;
    }

    function getNotices()
    {
        $stream = new PopularNoticeStream($this->viewer);
        return $stream->getNotices(0, NOTICES_PER_SECTION + 1);
    }

    function title()
    {
        // TRANS: Title for favourited notices section.
        return _('Popular notices');
    }

    function divId()
    {
        return 'popular_section';
    }

    function moreUrl()
    {
        if (common_config('singleuser', 'enabled')) {
            $user = User::singleUser();
            common_local_url('showfavorites', array('nickname' =>
                                                    $user->nickname));
        } else {
            return common_local_url('favorited');
        }
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Stream of notices sorted by popularity
 *
 * PHP version 5
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Popular
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

if (!defined('GNUSOCIAL')) { exit(1); }

/**
 * Stream of notices sorted by popularity
 *
 * @category  Popular
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

class PopularNoticeStream extends ScopingNoticeStream
{
    function __construct(Profile $scoped=null)
    {
        parent::__construct(new CachingNoticeStream(new RawPopularNoticeStream(),
                                                    'popular',
                                                    false),
                            $scoped);
    }
}

class RawPopularNoticeStream extends NoticeStream
{
    function getNoticeIds($offset, $limit, $since_id, $max_id)
    {
        $weightexpr = common_sql_weight('modified', common_config('popular', 'dropoff'));
        $cutoff = sprintf("modified > '%s'",
                          common_sql_date(time() - common_config('popular', 'cutoff')));

        $fave = new Fave();
        $fave->selectAdd();
        $fave->selectAdd('notice_id');
        $fave->selectAdd("$weightexpr as weight");
        $fave->whereAdd($cutoff);
        $fave->orderBy('weight DESC');
        $fave->groupBy('notice_id');

        if (!is_null($offset)) {
            $fave->limit($offset, $limit);
        }

        // FIXME: $since_id, $max_id are ignored

        $ids = array();

        if ($fave->find()) {
            while ($fave->fetch()) {
                $ids[] = $fave->notice_id;
            }
        }

        return $ids;
    }
}


code:
<?php
/**
 * GNU Social - a federating social network
 * Copyright (C) 2014, Free Software Foundation, Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

if (!defined('GNUSOCIAL')) { exit(1); }

/**
 * Placeholder for showing faves...
 */
class ThreadedNoticeListFavesItem extends NoticeListActorsItem
{
    function getProfiles()
    {
        $faves = Fave::byNotice($this->notice);
        $profiles = array();
        foreach ($faves as $fave) {
            $profiles[] = $fave->user_id;
        }
        return $profiles;
    }

    function magicList($items)
    {
        if (count($items) > 4) {
            return parent::magicList(array_slice($items, 0, 3));
        } else {
            return parent::magicList($items);
        }
    }

    function getListMessage($count, $you)
    {
        if ($count == 1 && $you) {
            // darn first person being different from third person!
            // TRANS: List message for notice favoured by logged in user.
            return _m('FAVELIST', 'You like this.');
        } else if ($count > 4) {
            // TRANS: List message for when more than 4 people like something.
            // TRANS: %%s is a list of users liking a notice, %d is the number over 4 that like the notice.
            // TRANS: Plural is decided on the total number of users liking the notice (count of %%s + %d).
            return sprintf(_m('%%s and %d others like this.',
                              '%%s and %d others like this.',
                              $count),
                           $count - 3);
        } else {
            // TRANS: List message for favoured notices.
            // TRANS: %%s is a list of users liking a notice.
            // TRANS: Plural is based on the number of of users that have favoured a notice.
            return sprintf(_m('%%s likes this.',
                              '%%s like this.',
                              $count),
                           $count);
        }
    }

    function showStart()
    {
        $this->out->elementStart('li', array('class' => 'notice-data notice-faves'));
    }

    function showEnd()
    {
        $this->out->elementEnd('li');
    }
}


code:
<?php
/**
 * GNU Social - a federating social network
 * Copyright (C) 2014, Free Software Foundation, Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

if (!defined('GNUSOCIAL')) { exit(1); }

// @todo FIXME: needs documentation.
class ThreadedNoticeListInlineFavesItem extends ThreadedNoticeListFavesItem
{
    function showStart()
    {
        $this->out->elementStart('div', array('class' => 'notice-faves'));
    }

    function showEnd()
    {
        $this->out->elementEnd('div');
    }
}


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-08 18:20+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:421
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:423
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:473
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:486
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Page/dialog box title when a notice is marked as favorite already
#: FavoritePlugin.php:508
msgctxt "TITLE"
msgid "Unmark notice as favorite"
msgstr ""

#. TRANS: Page/dialog box title when a notice is not marked as favorite
#: FavoritePlugin.php:510
msgctxt "TITLE"
msgid "Mark notice as favorite"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:568
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: classes/Fave.php:108
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:124
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite notice.
#: forms/disfavor.php:125
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans (http://www.transifex.com/gnu-social/gnu-social/language/af/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: af\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "Die kennisgewing bestaan nie."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic (http://www.transifex.com/gnu-social/gnu-social/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr "محبوبة"

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "الإشعار المطلوب غير موجود."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgstr[4] ""
msgstr[5] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgstr[4] ""
msgstr[5] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic (Egypt) (http://www.transifex.com/gnu-social/gnu-social/language/ar_EG/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar_EG\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "لا إشعار كهذا."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgstr[4] ""
msgstr[5] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgstr[4] ""
msgstr[5] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 17:29+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Asturian (http://www.transifex.com/gnu-social/gnu-social/language/ast/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ast\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr ""

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Belarusian (Tarask) (http://www.transifex.com/gnu-social/gnu-social/language/be@tarask/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: be@tarask\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "Няма такога запісу."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian (http://www.transifex.com/gnu-social/gnu-social/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "Няма такава бележка."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bengali (India) (http://www.transifex.com/gnu-social/gnu-social/language/bn_IN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bn_IN\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr ""

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Breton (http://www.transifex.com/gnu-social/gnu-social/language/br/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: br\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr "Poblek"

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "N'eus ket eus an ali-se."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan (http://www.transifex.com/gnu-social/gnu-social/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr "Populars"

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "No existeix aquest avís."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# digitaldreamer <digitaldreamer@email.cz>, 2014
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:42+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Czech (http://www.transifex.com/gnu-social/gnu-social/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr "Přidat k oblíbeným"

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr "Odebrat z oblíbených"

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr "přidat poslední sdělení uživatele k oblíbeným"

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr "přidat sdělení s tímto ID k oblíbeným"

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr "Oblíbené"

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr "Populární"

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr "Oblíbené (like) skrze ActivityStreams."

#: actions/favor.php:57
msgid "No such notice."
msgstr "Sdělení neexistuje."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr "%1$s nemá oprávnění odpovídat na sdělení %2$d."

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr "Nepodařilo se uložit nový objekt typu %s"

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr "Toto se líbí vám."

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] "Komu se to líbí: %%s a %d další."
msgstr[1] "Komu se to líbí: %%s a %d další."
msgstr[2] "Komu se to líbí: %%s a %d dalších."

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] "Komu se to líbí: %%s."
msgstr[1] "Komu se to líbí: %%s."
msgstr[2] "Komu se to líbí: %%s."


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish (http://www.transifex.com/gnu-social/gnu-social/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "Ingen sådan meddelelse."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# D P, 2015
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-18 23:33+0000\n"
"Last-Translator: D P\n"
"Language-Team: German (http://www.transifex.com/gnu-social/gnu-social/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr "Favoriten"

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr "Beliebt"

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "Unbekannte Nachricht."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr "Dir gefällt das."

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek (http://www.transifex.com/gnu-social/gnu-social/language/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr ""

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# Luke Hollins <luke@farcry.ca>, 2015
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-03-07 15:41+0000\n"
"Last-Translator: Luke Hollins <luke@farcry.ca>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/gnu-social/gnu-social/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr "Favour"

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr "Disfavour favourite"

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr "add user's last notice as a 'fave'"

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr "add notice with the given id as a 'fave'"

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr "Favourites"

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr "Popular"

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr "Favourites (likes) using ActivityStreams."

#: actions/favor.php:57
msgid "No such notice."
msgstr "No such notice."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr "%1$s has no right to reply to notice %2$d."

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr "Could not store new object of type %s"

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr "You like this."

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] "%%s and %d others like this."
msgstr[1] "%%s and %d others like this."

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] "%%s likes this."
msgstr[1] "%%s like this."


code:
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Esperanto (http://www.transifex.com/gnu-social/gnu-social/language/eo/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: eo\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Button text for adding the favourite status to a notice.
#: forms/favor.php:122
msgctxt "BUTTON"
msgid "Favor"
msgstr ""

#. TRANS: Button text for removing the favourite status for a favourite
#. notice.
#: forms/disfavor.php:123
msgctxt "BUTTON"
msgid "Disfavor favorite"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav <nickname>".
#: FavoritePlugin.php:415
msgctxt "COMMANDHELP"
msgid "add user's last notice as a 'fave'"
msgstr ""

#. TRANS: Help message for IM/SMS command "fav #<notice_id>".
#: FavoritePlugin.php:417
msgctxt "COMMANDHELP"
msgid "add notice with the given id as a 'fave'"
msgstr ""

#. TRANS: Menu item in personal group navigation menu.
#: FavoritePlugin.php:469
msgctxt "MENU"
msgid "Favorites"
msgstr ""

#. TRANS: Menu item in search group navigation panel.
#: FavoritePlugin.php:482
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Plugin description.
#: FavoritePlugin.php:508
msgid "Favorites (likes) using ActivityStreams."
msgstr ""

#: actions/favor.php:57
msgid "No such notice."
msgstr "Ne estas tiu avizo."

#. TRANS: Client error displayed when trying to reply to a notice a the target
#. has no access to.
#. TRANS: %1$s is a user nickname, %2$d is a notice ID (number).
#: actions/favor.php:62
#, php-format
msgid "%1$s has no right to reply to notice %2$d."
msgstr ""

#: classes/Fave.php:86
#, php-format
msgid "Could not store new object of type %s"
msgstr ""

#. TRANS: List message for notice favoured by logged in user.
#: lib/threadednoticelistfavesitem.php:51
msgctxt "FAVELIST"
msgid "You like this."
msgstr ""

#. TRANS: List message for when more than 4 people like something.
#. TRANS: %%s is a list of users liking a notice, %d is the number over 4 that
#. like the notice.
#. TRANS: Plural is decided on the total number of users liking the notice
#. (count of %%s + %d).
#: lib/threadednoticelistfavesitem.php:56
#, php-format
msgid "%%s and %d others like this."
msgid_plural "%%s and %d others like this."
msgstr[0] ""
msgstr[1] ""

#. TRANS: List message for favoured notices.
#. TRANS: %%s is a list of users liking a notice.
#. TRANS: Plural is based on the number of of users that have favoured a
#. notice.
#: lib/threadednoticelistfavesitem.php:64
#, php-format
msgid "%%s likes this."
msgid_plural "%%s like this."
msgstr[0] ""
msgstr[1] ""