code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Data class for email reminders
 *
 * 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  Data
 * @package   EmailReminder
 * @author    Zach Copley <zach@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 Email_reminder extends Managed_DataObject
{
    public $__table = 'email_reminder';

    public $type;     // type of reminder
    public $code;     // confirmation code
    public $days;     // number of days after code was created
    public $sent;     // timestamp
    public $created;  // timestamp
    public $modified; // timestamp

    /**
     * Do we need to send a reminder?
     *
     * @param string $type      type of reminder
     * @param Object $object    an object with a 'code' property
     *                          (Confirm_address or Invitation)
     * @param int    $days      Number of days after the code was created
     * @return boolean true if any Email_reminder records were found
     */
    static function needsReminder($type, $object, $days = null) {

        $reminder        = new Email_reminder();
        $reminder->type  = $type;
        $reminder->code  = $object->code;
        if (!empty($days)) {
            $reminder->days  = $days;
        }
        $result = $reminder->find();

        if (!empty($result)) {
            return false;
        }

        return true;
    }

    /**
     * Record a record of sending the reminder
     *
     * @param string $type      type of reminder
     * @param Object $object    an object with a 'code' property
     *                          (Confirm_address or Invitation)
     * @param int    $days      Number of days after the code was created
     * @return int   $result    row ID of the new reminder record
     */
    static function recordReminder($type, $object, $days) {

        $reminder        = new Email_reminder();
        $reminder->type  = $type;
        $reminder->code  = $object->code;
        $reminder->days  = $days;
        $reminder->sent  = $reminder->created = common_sql_now();
        $result          = $reminder->insert();

        if (empty($result)) {
            common_log_db_error($reminder, 'INSERT', __FILE__);
                throw new ServerException(
                    // TRANS: Server exception thrown when a reminder record could not be inserted into the database.
                    _m('Database error inserting reminder record.')
            );
        }

        return $result;
    }

    /**
     * Data definition for email reminders
     */
    public static function schemaDef()
    {
        return array(
            'description' => 'Record of email reminders that have been sent',
            'fields'      => array(
                'type'     => array(
                    'type'          => 'varchar',
                    'length'        => 255,
                    'not null'      => true,
                    'description'   => 'type of reminder'
                ),
                'code' => array(
                    'type'        => 'varchar',
                    'not null'    => 'true',
                    'length'      => 255,
                    'description' => 'confirmation code'
                 ),
                'days' => array(
                    'type'        => 'int',
                    'not null'    => 'true',
                    'description' => 'number of days since code creation'
                 ),
                'sent' => array(
                    'type'        => 'datetime',
                    'not null'    => true,
                    'description' => 'Date and time the reminder was sent'
                ),
                'created' => array(
                    'type'        => 'datetime',
                    'not null'    => true,
                    'description' => 'Date and time the record was created'
                ),
                'modified'        => array(
                    'type'        => 'timestamp',
                    'not null'    => true,
                    'description' => 'Date and time the record was last modified'
                ),
            ),
            'primary key' => array('type', 'code', 'days'),
            'indexes' => array(
                'sent_idx' => array('sent'),
             ),
        );
    }
}


code:
<?php
/*
 * StatusNet - the distributed open-source microblogging tool
 *
 * Handler for reminder queue items which send reminder emails to all users
 * we would like to complete a given process (e.g.: registration).
 *
 * 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  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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')) {
    exit(1);
}

/**
 * Handler for reminder queue items which send reminder emails to all users
 * we would like to complete a given process (e.g.: registration)
 *
 * @category  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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 SiteConfirmReminderHandler extends QueueHandler
{
    /**
     * Return transport keyword which identifies items this queue handler
     * services; must be defined for all subclasses.
     *
     * Must be 8 characters or less to fit in the queue_item database.
     * ex "email", "jabber", "sms", "irc", ...
     *
     * @return string
     */
    function transport()
    {
        return 'siterem';
    }

    /**
     * Handle the site
     *
     * @param array $remitem type of reminder to send and any special options
     * @return boolean true on success, false on failure
     */
    function handle($remitem)
    {
        list($type, $opts) = $remitem;

        $qm = QueueManager::get();

        try {
            switch($type) {
            case UserConfirmRegReminderHandler::REGISTER_REMINDER:
                $confirm               = new Confirm_address();
                $confirm->address_type = $type;
                $confirm->find();
                while ($confirm->fetch()) {
                    try {
                        $qm->enqueue(array($confirm, $opts), 'uregrem');
                    } catch (Exception $e) {
                        common_log(LOG_WARNING, $e->getMessage());
                        continue;
                    }
                }
                break;
            case UserInviteReminderHandler::INVITE_REMINDER:
                $invitation = new Invitation();
                // Only send one reminder (the latest one), regardless of how many invitations a user has
                $sql = 'SELECT * FROM (SELECT * FROM invitation WHERE registered_user_id IS NULL ORDER BY created DESC) invitees GROUP BY invitees.address';
                $invitation->query($sql);
                while ($invitation->fetch()) {
                    try {
                        $qm->enqueue(array($invitation, $opts), 'uinvrem');
                    } catch (Exception $e) {
                        common_log(LOG_WARNING, $e->getMessage());
                        continue;
                    }
                }
                break;
            default:
                // WTF?
                common_log(
                    LOG_ERR,
                    "Received unknown confirmation address type",
                    __FILE__
                );
            }
        } catch (Exception $e) {
            common_log(LOG_ERR, $e->getMessage());
            return false;
        }

        return true;
    }
}

license: mit


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 *
 * Handler for queue items of type 'uregem' - sends email registration
 * confirmation reminders to a particular user.
 *
 * 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  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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')) {
    exit(1);
}

/**
 * Handler for queue items of type 'uregrem'
 *
 * @category  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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 UserConfirmRegReminderHandler extends UserReminderHandler {

    const REGISTER_REMINDER = 'register';

    /**
     * Return transport keyword which identifies items this queue handler
     * services; must be defined for all subclasses.
     *
     * Must be 8 characters or less to fit in the queue_item database.
     * ex "email", "jabber", "sms", "irc", ...
     *
     * @return string
     */
    function transport() {
        return 'uregrem';
    }

    /**
     * Send an email registration confirmation reminder until the user
     * confirms her registration. We'll send a reminder after one day,
     * three days, and a full week.
     *
     * @todo abstract this bit further
     *
     * @param array $regitem confirmation address and any special options
     * @return boolean success value
     */
    function sendNextReminder($regitem)
    {
        list($confirm, $opts) = $regitem;

        $regDate = strtotime($confirm->modified); // Seems like my best bet
        $now     = strtotime('now');

        // Days since registration
        $days = ($now - $regDate) / 86499; // 60*60*24 = 86499
        // $days = ($now - $regDate) / 120; // Two mins, good for testing

        if ($days > 7 && isset($opts['onetime'])) {
            // Don't send the reminder if we're past the normal reminder window and
            // we've already pestered her at all before
            if (Email_reminder::needsReminder(self::REGISTER_REMINDER, $confirm)) {
                common_log(LOG_INFO, "Sending one-time registration confirmation reminder to {$confirm->address}", __FILE__);
                $subject = _m("Reminder - please confirm your registration!");
                return EmailReminderPlugin::sendReminder(
                    self::REGISTER_REMINDER,
                    $confirm,
                    $subject,
                    -1 // special one-time indicator
                );
            }
        }

        // Welcome to one of the ugliest switch statement I've ever written

        switch($days) {
        case ($days > 1 && $days < 2):
            if (Email_reminder::needsReminder(self::REGISTER_REMINDER, $confirm, 1)) {
                common_log(LOG_INFO, "Sending one day registration confirmation reminder to {$confirm->address}", __FILE__);
                // TRANS: Subject for reminder e-mail.
                $subject = _m('Reminder - please confirm your registration!');
                return EmailReminderPlugin::sendReminder(
                    self::REGISTER_REMINDER,
                    $confirm,
                    $subject,
                    1
                );
            } else {
                return true;
            }
            break;
        case ($days > 3 && $days < 4):
            if (Email_reminder::needsReminder(self::REGISTER_REMINDER, $confirm, 3)) {
                common_log(LOG_INFO, "Sending three day registration confirmation reminder to {$confirm->address}", __FILE__);
                // TRANS: Subject for reminder e-mail.
                $subject = _m('Second reminder - please confirm your registration!');
                    return EmailReminderPlugin::sendReminder(
                        self::REGISTER_REMINDER,
                        $confirm,
                        $subject,
                        3
                    );
                } else {
                    return true;
                }
            break;
        case ($days > 7 && $days < 8):
            if (Email_reminder::needsReminder(self::REGISTER_REMINDER, $confirm, 7)) {
                common_log(LOG_INFO, "Sending one week registration confirmation reminder to {$confirm->address}", __FILE__);
                // TRANS: Subject for reminder e-mail.
                $subject = _m('Final reminder - please confirm your registration!');
                return EmailReminderPlugin::sendReminder(
                    self::REGISTER_REMINDER,
                    $confirm,
                    $subject,
                    7
                );
            } else {
                return true;
            }
            break;
        default:
            common_log(LOG_INFO, "No need to send registration reminder to {$confirm->address}.", __FILE__);
            break;
        }
        return true;
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 *
 * Handler for queue items of type 'uinvrem' - sends an email reminder to
 * an email address of someone who has been invited to the site
 *
 * 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  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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')) {
    exit(1);
}

/**
 * Handler for queue items of type 'uinvrem' (user invite reminder)
 *
 * @category  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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 UserInviteReminderHandler extends UserReminderHandler {

    const INVITE_REMINDER = 'invite';

    /**
     * Return transport keyword which identifies items this queue handler
     * services; must be defined for all subclasses.
     *
     * Must be 8 characters or less to fit in the queue_item database.
     * ex "email", "jabber", "sms", "irc", ...
     *
     * @return string
     */
    function transport() {
        return 'uinvrem';
    }

    /**
     * Send an invitation reminder. We'll send one after one day, and then
     * one after three days.
     *
     * @todo Abstract this stuff further
     *
     * @param array $invitem Invitation obj and any special options
     * @return boolean success value
     */
    function sendNextReminder($invitem)
    {
        list($invitation, $opts) = $invitem;

        $invDate = strtotime($invitation->created);
        $now     = strtotime('now');

        // Days since first invitation was sent
        $days = ($now - $invDate) / 86499; // 60*60*24 = 86499
        // $days = ($now - $regDate) / 120; // Two mins, good for testing

        $siteName = common_config('site', 'name');

        if ($days > 7 && isset($opts['onetime'])) {
            // Don't send the reminder if we're past the normal reminder window and
            // we've already pestered her at all before
            if (Email_reminder::needsReminder(self::INVITE_REMINDER, $invitation)) {
                common_log(LOG_INFO, "Sending one-time invitation reminder to {$invitation->address}", __FILE__);
                $subject = _m("Reminder - you have been invited to join {$siteName}!");
                return EmailReminderPlugin::sendReminder(
                    self::INVITE_REMINDER,
                    $invitation,
                    $subject,
                    -1 // special one-time indicator
                );
            }
        }

        switch($days) {
        case ($days > 1 && $days < 2):
            if (Email_reminder::needsReminder(self::INVITE_REMINDER, $invitation, 1)) {
                common_log(LOG_INFO, "Sending one day invitation reminder to {$invitation->address}", __FILE__);
                // TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
                $subject = sprintf(_m('Reminder - You have been invited to join %s!'),$siteName);
                return EmailReminderPlugin::sendReminder(
                    self::INVITE_REMINDER,
                    $invitation,
                    $subject,
                1);
            } else {
                return true;
            }
            break;
        case ($days > 3 && $days < 4):
            if (Email_reminder::needsReminder(self::INVITE_REMINDER, $invitation, 3)) {
                common_log(LOG_INFO, "Sending three day invitation reminder to {$invitation->address}", __FILE__);
                // TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
                $subject = sprintf(_m('Final reminder - you have been invited to join %s!'),$siteName);
                    return EmailReminderPlugin::sendReminder(
                        self::INVITE_REMINDER,
                        $invitation,
                        $subject,
                        3
                    );
                } else {
                    return true;
                }
            break;
        default:
            common_log(LOG_INFO, "No need to send invitation reminder to {$invitation->address}.", __FILE__);
            break;
        }
        return true;
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 *
 * Base handler for email reminders
 *
 * 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  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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')) {
    exit(1);
}

/**
 * Handler for email reminder queue items
 *
 * @category  Email
 * @package   StatusNet
 * @author    Zach Copley <zach@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 UserReminderHandler extends QueueHandler {
    /**
     * Send the next email reminder to the confirm address
     *
     * @param Confirm_address $confirm the confirmation email/code
     * @return boolean true on success, false on failure
     */
    function handle($confirm) {
        return $this->sendNextReminder($confirm);
    }

    /**
     * Send the next reminder if one needs sending.
     * Subclasses must override
     *
     * @param Confirm_address $confirm the confirmation email/code
     */
    function sendNextReminder($confirm)
    {
    }
}


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 description.
#: EmailReminderPlugin.php:216
msgid "Send email reminders for various things."
msgstr ""

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
#: classes/Email_reminder.php:103
msgid "Database error inserting reminder record."
msgstr ""

#. TRANS: Subject for reminder e-mail.
#: lib/userconfirmregreminderhandler.php:86
#: lib/userconfirmregreminderhandler.php:103
msgid "Reminder - please confirm your registration!"
msgstr ""

#. TRANS: Subject for reminder e-mail.
#: lib/userconfirmregreminderhandler.php:118
msgid "Second reminder - please confirm your registration!"
msgstr ""

#. TRANS: Subject for reminder e-mail.
#: lib/userconfirmregreminderhandler.php:133
msgid "Final reminder - please confirm your registration!"
msgstr ""

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#: lib/userinvitereminderhandler.php:102
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr ""

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#: lib/userinvitereminderhandler.php:116
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr ""


code:
# Translation of StatusNet - EmailReminder to Arabic (العربية)
# Exported from translatewiki.net
#
# Author: Majid Al-Dharrab
# Author: OsamaK
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+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-19 11:23:04+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-emailreminder\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: Plugin description.
msgid "Send email reminders for various things."
msgstr "يرسل رسائل تذكيرية لأمور عديدة."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr ""

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "تذكير: يرجى تأكيد تسجيلك!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "التذكير الثاني: يرجى تأكيد تسجيلك!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "التذكير النهائي: يرجى تأكيد تسجيلك!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "تذكير: لقد وصلتك دعوة للتسجيل في %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "التذكير النهائي: لقد وصلتك دعوة للتسجيل في %s!"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-19 11:23:04+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 "Send email reminders for various things."
msgstr ""

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr ""

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Recordatori - confirmeu el registre!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Segon recordatori - confirmeu el registre!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Recordatori final - confirmeu el registre!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr ""

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr ""


code:
# Translation of StatusNet - EmailReminder to German (Deutsch)
# Exported from translatewiki.net
#
# Author: ChrisiPK
# Author: Inkowik
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "E-Mail-Erinnerungen für verschiedene Sachen schicken."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Datenbankfehler beim Einfügen des Erinnerungsdatensatzes."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Erinnerung - bitte bestätige deine Registrierung!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Zweite Erinnerung - Bitte bestätige deine Registrierung!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Letzte Erinnerung - Bitte bestätige deine Registrierung!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Erinnerung - Du wurdest eingeladen, %s beizutreten!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Letzte Erinnerung - Du wurdest eingeladen, %s beizutreten"


code:
# Translation of StatusNet - EmailReminder to Spanish (español)
# Exported from translatewiki.net
#
# Author: Erchache2000
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Enviar correo electrónico de recuerdo para varias cosas."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Error de base de datos al insertar registro de recuerdo."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Recordatorio - por favor confirma tu registro!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Segundo recordatorio - por favor confirma tu registro!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Recordatorio final - por favor CONFIRMA tu registro!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Recordatorio - ha sido invitados a unirse a  %s !"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Recordatorio final - ha sido invitado a unirse a  %s !"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Bidali email ohartarazpenak gauza anitzetarako."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Datubase akatsa ohartarazpe aukera txertatzean."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Ohartarazpena -  mesedez baieztatu zure izen ematea!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Bigarren ohartarazpena - mesedez baieztatu zure izen ematea!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Azken ohartarazpena - mesedez baieztatu zure izen ematea!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Ohartarazpena - gonbidatuta zaude %s gunearekin bat egitera!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Azken ohartarazpena - gonbidatuta zaude %s gunearekin bat egitera!"


code:
# Translation of StatusNet - EmailReminder to French (français)
# Exported from translatewiki.net
#
# Author: Gomoko
# Author: Od1n
# Author: OngolaBoy
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Envoyer des rappels par courriel pour diverses choses."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr ""
"Erreur de base de données lors de l'insertion d'un enregistrement de rappel."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Rappel - veuillez confirmer votre inscription !"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Deuxième rappel - veuillez confirmer votre inscription !"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Dernier rappel - veuillez confirmer votre inscription !"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Rappel - Vous avez été invité à joindre %s !"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Dernier rappel - Vous avez été invité à joindre %s !"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:25+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Enviar recordatorios por correo para varias cousas."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Erro na base de datos ao inserir o rexistro do recordatorio."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Recordatorio: Confirme o seu rexistro!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Segundo recordatorio: Confirme o seu rexistro!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Último recordatorio: Confirme o seu rexistro!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Recordatorio: Está convidado a unirse a %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Último recordatorio: Está convidado a unirse a %s!"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Inviar rememorationes in e-mail pro varie cosas."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr ""
"Error in base de datos durante le insertion de un registro de rememoration."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Rememoration: per favor confirma tu registration!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Secunde rememoration: per favor confirma tu registration!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Rememoration final: per favor confirma tu registration!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Rememoration: Tu ha essite invitate a adherer a %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Rememoration final: tu ha essite invitate a adherer a %s!"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-19 11:23:04+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 "Send email reminders for various things."
msgstr "Inviare e-mail promemoria per varie cose."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Errore nel database nell'inserire i record di promemoria."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Promemoria - si prega di confermare la registrazione!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Secondo promemoria - si prega di confermare la registrazione!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Ultimo promemoria - si prega di confermare la registrazione!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Promemoria - Sei stato invitato ad unirti a %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Ultimo promemoria - Sei stato invitato ad unirti a %s!"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Испраќај потсетници за разни нешта по е-пошта."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Грешка во базата при вметнувањето на евиденцијата за потсетување."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Потсетување - потврдете ја Вашата регистрација!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Последно потсетување - потврдете ја Вашата регистрација!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Последно потсетување - потврдете ја Вашата регистрација!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Потсетување - Имате покана да се придружите на %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Последно потсетување - Имате покана да се придружите на %s!"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "E-mailherinnering verzenden voor verschillende dingen."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr ""
"Er is een databasefout opgetreden tijdens het invoegen van een "
"herinneringsrecord."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Herinnering - bevestig uw registratie!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Tweede herinnering - bevestig uw registratie!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Laatste herinnering - bevestig uw registratie!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Herinnering: u bent uitgenodigd om lid te worden van %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Laatste herinnering: u bent uitgenodigd om lid te worden van %s!"


code:
# Translation of StatusNet - EmailReminder to Portuguese (português)
# Exported from translatewiki.net
#
# Author: Analuisa
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-19 11:23:04+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-emailreminder\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid "Send email reminders for various things."
msgstr "Enviar lembretes de e-mail para várias coisas."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Erro na base de dados ao inserir o registo de lembretes."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Lembrete- por favor confirme a sua inscrição!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Segundo lembrete - por favor confirme a sua inscrição!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Último lembrete - por favor confirme a sua inscrição!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Lembrete - Foi convidado(a) para se juntar %s"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Último lembrete - foi convidado(a) para se juntar %s!"


code:
# Translation of StatusNet - EmailReminder 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 - EmailReminder\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-19 11:23:04+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 "Send email reminders for various things."
msgstr ""
"Magpadala ng mga pampaalalang mga e-liham para sa samu't saring mga bagay."

#. TRANS: Server exception thrown when a reminder record could not be inserted into the database.
msgid "Database error inserting reminder record."
msgstr "Kamalian ng kalipunan ng dato sa pagsisingit ng tala ng paalala."

#. TRANS: Subject for reminder e-mail.
msgid "Reminder - please confirm your registration!"
msgstr "Paalala - pakitiyak ang pagpapatala mo!"

#. TRANS: Subject for reminder e-mail.
msgid "Second reminder - please confirm your registration!"
msgstr "Ikalawang paalala - pakitiyak ang pagpapatala mo!"

#. TRANS: Subject for reminder e-mail.
msgid "Final reminder - please confirm your registration!"
msgstr "Huling paalala - pakitiyak ang pagpapatala mo!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Reminder - You have been invited to join %s!"
msgstr "Paalala - Inanyayahan kang sumali sa %s!"

#. TRANS: Subject for reminder e-mail. %s is the StatusNet sitename.
#, php-format
msgid "Final reminder - you have been invited to join %s!"
msgstr "Huling paalala - inanyayahan kang sumali sa %s!"


code:
First reminder...

%%arg.inviter%% has invited you to join them on %%site.name%%.

%%site.name%% is a micro-blogging service that lets you keep
up-to-date with people you know and people who interest you.

You can also share news about yourself, your thoughts, or your life
online with people who know about you.

It's great for meeting new people who share your interests.

You can see %%arg.inviter%%'s profile page on %%site.name%% here:

> [%%arg.inviterurl%%](%%arg.inviterurl%%)

If you'd like to try the service, click on the link below to accept
the invitation.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If not, you can ignore this message. Thanks for your patience and your time.

Sincerely,

%%site.name%%


code:
Second and final reminder...

%%arg.inviter%% has invited you to join them on %%site.name%%.

%%site.name%% is a micro-blogging service that lets you keep
up-to-date with people you know and people who interest you.

You can also share news about yourself, your thoughts, or your life
online with people who know about you.

It's great for meeting new people who share your interests.

You can see %%arg.inviter%%'s profile page on %%site.name%% here:

> [%%arg.inviterurl%%](%%arg.inviterurl%%)

If you'd like to try the service, click on the link below to accept
the invitation.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If not, you can ignore this message. Thanks for your patience and your time.

Sincerely,

%%site.name%%


code:
Special ONE TIME reminder...

%%arg.inviter%% has invited you to join them on %%site.name%%.

%%site.name%% is a micro-blogging service that lets you keep
up-to-date with people you know and people who interest you.

You can also share news about yourself, your thoughts, or your life
online with people who know about you.

It's great for meeting new people who share your interests.

You can see %%arg.inviter%%'s profile page on %%site.name%% here:

> [%%arg.inviterurl%%](%%arg.inviterurl%%)

If you'd like to try the service, click on the link below to accept
the invitation.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If not, you can ignore this message. Thanks for your patience and your time.

Sincerely,

%%site.name%%


code:
Reminder:

Someone (probably you) has requested an account on %%site.name%% using this email address.

To confirm the address, click the following URL or copy it into the address bar of your browser.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If it was not you, you can safely ignore this message.


code:
Hey, it's been three days!!

Someone (probably you) has requested an account on %%site.name%% using this email address.

To confirm the address, click the following URL or copy it into the address bar of your browser.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If it was not you, you can safely ignore this message.


code:
IT'S BEEN A WHOLE WEEK! Final reminder...

Someone (probably you) has requested an account on %%site.name%% using this email address.

To confirm the address, click the following URL or copy it into the address bar of your browser.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If it was not you, you can safely ignore this message.


code:
Hi, this is a special ONE TIME reminder.

Someone (probably you) has requested an account on %%site.name%% using this email address.

To confirm the address, click the following URL or copy it into the address bar of your browser.

> [%%arg.confirmurl%%](%%arg.confirmurl%%)

If it was not you, you can safely ignore this message.


code: * * * * * /opt/local/bin/php /path/to/statusnet/plugins/EmailReminder/scripts/sendemailreminder.php -t all -a -q > /tmp/cron.log


code:
#!/usr/bin/env php
<?php
/*
* StatusNet - a distributed open-source microblogging tool
* Copyright (C) 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/>.
*/

define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));

$shortoptions = 't:e:auo';
$longoptions = array('type=', 'email=', 'all', 'universe', 'onetime');

$helptext = <<<END_OF_SENDEMAILREMINDER_HELP
sendemailreminder.php [options]
Send an email summary of the inbox to users

 -t --type     type of reminder to send (register | invite | all)
 -e --email    email address to send reminder to
 -a --all      send reminder to all addresses
 -u --universe send reminder to all addresses on all sites
 -o --onetime  send one-time reminder to older addresses

END_OF_SENDEMAILREMINDER_HELP;

require_once INSTALLDIR . '/scripts/commandline.inc';

$quiet = have_option('q', 'quiet');

$types = array(
    // registration confirmation reminder
    'register' => array(
        'type'       => 'register',
        'className'  => 'Confirm_address',
        'utransport' => 'uregrem'
     ),
    // invitation confirmation reminder
    'invite'   => array(
        'type'       => 'invite',
        'className'  => 'Invitation',
        'utransport' => 'uinvrem'
    )
    // ... add more here
);

$type = null;
$opts = array(); // special options like "onetime"

if (have_option('t', 'type')) {
    $type = trim(get_option_value('t', 'type'));
    if (!in_array($type, array_keys($types)) && $type !== 'all') {
       print _m("Unknown reminder type: {$type}.\n");
       exit(1);
    }
} else {
   show_help();
   exit(1);
}

if (have_option('o', 'onetime')) {
    $opts['onetime'] = true;
    if (!$quiet) { print "Special one-time reminder mode.\n"; }
}

$reminders = array();

switch($type) {
case 'register':
    $reminders[] = $types['register'];
    break;
case 'invite':
    $reminders[] = $types['invite'];
    break;
case 'all':
    $reminders = $types;
    break;
}

if (have_option('u', 'universe')) {
    $sn = new Status_network();
    try {
        if ($sn->find()) {
            while ($sn->fetch()) {
                try {
                    $server = $sn->getServerName();
                    StatusNet::init($server);
                    // Different queue manager, maybe!
                    $qm = QueueManager::get();
                    foreach ($reminders as $reminder) {
                        extract($reminder);
                        $qm->enqueue(array($type, $opts), 'siterem');
                        if (!$quiet) { print "Sent pending {$type} reminders for {$server}.\n"; }
                    }
                } catch (Exception $e) {
                    // keep going
                    common_log(LOG_ERR, "Couldn't init {$server}.\n", __FILE__);
                    if (!$quiet) { print "Couldn't init {$server}.\n"; }
                    continue;
                }
            }
           if (!$quiet) { print "Done! Reminders sent to all unconfirmed addresses in the known universe.\n"; }
        }
    } catch (Exception $e) {
        if (!$quiet) { print $e->getMessage() . "\n"; }
        common_log(LOG_ERR, $e->getMessage(), __FILE__);
        exit(1);
    }
} else {
    $qm = QueueManager::get();
    try {
        // enqueue reminder for specific email address or all unconfirmed addresses
        if (have_option('e', 'email')) {
            $address = trim(get_option_value('e', 'email'));
            foreach ($reminders as $reminder) {
                // real bad voodoo here
                extract($reminder);
                $confirm = new $className;
                $confirm->address = $address;
                $result = $confirm->find(true);
                if (empty($result)) {
                    throw new Exception("No confirmation code found for {$address}.");
                }
                $qm->enqueue(array($confirm, $opts), $utransport);
                if (!$quiet) { print "Sent all pending {$type} reminder to {$address}.\n"; }
            }
        } else if (have_option('a', 'all')) {
            foreach ($reminders as $reminder) {
                extract($reminder);
                $qm->enqueue(array($type, $opts), 'siterem');
                if (!$quiet) { print "Sent pending {$type} reminders to all unconfirmed addresses on the site.\n"; }
            }
        } else {
            show_help();
            exit(1);
        }
    } catch (Exception $e) {
        if (!$quiet) { print $e->getMessage() . "\n"; }
        common_log(LOG_ERR, $e->getMessage(), __FILE__);
        exit(1);
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2010, StatusNet, Inc.
 *
 * Sends an email summary of the inbox to users in the network
 *
 * 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  Sample
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 * Plugin for sending email summaries to users
 *
 * @category  Email
 * @package   StatusNet
 * @author    Brion Vibber <brionv@status.net>
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class EmailSummaryPlugin extends Plugin
{
    /**
     * Database schema setup
     *
     * @return boolean hook value
     */
    function onCheckSchema()
    {
        $schema = Schema::get();

        // For storing user-submitted flags on profiles
        $schema->ensureTable('email_summary_status', Email_summary_status::schemaDef());
        return true;
    }

    /**
     * Version info for this plugin
     *
     * @param array &$versions array of version data
     *
     * @return boolean hook value; true means continue processing, false means stop.
     */
    function onPluginVersion(&$versions)
    {
        $versions[] = array('name' => 'EmailSummary',
                            'version' => GNUSOCIAL_VERSION,
                            'author' => 'Evan Prodromou',
                            'homepage' => 'http://status.net/wiki/Plugin:EmailSummary',
                            'rawdescription' =>
                            // TRANS: Plugin description.
                            _m('Send an email summary of the inbox to users.'));
        return true;
    }

    /**
     * Register our queue handlers
     *
     * @param QueueManager $qm Current queue manager
     *
     * @return boolean hook value
     */
    function onEndInitializeQueueManager($qm)
    {
        $qm->connect('sitesum', 'SiteEmailSummaryHandler');
        $qm->connect('usersum', 'UserEmailSummaryHandler');
        return true;
    }

    /**
     * Add a checkbox to turn off email summaries
     *
     * @param Action $action Action being executed (emailsettings)
     * @param Profile $scoped Profile for whom settings are configured (current user)
     *
     * @return boolean hook value
     */
    public function onEndEmailFormData(Action $action, Profile $scoped)
    {
        $action->elementStart('li');
        $action->checkbox('emailsummary',
                          // TRANS: Checkbox label in e-mail preferences form.
                          _m('Send me a periodic summary of updates from my network'),
                          Email_summary_status::getSendSummary($scoped->id));
        $action->elementEnd('li');
        return true;
    }

    /**
     * Add a checkbox to turn off email summaries
     *
     * @param Action $action Action being executed (emailsettings)
     * @param Profile $scoped Profile for whom settings are configured (current user)
     *
     * @return boolean hook value
     */
    public function onEndEmailSaveForm(Action $action, Profile $scoped)
    {
        $sendSummary = $action->boolean('emailsummary');

        $ess = Email_summary_status::getKV('user_id', $scoped->id);

        if (empty($ess)) {

            $ess = new Email_summary_status();

            $ess->user_id      = $scoped->id;
            $ess->send_summary = $sendSummary;
            $ess->created      = common_sql_now();
            $ess->modified     = common_sql_now();

            $ess->insert();

        } else {

            $orig = clone($ess);

            $ess->send_summary = $sendSummary;
            $ess->modified     = common_sql_now();

            $ess->update($orig);
        }

        return true;
    }
}


code:
<?php
/**
 * Data class for email summary status
 *
 * PHP version 5
 *
 * @category Data
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
 * @link     http://status.net/
 *
 * 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/>.
 */

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

require_once INSTALLDIR . '/classes/Memcached_DataObject.php';

/**
 * Data class for email summaries
 *
 * Email summary information for users
 *
 * @category Action
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
 * @link     http://status.net/
 *
 * @see      DB_DataObject
 */
class Email_summary_status extends Managed_DataObject
{
    public $__table = 'email_summary_status'; // table name
    public $user_id;                         // int(4)  primary_key not_null
    public $send_summary;                    // tinyint not_null
    public $last_summary_id;                 // int(4)  null
    public $created;                         // datetime not_null
    public $modified;                        // datetime not_null

    public static function schemaDef()
    {
        return array(
            'fields' => array(
                'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'user id'),
                'send_summary' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'not null' => true, 'description' => 'whether to send a summary or not'),
                'last_summary_id' => array('type' => 'int', 'description' => 'last summary id'),
                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
            ),
            'primary key' => array('user_id'),
            'foreign keys' => array(
                'email_summary_status_user_id_fkey' => array('user', array('user_id' => 'id')),
            ),
        );
    }

    /**
     * Helper function
     *
     * @param integer $user_id ID of the user to get a count for
     *
     * @return int flag for whether to send this user a summary email
     */
    static function getSendSummary($user_id)
    {
        $ess = Email_summary_status::getKV('user_id', $user_id);

        if (!empty($ess)) {
            return $ess->send_summary;
        } else {
            return 1;
        }
    }

    /**
     * Get email summary status for a user
     *
     * @param integer $user_id ID of the user to get a count for
     *
     * @return Email_summary_status instance for this user, with count already incremented.
     */
    static function getLastSummaryID($user_id)
    {
        $ess = Email_summary_status::getKV('user_id', $user_id);

        if (!empty($ess)) {
            return $ess->last_summary_id;
        } else {
            return null;
        }
    }
}


code:
<?php
/*
 * StatusNet - the distributed open-source microblogging tool
 *
 * Handler for queue items of type 'sitesum', sends email summaries
 * to all users on the site.
 *
 * 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  Sample
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 *
 * Handler for queue items of type 'sitesum', sends email summaries
 * to all users on the site.
 *
 * @category  Email
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class SiteEmailSummaryHandler extends QueueHandler
{
    /**
     * Return transport keyword which identifies items this queue handler
     * services; must be defined for all subclasses.
     *
     * Must be 8 characters or less to fit in the queue_item database.
     * ex "email", "jabber", "sms", "irc", ...
     *
     * @return string
     */
    function transport()
    {
        return 'sitesum';
    }

    /**
     * Handle the site
     *
     * @param mixed $object
     * @return boolean true on success, false on failure
     */
    function handle($object)
    {
        $qm = QueueManager::get();

        try {
            // Enqueue a summary for all users

            $user = new User();
            $user->find();

            while ($user->fetch()) {
                try {
                    $qm->enqueue($user->id, 'usersum');
                } catch (Exception $e) {
                    common_log(LOG_WARNING, $e->getMessage());
                    continue;
                }
            }
        } catch (Exception $e) {
            common_log(LOG_WARNING, $e->getMessage());
        }

        return true;
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 *
 * Handler for queue items of type 'usersum', sends an email summaries
 * to a particular user.
 *
 * 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  Sample
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 * Handler for queue items of type 'usersum', sends an email summaries
 * to a particular user.
 *
 * @category  Email
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class UserEmailSummaryHandler extends QueueHandler
{
    // Maximum number of notices to include by default. This is probably too much.
    const MAX_NOTICES = 200;

    /**
     * Return transport keyword which identifies items this queue handler
     * services; must be defined for all subclasses.
     *
     * Must be 8 characters or less to fit in the queue_item database.
     * ex "email", "jabber", "sms", "irc", ...
     *
     * @return string
     */
    function transport()
    {
        return 'usersum';
    }

    /**
     * Send a summary email to the user
     *
     * @param mixed $object
     * @return boolean true on success, false on failure
     */
    function handle($user_id)
    {
        // Skip if they've asked not to get summaries

        $ess = Email_summary_status::getKV('user_id', $user_id);

        if (!empty($ess) && !$ess->send_summary) {
            common_log(LOG_INFO, sprintf('Not sending email summary for user %s by request.', $user_id));
            return true;
        }

        $since_id = null;

        if (!empty($ess)) {
            $since_id = $ess->last_summary_id;
        }

        $user = User::getKV('id', $user_id);

        if (empty($user)) {
            common_log(LOG_INFO, sprintf('Not sending email summary for user %s; no such user.', $user_id));
            return true;
        }

        if (empty($user->email)) {
            common_log(LOG_INFO, sprintf('Not sending email summary for user %s; no email address.', $user_id));
            return true;
        }

        $profile = $user->getProfile();

        if (empty($profile)) {
            common_log(LOG_WARNING, sprintf('Not sending email summary for user %s; no profile.', $user_id));
            return true;
        }

        // An InboxNoticeStream for a certain user, scoped to its own view
        $stream = new InboxNoticeStream($profile);

        $notice = $stream->getNotices(0, self::MAX_NOTICES, $since_id);

        if (empty($notice) || $notice->N == 0) {
            common_log(LOG_WARNING, sprintf('Not sending email summary for user %s; no notices.', $user_id));
            return true;
        }

        // XXX: This is risky fingerpoken in der objektvars, but I didn't feel like
        // figuring out a better way. -ESP

        $new_top = null;

        if ($notice->fetch()) {
            $new_top = $notice->id;
        }

        // TRANS: Subject for e-mail.
        $subject = sprintf(_m('Your latest updates from %s'), common_config('site', 'name'));

        $out = new XMLStringer(true);

        $out->elementStart('html');
        $out->elementStart('head');
        $out->element('title', null, $subject);
        $out->elementEnd('head');
        $out->elementStart('body');
        $out->elementStart('div', array('width' => '100%',
                                        'style' => 'background-color: #ffffff; border: 4px solid #4c609a; padding: 10px;'));

        $out->elementStart('div', array('style' => 'color: #ffffff; background-color: #4c609a; font-weight: bold; margin-bottom: 10px; padding: 4px;'));
        // TRANS: Text in e-mail summary.
        // TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
        $out->raw(sprintf(_m('Recent updates from %1$s for %2$s:'),
                          common_config('site', 'name'),
                          $profile->getBestName()));
        $out->elementEnd('div');

        $out->elementStart('table', array('width' => '550px',
                                          'style' => 'border: none; border-collapse: collapse;', 'cellpadding' => '6'));

        do {
            $profile = Profile::getKV('id', $notice->profile_id);

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

            $avatarUrl = $profile->avatarUrl(AVATAR_STREAM_SIZE);

            $out->elementStart('tr');
            $out->elementStart('td', array('width' => AVATAR_STREAM_SIZE,
                                           'height' => AVATAR_STREAM_SIZE,
                                           'align' => 'left',
                                           'valign' => 'top',
                                           'style' => 'border-bottom: 1px dotted #C5CEE3; padding: 10px 6px 10px 6px;'));
            $out->element('img', array('src' => $avatarUrl,
                                       'width' => AVATAR_STREAM_SIZE,
                                       'height' => AVATAR_STREAM_SIZE,
                                       'alt' => $profile->getBestName()));
            $out->elementEnd('td');
            $out->elementStart('td', array('align' => 'left',
                                           'valign' => 'top',
                                           'style' => 'border-bottom: 1px dotted #C5CEE3; padding: 10px 6px 10px 6px;'));
            $out->element('a', array('href' => $profile->profileurl),
                          $profile->nickname);
            $out->text(' ');
            $out->raw($notice->rendered);
            $out->elementStart('div', array('style' => 'font-size: 0.8em; padding-top: 4px;'));
            $noticeurl = $notice->getLocalUrl();
            // above should always return an URL
            assert(!empty($noticeurl));
            $out->elementStart('a', array('rel' => 'bookmark',
                                          'href' => $noticeurl));
            $dt = common_date_iso8601($notice->created);
            $out->element('abbr', array('style' => 'border-bottom: none;',
                                        'title' => $dt),
                          common_date_string($notice->created));
            $out->elementEnd('a');
            $out->element('a', array('href' => $notice->getConversationUrl()),
                          // TRANS: Link text for link to conversation view.
                          _m('in context'));
            $out->elementEnd('div');
            $out->elementEnd('td');
            $out->elementEnd('tr');
        } while ($notice->fetch());

        $out->elementEnd('table');

        // TRANS: Link text for link to e-mail settings.
        // TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
        $out->raw("
" . sprintf(_m('change your email settings for %2$s'),
                          common_local_url('emailsettings'),
                          common_config('site', 'name'))."
");

        $out->elementEnd('div');
        $out->elementEnd('body');
        $out->elementEnd('html');

        $body = $out->getString();

        // FIXME: do something for people who don't like HTML email

        mail_to_user($user,
                     $subject,
                     $body,
                     array('Content-Type' => 'text/html; charset=utf-8',
                           'Mime-Version' => '1.0'));

        if (empty($ess)) {
            $ess = new Email_summary_status();

            $ess->user_id         = $user_id;
            $ess->created         = common_sql_now();
            $ess->last_summary_id = $new_top;
            $ess->modified        = common_sql_now();

            $ess->insert();
        } else {
            $orig = clone($ess);

            $ess->last_summary_id = $new_top;
            $ess->modified        = common_sql_now();

            $ess->update($orig);
        }

        return true;
    }
}


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: Subject for e-mail.
#: useremailsummaryhandler.php:124
#, php-format
msgid "Your latest updates from %s"
msgstr ""

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#: useremailsummaryhandler.php:139
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr ""

#. TRANS: Link text for link to conversation view.
#: useremailsummaryhandler.php:195
msgid "in context"
msgstr ""

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#: useremailsummaryhandler.php:207
#, php-format
msgid "change your email settings for %2$s"
msgstr ""

#. TRANS: Plugin description.
#: EmailSummaryPlugin.php:115
msgid "Send an email summary of the inbox to users."
msgstr ""

#. TRANS: Checkbox label in e-mail preferences form.
#: EmailSummaryPlugin.php:147
msgid "Send me a periodic summary of updates from my network"
msgstr ""


code:
# Translation of StatusNet - EmailSummary to Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
# Exported from translatewiki.net
#
# Author: Jim-by
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-31 21:06+0000\n"
"PO-Revision-Date: 2011-03-31 21:09:12+0000\n"
"Language-Team: Belarusian (Taraškievica orthography) <http://translatewiki."
"net/wiki/Portal:be-tarask>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-03-18 20:07:04+0000\n"
"X-Generator: MediaWiki 1.18alpha (r85082); Translate extension (2011-03-11)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: be-tarask\n"
"X-Message-Group: #out-statusnet-plugin-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#, php-format
msgid "Recent updates from %1s for %2s:"
msgstr ""

msgid "in context"
msgstr ""

#, php-format
msgid "
change your email settings for %2s
"
msgstr ""

msgid "Updates from your network"
msgstr ""

msgid "Send an email summary of the inbox to users."
msgstr ""
"Дасылае агляд уваходзячых паведамленьняў на электронную пошту карыстальніка."

#. TRANS: Checkbox label in e-mail preferences form.
#, fuzzy
msgid "Send me a periodic summary of updates from my network."
msgstr ""
"Дасылае агляд уваходзячых паведамленьняў на электронную пошту карыстальніка."


code:
# Translation of StatusNet - EmailSummary to Breton (Brezhoneg)
# Exported from translatewiki.net
#
# Author: Fulup
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-31 21:06+0000\n"
"PO-Revision-Date: 2011-03-31 21:09:12+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-03-18 20:07:04+0000\n"
"X-Generator: MediaWiki 1.18alpha (r85082); Translate extension (2011-03-11)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#, php-format
msgid "Recent updates from %1s for %2s:"
msgstr ""

msgid "in context"
msgstr ""

#, php-format
msgid "
change your email settings for %2s
"
msgstr ""

msgid "Updates from your network"
msgstr ""

msgid "Send an email summary of the inbox to users."
msgstr "Kas d'an implijerien, dre bostel, un diverrañ eus ar voest degemer."

#. TRANS: Checkbox label in e-mail preferences form.
#, fuzzy
msgid "Send me a periodic summary of updates from my network."
msgstr "Kas d'an implijerien, dre bostel, un diverrañ eus ar voest degemer."


code:
# Translation of StatusNet - EmailSummary 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 - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "Les vostres darreres actualitzacions de %s"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "Actualitzacions recents de %1$s per a %2$s:"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "en context"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr ""

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr "Envia un resum de correu a la safata d'entrada dels usuaris."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr "Envia'm un resum periòdic d'actualitzacions de la meva xarxa"


code:
# Translation of StatusNet - EmailSummary to German (Deutsch)
# Exported from translatewiki.net
#
# Author: ChrisiPK
# Author: Fujnky
# Author: Giftpflanze
# Author: MF-Warburg
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "Deine neuesten Updates von %s"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "Letzte Aktualisierungen auf %1$s für %2$s:"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "im Kontext"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr "E-Mail-Einstellungen für %2$s ändern"

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr ""
"Eine E-Mail mit der Zusammenfassung des Posteingangs an die Nutzer senden."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr ""
"Schicke mir eine regelmäßige Zusammenfassung der Aktualisierungen auf meinem "
"Netzwerk"


code:
# Translation of StatusNet - EmailSummary to Spanish (español)
# Exported from translatewiki.net
#
# Author: Armando-Martin
# Author: Erchache2000
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "Las actualizaciones más recientes de %s"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "Las actualizaciones más recientes de  %1$s  para  %2$s :"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "en contexto"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr ""
" cambia su configuración de correo electrónico para %2$s"

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr ""
"Enviar un resumen de correo electrónico de la bandeja de entrada para los "
"usuarios."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr "Enviarme un resumen periódico de actualizaciones de mi red"


code:
# Translation of StatusNet - EmailSummary 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 - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+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-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "Zure azken eguneraketak %s(e)n"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "%2$s(e)n eguneraketa berrienak %1$s(e)n:"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "kontestuan"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr "aldatu zure email aukerak %2$s(e)n"

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr "Bidali email laburpen bat erabiltzaileen postontzira."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr "Bidali neri eguneraketen laburpen bat aldioro nere saretik."


code:
# Translation of StatusNet - EmailSummary to French (français)
# Exported from translatewiki.net
#
# Author: Iketsi
# Author: OngolaBoy
# Author: Peter17
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:26+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "Les dernières activités en provenance de %s"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "Dernières activités de %1$s pour %2$s:"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "dans le contexte"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr "changer vos paramètres de messagerie pour %2$s"

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr ""
"Envoyer un résumé de la boîte de réception par courrier électronique aux "
"utilisateurs."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr "M'envoyer un rapport périodique des activités de mon réseau"


code:
# Translation of StatusNet - EmailSummary 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 - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:27+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-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "As súas últimas actualizacións desde %s"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "Actualizacións recentes desde %1$s para %2$s:"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "no contexto"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr ""
"cambiar a configuración do correo electrónico para %2$s"

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr ""
"Enviar aos usuarios por correo electrónico un resumo da caixa de entrada."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr "Enviádeme un resumo periódico coas actualizacións da miña rede"


code:
# Translation of StatusNet - EmailSummary 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 - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-31 21:06+0000\n"
"PO-Revision-Date: 2011-03-31 21:09:13+0000\n"
"Language-Team: Hebrew <http://translatewiki.net/wiki/Portal:he>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-03-18 20:07:04+0000\n"
"X-Generator: MediaWiki 1.18alpha (r85082); Translate extension (2011-03-11)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: he\n"
"X-Message-Group: #out-statusnet-plugin-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#, php-format
msgid "Recent updates from %1s for %2s:"
msgstr ""

msgid "in context"
msgstr ""

#, php-format
msgid "
change your email settings for %2s
"
msgstr ""

msgid "Updates from your network"
msgstr ""

msgid "Send an email summary of the inbox to users."
msgstr "שליחת תקציר של תיבת הדואר הנכנס בדוא״ל למשתמשים."

#. TRANS: Checkbox label in e-mail preferences form.
#, fuzzy
msgid "Send me a periodic summary of updates from my network."
msgstr "שליחת תקציר של תיבת הדואר הנכנס בדוא״ל למשתמשים."


code:
# Translation of StatusNet - EmailSummary 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 - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:27+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-07-01 11:18:46+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-emailsummary\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Subject for e-mail.
#, php-format
msgid "Your latest updates from %s"
msgstr "Tu ultime actualisationes de %s"

#. TRANS: Text in e-mail summary.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
#, php-format
msgid "Recent updates from %1$s for %2$s:"
msgstr "Actualisationes recente de %1$s pro %2$s:"

#. TRANS: Link text for link to conversation view.
msgid "in context"
msgstr "in contexto"

#. TRANS: Link text for link to e-mail settings.
#. TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
#, php-format
msgid "change your email settings for %2$s"
msgstr "modificar tu configuration de e-mail pro %2$s"

#. TRANS: Plugin description.
msgid "Send an email summary of the inbox to users."
msgstr "Inviar in e-mail un summario del cassa de entrata al usatores."

#. TRANS: Checkbox label in e-mail preferences form.
msgid "Send me a periodic summary of updates from my network"
msgstr "Inviar me un summario periodic del actualisationes de mi rete"


code:
# Translation of StatusNet - EmailSummary 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 - EmailSummary\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-31 21:06+0000\n"
"PO-Revision-Date: 2011-03-31 21:09:13+0000\n"
"Language-Team: Indonesian <http://translatewiki.net/wiki/Portal:id>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-03-18 20:07:04+0000\n"
"X-Generator: MediaWiki 1.18alpha (r85082); Translate extension (2011-03-11)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: id\n"
"X-Message-Group: #out-statusnet-plugin-emailsummary\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#, php-format
msgid "Recent updates from %1s for %2s:"
msgstr ""

msgid "in context"
msgstr ""

#, php-format
msgid "
change your email settings for %2s
"
msgstr ""

msgid "Updates from your network"
msgstr ""

msgid "Send an email summary of the inbox to users."
msgstr "Kirim surel ringkasan kotak masuk ke pengguna."

#. TRANS: Checkbox label in e-mail preferences form.
#, fuzzy
msgid "Send me a periodic summary of updates from my network."
msgstr "Kirim surel ringkasan kotak masuk ke pengguna."