code:
# Translation of StatusNet - GoogleAnalytics to French (français)
# Exported from translatewiki.net
#
# Author: Verdy p
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: French <https://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Utiliser Google Analytics "
"pour tracer les accès Web."


code:
# Translation of StatusNet - GoogleAnalytics to Galician (galego)
# Exported from translatewiki.net
#
# Author: Toliño
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Galician <https://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: gl\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Usar o Google Analytics "
"para seguir o acceso á web."

license: mit


code:
# Translation of StatusNet - GoogleAnalytics to Hebrew (עברית)
# Exported from translatewiki.net
#
# Author: YaronSh
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Hebrew <https://translatewiki.net/wiki/Portal:he>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: he\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"שימוש ב־Google Analytics "
"כדי לעקוב אחר גישה לאתרים."


code:
# Translation of StatusNet - GoogleAnalytics to Interlingua (interlingua)
# Exported from translatewiki.net
#
# Author: McDutchie
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Interlingua <https://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Usar Google Analytics pro "
"traciar le accessos web."


code:
# Translation of StatusNet - GoogleAnalytics to Indonesian (Bahasa Indonesia)
# Exported from translatewiki.net
#
# Author: Farras
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Indonesian <https://translatewiki.net/wiki/Portal:id>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: id\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Gunakan Google Analytics "
"untuk melacak akses web."


code:
# Translation of StatusNet - GoogleAnalytics to Italian (italiano)
# Exported from translatewiki.net
#
# Author: Ximo17
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Utilizza Google Analytics "
"per monitorare l'accesso web."


code:
# Translation of StatusNet - GoogleAnalytics to Macedonian (македонски)
# Exported from translatewiki.net
#
# Author: Bjankuloski06
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Macedonian <https://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Користи Google Analytics за "
"следење на мрежен пристап."


code:
# Translation of StatusNet - GoogleAnalytics to Norwegian Bokmål (norsk (bokmål))
# Exported from translatewiki.net
#
# Author: Nghtwlkr
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Norwegian Bokmål <https://translatewiki.net/wiki/Portal:nb>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: nb\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Bruk Google Analytics til å "
"spore nettilgang."


code:
# Translation of StatusNet - GoogleAnalytics to Dutch (Nederlands)
# Exported from translatewiki.net
#
# Author: Siebrand
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Dutch <https://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Google Analytics gebruiken "
"om webtoegang te volgen."


code:
# Translation of StatusNet - GoogleAnalytics to Portuguese (português)
# Exported from translatewiki.net
#
# Author: GTNS
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Portuguese <https://translatewiki.net/wiki/Portal:pt>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: pt\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Usar o Google Analytics "
"para rastrear o acesso à web."


code:
# Translation of StatusNet - GoogleAnalytics to Brazilian Portuguese (português do Brasil)
# Exported from translatewiki.net
#
# Author: Giro720
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Brazilian Portuguese <https://translatewiki.net/wiki/Portal:"
"pt-br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: pt-br\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Usar Google Analytics para "
"fazer rastreamento de acessos ao site."


code:
# Translation of StatusNet - GoogleAnalytics to Russian (русский)
# Exported from translatewiki.net
#
# Author: Сrower
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Russian <https://translatewiki.net/wiki/Portal:ru>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ru\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Использование Google Analytics</"
"a> для отслеживания за посещением веб-страницы."


code:
# Translation of StatusNet - GoogleAnalytics to Swedish (svenska)
# Exported from translatewiki.net
#
# Author: WikiPhoenix
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:44+0000\n"
"Language-Team: Swedish <https://translatewiki.net/wiki/Portal:sv>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: sv\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Använd Google Analytics för "
"att spåra webbåtkomst."


code:
# Translation of StatusNet - GoogleAnalytics to Tagalog (Tagalog)
# Exported from translatewiki.net
#
# Author: AnakngAraw
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Tagalog <https://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Gamitin ang Analitiks ng "
"Google upang tugaygayin ang pagpunta sa web."


code:
# Translation of StatusNet - GoogleAnalytics to Ukrainian (українська)
# Exported from translatewiki.net
#
# Author: Boogie
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Ukrainian <https://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"Використання Google Analytics</"
"a> для стеження за відвідуваністю веб-сторінки."


code:
# Translation of StatusNet - GoogleAnalytics to Simplified Chinese (中文（简体）)
# Exported from translatewiki.net
#
# Author: ZhengYiFeng
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GoogleAnalytics\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Simplified Chinese <https://translatewiki.net/wiki/Portal:zh-"
"hans>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:21+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: #out-statusnet-plugin-googleanalytics\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: Plugin description.
msgid ""
"Use Google Analytics to "
"track web access."
msgstr ""
"使用 Google Analytics 跟踪记"
"录网站访问。"


code:
<?php
/*
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2009,2011 StatusNet, 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/>.
 */

/**
 * @package GravatarPlugin
 * @maintainer Eric Helgeson <erichelgeson@gmail.com>
 */

if (!defined('STATUSNET') && !defined('LACONICA')) {
    // This check helps protect against security problems;
    // your code file can't be executed directly from the web.
    exit(1);
}

class GravatarPlugin extends Plugin
{
    function onEndProfileGetAvatar($profile, $size, &$avatar)
    {
        if (empty($avatar)) {
            try {
                $user = $profile->getUser();
                if (!empty($user->email)) {
                    // Fake one!
                    $avatar = new Avatar();
                    $avatar->width = $avatar->height = $size;
                    $avatar->url = $this->gravatar_url($user->email, $size);
                    return false;
                }
            } catch (NoSuchUserException $e) {
                return true;
            }
        }

        return true;
    }

    function gravatar_url($email, $size)
    {
        $url = "https://secure.gravatar.com/avatar.php?gravatar_id=".
                md5(strtolower($email)).
                "&default=".urlencode(Avatar::defaultImage($size)).
                "&size=".$size;
            return $url;
    }

    function onPluginVersion(&$versions)
    {
        $versions[] = array('name' => 'Gravatar',
                            'version' => GNUSOCIAL_VERSION,
                            'author' => 'Eric Helgeson, Evan Prodromou',
                            'homepage' => 'http://status.net/wiki/Plugin:Gravatar',
                            'rawdescription' =>
                            // TRANS: Plugin decsription.
                            _m('The Gravatar plugin allows users to use their Gravatar with StatusNet.'));

        return true;
    }
}


code:
GravatarPlugin 0.1

About:
This will allow users to use their Gravatar Avatar with your StatusNet install.

Configuration:
add this to your config.php:
addPlugin('Gravatar', array());

To do:
Site default all on for gravatar by default
Migration Script

path: plugins/Gravatar/README


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: 2012-06-30 11:07+0000\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#. TRANS: Plugin decsription.
#: GravatarPlugin.php:66
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""


code:
# Translation of StatusNet - Gravatar to Breton (Brezhoneg)
# Expored from translatewiki.net
#
# Author: Y-M D
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-15 00:20+0000\n"
"PO-Revision-Date: 2011-01-15 00:23:48+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-01-10 18:26:02+0000\n"
"X-Generator: MediaWiki 1.18alpha (r80364); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#: GravatarPlugin.php:60
msgid "Set Gravatar"
msgstr ""

#: GravatarPlugin.php:63
msgid "If you want to use your Gravatar image, click \"Add\"."
msgstr ""

#: GravatarPlugin.php:68
msgid "Add"
msgstr "Ouzhpennañ"

#: GravatarPlugin.php:78
msgid "Remove Gravatar"
msgstr ""

#: GravatarPlugin.php:81
msgid "If you want to remove your Gravatar image, click \"Remove\"."
msgstr ""

#: GravatarPlugin.php:86
msgid "Remove"
msgstr "Dilemel"

#: GravatarPlugin.php:91
msgid "To use a Gravatar first enter in an email address."
msgstr ""

#: GravatarPlugin.php:140
msgid "You do not have an email address set in your profile."
msgstr ""

#: GravatarPlugin.php:158
msgid "Failed to save Gravatar to the database."
msgstr ""

#: GravatarPlugin.php:162
msgid "Gravatar added."
msgstr ""

#: GravatarPlugin.php:180
msgid "Gravatar removed."
msgstr ""

#: GravatarPlugin.php:200
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""


code:
# Translation of StatusNet - Gravatar to Catalan (català)
# Exported from translatewiki.net
#
# Author: Toniher
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Catalan <https://translatewiki.net/wiki/Portal:ca>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ca\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"El connector del Gravatar permet als usuaris fer servir llur Gravatar amb l'StatusNet."


code:
# Translation of StatusNet - Gravatar to German (Deutsch)
# Exported from translatewiki.net
#
# Author: Apmon
# Author: The Evil IP address
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: German <https://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: de\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Das Gravatar-Plugin erlaubt es Benutzern, ihr Gravatar mit StatusNet zu verwenden."


code:
# Translation of StatusNet - Gravatar to Spanish (español)
# Exported from translatewiki.net
#
# Author: Peter17
# Author: Translationista
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Spanish <https://translatewiki.net/wiki/Portal:es>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: es\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"La extensión Gravatar permite a los usuarios utilizar su Gravatar con StatusNet."


code:
# Translation of StatusNet - Gravatar to Basque (euskara)
# Exported from translatewiki.net
#
# Author: Artsuaga
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Basque <https://translatewiki.net/wiki/Portal:eu>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: eu\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Gravatar pluginak erabiltzaileei heuren Gravatarra StatusNet-en erabiltzen uzten die."


code:
# Translation of StatusNet - Gravatar to French (français)
# Exported from translatewiki.net
#
# Author: Verdy p
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: French <https://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Le greffon Gravatar permet aux utilisateurs d’utiliser leur image Gravatar avec StatusNet."


code:
# Translation of StatusNet - Gravatar to Galician (galego)
# Exported from translatewiki.net
#
# Author: Toliño
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Galician <https://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: gl\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"O complemento Gravatar permite aos usuarios usar o seu Gravatar co StatusNet."


code:
# Translation of StatusNet - Gravatar to Hebrew (עברית)
# Exported from translatewiki.net
#
# Author: Amire80
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Hebrew <https://translatewiki.net/wiki/Portal:he>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: he\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"תוסף Gravatar מאפשר למשתמשים להציג את ה־Gravatar שלהם בסטטוסנט."


code:
# Translation of StatusNet - Gravatar to Interlingua (interlingua)
# Exported from translatewiki.net
#
# Author: McDutchie
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Interlingua <https://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Le plug-in Gravatar permitte al usatores de usar lor Gravatar con StatusNet."


code:
# Translation of StatusNet - Gravatar to Italian (italiano)
# Exported from translatewiki.net
#
# Author: Ximo17
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Il plugin Gravatar consente agli utenti di utilizzare i loro Gravatar con StatusNet."


code:
# Translation of StatusNet - Gravatar to Macedonian (македонски)
# Exported from translatewiki.net
#
# Author: Bjankuloski06
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:45+0000\n"
"Language-Team: Macedonian <https://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Приклучокот Gravatar им овозможува на корисниците да го користат својот Gravatar со StatusNet."


code:
# Translation of StatusNet - Gravatar to Dutch (Nederlands)
# Exported from translatewiki.net
#
# Author: Siebrand
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Dutch <https://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"De plug-in Gravatar maak het mogelijk dat gebruikers hun Gravatar gebruiken in StatusNet."


code:
# Translation of StatusNet - Gravatar to Polish (polski)
# Exported from translatewiki.net
#
# Author: Raven
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Polish <https://translatewiki.net/wiki/Portal:pl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: pl\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && "
"(n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Wtyczka Gravatar umożliwia użytkownikom używanie obrazów Gravatar w StatusNet."


code:
# Translation of StatusNet - Gravatar to Portuguese (português)
# Exported from translatewiki.net
#
# Author: GTNS
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Portuguese <https://translatewiki.net/wiki/Portal:pt>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: pt\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"O plugin Gravatar permite que os utilizadores usem o seu Gravatar com o StatusNet."


code:
# Translation of StatusNet - Gravatar to Swedish (svenska)
# Exported from translatewiki.net
#
# Author: WikiPhoenix
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Swedish <https://translatewiki.net/wiki/Portal:sv>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: sv\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Gravatar-tillägget låter användare använda deras Gravatar med StatusNet."


code:
# Translation of StatusNet - Gravatar to Telugu (తెలుగు)
# Expored from translatewiki.net
#
# Author: Veeven
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-15 00:20+0000\n"
"PO-Revision-Date: 2011-01-15 00:23:49+0000\n"
"Language-Team: Telugu <http://translatewiki.net/wiki/Portal:te>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-01-10 18:26:02+0000\n"
"X-Generator: MediaWiki 1.18alpha (r80364); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: te\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: GravatarPlugin.php:60
msgid "Set Gravatar"
msgstr ""

#: GravatarPlugin.php:63
msgid "If you want to use your Gravatar image, click \"Add\"."
msgstr ""

#: GravatarPlugin.php:68
msgid "Add"
msgstr "చేర్చు"

#: GravatarPlugin.php:78
msgid "Remove Gravatar"
msgstr ""

#: GravatarPlugin.php:81
msgid "If you want to remove your Gravatar image, click \"Remove\"."
msgstr ""

#: GravatarPlugin.php:86
msgid "Remove"
msgstr "తొలగించు"

#: GravatarPlugin.php:91
msgid "To use a Gravatar first enter in an email address."
msgstr ""

#: GravatarPlugin.php:140
msgid "You do not have an email address set in your profile."
msgstr ""

#: GravatarPlugin.php:158
msgid "Failed to save Gravatar to the database."
msgstr ""

#: GravatarPlugin.php:162
msgid "Gravatar added."
msgstr ""

#: GravatarPlugin.php:180
msgid "Gravatar removed."
msgstr ""

#: GravatarPlugin.php:200
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""


code:
# Translation of StatusNet - Gravatar to Tagalog (Tagalog)
# Exported from translatewiki.net
#
# Author: AnakngAraw
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Tagalog <https://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Ang pamasak na Gravatar ay nagpapahintulot sa mga tagagamit na gamitin ang "
"kanilang Gravatar na may StatusNet."


code:
# Translation of StatusNet - Gravatar to Ukrainian (українська)
# Exported from translatewiki.net
#
# Author: Boogie
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Ukrainian <https://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Додаток Gravatar дозволяє користувачам встановлювати аватарки з Gravatar для сайту StatusNet."


code:
# Translation of StatusNet - Gravatar to Simplified Chinese (中文（简体）)
# Exported from translatewiki.net
#
# Author: ZhengYiFeng
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Gravatar\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Simplified Chinese <https://translatewiki.net/wiki/Portal:zh-"
"hans>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: #out-statusnet-plugin-gravatar\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: Plugin decsription.
msgid ""
"The Gravatar plugin allows users to use their Gravatar with StatusNet."
msgstr ""
"Gravatar 插件可以让用户在 StatusNet 站点使用自己的 Gravatar。"


code:
<?php
/*
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2010, StatusNet, 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/>.
 */

/**
 * @package GroupFavoritedPlugin
 * @maintainer Brion Vibber <brion@status.net>
 */

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

class GroupFavoritedPlugin extends Plugin
{
    /**
     * Hook for RouterInitialized event.
     *
     * @param URLMapper $m path-to-action mapper
     * @return boolean hook return
     */
    function onRouterInitialized(URLMapper $m)
    {
        $m->connect('group/:nickname/favorited',
                    array('action' => 'groupfavorited'),
                    array('nickname' => '[a-zA-Z0-9]+'));

        return true;
    }

    function onEndGroupGroupNav(Menu $nav)
    {
        $action_name = $nav->action->trimmed('action');
        $nickname = $nav->group->nickname;
        $nav->out->menuItem(common_local_url('groupfavorited', array('nickname' =>
                                                                     $nickname)),
                            // TRANS: Menu item in the group navigation page.
                            _m('MENU', 'Popular'),
                            // TRANS: Tooltip for menu item in the group navigation page.
                            // TRANS: %s is the nickname of the group.
                            sprintf(_m('TOOLTIP','Popular notices in %s group'), $nickname),
                            $action_name == 'groupfavorited',
                            'nav_group_group');
    }

    /**
     * Provide plugin version information.
     *
     * This data is used when showing the version page.
     *
     * @param array &$versions array of version data arrays; see EVENTS.txt
     *
     * @return boolean hook value
     */
    function onPluginVersion(array &$versions)
    {
        $url = 'http://status.net/wiki/Plugin:GroupFavorited';

        $versions[] = array('name' => 'GroupFavorited',
            'version' => GNUSOCIAL_VERSION,
            'author' => 'Brion Vibber',
            'homepage' => $url,
            'rawdescription' =>
            // TRANS: Plugin description.
            _m('This plugin adds a menu item for popular notices in groups.'));

        return true;
    }
}


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * List of popular 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  Public
 * @package   StatusNet
 * @author    Zach Copley <zach@status.net>
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2008-2009 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);
}

class GroupFavoritedAction extends ShowgroupAction
{
    /**
     * Title of the page
     *
     * @return string page title, with page number
     */
    function title()
    {
        $base = $this->group->getFancyName();

        if ($this->page == 1) {
            // TRANS: %s is a group name.
            return sprintf(_m('Popular posts in %s group'), $base);
        } else {
            // TRANS: %1$s is a group name, %2$s is a group number.
            return sprintf(_m('Popular posts in %1$s group, page %2$d'),
                           $base,
                           $this->page);
        }
    }

    /**
     * Content area
     *
     * Shows the list of popular notices
     *
     * @return void
     */
    function showContent()
    {
        $groupId = intval($this->group->id);
        $weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
        $cutoff = sprintf("fave.modified > '%s'",
                          common_sql_date(time() - common_config('popular', 'cutoff')));

        $qry = 'SELECT notice.*, '.
          $weightexpr . ' as weight ' .
          'FROM notice ' .
          "JOIN group_inbox ON notice.id = group_inbox.notice_id " .
          'JOIN fave ON notice.id = fave.notice_id ' .
          "WHERE $cutoff AND group_id = $groupId " .
          'GROUP BY id,profile_id,uri,content,rendered,url,created,notice.modified,reply_to,is_local,source,notice.conversation ' .
          'ORDER BY weight DESC';

        $offset = ($this->page - 1) * NOTICES_PER_PAGE;
        $limit  = NOTICES_PER_PAGE + 1;

        if (common_config('db', 'type') == 'pgsql') {
            $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
        } else {
            $qry .= ' LIMIT ' . $offset . ', ' . $limit;
        }

        $notice = Memcached_DataObject::cachedQuery('Notice',
                                                    $qry,
                                                    600);

        $nl = new NoticeList($notice, $this);

        $cnt = $nl->show();

        if ($cnt == 0) {
            //$this->showEmptyList();
        }

        $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE,
                          $this->page, 'groupfavorited',
                          array('nickname' => $this->group->nickname));
    }
}


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: 2012-06-30 11:07+0000\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#. TRANS: Menu item in the group navigation page.
#: GroupFavoritedPlugin.php:72
msgctxt "MENU"
msgid "Popular"
msgstr ""

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#: GroupFavoritedPlugin.php:75
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr ""

#. TRANS: Plugin description.
#: GroupFavoritedPlugin.php:99
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""

#. TRANS: %s is a group name.
#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr ""

#. TRANS: %1$s is a group name, %2$s is a group number.
#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""


code:
# Translation of StatusNet - GroupFavorited to Arabic (العربية)
# Exported from translatewiki.net
#
# Author: OsamaK
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Arabic <https://translatewiki.net/wiki/Portal:ar>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ar\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\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: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "محبوبة"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "إشعارات محبوبة في مجموعة %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr ""

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""


code:
# Translation of StatusNet - GroupFavorited to Breton (brezhoneg)
# Exported from translatewiki.net
#
# Author: Y-M D
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Breton <https://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Poblek"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Kemennadennoù poblek er strollad %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr ""

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""


code:
# Translation of StatusNet - GroupFavorited to Catalan (català)
# Exported from translatewiki.net
#
# Author: Toniher
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Catalan <https://translatewiki.net/wiki/Portal:ca>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ca\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Populars"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Avisos populars al grup %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Aquest connector afegeix un element de menú amb els avisos popular dels "
"grups."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Entrades populars al grup %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Entrades populars al grup %1$s, pàgina %2$d"


code:
# Translation of StatusNet - GroupFavorited to German (Deutsch)
# Exported from translatewiki.net
#
# Author: Michael
# Author: The Evil IP address
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: German <https://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: de\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Beliebt"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Beliebte Nachrichten in der %s-Gruppe"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Dieses Plugin fügt einen Menüeintrag mit den beliebtesten Nachrichten einer "
"Gruppen ein."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Beliebte Beiträge in der %s-Gruppe"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Beliebte Beiträge in der %1$s-Gruppe, Seite %2$d"


code:
# Translation of StatusNet - GroupFavorited to Spanish (español)
# Exported from translatewiki.net
#
# Author: Translationista
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Spanish <https://translatewiki.net/wiki/Portal:es>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: es\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Popular"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Mensajes populares en el grupo %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Esta extensión añade un elemento de menú para los mensajes populares en "
"grupos."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Mensajes populares en el grupo %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Mensajes populares en el grupo %1$s, página %2$d"


code:
# Translation of StatusNet - GroupFavorited to Basque (euskara)
# Exported from translatewiki.net
#
# Author: Artsuaga
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:46+0000\n"
"Language-Team: Basque <https://translatewiki.net/wiki/Portal:eu>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: eu\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Arrakastatsua"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Ohar arrakastatsuak %s taldean"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr "Plugin honek taldeetako ohar arrakastatsuentzako menu bat gehitzen du."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Sarrera arrakastatsuak %s taldean"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Sarrera arrakastatsuak %1$s taldean, %2$d. orria"


code:
# Translation of StatusNet - GroupFavorited to French (français)
# Exported from translatewiki.net
#
# Author: Peter17
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: French <https://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Populaires"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Avis populaires dans le groupe %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Cette extension ajoute un élément de menu pour les messages populaires dans "
"les groupes."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Messages populaires dans le groupe %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Messages populaires dans le groupe %1$s, page %2$d"


code:
# Translation of StatusNet - GroupFavorited to Galician (galego)
# Exported from translatewiki.net
#
# Author: Toliño
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Galician <https://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: gl\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Populares"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Notas populares no grupo %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Este complemento engade un elemento de menú para as notas populares nos "
"grupos."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Mensaxes populares no grupo %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Mensaxes populares no grupo %1$s, páxina %2$d"


code:
# Translation of StatusNet - GroupFavorited to Interlingua (interlingua)
# Exported from translatewiki.net
#
# Author: McDutchie
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Interlingua <https://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Popular"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Notas popular in gruppo %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr "Iste plug-in adde un option de menu pro notas popular in gruppos."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Messages popular in gruppo %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Messages popular in gruppo %1$s, pagina %2$d"


code:
# Translation of StatusNet - GroupFavorited to Italian (italiano)
# Exported from translatewiki.net
#
# Author: Ximo17
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Popolare"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Notizie popolari nel gruppo %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Questo plugin aggiunge una voce di menu per le notizie popolari contenute "
"nei gruppi."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Post popolari nel gruppo %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Post popolari nel gruppo %1$s, page %2$d"


code:
# Translation of StatusNet - GroupFavorited to Macedonian (македонски)
# Exported from translatewiki.net
#
# Author: Bjankuloski06
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Macedonian <https://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Популарни"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Популарни забелешки во групата %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Овој приклучок додава елемент во менито за популарни забелешки во групи."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Популарни објави во групата %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Популарни објави во групата %1$s, страница %2$d"


code:
# Translation of StatusNet - GroupFavorited to Dutch (Nederlands)
# Exported from translatewiki.net
#
# Author: SPQRobin
# Author: Siebrand
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Dutch <https://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Populair"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Populaire mededelingen in de groep %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Deze plug-in voegt een menukeuze toe voor populaire mededelingen in groepen."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Populaire berichten in de groep %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Populaire berichten in de groep %1$s, pagina %2$d"


code:
# Translation of StatusNet - GroupFavorited to Russian (русский)
# Exported from translatewiki.net
#
# Author: Eleferen
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Russian <https://translatewiki.net/wiki/Portal:ru>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: ru\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Популярное"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr ""

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Популярные сообщения в группе %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""


code:
# Translation of StatusNet - GroupFavorited to Telugu (తెలుగు)
# Exported from translatewiki.net
#
# Author: Veeven
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Telugu <https://translatewiki.net/wiki/Portal:te>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: te\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "ప్రాచుర్యం"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "%s గుంపులో జనరంజకమైన టపాలు"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "%s గుంపులో జనరంజకమైన టపాలు"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "%1$s గుంపులో జనరంజకమైన టపాలు, %2$dవ పుట"


code:
# Translation of StatusNet - GroupFavorited to Tagalog (Tagalog)
# Exported from translatewiki.net
#
# Author: AnakngAraw
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Tagalog <https://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Tanyag"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Bantog na mga pabatid sa loob ng pangkat na %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr ""
"Ang pampasak na ito ay nagdaragdag ng isang bagay ng menu para sa mga bantog "
"na pabatid sa loob ng mga pangkat."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Tanyag na mga pagpapaskila sa loob ng pangkat na %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Tanyag na mga pagpapaskila sa loob ng pangkat na %1$s, pahina %2$d"


code:
# Translation of StatusNet - GroupFavorited to Ukrainian (українська)
# Exported from translatewiki.net
#
# Author: Boogie
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:47+0000\n"
"Language-Team: Ukrainian <https://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:17+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Menu item in the group navigation page.
msgctxt "MENU"
msgid "Popular"
msgstr "Популярні"

#. TRANS: Tooltip for menu item in the group navigation page.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Popular notices in %s group"
msgstr "Популярні дописи спільноти %s"

#. TRANS: Plugin description.
msgid "This plugin adds a menu item for popular notices in groups."
msgstr "Цей додаток долучає до меню пункт для популярних дописів у спільноті."

#. TRANS: %s is a group name.
#, php-format
msgid "Popular posts in %s group"
msgstr "Популярні повідомлення спільноти %s"

#. TRANS: %1$s is a group name, %2$s is a group number.
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Популярні повідомлення спільноти %1$s, сторінка %2$d"


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Private groups for StatusNet 0.9.x
 *
 * 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  Privacy
 * @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('STATUSNET')) {
    // This check helps protect against security problems;
    // your code file can't be executed directly from the web.
    exit(1);
}

/**
 * Private groups
 *
 * This plugin allows users to send private messages to a group.
 *
 * @category  Privacy
 * @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 GroupPrivateMessagePlugin extends Plugin
{
    /**
     * Database schema setup
     *
     * @see Schema
     * @see ColumnDef
     *
     * @return boolean hook value
     */
    function onCheckSchema()
    {
        $schema = Schema::get();

        // For storing user-submitted flags on profiles
        $schema->ensureTable('group_privacy_settings', Group_privacy_settings::schemaDef());
        $schema->ensureTable('group_message', Group_message::schemaDef());
        $schema->ensureTable('group_message_profile', Group_message_profile::schemaDef());
        return true;
    }

    /**
     * Map URLs to actions
     *
     * @param URLMapper $m path-to-action mapper
     *
     * @return boolean hook value
     */
    public function onRouterInitialized(URLMapper $m)
    {
        $m->connect('group/:nickname/inbox',
                    array('action' => 'groupinbox'),
                    array('nickname' => Nickname::DISPLAY_FMT));

        $m->connect('group/message/:id',
                    array('action' => 'showgroupmessage'),
                    array('id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'));

        $m->connect('group/:nickname/message/new',
                    array('action' => 'newgroupmessage'),
                    array('nickname' => Nickname::DISPLAY_FMT));

        return true;
    }

    /**
     * Add group inbox to the menu
     *
     * @param Action $action The current action handler. Use this to
     *                       do any output.
     *
     * @return boolean hook value; true means continue processing, false means stop.
     *
     * @see Action
     */
    function onEndGroupGroupNav(Menu $groupnav)
    {
        $action = $groupnav->action;
        $group  = $groupnav->group;

        $action->menuItem(common_local_url('groupinbox',
                                           array('nickname' => $group->nickname)),
                          // TRANS: Menu item in group page.
                          _m('MENU','Inbox'),
                          // TRANS: Menu title in group page.
                          _m('Private messages for this group.'),
                          $action->trimmed('action') == 'groupinbox',
                          'nav_group_inbox');
        return true;
    }

    /**
     * Create default group privacy settings at group create time
     *
     * @param User_group $group Group that was just created
     *
     * @result boolean hook value
     */
    function onEndGroupSave($group)
    {
        $gps = new Group_privacy_settings();

        $gps->group_id      = $group->id;
        $gps->allow_privacy = Group_privacy_settings::SOMETIMES;
        $gps->allow_sender  = Group_privacy_settings::MEMBER;
        $gps->created       = common_sql_now();
        $gps->modified      = $gps->created;

        // This will throw an exception on error

        $gps->insert();

        return true;
    }

    /**
     * Show group privacy controls on group edit form
     *
     * @param GroupEditForm $form form being shown
     */
    function onEndGroupEditFormData(GroupEditForm $form)
    {
        $gps = null;

        if (!empty($form->group)) {
            $gps = Group_privacy_settings::getKV('group_id', $form->group->id);
        }

        $form->out->elementStart('li');
        $form->out->dropdown('allow_privacy',
                             // TRANS: Dropdown label in group settings page for if group allows private messages.
                             _m('Private messages'),
                             // TRANS: Dropdown option in group settings page for allowing private messages.
                             array(Group_privacy_settings::SOMETIMES => _m('Sometimes'),
                                   // TRANS: Dropdown option in group settings page for allowing private messages.
                                   Group_privacy_settings::ALWAYS => _m('Always'),
                                   // TRANS: Dropdown option in group settings page for allowing private messages.
                                   Group_privacy_settings::NEVER => _m('Never')),
                             // TRANS: Dropdown title in group settings page for if group allows private messages.
                             _m('Whether to allow private messages to this group.'),
                             false,
                             (empty($gps)) ? Group_privacy_settings::SOMETIMES : $gps->allow_privacy);
        $form->out->elementEnd('li');
        $form->out->elementStart('li');
        $form->out->dropdown('allow_sender',
                             // TRANS: Dropdown label in group settings page for who can send private messages to the group.
                             _m('Private senders'),
                             // TRANS: Dropdown option in group settings page for who can send private messages.
                             array(Group_privacy_settings::EVERYONE => _m('Everyone'),
                                   // TRANS: Dropdown option in group settings page for who can send private messages.
                                   Group_privacy_settings::MEMBER => _m('Member'),
                                   // TRANS: Dropdown option in group settings page for who can send private messages.
                                   Group_privacy_settings::ADMIN => _m('Admin')),
                             // TRANS: Dropdown title in group settings page for who can send private messages to the group.
                             _m('Who can send private messages to the group.'),
                             false,
                             (empty($gps)) ? Group_privacy_settings::MEMBER : $gps->allow_sender);
        $form->out->elementEnd('li');
        return true;
    }

    function onEndGroupSaveForm(Action $action)
    {
        // The Action class must contain this method
        assert(is_callable(array($action, 'getGroup')));

        $gps = null;

        if ($action->getGroup() instanceof User_group) {
            $gps = Group_privacy_settings::getKV('group_id', $action->getGroup()->id);
        }

        $orig = null;

        if (empty($gps)) {
            $gps = new Group_privacy_settings();
            $gps->group_id = $action->getGroup()->id;
        } else {
            $orig = clone($gps);
        }

        $gps->allow_privacy = $action->trimmed('allow_privacy');
        $gps->allow_sender  = $action->trimmed('allow_sender');

        if (empty($orig)) {
            $gps->created = common_sql_now();
            $gps->insert();
        } else {
            $gps->update($orig);
        }

        return true;
    }

    /**
     * Overload 'd' command to send private messages to groups.
     *
     * 'd !group word word word' will send the private message
     * 'word word word' to the group 'group'.
     *
     * @param string  $cmd     Command being run
     * @param string  $arg     Rest of the message (including address)
     * @param User    $user    User sending the message
     * @param Command &$result The resulting command object to be run.
     *
     * @return boolean hook value
     */
    function onStartInterpretCommand($cmd, $arg, User $user, &$result)
    {
        if ($cmd == 'd' || $cmd == 'dm') {

            $this->debug('Got a d command');

            // Break off the first word as the address

            $pieces = explode(' ', $arg, 2);

            if (count($pieces) == 1) {
                $pieces[] = null;
            }

            list($addr, $msg) = $pieces;

            if (!empty($addr) && $addr[0] == '!') {
                $result = new GroupMessageCommand($user, substr($addr, 1), $msg);
                Event::handle('EndInterpretCommand', array($cmd, $arg, $user, $result));
                return false;
            }
        }

        return true;
    }

    /**
     * To add a "Message" button to the group profile page
     *
     * @param Widget     $widget The showgroup action being shown
     * @param User_group $group  The current group
     *
     * @return boolean hook value
     */
    function onEndGroupActionsList(Widget $widget, User_group $group)
    {
        $cur = common_current_user();
        $action = $widget->out;

        if (empty($cur)) {
            return true;
        }

        try {
            Group_privacy_settings::ensurePost($cur, $group);
        } catch (Exception $e) {
            return true;
        }

        $action->elementStart('li', 'entity_send-a-message');
        $action->element('a', array('href' => common_local_url('newgroupmessage', array('nickname' => $group->nickname)),
                                    // TRANS: Title for action in group actions list.
                                    'title' => _m('Send a direct message to this group.')),
                         // TRANS: Link text for action in group actions list to send a private message to a group.
                         _m('LINKTEXT','Message'));
        // $form = new GroupMessageForm($action, $group);
        // $form->hidden = true;
        // $form->show();
        $action->elementEnd('li');
        return true;
    }

    /**
     * When saving a notice, check its groups. If any of them has
     * privacy == always, force a group private message to all mentioned groups.
     * If any of the groups disallows private messages, skip it.
     *
     * @param
     */
    function onStartNoticeSave(Notice &$notice) {
        // Look for group tags
        // FIXME: won't work for remote groups
        // @fixme if Notice::saveNew is refactored so we can just pull its list
        // of groups between processing and saving, make use of it

        $count = preg_match_all('/(?:^|\s)!(' . Nickname::DISPLAY_FMT . ')/',
                                strtolower($notice->content),
                                $match);

        $groups = array();
        $ignored = array();

        $forcePrivate = false;
        $profile = $notice->getProfile();

        if ($count > 0) {
            /* Add them to the database */

            foreach (array_unique($match[1]) as $nickname) {
                $group = User_group::getForNickname($nickname, $profile);

                if (empty($group)) {
                    continue;
                }

                $gps = Group_privacy_settings::forGroup($group);

                switch ($gps->allow_privacy) {
                case Group_privacy_settings::ALWAYS:
                    $forcePrivate = true;
                    // fall through
                case Group_privacy_settings::SOMETIMES:
                    $groups[] = $group;
                    break;
                case Group_privacy_settings::NEVER:
                    $ignored[] = $group;
                    break;
                }
            }

            if ($forcePrivate) {
                foreach ($ignored as $group) {
                    common_log(LOG_NOTICE,
                               "Notice forced to group direct message ".
                               "but group ".$group->nickname." does not allow them.");
                }

                $user = User::getKV('id', $notice->profile_id);

                if (empty($user)) {
                    common_log(LOG_WARNING,
                               "Notice forced to group direct message ".
                               "but profile ".$notice->profile_id." is not a local user.");
                } else {
                    foreach ($groups as $group) {
                        Group_message::send($user, $group, $notice->content);
                    }
                }

                // Don't save the notice!
                // FIXME: this is probably cheating.
                // TRANS: Client exception thrown when a private group message has to be forced.
                throw new ClientException(sprintf(_m('Forced notice to private group message.')),
                                          200);
            }
        }

        return true;
    }

    /**
     * Show an indicator that the group is (essentially) private on the group page
     *
     * @param Action     $action The action being shown
     * @param User_group $group  The group being shown
     *
     * @return boolean hook value
     */
    function onEndGroupProfileElements(Action $action, User_group $group)
    {
        $gps = Group_privacy_settings::forGroup($group);

        if ($gps->allow_privacy == Group_privacy_settings::ALWAYS) {
            // TRANS: Indicator on the group page that the group is (essentially) private.
            $action->element('p', 'privategroupindicator', _m('Private'));
        }

        return true;
    }

    function onStartShowExportData(Action $action)
    {
        if ($action instanceof ShowgroupAction) {
            $gps = Group_privacy_settings::forGroup($action->getGroup());

            if ($gps->allow_privacy == Group_privacy_settings::ALWAYS) {
                return false;
            }
        }
        return true;
    }

    function onPluginVersion(&$versions)
    {
        $versions[] = array('name' => 'GroupPrivateMessage',
                            'version' => GNUSOCIAL_VERSION,
                            'author' => 'Evan Prodromou',
                            'homepage' => 'http://status.net/wiki/Plugin:GroupPrivateMessage',
                            'rawdescription' =>
                            // TRANS: Plugin description.
                            _m('Allow posting private messages to groups.'));
        return true;
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * List of private messages to this group
 *
 * 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  GroupPrivateMessage
 * @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('STATUSNET')) {
    // This check helps protect against security problems;
    // your code file can't be executed directly from the web.
    exit(1);
}

/**
 * Show a list of private messages to this group
 *
 * @category  GroupPrivateMessage
 * @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 GroupinboxAction extends GroupAction
{
    var $gm;

    /**
     * For initializing members of the class.
     *
     * @param array $argarray misc. arguments
     *
     * @return boolean true
     */
    function prepare($argarray)
    {
        parent::prepare($argarray);

        $cur = common_current_user();

        if (empty($cur)) {
            // TRANS: Client exception thrown when trying to view group inbox while not logged in.
            throw new ClientException(_m('Only for logged-in users.'), 403);
        }

        $nicknameArg = $this->trimmed('nickname');

        $nickname = common_canonical_nickname($nicknameArg);

        if ($nickname != $nicknameArg) {
            $url = common_local_url('groupinbox', array('nickname' => $nickname));
            common_redirect($url);
        }

        $localGroup = Local_group::getKV('nickname', $nickname);

        if (empty($localGroup)) {
            // TRANS: Client exception thrown when trying to view group inbox for non-existing group.
            throw new ClientException(_m('No such group.'), 404);
        }

        $this->group = User_group::getKV('id', $localGroup->group_id);

        if (empty($this->group)) {
            // TRANS: Client exception thrown when trying to view group inbox for non-existing group.
            throw new ClientException(_m('No such group.'), 404);
        }

        if (!$cur->isMember($this->group)) {
            // TRANS: Client exception thrown when trying to view group inbox while not a member.
            throw new ClientException(_m('Only for members.'), 403);
        }

        $this->page = $this->trimmed('page');

        if (!$this->page) {
            $this->page = 1;
        }

        $this->gm = Group_message::forGroup($this->group,
                                            ($this->page - 1) * MESSAGES_PER_PAGE,
                                            MESSAGES_PER_PAGE + 1);
        return true;
    }

    function showLocalNav()
    {
        $nav = new GroupNav($this, $this->group);
        $nav->show();
    }

    function showNoticeForm()
    {
        $form = new GroupMessageForm($this, $this->group);
        $form->show();
    }

    function showContent()
    {
        $gml = new GroupMessageList($this, $this->gm);
        $cnt = $gml->show();

        if ($cnt == 0) {
            // TRANS: Text of group inbox if no private messages were sent to it.
            $this->element('p', 'guide', _m('This group has not received any private messages.'));
        }
        $this->pagination($this->page > 1,
                          $cnt > MESSAGES_PER_PAGE,
                          $this->page,
                          'groupinbox',
                          array('nickname' => $this->group->nickname));
    }

    /**
     * Handler method
     *
     * @param array $argarray is ignored since it's now passed in in prepare()
     *
     * @return void
     */
    function handle($argarray=null)
    {
        $this->showPage();
    }

    /**
     * Return true if read only.
     *
     * MAY override
     *
     * @param array $args other arguments
     *
     * @return boolean is read only action?
     */
    function isReadOnly($args)
    {
        return true;
    }

    /**
     * Title of the page
     *
     * @return string page title, with page number
     */
    function title()
    {
        $base = $this->group->getFancyName();

        if ($this->page == 1) {
            // TRANS: Title of inbox for group %s.
            return sprintf(_m('%s group inbox'), $base);
        } else {
            // TRANS: Page title for any but first group page.
            // TRANS: %1$s is a group name, $2$s is a page number.
            return sprintf(_m('%1$s group inbox, page %2$d'),
                           $base,
                           $this->page);
        }
    }

    /**
     * Show the page notice
     *
     * Shows instructions for the page
     *
     * @return void
     */
    function showPageNotice()
    {
        $instr  = $this->getInstructions();
        $output = common_markup_to_html($instr);

        $this->elementStart('div', 'instructions');
        $this->raw($output);
        $this->elementEnd('div');
    }

    /**
     * Instructions for using this page
     *
     * @return string localised instructions for using the page
     */
    function getInstructions()
    {
        // TRANS: Instructions for user inbox page.
        return _m('This is the group inbox, which lists all incoming private messages for this group.');
    }
}