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

#. TRANS: Client exception thrown when a given e-mailaddress is not in the domain whitelist.
#. TRANS: %s is a whitelisted e-mail domain.
#, php-format
msgid "Email address must be in this domain: %s."
msgstr "Адреса електронної пошти повинна бути в цьому домені: %s."

#. TRANS: Client exception thrown when a given e-mailaddress is not in the domain whitelist.
#. TRANS: %s are whitelisted e-mail domains separated by comma's (localisable).
#, php-format
msgid "Email address must be in one of these domains: %s."
msgstr "Адреса електронної пошти повинна бути в одному з цих доменів: %s."

#. TRANS: Separator for whitelisted domains.
msgctxt "SEPARATOR"
msgid ", "
msgstr ", "

#. TRANS: Exception thrown when an e-mail address does not match the site's domain whitelist.
msgid "That email address is not allowed on this site."
msgstr "Така адреса електронної пошти є неприпустимою на цьому сайті."

#. TRANS: Title for invitiation deletion dialog.
msgid "Confirmation Required"
msgstr "Необхідне підтвердження"

#. TRANS: Confirmation text for invitation deletion dialog.
msgid "Really delete this invitation?"
msgstr "Дійсно видалити це запрошення?"

#. TRANS: Plugin description.
msgid "Restrict domains for email users."
msgstr "Обмежити домени для електронної пошти користувачів."

#. TRANS: Form legend.
msgid "Invite collegues"
msgstr "Запросити колег"

#. TRANS: Field label for a personal message to send to invitees.
msgid "Personal message"
msgstr "Особисте повідомлення"

#. TRANS: Field title for a personal message to send to invitees.
msgid "Optionally add a personal message to the invitation."
msgstr "При необхідності додайте особисте повідомлення до запрошення."

#. TRANS: Link description to action to add another item to a list.
msgid "Add another item"
msgstr "Додати ще один пункт"

#. TRANS: Send button for inviting friends.
msgctxt "BUTTON"
msgid "Send"
msgstr "Надіслати"

#. TRANS: Submit button title.
msgid "Send invitations."
msgstr "Надіслати запрошення."


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

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

class EmailAuthenticationPlugin extends Plugin
{
    // $nickname for this plugin is the user's email address
    function onStartCheckPassword($nickname, $password, &$authenticatedUser)
    {
        if (!strpos($nickname, '@')) {
            return true;
        }

        $user = User::getKV('email', $nickname);
        if ($user instanceof User && $user->email === $nickname) {
            if (common_check_user($user->nickname, $password)) {
                $authenticatedUser = $user;
                return false;
            }
        }

        return true;
    }

    function onPluginVersion(&$versions)
    {
        $versions[] = array('name' => 'Email Authentication',
                            'version' => GNUSOCIAL_VERSION,
                            'author' => 'Craig Andrews',
                            'homepage' => 'http://status.net/wiki/Plugin:EmailAuthentication',
                            'rawdescription' =>
                            // TRANS: Plugin description.
                            _m('The Email Authentication plugin allows users to login using their email address.'));
        return true;
    }
}

license: mit


code:
The Email Authentication plugin allows users to login using their email address.

The provided email address is used to lookup the user's nickname, then that
nickname and the provided password is checked.

Installation
============
add "addPlugin('emailAuthentication');" to the bottom of your config.php.

path: plugins/EmailAuthentication/README


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

#. TRANS: Plugin description.
#: EmailAuthenticationPlugin.php:61
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""


code:
# Translation of StatusNet - EmailAuthentication to Belarusian (Taraškievica orthography) (беларуская (тарашкевіца))
# Exported from translatewiki.net
#
# Author: EugeneZelenko
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:20+0000\n"
"Language-Team: Belarusian (Taraškievica orthography) <https://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-06-05 21:50:02+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: be-tarask\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Дапаўненьне аўтэнтыфікацыі па электроннай пошце дазваляе карыстальнікам "
"увайсьці ў сыстэму з выкарыстаньнем іх адрасу электроннай пошты."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:20+0000\n"
"Language-Team: Breton <https://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Talvezout a ra an adveziant dilesa d'an implijerien da gevreañ en ur ober "
"gant o chomlec'h postel."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:20+0000\n"
"Language-Team: Catalan <https://translatewiki.net/wiki/Portal:ca>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"El connector d'autenticació per correu electrònic permet als usuaris a "
"iniciar una sessió fent servir l'adreça electrònica."


code:
# Translation of StatusNet - EmailAuthentication to German (Deutsch)
# Exported from translatewiki.net
#
# Author: The Evil IP address
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:20+0000\n"
"Language-Team: German <https://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Das „Email Authentication“-Plugin ermöglicht Benutzern, sich mit ihrer E-"
"Mail-Adresse anzumelden."


code:
# Translation of StatusNet - EmailAuthentication to Spanish (español)
# Exported from translatewiki.net
#
# Author: Translationista
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:20+0000\n"
"Language-Team: Spanish <https://translatewiki.net/wiki/Portal:es>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"La extensión de Autenticación de Correo Electrónico permite a los usuarios "
"iniciar sesión con su dirección de correo electrónico."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:20+0000\n"
"Language-Team: Basque <https://translatewiki.net/wiki/Portal:eu>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Email Authentication pluginak erabiltzaileei heuren email helbidearekin "
"saioa hasten uzten die."


code:
# Translation of StatusNet - EmailAuthentication to Finnish (suomi)
# Exported from translatewiki.net
#
# Author: Nike
# Author: XTL
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Finnish <https://translatewiki.net/wiki/Portal:fi>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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: fi\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Sähköpostitodennusliitännäisen avulla käyttäjät voivat kirjautua sisään "
"sähköpostiosoitteellaan."


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

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"L’extension d’identification électronique permet à l’utilisateur de "
"s’identifier en utilisant son adresse électronique."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Galician <https://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"O complemento de autenticación por correo electrónico permite aos usuarios "
"rexistrarse mediante o seu enderezo de correo electrónico."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Hebrew <https://translatewiki.net/wiki/Portal:he>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: he\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr "תוסף אימות הדוא״ל מאפשר למשתמשים להיכנס באמצעות כתובת הדוא״ל שלהם."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Interlingua <https://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Le plug-in Authentication E-mail permitte que usatores aperi session usante "
"lor adresse de e-mail."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Indonesian <https://translatewiki.net/wiki/Portal:id>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: id\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Pengaya Email Authentication memungkinkan pengguna untuk masuk log "
"menggunakan alamat surel mereka."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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 ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Il plugin di autenticazione dell'email consente agli utenti di accedere al "
"sito utilizzando il loro indirizzo e-mail."


code:
# Translation of StatusNet - EmailAuthentication to Japanese (日本語)
# Exported from translatewiki.net
#
# Author: Shirayuki
# Author: 青子守歌
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Japanese <https://translatewiki.net/wiki/Portal:ja>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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: ja\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"メール認証プラグインは、ユーザーがメールアドレスでログインすることを許可しま"
"す。"


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:21+0000\n"
"Language-Team: Macedonian <https://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Приклучокот Email Authentication им овозможува на корисниците да се "
"најавуваат со е-поштенска адреса."


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

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Utvidelsen Email Authentication gjør det mulig for brukere å logge inn med "
"sin e-postadresse."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:22+0000\n"
"Language-Team: Dutch <https://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"De plug-in E-mailauthenticatie maakt het voor gebruikers mogelijk om aan te "
"melden met hun e-mailadres."


code:
# Translation of StatusNet - EmailAuthentication to Polish (polski)
# Exported from translatewiki.net
#
# Author: BeginaFelicysym
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:22+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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=3; plural=(n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && "
"(n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Wtyczka uwierzytelniania wiadomości E-mail pozwala użytkownikom na logowanie "
"przy użyciu ich adresów e-mail."


code:
# Translation of StatusNet - EmailAuthentication to Portuguese (português)
# Exported from translatewiki.net
#
# Author: Waldir
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:22+0000\n"
"Language-Team: Portuguese <https://translatewiki.net/wiki/Portal:pt>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+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-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"O plugin de autenticação por email permite aos utilizadores autenticar-se "
"usando o seu endereço de email."


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

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"O plugin de autenticação por e-mail permite aos usuário autenticarem-se "
"usando o seu endereço de e-mail."


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

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Модуль аутентификации по электронной почте позволяет пользователям войти в "
"систему используя адрес электронной почты."


code:
# Translation of StatusNet - EmailAuthentication 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 - EmailAuthentication\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:22+0000\n"
"Language-Team: Tagalog <https://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:02+0000\n"
"X-Generator: MediaWiki 1.20alpha (233fc08); Translate 2012-06-21\n"
"X-Translation-Project: translatewiki.net <https://translatewiki.net>\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-emailauthentication\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Ang pamasak na Pagpapatunay ng E-liham ay nagpapahintulot sa mga tagagamit "
"na makalagdang ginagamit ang kanilang tirahan ng e-liham."


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

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr ""
"Додаток автентифікації через адресу ел. пошти дозволяє користувачам входити "
"на сайт використовуючи адресу ел. пошти."


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

#. TRANS: Plugin description.
msgid ""
"The Email Authentication plugin allows users to login using their email "
"address."
msgstr "Email验证插件允许用户使用Email地址登录。"


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Email-based registration, as on the StatusNet OnDemand service
 *
 * 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  Email registration
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 * Email based registration plugin
 *
 * @category  Email registration
 * @package   StatusNet
 * @author    Brion Vibber <brionv@status.net>
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class EmailRegistrationPlugin extends Plugin
{
    const CONFIRMTYPE = 'register';

    function onArgsInitialize(&$args)
    {
        if (array_key_exists('action', $args) && $args['action'] == 'register') {
            // YOINK!
            $args['action'] = 'emailregister';
        }
        return true;
    }

    function onLoginAction($action, &$login)
    {
        if ($action == 'emailregister') {
            $login = true;
            return false;
        }
        return true;
    }

    function onStartLoadDoc(&$title, &$output)
    {
        $dir = dirname(__FILE__);

        // @todo FIXME: i18n issue.
        $docFile = DocFile::forTitle($title, $dir.'/doc-src/');

        if (!empty($docFile)) {
            $output = $docFile->toHTML();
            return false;
        }

        return true;
    }

    static function registerEmail($email)
    {
        $old = User::getKV('email', $email);

        if (!empty($old)) {
            // TRANS: Error text when trying to register with an already registered e-mail address.
            // TRANS: %s is the URL to recover password at.
            throw new ClientException(sprintf(_m('A user with that email address already exists. You can use the '.
                                                 'password recovery tool to recover a missing password.'),
                                              common_local_url('recoverpassword')));
        }

        $valid = false;

        if (Event::handle('StartValidateUserEmail', array(null, $email, &$valid))) {
            $valid = Validate::email($email, common_config('email', 'check_domain'));
            Event::handle('EndValidateUserEmail', array(null, $email, &$valid));
        }

        if (!$valid) {
            // TRANS: Error text when trying to register with an invalid e-mail address.
            throw new ClientException(_m('Not a valid email address.'));
        }

        $confirm = Confirm_address::getAddress($email, self::CONFIRMTYPE);

        if (empty($confirm)) {
            $confirm = Confirm_address::saveNew(null, $email, 'register');
        }

        return $confirm;
    }

    static function nicknameFromEmail($email)
    {
        $parts = explode('@', $email);

        $nickname = $parts[0];

        $nickname = preg_replace('/[^A-Za-z0-9]/', '', $nickname);

        $nickname = Nickname::normalize($nickname);

        $original = $nickname;

        $n = 0;

        while (User::getKV('nickname', $nickname)) {
            $n++;
            $nickname = $original . $n;
        }

        return $nickname;
    }

    static function sendConfirmEmail($confirm, $title=null)
    {
        $sitename = common_config('site', 'name');

        $recipients = array($confirm->address);

        $headers['From'] = mail_notify_from();
        $headers['To'] = trim($confirm->address);
         // TRANS: Subject for confirmation e-mail.
         // TRANS: %s is the StatusNet sitename.
        $headers['Subject'] = sprintf(_m('Welcome to %s'), $sitename);
        $headers['Content-Type'] = 'text/html; charset=UTF-8';

        $confirmUrl = common_local_url('register', array('code' => $confirm->code));

        if (empty($title)) {
            $title = 'confirmemailreg';
        }

        $confirmTemplate = DocFile::forTitle($title, DocFile::mailPaths());

        $body = $confirmTemplate->toHTML(array('confirmurl' => $confirmUrl));

        mail_send($recipients, $headers, $body);
    }

    function onEndDocFileForTitle($title, $paths, &$filename)
    {
        if ($title == 'confirmemailreg' && empty($filename)) {
            $filename = dirname(__FILE__).'/mail-src/'.$title;
            return false;
        }
        return true;
    }

    function onPluginVersion(&$versions)
    {
        $versions[] = array('name' => 'EmailRegistration',
                            'version' => GNUSOCIAL_VERSION,
                            'author' => 'Evan Prodromou',
                            'homepage' => 'http://status.net/wiki/Plugin:EmailRegistration',
                            'rawdescription' =>
                            // TRANS: Plugin description.
                            _m('Use email only for registration.'));
        return true;
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Register a user by their email address
 *
 * 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  Email registration
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 * Email registration
 *
 * There are four cases where we're called:
 *
 * 1. GET, no arguments. Initial registration; ask for an email address.
 * 2. POST, email address argument. Initial registration; send an email to confirm.
 * 3. GET, code argument. Confirming an invitation or a registration; look them up,
 *    create the relevant user if possible, login as that user, and
 *    show a password-entry form.
 * 4. POST, password argument. After confirmation, set the password for the new
 *    user, and redirect to a registration complete action with some instructions.
 *
 * @category  Action
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class EmailregisterAction extends Action
{
    const NEWEMAIL = 1;
    const SETPASSWORD = 2;
    const NEWREGISTER = 3;
    const CONFIRMINVITE = 4;
    const CONFIRMREGISTER = 5;

    const CONFIRMTYPE = 'register';

    protected $user;
    protected $email;
    protected $code;
    protected $invitation;
    protected $confirmation;
    protected $password1;
    protected $password2;
    protected $state;
    protected $error;
    protected $complete;

    function prepare($argarray)
    {
        parent::prepare($argarray);

        if (common_config('site', 'closed')) {
            // TRANS: Client exception trown when registration by e-mail is not allowed.
            throw new ClientException(_m('Registration not allowed.'), 403);
        }

        if ($this->isPost()) {

            $this->checkSessionToken();

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

            if (!empty($this->email)) {
                if (common_config('site', 'inviteonly')) {
                    // TRANS: Client exception trown when trying to register without an invitation.
                    throw new ClientException(_m('Sorry, only invited people can register.'), 403);
                }
                $this->email = common_canonical_email($this->email);
                $this->state = self::NEWEMAIL;
            } else {
                $this->state = self::SETPASSWORD;

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

                if (empty($this->code)) {
                    // TRANS: Client exception thrown when no confirmation code was provided.
                    throw new ClientException(_m('No confirmation code.'));
                }

                $this->invitation = Invitation::getKV('code', $this->code);

                if (!empty($this->invitation)) {
                    if (!empty($this->invitation->registered_user_id)) {
                        // TRANS: Client exception trown when using an invitation multiple times.
                        throw new ClientException(_m('Invitation already used.'), 403);
                    }
                } else {

                    $this->confirmation = Confirm_address::getKV('code', $this->code);

                    if (empty($this->confirmation)) {
                        // TRANS: Client exception thrown when given confirmation code was not issued.
                        throw new ClientException(_m('No such confirmation code.'), 403);
                    }
                }

                $this->password1 = $this->trimmed('password1');
                $this->password2 = $this->trimmed('password2');

                $this->tos = $this->boolean('tos');
            }
        } else { // GET
            $this->code = $this->trimmed('code');

            if (empty($this->code)) {
                if (common_config('site', 'inviteonly')) {
                    // TRANS: Client exception trown when trying to register without an invitation.
                    throw new ClientException(_m('Sorry, only invited people can register.'), 403);
                }
                $this->state = self::NEWREGISTER;
            } else {
                $this->invitation = Invitation::getKV('code', $this->code);
                if (!empty($this->invitation)) {
                    if (!empty($this->invitation->registered_user_id)) {
                        // TRANS: Client exception trown when using an invitation multiple times.
                        throw new ClientException(_m('Invitation already used.'), 403);
                    }
                    $this->state = self::CONFIRMINVITE;
                } else {
                    $this->state = self::CONFIRMREGISTER;
                    $this->confirmation = Confirm_address::getKV('code', $this->code);

                    if (empty($this->confirmation)) {
                        // TRANS: Client exception thrown when given confirmation code was not issued.
                        throw new ClientException(_m('No such confirmation code.'), 405);
                    }
                }
            }
        }

        return true;
    }

    function title()
    {
        switch ($this->state) {
        case self::NEWREGISTER:
        case self::NEWEMAIL:
            // TRANS: Title for registration page.
            return _m('TITLE','Register');
            break;
        case self::SETPASSWORD:
        case self::CONFIRMINVITE:
        case self::CONFIRMREGISTER:
            // TRANS: Title for page where to register with a confirmation code.
            return _m('TITLE','Complete registration');
            break;
        }
    }

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

        if (!empty($cur)) {
            common_redirect(common_local_url('all', array('nickname' => $cur->nickname)));
        }

        switch ($this->state) {
        case self::NEWREGISTER:
            $this->showRegistrationForm();
            break;
        case self::NEWEMAIL:
            $this->registerUser();
            break;
        case self::CONFIRMINVITE:
            $this->confirmRegistration();
            break;
        case self::CONFIRMREGISTER:
            $this->confirmRegistration();
            break;
        case self::SETPASSWORD:
            $this->setPassword();
            break;
        }
        return;
    }

    function showRegistrationForm()
    {
        $this->form = new EmailRegistrationForm($this, $this->email);
        $this->showPage();
    }

    function registerUser()
    {
        try {
            $confirm = EmailRegistrationPlugin::registerEmail($this->email);
        } catch (ClientException $ce) {
            $this->error = $ce->getMessage();
            $this->showRegistrationForm();
            return;
        }

        EmailRegistrationPlugin::sendConfirmEmail($confirm);

        // TRANS: Confirmation text after initial registration.
        // TRANS: %s an e-mail address.
        $prompt = sprintf(_m('An email was sent to %s to confirm that address. Check your email inbox for instructions.'),
                          $this->email);

        $this->complete = $prompt;

        $this->showPage();
    }

    function confirmRegistration()
    {
        if (!empty($this->invitation)) {
            $email = $this->invitation->address;
        } else if (!empty($this->confirmation)) {
            $email = $this->confirmation->address;
        }

        $nickname = $this->nicknameFromEmail($email);

        $this->form = new ConfirmRegistrationForm($this,
                                                  $nickname,
                                                  $email,
                                                  $this->code);
        $this->showPage();
    }

    function setPassword()
    {
        if (Event::handle('StartRegistrationTry', array($this))) {
            if (!empty($this->invitation)) {
                $email = trim($this->invitation->address);
            } else if (!empty($this->confirmation)) {
                $email = trim($this->confirmation->address);
            } else {
                // TRANS: Client exception trown when trying to set password with an invalid confirmation code.
                throw new Exception(_m('No confirmation thing.'));
            }

            if (!$this->tos) {
                // TRANS: Error text when trying to register without agreeing to the terms.
                $this->error = _m('You must accept the terms of service and privacy policy to register.');
            } else if (empty($this->password1)) {
                // TRANS: Error text when trying to register without a password.
                $this->error = _m('You must set a password');
            } else if (strlen($this->password1) < 6) {
                // TRANS: Error text when trying to register with too short a password.
                $this->error = _m('Password must be 6 or more characters.');
            } else if ($this->password1 != $this->password2) {
                // TRANS: Error text when trying to register without providing the same password twice.
                $this->error = _m('Passwords do not match.');
            }

            if (!empty($this->error)) {
                $nickname = $this->nicknameFromEmail($email);
                $this->form = new ConfirmRegistrationForm($this, $nickname, $email, $this->code);
                $this->showPage();
                return;
            }

            $nickname = $this->nicknameFromEmail($email);

            try {
                $fields = array('nickname' => $nickname,
                                'email' => $email,
                                'password' => $this->password1,
                                'email_confirmed' => true);

                if (!empty($this->invitation)) {
                    $fields['code'] = $this->invitation->code;
                }
                $this->user = User::register($fields);
            } catch (ClientException $e) {
                $this->error = $e->getMessage();
                $nickname = $this->nicknameFromEmail($email);
                $this->form = new ConfirmRegistrationForm($this, $nickname, $email, $this->code);
                $this->showPage();
                return;
            }

            if (empty($this->user)) {
                // TRANS: Exception trown when using an invitation multiple times.
                throw new Exception(_m('Failed to register user.'));
            }

            common_set_user($this->user);
            // this is a real login
            common_real_login(true);

            // Re-init language env in case it changed (not yet, but soon)
            common_init_language();

            if (!empty($this->confirmation)) {
                $this->confirmation->delete();
            }

            Event::handle('EndRegistrationTry', array($this));
        }

        if (Event::handle('StartRegisterSuccess', array($this))) {
            Event::handle('EndRegisterSuccess', array($this));
            common_redirect(common_local_url('doc', array('title' => 'welcome')), 303);
            // common_redirect exits, so we can't run the event _after_ it of course.
        }
    }

    function sendConfirmEmail($confirm)
    {
        $sitename = common_config('site', 'name');

        $recipients = array($confirm->address);

        $headers['From'] = mail_notify_from();
        $headers['To'] = trim($confirm->address);
         // TRANS: Subject for confirmation e-mail.
         // TRANS: %s is the StatusNet sitename.
        $headers['Subject'] = sprintf(_m('Confirm your registration on %s'), $sitename);

        $confirmUrl = common_local_url('register', array('code' => $confirm->code));

        // TRANS: Body for confirmation e-mail.
        // TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
        $body = sprintf(_m('Someone (probably you) has requested an account on %1$s using this email address.'.
                          "\n".
                          'To confirm the address, click the following URL or copy it into the address bar of your browser.'.
                          "\n".
                          '%2$s'.
                          "\n".
                          'If it was not you, you can safely ignore this message.'),
                        $sitename,
                        $confirmUrl);

        mail_send($recipients, $headers, $body);
    }

    function showContent()
    {
        if ($this->complete) {
            $this->elementStart('p', 'success');
            $this->raw($this->complete);
            $this->elementEnd('p');
        } else {
            if ($this->error) {
                $this->elementStart('p', 'error');
                $this->raw($this->error);
                $this->elementEnd('p');
            }

            if (!empty($this->form)) {
                $this->form->show();
            }
        }
    }

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

    function nicknameFromEmail($email)
    {
        return EmailRegistrationPlugin::nicknameFromEmail($email);
    }

    /**
     * A local menu
     *
     * Shows different login/register actions.
     *
     * @return void
     */
    function showLocalNav()
    {
        $nav = new LoginGroupNav($this);
        $nav->show();
    }
}


code:
Welcome to %%site.name%%.

From here, you may want to...

* Go to [your profile](%%user.profileurl%%) and post your first message.
* [Search for people](%%action.peoplesearch%%) that you may know or that share your interests.
* Update your [profile settings](%%action.profilesettings%%) to tell others more about you.
* Read over the [online docs](%%doc.help%%) for features you may have missed.

Thanks for signing up and we hope you enjoy using this service.


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Registration confirmation form
 *
 * 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  Email registration
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 * Registration confirmation form
 *
 * @category  Email registration
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class ConfirmRegistrationForm extends Form
{
    protected $code;
    protected $nickname;
    protected $email;

    function __construct($out, $nickname, $email, $code)
    {
        parent::__construct($out);
        $this->nickname = $nickname;
        $this->email = $email;
        $this->code = $code;
    }

    function formData()
    {
        $this->out->element('p', 'instructions',
                            // TRANS: Form instructions.
                            sprintf(_m('Enter a password to confirm your new account.')));

        $this->hidden('code', $this->code);

        $this->out->elementStart('ul', 'form_data');

        $this->elementStart('li');

        // TRANS: Field label in e-mail registration form.
        $this->element('label', array('for' => 'nickname-ignore'), _m('LABEL','User name'));

        $this->element('input', array('name' => 'nickname-ignore',
                                      'type' => 'text',
                                      'id' => 'nickname-ignore',
                                      'disabled' => 'true',
                                      'value' => $this->nickname));

        $this->elementEnd('li');

        $this->elementStart('li');

        // TRANS: Field label.
        $this->element('label', array('for' => 'email-ignore'), _m('Email address'));

        $this->element('input', array('name' => 'email-ignore',
                                      'type' => 'text',
                                      'id' => 'email-ignore',
                                      'disabled' => 'true',
                                      'value' => $this->email));

        $this->elementEnd('li');

        $this->elementStart('li');
        // TRANS: Field label on account registration page.
        $this->password('password1', _m('Password'),
                        // TRANS: Field title on account registration page.
                        _m('6 or more characters.'));
        $this->elementEnd('li');
        $this->elementStart('li');
        // TRANS: Field label on account registration page. In this field the password has to be entered a second time.
        $this->password('password2', _m('PASSWORD','Confirm'),
                        // TRANS: Field title on account registration page.
                        _m('Same as password above.'));
        $this->elementEnd('li');

        $this->elementStart('li');

        $this->element('input', array('name' => 'tos',
                                      'type' => 'checkbox',
                                      'class' => 'checkbox',
                                      'id' => 'tos',
                                      'value' => 'true'));
        $this->text(' ');

        $this->elementStart('label', array('class' => 'checkbox',
                                           'for' => 'tos'));

        // TRANS: Checkbox title for terms of service and privacy policy.
        $this->raw(sprintf(_m('I agree to the Terms of service and '.
                             'Privacy policy of this site.'),
                           common_local_url('doc', array('title' => 'tos')),
                           common_local_url('doc', array('title' => 'privacy'))));

        $this->elementEnd('label');

        $this->elementEnd('li');

        $this->out->elementEnd('ul');
    }

    function method()
    {
        return 'post';
    }

    /**
     * Buttons for form actions
     *
     * Submit and cancel buttons (or whatever)
     * Sub-classes should overload this to show their own buttons.
     *
     * @return void
     */

    function formActions()
    {
        // TRANS: Button text for action to register.
        $this->out->submit('submit', _m('BUTTON', 'Register'));
    }

    /**
     * ID of the form
     *
     * Should be unique on the page. Sub-classes should overload this
     * to show their own IDs.
     *
     * @return int ID of the form
     */

    function id()
    {
        return 'form_email_registration';
    }

    /**
     * Action of the form.
     *
     * URL to post to. Should be overloaded by subclasses to give
     * somewhere to post to.
     *
     * @return string URL to post to
     */

    function action()
    {
        return common_local_url('register');
    }

    function formClass()
    {
        return 'form_confirm_registration form_settings';
    }
}


code:
<?php
/**
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2011, StatusNet, Inc.
 *
 * Email registration form
 *
 * 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  Email registration
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */

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

/**
 * Email registration form
 *
 * @category  Email registration
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
 * @link      http://status.net/
 */
class EmailRegistrationForm extends Form
{
    protected $email;

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

    function formData()
    {
        $this->out->element('p', 'instructions',
                            // TRANS: Form instructions.
                            _m('Enter your email address to register for an account.'));

        $this->out->elementStart('fieldset', array('id' => 'new_bookmark_data'));
        $this->out->elementStart('ul', 'form_data');

        $this->li();
        $this->out->input('email',
                          // TRANS: Field label on form for registering an account.
                          _m('LABEL','E-mail address'),
                          $this->email);
        $this->unli();

        $this->out->elementEnd('ul');
        $this->out->elementEnd('fieldset');
    }

     function method()
     {
         return 'post';
     }

    /**
     * Buttons for form actions
     *
     * Submit and cancel buttons (or whatever)
     * Sub-classes should overload this to show their own buttons.
     *
     * @return void
     */
    function formActions()
    {
        // TRANS: Button text for registering an account.
        $this->out->submit('submit', _m('BUTTON', 'Register'));
    }

    /**
     * ID of the form
     *
     * Should be unique on the page. Sub-classes should overload this
     * to show their own IDs.
     *
     * @return int ID of the form
     */
    function id()
    {
        return 'form_email_registration';
    }

    /**
     * Action of the form.
     *
     * URL to post to. Should be overloaded by subclasses to give
     * somewhere to post to.
     *
     * @return string URL to post to
     */
    function action()
    {
        return common_local_url('register');
    }

    function formClass()
    {
        return 'form_email_registration form_settings';
    }
}


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: Client exception trown when registration by e-mail is not allowed.
#: emailregister.php:84
msgid "Registration not allowed."
msgstr ""

#. TRANS: Client exception trown when trying to register without an invitation.
#: emailregister.php:96 emailregister.php:138
msgid "Sorry, only invited people can register."
msgstr ""

#. TRANS: Client exception thrown when no confirmation code was provided.
#: emailregister.php:107
msgid "No confirmation code."
msgstr ""

#. TRANS: Client exception trown when using an invitation multiple times.
#: emailregister.php:115 emailregister.php:146
msgid "Invitation already used."
msgstr ""

#. TRANS: Client exception thrown when given confirmation code was not issued.
#: emailregister.php:123 emailregister.php:155
msgid "No such confirmation code."
msgstr ""

#. TRANS: Title for registration page.
#: emailregister.php:170
msgctxt "TITLE"
msgid "Register"
msgstr ""

#. TRANS: Title for page where to register with a confirmation code.
#: emailregister.php:176
msgctxt "TITLE"
msgid "Complete registration"
msgstr ""

#. TRANS: Confirmation text after initial registration.
#. TRANS: %s an e-mail address.
#: emailregister.php:237
#, php-format
msgid ""
"An email was sent to %s to confirm that address. Check your email inbox for "
"instructions."
msgstr ""

#. TRANS: Client exception trown when trying to set password with an invalid confirmation code.
#: emailregister.php:271
msgid "No confirmation thing."
msgstr ""

#. TRANS: Error text when trying to register without agreeing to the terms.
#: emailregister.php:276
msgid "You must accept the terms of service and privacy policy to register."
msgstr ""

#. TRANS: Error text when trying to register without a password.
#: emailregister.php:279
msgid "You must set a password"
msgstr ""

#. TRANS: Error text when trying to register with too short a password.
#: emailregister.php:282
msgid "Password must be 6 or more characters."
msgstr ""

#. TRANS: Error text when trying to register without providing the same password twice.
#: emailregister.php:285
msgid "Passwords do not match."
msgstr ""

#. TRANS: Exception trown when using an invitation multiple times.
#: emailregister.php:317
msgid "Failed to register user."
msgstr ""

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#: emailregister.php:351
#, php-format
msgid "Confirm your registration on %s"
msgstr ""

#. TRANS: Body for confirmation e-mail.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
#: emailregister.php:357
#, php-format
msgid ""
"Someone (probably you) has requested an account on %1$s using this email "
"address.\n"
"To confirm the address, click the following URL or copy it into the address "
"bar of your browser.\n"
"%2$s\n"
"If it was not you, you can safely ignore this message."
msgstr ""

#. TRANS: Form instructions.
#: emailregistrationform.php:61
msgid "Enter your email address to register for an account."
msgstr ""

#. TRANS: Field label on form for registering an account.
#: emailregistrationform.php:69
msgctxt "LABEL"
msgid "E-mail address"
msgstr ""

#. TRANS: Button text for registering an account.
#. TRANS: Button text for action to register.
#: emailregistrationform.php:93 confirmregistrationform.php:152
msgctxt "BUTTON"
msgid "Register"
msgstr ""

#. TRANS: Form instructions.
#: confirmregistrationform.php:65
msgid "Enter a password to confirm your new account."
msgstr ""

#. TRANS: Field label in e-mail registration form.
#: confirmregistrationform.php:74
msgctxt "LABEL"
msgid "User name"
msgstr ""

#. TRANS: Field label.
#: confirmregistrationform.php:87
msgid "Email address"
msgstr ""

#. TRANS: Field label on account registration page.
#: confirmregistrationform.php:99
msgid "Password"
msgstr ""

#. TRANS: Field title on account registration page.
#: confirmregistrationform.php:101
msgid "6 or more characters."
msgstr ""

#. TRANS: Field label on account registration page. In this field the password has to be entered a second time.
#: confirmregistrationform.php:105
msgctxt "PASSWORD"
msgid "Confirm"
msgstr ""

#. TRANS: Field title on account registration page.
#: confirmregistrationform.php:107
msgid "Same as password above."
msgstr ""

#. TRANS: Checkbox title for terms of service and privacy policy.
#: confirmregistrationform.php:123
#, php-format
msgid ""
"I agree to the Terms of service and Privacy policy of this site."
msgstr ""

#. TRANS: Error text when trying to register with an already registered e-mail address.
#. TRANS: %s is the URL to recover password at.
#: EmailRegistrationPlugin.php:110
#, php-format
msgid ""
"A user with that email address already exists. You can use the password recovery tool to recover a missing password."
msgstr ""

#. TRANS: Error text when trying to register with an invalid e-mail address.
#: EmailRegistrationPlugin.php:124
msgid "Not a valid email address."
msgstr ""

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#: EmailRegistrationPlugin.php:168
#, php-format
msgid "Welcome to %s"
msgstr ""

#. TRANS: Plugin description.
#: EmailRegistrationPlugin.php:201
msgid "Use email only for registration."
msgstr ""


code:
# Translation of StatusNet - EmailRegistration 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 - EmailRegistration\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:22+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-18 16:19:42+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-emailregistration\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: Client exception trown when registration by e-mail is not allowed.
msgid "Registration not allowed."
msgstr "لا يُسمح بالتسجيل."

#. TRANS: Client exception trown when trying to register without an invitation.
msgid "Sorry, only invited people can register."
msgstr "عذرًا، الأشخاص المدعوون وحدهم يستطيعون التسجيل."

#. TRANS: Client exception thrown when no confirmation code was provided.
msgid "No confirmation code."
msgstr "لا رمز تأكيد."

#. TRANS: Client exception trown when using an invitation multiple times.
msgid "Invitation already used."
msgstr ""

#. TRANS: Client exception thrown when given confirmation code was not issued.
msgid "No such confirmation code."
msgstr "رمز التأكيد هذا غير موجود."

#. TRANS: Title for registration page.
msgctxt "TITLE"
msgid "Register"
msgstr "سجّل"

#. TRANS: Title for page where to register with a confirmation code.
msgctxt "TITLE"
msgid "Complete registration"
msgstr "إكمال التسجيل"

#. TRANS: Confirmation text after initial registration.
#. TRANS: %s an e-mail address.
#, php-format
msgid ""
"An email was sent to %s to confirm that address. Check your email inbox for "
"instructions."
msgstr ""
"أرسل بريد إلكتروني إلى %s لتأكييد الحساب. راجع صندوق البريد الإلكتروني "
"الوارد من أجل التعليمات."

#. TRANS: Client exception trown when trying to set password with an invalid confirmation code.
#, fuzzy
msgid "No confirmation thing."
msgstr "لا رمز تأكيد."

#. TRANS: Error text when trying to register without agreeing to the terms.
msgid "You must accept the terms of service and privacy policy to register."
msgstr "يجب أن تقبل بشروط الخدمة وبسياسة الخصوصية لتسجل."

#. TRANS: Error text when trying to register without a password.
msgid "You must set a password"
msgstr "يجب أن تعين كلمة سر"

#. TRANS: Error text when trying to register with too short a password.
msgid "Password must be 6 or more characters."
msgstr "يجب أن تكون كلمة السر 6 حروف أو أكثر."

#. TRANS: Error text when trying to register without providing the same password twice.
msgid "Passwords do not match."
msgstr "كلمتا السر غير متطابقتين."

#. TRANS: Exception trown when using an invitation multiple times.
msgid "Failed to register user."
msgstr "فشل تسجيل المستخدم."

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Confirm your registration on %s"
msgstr "تأكيد تسجيلك على %s"

#. TRANS: Body for confirmation e-mail.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
#, php-format
msgid ""
"Someone (probably you) has requested an account on %1$s using this email "
"address.\n"
"To confirm the address, click the following URL or copy it into the address "
"bar of your browser.\n"
"%2$s\n"
"If it was not you, you can safely ignore this message."
msgstr ""

#. TRANS: Form instructions.
msgid "Enter your email address to register for an account."
msgstr "أدخل عنوان بريدك الإلكتروني لتسجل حسابًا."

#. TRANS: Field label on form for registering an account.
msgctxt "LABEL"
msgid "E-mail address"
msgstr "عنوان البريد الإلكتروني"

#. TRANS: Button text for registering an account.
#. TRANS: Button text for action to register.
msgctxt "BUTTON"
msgid "Register"
msgstr "سجّل"

#. TRANS: Form instructions.
msgid "Enter a password to confirm your new account."
msgstr "أدخل كلمة سر لتؤكد الحساب الجديد."

#. TRANS: Field label in e-mail registration form.
msgctxt "LABEL"
msgid "User name"
msgstr "اسم المستخدم"

#. TRANS: Field label.
msgid "Email address"
msgstr "عنوان البريد الإلكتروني"

#. TRANS: Field label on account registration page.
msgid "Password"
msgstr "كلمة السر"

#. TRANS: Field title on account registration page.
msgid "6 or more characters."
msgstr "6 أحرف أو أكثر."

#. TRANS: Field label on account registration page. In this field the password has to be entered a second time.
msgctxt "PASSWORD"
msgid "Confirm"
msgstr "أكّد"

#. TRANS: Field title on account registration page.
msgid "Same as password above."
msgstr "نفس كلمة السر أعلاه."

#. TRANS: Checkbox title for terms of service and privacy policy.
#, php-format
msgid ""
"I agree to the Terms of service and Privacy policy of this site."
msgstr ""
"أوافق على شروط الخدمة and سياسة "
"الخصوصية لهذا الموقع."

#. TRANS: Error text when trying to register with an already registered e-mail address.
#. TRANS: %s is the URL to recover password at.
#, php-format
msgid ""
"A user with that email address already exists. You can use the password recovery tool to recover a missing password."
msgstr ""
"يوجد بالفعل مستخدم له نفس عنوان البريد الإلكتروني هذا. يمكن أن تستخدم أداة "
"استعادة كلمة السر لتستعيد كلمة السر المفقودة."

#. TRANS: Error text when trying to register with an invalid e-mail address.
msgid "Not a valid email address."
msgstr "ليس عنوان بريد صالح."

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Welcome to %s"
msgstr "مرحبا بكم في %s"

#. TRANS: Plugin description.
msgid "Use email only for registration."
msgstr "استخدام البريد فقط للتسجيل."


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

#. TRANS: Client exception trown when registration by e-mail is not allowed.
msgid "Registration not allowed."
msgstr "N'eo ket aotreet krouiñ kontoù."

#. TRANS: Client exception trown when trying to register without an invitation.
msgid "Sorry, only invited people can register."
msgstr ""
"Digarezit, met n'eus nemet an implijerien bet pedet hag a c'hell en em "
"enskrivañ."

#. TRANS: Client exception thrown when no confirmation code was provided.
msgid "No confirmation code."
msgstr "Kod kadarnaat ebet."

#. TRANS: Client exception trown when using an invitation multiple times.
msgid "Invitation already used."
msgstr ""

#. TRANS: Client exception thrown when given confirmation code was not issued.
msgid "No such confirmation code."
msgstr ""

#. TRANS: Title for registration page.
msgctxt "TITLE"
msgid "Register"
msgstr "En em enskrivañ"

#. TRANS: Title for page where to register with a confirmation code.
msgctxt "TITLE"
msgid "Complete registration"
msgstr ""

#. TRANS: Confirmation text after initial registration.
#. TRANS: %s an e-mail address.
#, php-format
msgid ""
"An email was sent to %s to confirm that address. Check your email inbox for "
"instructions."
msgstr ""

#. TRANS: Client exception trown when trying to set password with an invalid confirmation code.
msgid "No confirmation thing."
msgstr ""

#. TRANS: Error text when trying to register without agreeing to the terms.
msgid "You must accept the terms of service and privacy policy to register."
msgstr ""

#. TRANS: Error text when trying to register without a password.
msgid "You must set a password"
msgstr ""

#. TRANS: Error text when trying to register with too short a password.
msgid "Password must be 6 or more characters."
msgstr ""

#. TRANS: Error text when trying to register without providing the same password twice.
msgid "Passwords do not match."
msgstr ""

#. TRANS: Exception trown when using an invitation multiple times.
msgid "Failed to register user."
msgstr ""

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Confirm your registration on %s"
msgstr ""

#. TRANS: Body for confirmation e-mail.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
#, php-format
msgid ""
"Someone (probably you) has requested an account on %1$s using this email "
"address.\n"
"To confirm the address, click the following URL or copy it into the address "
"bar of your browser.\n"
"%2$s\n"
"If it was not you, you can safely ignore this message."
msgstr ""

#. TRANS: Form instructions.
msgid "Enter your email address to register for an account."
msgstr ""

#. TRANS: Field label on form for registering an account.
msgctxt "LABEL"
msgid "E-mail address"
msgstr "Chomlec'h postel"

#. TRANS: Button text for registering an account.
#. TRANS: Button text for action to register.
msgctxt "BUTTON"
msgid "Register"
msgstr "En em enskrivañ"

#. TRANS: Form instructions.
msgid "Enter a password to confirm your new account."
msgstr ""

#. TRANS: Field label in e-mail registration form.
msgctxt "LABEL"
msgid "User name"
msgstr "Anv implijer"

#. TRANS: Field label.
msgid "Email address"
msgstr "Chomlec'h postel"

#. TRANS: Field label on account registration page.
msgid "Password"
msgstr "Ger-tremen"

#. TRANS: Field title on account registration page.
msgid "6 or more characters."
msgstr "6 arouezenn pe muioc'h."

#. TRANS: Field label on account registration page. In this field the password has to be entered a second time.
msgctxt "PASSWORD"
msgid "Confirm"
msgstr "Kadarnaat"

#. TRANS: Field title on account registration page.
msgid "Same as password above."
msgstr ""

#. TRANS: Checkbox title for terms of service and privacy policy.
#, php-format
msgid ""
"I agree to the Terms of service and Privacy policy of this site."
msgstr ""

#. TRANS: Error text when trying to register with an already registered e-mail address.
#. TRANS: %s is the URL to recover password at.
#, php-format
msgid ""
"A user with that email address already exists. You can use the password recovery tool to recover a missing password."
msgstr ""

#. TRANS: Error text when trying to register with an invalid e-mail address.
msgid "Not a valid email address."
msgstr ""

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Welcome to %s"
msgstr "Degemer mat da %s"

#. TRANS: Plugin description.
msgid "Use email only for registration."
msgstr ""


code:
# Translation of StatusNet - EmailRegistration to Catalan (català)
# Exported from translatewiki.net
#
# Author: Dvdgmz
# Author: Solde
# Author: Toniher
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - EmailRegistration\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:23+0000\n"
"Language-Team: Catalan <https://translatewiki.net/wiki/Portal:ca>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-18 16:19:42+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-emailregistration\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Client exception trown when registration by e-mail is not allowed.
msgid "Registration not allowed."
msgstr "No es permet el registre."

#. TRANS: Client exception trown when trying to register without an invitation.
msgid "Sorry, only invited people can register."
msgstr "Només es poden registrar les persones convidades."

#. TRANS: Client exception thrown when no confirmation code was provided.
msgid "No confirmation code."
msgstr "No hi ha cap codi de confirmació."

#. TRANS: Client exception trown when using an invitation multiple times.
msgid "Invitation already used."
msgstr "Ja s'ha utilitzat la invitació."

#. TRANS: Client exception thrown when given confirmation code was not issued.
msgid "No such confirmation code."
msgstr "No existeix el codi de confirmació."

#. TRANS: Title for registration page.
msgctxt "TITLE"
msgid "Register"
msgstr "Registrar-se"

#. TRANS: Title for page where to register with a confirmation code.
msgctxt "TITLE"
msgid "Complete registration"
msgstr "Registre complet"

#. TRANS: Confirmation text after initial registration.
#. TRANS: %s an e-mail address.
#, php-format
msgid ""
"An email was sent to %s to confirm that address. Check your email inbox for "
"instructions."
msgstr ""

#. TRANS: Client exception trown when trying to set password with an invalid confirmation code.
msgid "No confirmation thing."
msgstr "No hi ha res de confirmació."

#. TRANS: Error text when trying to register without agreeing to the terms.
msgid "You must accept the terms of service and privacy policy to register."
msgstr ""
"Cal que acceptis les condicions del servei i la política de privacitat per "
"registrar-te"

#. TRANS: Error text when trying to register without a password.
msgid "You must set a password"
msgstr "Cal que defineixis una contrassenya"

#. TRANS: Error text when trying to register with too short a password.
msgid "Password must be 6 or more characters."
msgstr "La contrasenya ha de tenir 6 o més caràcters."

#. TRANS: Error text when trying to register without providing the same password twice.
msgid "Passwords do not match."
msgstr "Les contrasenyes no coincideixen."

#. TRANS: Exception trown when using an invitation multiple times.
msgid "Failed to register user."
msgstr "No s'ha pogut registrar l'usuari."

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Confirm your registration on %s"
msgstr "Confirmeu el vostre registre a %s"

#. TRANS: Body for confirmation e-mail.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
#, php-format
msgid ""
"Someone (probably you) has requested an account on %1$s using this email "
"address.\n"
"To confirm the address, click the following URL or copy it into the address "
"bar of your browser.\n"
"%2$s\n"
"If it was not you, you can safely ignore this message."
msgstr ""

#. TRANS: Form instructions.
msgid "Enter your email address to register for an account."
msgstr "Introduïu la vostra adreça electrònica per registrar un compte."

#. TRANS: Field label on form for registering an account.
msgctxt "LABEL"
msgid "E-mail address"
msgstr "Adreça de correu electrònic"

#. TRANS: Button text for registering an account.
#. TRANS: Button text for action to register.
msgctxt "BUTTON"
msgid "Register"
msgstr "Enregistrar"

#. TRANS: Form instructions.
msgid "Enter a password to confirm your new account."
msgstr "Escrigui una contrasenya per a confirmar el nou compte."

#. TRANS: Field label in e-mail registration form.
msgctxt "LABEL"
msgid "User name"
msgstr "Nom d'usuari"

#. TRANS: Field label.
msgid "Email address"
msgstr "Adreça de correu electrònic"

#. TRANS: Field label on account registration page.
msgid "Password"
msgstr "Contrasenya"

#. TRANS: Field title on account registration page.
msgid "6 or more characters."
msgstr "6 o més caràcters."

#. TRANS: Field label on account registration page. In this field the password has to be entered a second time.
msgctxt "PASSWORD"
msgid "Confirm"
msgstr "Confirma"

#. TRANS: Field title on account registration page.
msgid "Same as password above."
msgstr "Igual que la contrasenya de dalt"

#. TRANS: Checkbox title for terms of service and privacy policy.
#, php-format
msgid ""
"I agree to the Terms of service and Privacy policy of this site."
msgstr ""
"Estic d'acord amb les Condicions de servei i la Política de privacitat d'aquest lloc."

#. TRANS: Error text when trying to register with an already registered e-mail address.
#. TRANS: %s is the URL to recover password at.
#, php-format
msgid ""
"A user with that email address already exists. You can use the password recovery tool to recover a missing password."
msgstr ""
"Un usuari amb aquesta adreça de correu electrònic ja existeix. Vostè pot "
"utilitzar l'eina de recuperació de la contrasenya per "
"recuperar una contrasenya perduda."

#. TRANS: Error text when trying to register with an invalid e-mail address.
msgid "Not a valid email address."
msgstr "No és una adreça de correu electrònic vàlida."

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Welcome to %s"
msgstr "Us donem la benvinguda a %s"

#. TRANS: Plugin description.
msgid "Use email only for registration."
msgstr "Utilitza el correu electrònic només per al registre."


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

#. TRANS: Client exception trown when registration by e-mail is not allowed.
msgid "Registration not allowed."
msgstr "Registrierung nicht erlaubt."

#. TRANS: Client exception trown when trying to register without an invitation.
msgid "Sorry, only invited people can register."
msgstr "Es tut uns leid, zum Registrieren benötigst du eine Einladung."

#. TRANS: Client exception thrown when no confirmation code was provided.
msgid "No confirmation code."
msgstr "Kein Bestätigungscode."

#. TRANS: Client exception trown when using an invitation multiple times.
msgid "Invitation already used."
msgstr "Einladung bereits verwendet."

#. TRANS: Client exception thrown when given confirmation code was not issued.
msgid "No such confirmation code."
msgstr "Bestätigungscode nicht vorhanden."

#. TRANS: Title for registration page.
msgctxt "TITLE"
msgid "Register"
msgstr "Registrieren"

#. TRANS: Title for page where to register with a confirmation code.
msgctxt "TITLE"
msgid "Complete registration"
msgstr "Registrierung abschließen"

#. TRANS: Confirmation text after initial registration.
#. TRANS: %s an e-mail address.
#, php-format
msgid ""
"An email was sent to %s to confirm that address. Check your email inbox for "
"instructions."
msgstr ""
"An %s wurde eine E-Mail versandt, um die Adresse zu bestätigen. Schaue in "
"deinem Postfach nach weiteren Instruktionen."

#. TRANS: Client exception trown when trying to set password with an invalid confirmation code.
msgid "No confirmation thing."
msgstr "Kein Bestätigungscode."

#. TRANS: Error text when trying to register without agreeing to the terms.
msgid "You must accept the terms of service and privacy policy to register."
msgstr ""
"Du musst die Nutzungsbedingungen und die Datenschutzrichtlinie annehmen, um "
"dich registrieren zu können."

#. TRANS: Error text when trying to register without a password.
msgid "You must set a password"
msgstr "Du musst ein Passwort angeben"

#. TRANS: Error text when trying to register with too short a password.
msgid "Password must be 6 or more characters."
msgstr "Passwort muss mindestens 6 Zeichen lang sein."

#. TRANS: Error text when trying to register without providing the same password twice.
msgid "Passwords do not match."
msgstr "Passwörter stimmen nicht überein."

#. TRANS: Exception trown when using an invitation multiple times.
msgid "Failed to register user."
msgstr "Registrieren des Benutzers fehlgeschlagen"

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Confirm your registration on %s"
msgstr "Bestätige deine Registrierung auf %s"

#. TRANS: Body for confirmation e-mail.
#. TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
#, php-format
msgid ""
"Someone (probably you) has requested an account on %1$s using this email "
"address.\n"
"To confirm the address, click the following URL or copy it into the address "
"bar of your browser.\n"
"%2$s\n"
"If it was not you, you can safely ignore this message."
msgstr ""
"Jemand, wahrscheinlich du selbst, hat unter Angabe dieser E-Mail-Adresse ein "
"Benutzerkonto auf %1$s beantragt.\n"
"Um die Adresse zu bestätigen, klicke auf die folgende URL oder kopiere sie "
"in die Adressleiste deines Browsers.\n"
"%2$s\n"
"Wenn du es nicht warst, kannst du diese Nachricht getrost ignorieren."

#. TRANS: Form instructions.
msgid "Enter your email address to register for an account."
msgstr "Gib deine E-Mail-Adresse an, um ein Benutzerkonto zu registrieren."

#. TRANS: Field label on form for registering an account.
msgctxt "LABEL"
msgid "E-mail address"
msgstr "E-Mail-Adresse"

#. TRANS: Button text for registering an account.
#. TRANS: Button text for action to register.
msgctxt "BUTTON"
msgid "Register"
msgstr "Registrieren"

#. TRANS: Form instructions.
msgid "Enter a password to confirm your new account."
msgstr "Gib ein Passwort ein, um dein neues Benutzerkonto zu bestätigen."

#. TRANS: Field label in e-mail registration form.
msgctxt "LABEL"
msgid "User name"
msgstr "Benutzername"

#. TRANS: Field label.
msgid "Email address"
msgstr "E-Mail-Adresse"

#. TRANS: Field label on account registration page.
msgid "Password"
msgstr "Passwort"

#. TRANS: Field title on account registration page.
msgid "6 or more characters."
msgstr "Mindestens 6 Zeichen."

#. TRANS: Field label on account registration page. In this field the password has to be entered a second time.
msgctxt "PASSWORD"
msgid "Confirm"
msgstr "Bestätigen"

#. TRANS: Field title on account registration page.
msgid "Same as password above."
msgstr "Dasselbe Passwort wie oben."

#. TRANS: Checkbox title for terms of service and privacy policy.
#, php-format
msgid ""
"I agree to the Terms of service and Privacy policy of this site."
msgstr ""
"Ich akzeptiere die Nutzungsbedingungen und die Datenschutzrichtlinie dieser Site."

#. TRANS: Error text when trying to register with an already registered e-mail address.
#. TRANS: %s is the URL to recover password at.
#, php-format
msgid ""
"A user with that email address already exists. You can use the password recovery tool to recover a missing password."
msgstr ""
"Ein Benutzer mit dieser E-Mail-Adresse existiert bereits. Du kannst die Passwortwiederherstellung benutzen, um ein verlorenes "
"Passwort wiederherzustellen."

#. TRANS: Error text when trying to register with an invalid e-mail address.
msgid "Not a valid email address."
msgstr "Keine gültige E-Mail-Adresse."

#. TRANS: Subject for confirmation e-mail.
#. TRANS: %s is the StatusNet sitename.
#, php-format
msgid "Welcome to %s"
msgstr "Willkommen bei %s"

#. TRANS: Plugin description.
msgid "Use email only for registration."
msgstr "E-Mail nur für die Registrierung benutzen."