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

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

/**
 * DataObject class to store extended profile fields. Allows for storing
 * multiple values per a "field_name" (field_name property is not unique).
 *
 * Example:
 *
 *     Jed's Phone Numbers
 *     home  : 510-384-1992
 *     mobile: 510-719-1139
 *     work  : 415-231-1121
 *
 * We can store these phone numbers in a "field" represented by three
 * Profile_detail objects, each named 'phone_number' like this:
 *
 *     $phone1 = new Profile_detail();
 *     $phone1->field_name  = 'phone_number';
 *     $phone1->rel         = 'home';
 *     $phone1->field_value = '510-384-1992';
 *     $phone1->value_index = 1;
 *
 *     $phone1 = new Profile_detail();
 *     $phone1->field_name  = 'phone_number';
 *     $phone1->rel         = 'mobile';
 *     $phone1->field_value = '510-719-1139';
 *     $phone1->value_index = 2;
 *
 *     $phone1 = new Profile_detail();
 *     $phone1->field_name  = 'phone_number';
 *     $phone1->rel         = 'work';
 *     $phone1->field_value = '415-231-1121';
 *     $phone1->value_index = 3;
 *
 */
class Profile_detail extends Managed_DataObject
{
    public $__table = 'profile_detail';

    public $id;
    public $profile_id;  // profile this is for
    public $rel;         // detail for some field types; eg "home", "mobile", "work" for phones or "aim", "irc", "xmpp" for IM
    public $field_name;  // name
    public $field_value; // primary text value
    public $value_index; // relative ordering of multiple values in the same field
    public $date;        // related date
    public $ref_profile; // for people types, allows pointing to a known profile in the system
    public $created;
    public $modified;

    static function schemaDef()
    {
        return array(
            // No need for i18n. Table properties.
            'description'
                => 'Additional profile details for the ExtendedProfile plugin',
            'fields'      => array(
                'id'          => array('type' => 'serial', 'not null' => true),
                'profile_id'  => array('type' => 'int', 'not null' => true),
                'field_name'  => array(
                    'type'     => 'varchar',
                    'length'   => 16,
                    'not null' => true
                ),
                'value_index' => array('type' => 'int'),
                'field_value' => array('type' => 'text'),
                'date'        => array('type' => 'datetime'),
                'rel'         => array('type' => 'varchar', 'length' => 16),
                'rel_profile' => array('type' => 'int'),
                'created'     => array(
                    'type'     => 'datetime',
                    'not null' => true
                 ),
                'modified'    => array(
                    'type' => 'timestamp',
                    'not null' => true
                ),
            ),
            'primary key' => array('id'),
            'unique keys' => array(
                'profile_detail_profile_id_field_name_value_index'
                    => array('profile_id', 'field_name', 'value_index'),
            )
        );
    }
}


code:
/* Note the #content is only needed to override weird crap in default styles */

#profiledetail .entity_actions {
    margin-top: 0px;
    margin-bottom: 0px;
}

#profiledetail #content h3 {
    margin-bottom: 5px;
}

#content table.extended-profile {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0px 8px;
    margin-bottom: 10px;
}

#content table.extended-profile th {
    color: #777;
    background-color: #ECECF2;
    width: 150px;
    text-align: right;
    padding: 2px 8px 2px 0px;
}

#content table.extended-profile th.employer, #content table.extended-profile th.institution {
    display: none;
}

#content table.extended-profile td {
    padding: 2px 0px 2px 8px;
}

.experience-item, .education-item {
    float: left;
    padding-bottom: 4px;
}

.experience-item .label, .education-item .label {
    float: left;
    clear: left;
    position: relative;
    left: -8px;
    margin-right: 2px;
    margin-bottom: 8px;
    color: #777;
    background-color: #ECECF2;
    width: 150px;
    text-align: right;
    padding: 2px 8px 2px 0px;
}

.experience-item .field, .education-item .field {
    float: left;
    padding-top: 2px;
    padding-bottom: 2px;
    max-width: 350px;
}

#profiledetailsettings #content table.extended-profile td {
    padding: 0px 0px 0px 8px;
}

#profiledetailsettings input {
    margin-right: 8px;
}

.form_settings .extended-profile label {
    display: none;
}

.extended-profile textarea {
    width: 280px;
}

.extended-profile input[type=text] {
    width: 280px;
}

.extended-profile .phone-item input[type=text], .extended-profile .im-item input[type=text], .extended-profile .website-item input[type=text] {
    width: 175px;
}

.extended-profile input.hasDatepicker {
    width: 100px;
}

.experience-item input[type=text], .education-item input[type=text] {
    float: left;
}

.extended-profile .current-checkbox {
    float: left;
    position: relative;
    top: 2px;
}

.form_settings .extended-profile input.checkbox {
    margin-left: 0px;
    left: 0px;
    top: 2px;
}

.form_settings .extended-profile label.checkbox {
    max-width: 100%;
    float: none;
    display: inline;
    left: -20px;
}

.extended-profile select {
    padding-right: 2px;
    font-size: 0.88em;
}

.extended-profile a.add_row, .extended-profile a.remove_row {
    display: block;
    height: 16px;
    width: 16px;
    overflow: hidden;
    background-image: url('../../../theme/base/images/icons/icons-01.gif');
    background-repeat: no-repeat;
}

.extended-profile a.remove_row {
    background-position: 0px -1252px;
    float: right;
    position: relative;
    top: 6px;
    line-height: 4em;
}

.extended-profile a.add_row {
    clear: both;
    position: relative;
    top: 6px;
    left: 2px;
    background-position: 0px -1186px;
    width: 120px;
    padding-left: 20px;
    line-height: 1.2em;
}

#content table.extended-profile .supersizeme th {
    border-bottom: 28px solid #fff;
}

#profiledetailsettings .experience-item, #profiledetailsettings .education-item {
    margin-bottom: 10px;
    width: 100%;
}

#profiledetailsettings .education-item textarea {
    float: left;
    margin-bottom: 8px;
}

#profiledetailsettings tr:last-child .experience-item, #profiledetailsettings tr:last-child .education-item {
    margin-bottom: 0px;
}

#profiledetailsettings .experience-item a.add_row, #profiledetailsettings .education-item a.add_row {
    left: 160px;
}

license: mit


code:
var SN_EXTENDED = SN_EXTENDED || {};

SN_EXTENDED.reorder = function (cls) {

    var divs = $('div[class=' + cls + ']');

    $(divs).each(function (i, div) {
        $(div).find('a.add_row').hide();
        $(div).find('a.remove_row').show();
        SN_EXTENDED.replaceIndex(SN_EXTENDED.rowIndex(div), i);
    });

    var lastDiv = $(divs).last().closest('tr');
    lastDiv.addClass('supersizeme');

    $(divs).last().find('a.add_row').show();

    if (divs.length == 1) {
        $(divs).find('a.remove_row').fadeOut("slow");
    }
};

SN_EXTENDED.rowIndex = function (div) {
    var idstr = $(div).attr('id');
    var id = idstr.match(/\d+/);
    return id;
};

SN_EXTENDED.rowCount = function (cls) {
    var divs = $.find('div[class=' + cls + ']');
    return divs.length;
};

SN_EXTENDED.replaceIndex = function (elem, oldIndex, newIndex) {
    $(elem).find('*').each(function () {
        $.each(this.attributes, function (i, attrib) {
            var regexp = /extprofile-.*-\d.*/;
            var value = attrib.value;
            var match = value.match(regexp);
            if (match !== null) {
                attrib.value = value.replace("-" + oldIndex, "-" + newIndex);
            }
        });
    });
}

SN_EXTENDED.resetRow = function (elem) {
    $(elem).find('input, textarea').attr('value', '');
    $(elem).find('input').removeAttr('disabled');
    $(elem).find("select option[value='office']").attr("selected", true);
    $(elem).find("input:checkbox").attr('checked', false);
    $(elem).find("input[name$=-start], input[name$=-end]").each(function () {
        $(this).removeClass('hasDatepicker');
        $(this).datepicker({ dateFormat: 'd M yy' });
    });
};

SN_EXTENDED.addRow = function () {
    var div = $(this).closest('div');
    var id = div.attr('id');
    var cls = div.attr('class');
    var index = id.match(/\d+/);
    var newIndex = parseInt(index) + 1;
    var newtr = $(div).closest('tr').removeClass('supersizeme').clone();
    SN_EXTENDED.replaceIndex(newtr, index, newIndex);
    SN_EXTENDED.resetRow(newtr);
    $(div).closest('tr').after(newtr);
    SN_EXTENDED.reorder(cls);
};

SN_EXTENDED.removeRow = function () {

    var div = $(this).closest('div');
    var id = $(div).attr('id');
    var cls = $(div).attr('class');
    var that = this;

    $("#confirm-dialog").dialog({
        buttons : {
            "Confirm" : function () {
                $(this).dialog("close");
                var target = $(that).closest('tr');
                target.fadeOut("slow", function () {
                    $(target).remove();
                    SN_EXTENDED.reorder(cls);
                });
            },
            "Cancel" : function () {
                $(this).dialog("close");
            }
        }
    });

    var cnt = SN_EXTENDED.rowCount(cls);

    if (cnt > 1) {
        $("#confirm-dialog").dialog("open");
    }
};

$(document).ready(function () {

    $("#confirm-dialog").dialog({
        autoOpen: false,
        modal: true
    });

    $("input#extprofile-manager").autocomplete({
        source: 'finduser',
        minLength: 2 });

    $("input[name$=-start], input[name$=-end], #extprofile-birthday").datepicker({ dateFormat: 'd M yy' });

    var multifields = ["phone-item", "experience-item", "education-item", "im-item", 'website-item'];

    for (f in multifields) {
        SN_EXTENDED.reorder(multifields[f]);
    }

    $("input#extprofile-manager").autocomplete({
        source: 'finduser',
        minLength: 2 });

    $(document).on('click', '.add_row', SN_EXTENDED.addRow);
    $(document).on('click', '.remove_row', SN_EXTENDED.removeRow);

    $('input:checkbox[name$=current]').each(function () {
        var input = $(this).parent().siblings('input[id$=-end]');
        if ($(this).is(':checked')) {
            $(input).attr('disabled', 'true');
        }
    });

    $(document).on('click', 'input:checkbox[name$=current]', function ()  {
        var input = $(this).parent().siblings('input[id$=-end]');
        if ($(this).is(':checked')) {
            $(input).val('');
            $(input).attr('disabled', 'true');
        } else {
            $(input).removeAttr('disabled');
        }
    });

});


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

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

/**
 * Class to represent extended profile data
 */
class ExtendedProfile
{
    protected $fields;

    /**
     * Constructor
     *
     * @param Profile $profile
     */
    function __construct(Profile $profile)
    {
        $this->profile  = $profile;
        $this->user     = $profile->getUser();
        $this->fields   = $this->loadFields();
        $this->sections = $this->getSections();
        //common_debug(var_export($this->sections, true));

        //common_debug(var_export($this->fields, true));
    }

    /**
     * Load extended profile fields
     *
     * @return array $fields the list of fields
     */
    function loadFields()
    {
        $detail = new Profile_detail();
        $detail->profile_id = $this->profile->id;
        $detail->find();

        $fields = array();

        while ($detail->fetch()) {
            $fields[$detail->field_name][] = clone($detail);
        }

        return $fields;
    }

    /**
     * Get a the self-tags associated with this profile
     *
     * @return string the concatenated string of tags
     */
    function getTags()
    {
        return implode(' ', $this->user->getSelfTags());
    }

    /**
     * Return a simple string value. Checks for fields that should
     * be stored in the regular profile and returns values from it
     * if appropriate.
     *
     * @param string $name name of the detail field to get the
     *                     value from
     *
     * @return string the value
     */
    function getTextValue($name)
    {
        $key           = strtolower($name);
        $profileFields = array('fullname', 'location', 'bio');

        if (in_array($key, $profileFields)) {
            return $this->profile->$name;
        } else if (array_key_exists($key, $this->fields)) {
            return $this->fields[$key][0]->field_value;
        } else {
            return null;
        }
    }

    function getDateValue($name) {
        $key = strtolower($name);
        if (array_key_exists($key, $this->fields)) {
            return $this->fields[$key][0]->date;
        } else {
            return null;
        }
    }

    // XXX: getPhones, getIms, and getWebsites pretty much do the same thing,
    //      so refactor.
    function getPhones()
    {
        $phones = (isset($this->fields['phone'])) ? $this->fields['phone'] : null;
        $pArrays = array();

        if (empty($phones)) {
            $pArrays[] = array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Phone'),
                'index' => 0,
                'type'  => 'phone',
                'vcard' => 'tel',
                'rel'   => 'office',
                'value' => null
            );
        } else {
            for ($i = 0; $i < sizeof($phones); $i++) {
                $pa = array(
                    // TRANS: Field label for extended profile properties.
                    'label' => _m('Phone'),
                    'type'  => 'phone',
                    'index' => intval($phones[$i]->value_index),
                    'rel'   => $phones[$i]->rel,
                    'value' => $phones[$i]->field_value,
                    'vcard' => 'tel'
                );

               $pArrays[] = $pa;
            }
        }
        return $pArrays;
    }

    function getIms()
    {
        $ims = (isset($this->fields['im'])) ? $this->fields['im'] : null;
        $iArrays = array();

        if (empty($ims)) {
            $iArrays[] = array(
                // TRANS: Field label for extended profile properties (Instant Messaging).
                'label' => _m('IM'),
                'type' => 'im'
            );
        } else {
            for ($i = 0; $i < sizeof($ims); $i++) {
                $ia = array(
                    // TRANS: Field label for extended profile properties (Instant Messaging).
                    'label' => _m('IM'),
                    'type'  => 'im',
                    'index' => intval($ims[$i]->value_index),
                    'rel'   => $ims[$i]->rel,
                    'value' => $ims[$i]->field_value,
                );

                $iArrays[] = $ia;
            }
        }
        return $iArrays;
    }

    function getWebsites()
    {
        $sites = (isset($this->fields['website'])) ? $this->fields['website'] : null;
        $wArrays = array();

        if (empty($sites)) {
            $wArrays[] = array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Website'),
                'type' => 'website'
            );
        } else {
            for ($i = 0; $i < sizeof($sites); $i++) {
                $wa = array(
                    // TRANS: Field label for extended profile properties.
                    'label' => _m('Website'),
                    'type'  => 'website',
                    'index' => intval($sites[$i]->value_index),
                    'rel'   => $sites[$i]->rel,
                    'value' => $sites[$i]->field_value,
                );

                $wArrays[] = $wa;
            }
        }
        return $wArrays;
    }

    function getExperiences()
    {
        $companies = (isset($this->fields['company'])) ? $this->fields['company'] : null;
        $start = (isset($this->fields['start'])) ? $this->fields['start'] : null;
        $end   = (isset($this->fields['end'])) ? $this->fields['end'] : null;

        $eArrays = array();

        if (empty($companies)) {
            $eArrays[] = array(
                // TRANS: Field label for extended profile properties.
                'label'   => _m('Employer'),
                'type'    => 'experience',
                'company' => null,
                'start'   => null,
                'end'     => null,
                'current' => false,
                'index'   => 0
            );
        } else {
            for ($i = 0; $i < sizeof($companies); $i++) {
                $ea = array(
                    // TRANS: Field label for extended profile properties.
                    'label'   => _m('Employer'),
                    'type'    => 'experience',
                    'company' => $companies[$i]->field_value,
                    'index'   => intval($companies[$i]->value_index),
                    'current' => $end[$i]->rel,
                    'start'   => $start[$i]->date,
                    'end'     => $end[$i]->date
                );
               $eArrays[] = $ea;
            }
        }
        return $eArrays;
    }

    function getEducation()
    {
        $schools = (isset($this->fields['school'])) ? $this->fields['school'] : null;
        $degrees = (isset($this->fields['degree'])) ? $this->fields['degree'] : null;
        $descs = (isset($this->fields['degree_descr'])) ? $this->fields['degree_descr'] : null;
        $start = (isset($this->fields['school_start'])) ? $this->fields['school_start'] : null;
        $end = (isset($this->fields['school_end'])) ? $this->fields['school_end'] : null;
        $iArrays = array();

        if (empty($schools)) {
            $iArrays[] = array(
                'type' => 'education',
                // TRANS: Field label for extended profile properties.
                'label' => _m('Institution'),
                'school' => null,
                'degree' => null,
                'description' => null,
                'start' => null,
                'end' => null,
                'index' => 0
            );
        } else {
            for ($i = 0; $i < sizeof($schools); $i++) {
                $ia = array(
                    'type'    => 'education',
                    // TRANS: Field label for extended profile properties.
                    'label'   => _m('Institution'),
                    'school'  => $schools[$i]->field_value,
                    'degree'  => isset($degrees[$i]->field_value) ? $degrees[$i]->field_value : null,
                    'description' => isset($descs[$i]->field_value) ? $descs[$i]->field_value : null,
                    'index'   => intval($schools[$i]->value_index),
                    'start'   => $start[$i]->date,
                    'end'     => $end[$i]->date
                );
               $iArrays[] = $ia;
            }
        }

        return $iArrays;
    }

    /**
     *  Return all the sections of the extended profile
     *
     * @return array the big list of sections and fields
     */
    function getSections()
    {
        return array(
            'basic' => array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Personal'),
                'fields' => array(
                    'fullname' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Full name'),
                        'profile' => 'fullname',
                        'vcard' => 'fn',
                    ),
                    'title' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Title'),
                        'vcard' => 'title',
                    ),
                    'manager' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Manager'),
                        'type' => 'person',
                        'vcard' => 'x-manager',
                    ),
                    'location' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Location'),
                        'profile' => 'location'
                    ),
                    'bio' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Bio'),
                        'type' => 'textarea',
                        'profile' => 'bio',
                    ),
                    'tags' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Tags'),
                        'type' => 'tags',
                        'profile' => 'tags',
                    ),
                ),
            ),
            'contact' => array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Contact'),
                'fields' => array(
                    'phone'   => $this->getPhones(),
                    'im'      => $this->getIms(),
                    'website' => $this->getWebsites()
                ),
            ),
            'personal' => array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Personal'),
                'fields' => array(
                    'birthday' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Birthday'),
                        'type' => 'date',
                        'vcard' => 'bday',
                    ),
                    'spouse' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Spouse\'s name'),
                        'vcard' => 'x-spouse',
                    ),
                    'kids' => array(
                        // TRANS: Field label for extended profile properties.
                        'label' => _m('Kids\' names')
                    ),
                ),
            ),
            'experience' => array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Work experience'),
                'fields' => array(
                    'experience' => $this->getExperiences()
                ),
            ),
            'education' => array(
                // TRANS: Field label for extended profile properties.
                'label' => _m('Education'),
                'fields' => array(
                    'education' => $this->getEducation()
                ),
            ),
        );
    }
}


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

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

/**
 * Class for outputting a widget to display or edit
 * extended profiles
 */
class ExtendedProfileWidget extends Form
{
    const EDITABLE = true;

    /**
     * The parent profile
     *
     * @var Profile
     */
    protected $profile;

    /**
     * The extended profile
     *
     * @var Extended_profile
     */
    protected $ext;

    /**
     * Constructor
     *
     * @param XMLOutputter  $out
     * @param Profile       $profile
     * @param boolean       $editable
     */
    public function __construct(XMLOutputter $out=null, Profile $profile=null, $editable=false)
    {
        parent::__construct($out);

        $this->profile = $profile;
        $this->ext = new ExtendedProfile($this->profile);

        $this->editable = $editable;
    }

    /**
     * Show the extended profile, or the edit form
     */
    public function show()
    {
        if ($this->editable) {
            parent::show();
        } else {
            $this->showSections();
        }
    }

    /**
     * Show form data
     */
    public function formData()
    {
        // For JQuery UI modal dialog
        $this->out->elementStart(
            'div',
            // TRANS: Title for extended profile entry deletion dialog.
            array('id' => 'confirm-dialog', 'title' => _m('Confirmation Required'))
        );
        // TRANS: Confirmation text for extended profile entry deletion dialog.
        $this->out->text(_m('Really delete this entry?'));
        $this->out->elementEnd('div');
        $this->showSections();
    }

    /**
     * Show each section of the extended profile
     */
    public function showSections()
    {
        $sections = $this->ext->getSections();
        foreach ($sections as $name => $section) {
            $this->showExtendedProfileSection($name, $section);
        }
    }

    /**
     * Show an extended profile section
     *
     * @param string $name      name of the section
     * @param array  $section   array of fields for the section
     */
    protected function showExtendedProfileSection($name, $section)
    {
        $this->out->element('h3', null, $section['label']);
        $this->out->elementStart('table', array('class' => 'extended-profile'));

        foreach ($section['fields'] as $fieldName => $field) {

            switch($fieldName) {
            case 'phone':
            case 'im':
            case 'website':
            case 'experience':
            case 'education':
                $this->showMultiple($fieldName, $field);
                break;
            default:
                $this->showExtendedProfileField($fieldName, $field);
            }
        }
        $this->out->elementEnd('table');
    }

    /**
     * Show an extended profile field
     *
     * @param string $name  name of the field
     * @param array  $field set of key/value pairs for the field
     */
    protected function showExtendedProfileField($name, $field)
    {
        $this->out->elementStart('tr');

        $this->out->element('th', str_replace(' ','_',strtolower($field['label'])), $field['label']);

        $this->out->elementStart('td');
        if ($this->editable) {
            $this->showEditableField($name, $field);
        } else {
            $this->showFieldValue($name, $field);
        }
        $this->out->elementEnd('td');

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

    protected function showMultiple($name, $fields) {
        foreach ($fields as $field) {
            $this->showExtendedProfileField($name, $field);
        }
    }

    // XXX: showPhone, showIm and showWebsite all work the same, so
    //      combine
    protected function showPhone($name, $field)
    {
        $this->out->elementStart('div', array('class' => 'phone-display'));
        if (!empty($field['value'])) {
            $this->out->text($field['value']);
            if (!empty($field['rel'])) {
               // TRANS: Value between parentheses (phone number, website, or IM address).
               $outtext = sprintf(_m('(%s)'),$field['rel']);
               $this->out->text(' '.$outtext);
            }
        }
        $this->out->elementEnd('div');
    }

    protected function showIm($name, $field)
    {
        $this->out->elementStart('div', array('class' => 'im-display'));
        $this->out->text($field['value']);
        if (!empty($field['rel'])) {
            // TRANS: Value between parentheses (phone number, website, or IM address).
            $outtext = sprintf(_m('(%s)'),$field['rel']);
            $this->out->text(' '.$outtext);
        }
        $this->out->elementEnd('div');
    }

    protected function showWebsite($name, $field)
    {
        $this->out->elementStart('div', array('class' => 'website-display'));

        $url = $field['value'];

        $this->out->element(
            "a",
            array(
                'href'   => $url,
                'class'  => 'extended-profile-link',
                'target' => "_blank"
            ),
            $url
        );

        if (!empty($field['rel'])) {
            // TRANS: Value between parentheses (phone number, website, or IM address).
            $outtext = sprintf(_m('(%s)'),$field['rel']);
            $this->out->text(' '.$outtext);
        }
        $this->out->elementEnd('div');
    }

    protected function showEditableIm($name, $field)
    {
        $index = isset($field['index']) ? $field['index'] : 0;
        $id    = "extprofile-$name-$index";
        $rel   = $id . '-rel';
        $this->out->elementStart(
            'div', array(
                'id' => $id . '-edit',
                'class' => 'im-item'
            )
        );
        $this->out->input(
            $id,
            null,
            isset($field['value']) ? $field['value'] : null
        );
        $this->out->dropdown(
            $id . '-rel',
            'Type',
            array(
                'jabber' => 'Jabber',
                'gtalk'  => 'GTalk',
                'aim'    => 'AIM',
                'yahoo'  => 'Yahoo! Messenger',
                'msn'    => 'MSN',
                'skype'  => 'Skype',
                'other'  => 'Other'
            ),
            null,
            false,
            isset($field['rel']) ? $field['rel'] : null
        );

        $this->showMultiControls();
        $this->out->elementEnd('div');
    }

    protected function showEditablePhone($name, $field)
    {
        $index = isset($field['index']) ? $field['index'] : 0;
        $id    = "extprofile-$name-$index";
        $rel   = $id . '-rel';
        $this->out->elementStart(
            'div', array(
                'id' => $id . '-edit',
                'class' => 'phone-item'
            )
        );
        $this->out->input(
            $id,
            null,
            isset($field['value']) ? $field['value'] : null
        );
        $this->out->dropdown(
            $id . '-rel',
            'Type',
            array(
                'office' => 'Office',
                'mobile' => 'Mobile',
                'home'   => 'Home',
                'pager'  => 'Pager',
                'other'  => 'Other'
            ),
            null,
            false,
            isset($field['rel']) ? $field['rel'] : null
        );

        $this->showMultiControls();
        $this->out->elementEnd('div');
    }

    protected function showEditableWebsite($name, $field)
    {
        $index = isset($field['index']) ? $field['index'] : 0;
        $id    = "extprofile-$name-$index";
        $rel   = $id . '-rel';
        $this->out->elementStart(
            'div', array(
                'id' => $id . '-edit',
                'class' => 'website-item'
            )
        );
        $this->out->input(
            $id,
            null,
            isset($field['value']) ? $field['value'] : null
        );
        $this->out->dropdown(
            $id . '-rel',
            'Type',
            array(
                'blog'     => 'Blog',
                'homepage' => 'Homepage',
                'facebook' => 'Facebook',
                'linkedin' => 'LinkedIn',
                'flickr'   => 'Flickr',
                'google'   => 'Google Profile',
                'other'    => 'Other',
                'twitter'  => 'Twitter'
            ),
            null,
            false,
            isset($field['rel']) ? $field['rel'] : null
        );

        $this->showMultiControls();
        $this->out->elementEnd('div');
    }

    protected function showExperience($name, $field)
    {
        $this->out->elementStart('div', 'experience-item');
        // TRANS: Field label in experience area of extended profile.
        $this->out->element('div', 'label', _m('Company'));

        if (!empty($field['company'])) {
            $this->out->element('div', 'field', $field['company']);

            // TRANS: Field label in extended profile (when did one start a position or education).
            $this->out->element('div', 'label', _m('Start'));
            $this->out->element(
                'div',
                array('class' => 'field date'),
                date('j M Y', strtotime($field['start'])
                )
            );
            // TRANS: Field label in extended profile (when did one end a position or education).
            $this->out->element('div', 'label', _m('End'));
            $this->out->element(
                'div',
                array('class' => 'field date'),
                date('j M Y', strtotime($field['end'])
                )
            );

            if ($field['current']) {
                $this->out->element(
                    'div',
                    array('class' => 'field current'),
                    // TRANS: Field value in experience area of extended profile (one still holds a position).
                    _m('(Current)')
                );
            }
        }
        $this->out->elementEnd('div');
    }

    protected function showEditableExperience($name, $field)
    {
        $index = isset($field['index']) ? $field['index'] : 0;
        $id    = "extprofile-$name-$index";
        $this->out->elementStart(
            'div', array(
                'id' => $id . '-edit',
                'class' => 'experience-item'
            )
        );

        // TRANS: Field label in experience edit area of extended profile (which company does one work for).
        $this->out->element('div', 'label', _m('Company'));
        $this->out->input(
            $id,
            null,
            isset($field['company']) ? $field['company'] : null
        );

        // TRANS: Field label in extended profile (when did one start a position or education).
        $this->out->element('div', 'label', _m('Start'));
        $this->out->input(
            $id . '-start',
            null,
            isset($field['start']) ? date('j M Y', strtotime($field['start'])) : null
        );

            // TRANS: Field label in extended profile (when did one end a position or education).
        $this->out->element('div', 'label', _m('End'));

        $this->out->input(
            $id . '-end',
            null,
            isset($field['end']) ? date('j M Y', strtotime($field['end'])) : null
        );
        $this->out->hidden(
            $id . '-current',
            'false'
        );
        $this->out->elementStart('div', 'current-checkbox');
        $this->out->checkbox(
            $id . '-current',
            // TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
            _m('Current'),
            $field['current']
        );
        $this->out->elementEnd('div');

        $this->showMultiControls();
        $this->out->elementEnd('div');
    }

    protected function showEducation($name, $field)
    {
        $this->out->elementStart('div', 'education-item');
        // TRANS: Field label in education area of extended profile.
        $this->out->element('div', 'label', _m('Institution'));
        if (!empty($field['school'])) {
            $this->out->element('div', 'field', $field['school']);
            // TRANS: Field label in extended profile for specifying an academic degree.
            $this->out->element('div', 'label', _m('Degree'));
            $this->out->element('div', 'field', $field['degree']);
            // TRANS: Field label in education area of extended profile.
            $this->out->element('div', 'label', _m('Description'));
            $this->out->element('div', 'field', $field['description']);
            // TRANS: Field label in extended profile (when did one start a position or education).
            $this->out->element('div', 'label', _m('Start'));
            $this->out->element(
                'div',
                array('class' => 'field date'),
                date('j M Y', strtotime($field['start'])
                )
            );
            // TRANS: Field label in extended profile (when did one end a position or education).
            $this->out->element('div', 'label', _m('End'));
            $this->out->element(
                'div',
                array('class' => 'field date'),
                date('j M Y', strtotime($field['end'])
                )
            );
        }
        $this->out->elementEnd('div');
    }

    protected function showEditableEducation($name, $field)
    {
        $index = isset($field['index']) ? $field['index'] : 0;
        $id    = "extprofile-$name-$index";
        $this->out->elementStart(
            'div', array(
                'id' => $id . '-edit',
                'class' => 'education-item'
            )
        );
        // TRANS: Field label in education edit area of extended profile.
        $this->out->element('div', 'label', _m('Institution'));
        $this->out->input(
            $id,
            null,
            isset($field['school']) ? $field['school'] : null
        );

        // TRANS: Field label in extended profile for specifying an academic degree.
        $this->out->element('div', 'label', _m('Degree'));
        $this->out->input(
            $id . '-degree',
            null,
            isset($field['degree']) ? $field['degree'] : null
        );

        // TRANS: Field label in education edit area of extended profile.
        $this->out->element('div', 'label', _m('Description'));

        $this->out->textarea(
            $id . '-description',
            null,
            isset($field['description']) ? $field['description'] : null
        );

        // TRANS: Field label in extended profile (when did one start a position or education).
        $this->out->element('div', 'label', _m('Start'));
        $this->out->input(
            $id . '-start',
            null,
            // @todo FIXME: does date format need i18n? If so, should probly be dealt with in core.
            isset($field['start']) ? date('j M Y', strtotime($field['start'])) : null
        );

        // TRANS: Field label in extended profile (when did one end a position or education).
        $this->out->element('div', 'label', _m('End'));
        $this->out->input(
            $id . '-end',
            null,
            // @todo FIXME: does date format need i18n? If so, should probly be dealt with in core.
            isset($field['end']) ? date('j M Y', strtotime($field['end'])) : null
        );

        $this->showMultiControls();
        $this->out->elementEnd('div');
    }

    function showMultiControls()
    {
        $this->out->element(
            'a',
            array(
                'class' => 'remove_row',
                'href' => 'javascript://',
                'style' => 'display: none;'
            ),
            '-'
        );

        $this->out->element(
            'a',
            array(
                'class' => 'add_row',
                'href' => 'javascript://',
                'style' => 'display: none;'
            ),
            // TRANS: Link description in extended profile page to add another profile element.
            _m('Add another item')
        );
    }

    /**
     * Outputs the value of a field
     *
     * @param string $name  name of the field
     * @param array  $field set of key/value pairs for the field
     */
    protected function showFieldValue($name, $field)
    {
        $type = strval(@$field['type']);

        switch($type)
        {
        case '':
        case 'text':
        case 'textarea':
            $this->out->text($this->ext->getTextValue($name));
            break;
        case 'date':
            $value = $this->ext->getDateValue($name);
            if (!empty($value)) {
                $this->out->element(
                    'div',
                    array('class' => 'field date'),
                    date('j M Y', strtotime($value))
                );
            }
            break;
        case 'person':
            $this->out->text($this->ext->getTextValue($name));
            break;
        case 'tags':
            $this->out->text($this->ext->getTags());
            break;
        case 'phone':
            $this->showPhone($name, $field);
            break;
        case 'website':
            $this->showWebsite($name, $field);
            break;
        case 'im':
            $this->showIm($name, $field);
            break;
        case 'experience':
            $this->showExperience($name, $field);
            break;
        case 'education':
            $this->showEducation($name, $field);
            break;
        default:
            $this->out->text("TYPE: $type");
        }
    }

    /**
     * Show an editable version of the field
     *
     * @param string $name  name fo the field
     * @param array  $field array of key/value pairs for the field
     */
    protected function showEditableField($name, $field)
    {
        $out = $this->out;

        $type = strval(@$field['type']);
        $id = "extprofile-" . $name;

        $value = 'placeholder';

        switch ($type) {
        case '':
        case 'text':
            $out->input($id, null, $this->ext->getTextValue($name));
            break;
        case 'date':
            $value = $this->ext->getDateValue($name);
            $out->input(
                $id,
                null,
                empty($value) ? null : date('j M Y', strtotime($value))
            );
            break;
        case 'person':
            $out->input($id, null, $this->ext->getTextValue($name));
            break;
        case 'textarea':
            $out->textarea($id, null,  $this->ext->getTextValue($name));
            break;
        case 'tags':
            $out->input($id, null, $this->ext->getTags());
            break;
        case 'phone':
            $this->showEditablePhone($name, $field);
            break;
        case 'im':
            $this->showEditableIm($name, $field);
            break;
        case 'website':
            $this->showEditableWebsite($name, $field);
            break;
        case 'experience':
            $this->showEditableExperience($name, $field);
            break;
        case 'education':
            $this->showEditableEducation($name, $field);
            break;
        default:
            // TRANS: Field label for undefined field in extended profile.
            $out->input($id, null, sprintf(_m('TYPE: %s'),$type));
        }
    }

    /**
     * Action elements
     *
     * @return void
     */
    function formActions()
    {
        $this->out->submit(
            'save',
            // TRANS: Button text for saving extended profile properties.
            _m('BUTTON','Save'),
            'submit form_action-secondary',
            'save',
            // TRANS: .
            // TRANS: Button title for saving extended profile properties.
            _m('Save details')
       );
    }

    /**
     * ID of the form
     *
     * @return string ID of the form
     */
    function id()
    {
        return 'profile-details-' . $this->profile->id;
    }

    /**
     * class of the form
     *
     * @return string of the form class
     */
    function formClass()
    {
        return 'form_profile_details form_settings';
    }

    /**
     * Action of the form
     *
     * @return string URL of the action
     */
    function action()
    {
        return common_local_url('profiledetailsettings');
    }
}


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: Title for extended profile settings.
#: actions/profiledetailsettings.php:29
msgid "Extended profile settings"
msgstr ""

#. TRANS: Usage instructions for profile settings.
#: actions/profiledetailsettings.php:40
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""

#. TRANS: Client error displayed when the session token does not match or is not given.
#: actions/profiledetailsettings.php:63
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given submitting a form with an unknown action.
#: actions/profiledetailsettings.php:74
msgid "Unexpected form submission."
msgstr ""

#. TRANS: Success message after saving extended profile details.
#: actions/profiledetailsettings.php:137
msgid "Details saved."
msgstr ""

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#: actions/profiledetailsettings.php:148
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr ""

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#: actions/profiledetailsettings.php:160
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr ""

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#: actions/profiledetailsettings.php:276
#, php-format
msgid "Invalid URL: %s."
msgstr ""

#. TRANS: Server error displayed when a field could not be saved in the database.
#: actions/profiledetailsettings.php:525 actions/profiledetailsettings.php:538
msgid "Could not save profile details."
msgstr ""

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#: actions/profiledetailsettings.php:583
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr ""

#. TRANS: Server error thrown when user profile settings could not be saved.
#: actions/profiledetailsettings.php:625
msgid "Could not save profile."
msgstr ""

#. TRANS: Server error thrown when user profile settings tags could not be saved.
#: actions/profiledetailsettings.php:634
msgid "Could not save tags."
msgstr ""

#. TRANS: Link title for link on user profile.
#: actions/profiledetail.php:52
msgid "Edit extended profile settings"
msgstr ""

#. TRANS: Link text for link on user profile.
#: actions/profiledetail.php:54
msgid "Edit"
msgstr ""

#. TRANS: Plugin description.
#: ExtendedProfilePlugin.php:40
msgid "UI extensions for additional profile fields."
msgstr ""

#. TRANS: Link text on user profile page leading to extended profile page.
#: ExtendedProfilePlugin.php:123
msgid "More details..."
msgstr ""

#. TRANS: Title for extended profile entry deletion dialog.
#: lib/extendedprofilewidget.php:84
msgid "Confirmation Required"
msgstr ""

#. TRANS: Confirmation text for extended profile entry deletion dialog.
#: lib/extendedprofilewidget.php:87
msgid "Really delete this entry?"
msgstr ""

#. TRANS: Value between parentheses (phone number, website, or IM address).
#: lib/extendedprofilewidget.php:169 lib/extendedprofilewidget.php:182
#: lib/extendedprofilewidget.php:206
#, php-format
msgid "(%s)"
msgstr ""

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
#: lib/extendedprofilewidget.php:326 lib/extendedprofilewidget.php:372
msgid "Company"
msgstr ""

#. TRANS: Field label in extended profile (when did one start a position or education).
#: lib/extendedprofilewidget.php:332 lib/extendedprofilewidget.php:380
#: lib/extendedprofilewidget.php:426 lib/extendedprofilewidget.php:481
msgid "Start"
msgstr ""

#. TRANS: Field label in extended profile (when did one end a position or education).
#: lib/extendedprofilewidget.php:340 lib/extendedprofilewidget.php:388
#: lib/extendedprofilewidget.php:434 lib/extendedprofilewidget.php:490
msgid "End"
msgstr ""

#. TRANS: Field value in experience area of extended profile (one still holds a position).
#: lib/extendedprofilewidget.php:353
msgid "(Current)"
msgstr ""

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
#: lib/extendedprofilewidget.php:403
msgid "Current"
msgstr ""

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
#: lib/extendedprofilewidget.php:416 lib/extendedprofilewidget.php:456
#: lib/extendedprofile.php:251 lib/extendedprofile.php:264
msgid "Institution"
msgstr ""

#. TRANS: Field label in extended profile for specifying an academic degree.
#: lib/extendedprofilewidget.php:420 lib/extendedprofilewidget.php:464
msgid "Degree"
msgstr ""

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#: lib/extendedprofilewidget.php:423 lib/extendedprofilewidget.php:472
msgid "Description"
msgstr ""

#. TRANS: Link description in extended profile page to add another profile element.
#: lib/extendedprofilewidget.php:522
msgid "Add another item"
msgstr ""

#. TRANS: Field label for undefined field in extended profile.
#: lib/extendedprofilewidget.php:633
#, php-format
msgid "TYPE: %s"
msgstr ""

#. TRANS: Button text for saving extended profile properties.
#: lib/extendedprofilewidget.php:647
msgctxt "BUTTON"
msgid "Save"
msgstr ""

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
#: lib/extendedprofilewidget.php:652
msgid "Save details"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:120 lib/extendedprofile.php:131
msgid "Phone"
msgstr ""

#. TRANS: Field label for extended profile properties (Instant Messaging).
#: lib/extendedprofile.php:153 lib/extendedprofile.php:160
msgid "IM"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:181 lib/extendedprofile.php:188
msgid "Website"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:212 lib/extendedprofile.php:224
msgid "Employer"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:289 lib/extendedprofile.php:338
msgid "Personal"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:293
msgid "Full name"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:299
msgid "Title"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:304
msgid "Manager"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:310
msgid "Location"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:315
msgid "Bio"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:321
msgid "Tags"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:329
msgid "Contact"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:342
msgid "Birthday"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:348
msgid "Spouse's name"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:353
msgid "Kids' names"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:359
msgid "Work experience"
msgstr ""

#. TRANS: Field label for extended profile properties.
#: lib/extendedprofile.php:366
msgid "Education"
msgstr ""


code:
# Translation of StatusNet - ExtendedProfile to Arabic (العربية)
# Exported from translatewiki.net
#
# Author: OsamaK
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - ExtendedProfile\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:30+0000\n"
"Language-Team: Arabic <https://translatewiki.net/wiki/Portal:ar>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:06+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-extendedprofile\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: Title for extended profile settings.
msgid "Extended profile settings"
msgstr ""

#. TRANS: Usage instructions for profile settings.
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr "يمكن أن تحدث معلومات ملفك الشخصي ليعرف الناس عنك أكثر."

#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given submitting a form with an unknown action.
msgid "Unexpected form submission."
msgstr ""

#. TRANS: Success message after saving extended profile details.
msgid "Details saved."
msgstr "حفظت التفاصيل."

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr ""

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr ""

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#, php-format
msgid "Invalid URL: %s."
msgstr "مسار غير صالح: %s."

#. TRANS: Server error displayed when a field could not be saved in the database.
msgid "Could not save profile details."
msgstr ""

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr "وسم غير صالح: \"%s\"."

#. TRANS: Server error thrown when user profile settings could not be saved.
msgid "Could not save profile."
msgstr "تعذر حفظ الملف الشخصي."

#. TRANS: Server error thrown when user profile settings tags could not be saved.
msgid "Could not save tags."
msgstr "تعذّر حفظ الوسوم."

#. TRANS: Link title for link on user profile.
msgid "Edit extended profile settings"
msgstr ""

#. TRANS: Link text for link on user profile.
msgid "Edit"
msgstr "عدل"

#. TRANS: Plugin description.
msgid "UI extensions for additional profile fields."
msgstr ""

#. TRANS: Link text on user profile page leading to extended profile page.
msgid "More details..."
msgstr "مزيد من التفاصيل..."

#. TRANS: Title for extended profile entry deletion dialog.
msgid "Confirmation Required"
msgstr ""

#. TRANS: Confirmation text for extended profile entry deletion dialog.
msgid "Really delete this entry?"
msgstr "أأحذف هذه المدخلة حقا؟"

#. TRANS: Value between parentheses (phone number, website, or IM address).
#, php-format
msgid "(%s)"
msgstr "(%s)"

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
msgid "Company"
msgstr "الشركة"

#. TRANS: Field label in extended profile (when did one start a position or education).
msgid "Start"
msgstr "البدء"

#. TRANS: Field label in extended profile (when did one end a position or education).
msgid "End"
msgstr "الانتهاء"

#. TRANS: Field value in experience area of extended profile (one still holds a position).
msgid "(Current)"
msgstr "الحالية"

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
msgid "Current"
msgstr "حالي"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
msgid "Institution"
msgstr "المنشأة"

#. TRANS: Field label in extended profile for specifying an academic degree.
msgid "Degree"
msgstr "الشهادة"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
msgid "Description"
msgstr "الوصف"

#. TRANS: Link description in extended profile page to add another profile element.
msgid "Add another item"
msgstr "أضف عنصرا آخرا"

#. TRANS: Field label for undefined field in extended profile.
#, php-format
msgid "TYPE: %s"
msgstr ""

#. TRANS: Button text for saving extended profile properties.
msgctxt "BUTTON"
msgid "Save"
msgstr "احفظ"

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
msgid "Save details"
msgstr "احفظ التفاصيل"

#. TRANS: Field label for extended profile properties.
msgid "Phone"
msgstr "الهاتف"

#. TRANS: Field label for extended profile properties (Instant Messaging).
msgid "IM"
msgstr "المراسلة الفورية"

#. TRANS: Field label for extended profile properties.
msgid "Website"
msgstr "موقع الوب"

#. TRANS: Field label for extended profile properties.
msgid "Employer"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Personal"
msgstr "معلومات شخصية"

#. TRANS: Field label for extended profile properties.
msgid "Full name"
msgstr "الاسم الكامل"

#. TRANS: Field label for extended profile properties.
msgid "Title"
msgstr "المُسمى"

#. TRANS: Field label for extended profile properties.
msgid "Manager"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Location"
msgstr "المكان"

#. TRANS: Field label for extended profile properties.
msgid "Bio"
msgstr "السيرة"

#. TRANS: Field label for extended profile properties.
msgid "Tags"
msgstr "الوسوم"

#. TRANS: Field label for extended profile properties.
msgid "Contact"
msgstr "معلومات الاتصال"

#. TRANS: Field label for extended profile properties.
msgid "Birthday"
msgstr "عيد الميلاد"

#. TRANS: Field label for extended profile properties.
msgid "Spouse's name"
msgstr "اسم الزوج"

#. TRANS: Field label for extended profile properties.
msgid "Kids' names"
msgstr "أسماء الأطفال"

#. TRANS: Field label for extended profile properties.
msgid "Work experience"
msgstr "الخبرات المهنية"

#. TRANS: Field label for extended profile properties.
msgid "Education"
msgstr "التعليم"


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

#. TRANS: Title for extended profile settings.
msgid "Extended profile settings"
msgstr "Arventennoù ledanet ar profil"

#. TRANS: Usage instructions for profile settings.
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""

#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given submitting a form with an unknown action.
msgid "Unexpected form submission."
msgstr ""

#. TRANS: Success message after saving extended profile details.
msgid "Details saved."
msgstr "Munudoù bet enrollet."

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr ""

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr ""

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#, php-format
msgid "Invalid URL: %s."
msgstr "URL direizh : %s."

#. TRANS: Server error displayed when a field could not be saved in the database.
msgid "Could not save profile details."
msgstr ""

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr ""

#. TRANS: Server error thrown when user profile settings could not be saved.
msgid "Could not save profile."
msgstr ""

#. TRANS: Server error thrown when user profile settings tags could not be saved.
msgid "Could not save tags."
msgstr ""

#. TRANS: Link title for link on user profile.
msgid "Edit extended profile settings"
msgstr "Aozañ arventennoù ledanet ar profil"

#. TRANS: Link text for link on user profile.
msgid "Edit"
msgstr "Aozañ"

#. TRANS: Plugin description.
msgid "UI extensions for additional profile fields."
msgstr ""

#. TRANS: Link text on user profile page leading to extended profile page.
msgid "More details..."
msgstr "Muoic'h a vunudoù..."

#. TRANS: Title for extended profile entry deletion dialog.
msgid "Confirmation Required"
msgstr ""

#. TRANS: Confirmation text for extended profile entry deletion dialog.
msgid "Really delete this entry?"
msgstr ""

#. TRANS: Value between parentheses (phone number, website, or IM address).
#, php-format
msgid "(%s)"
msgstr "(%s)"

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
msgid "Company"
msgstr "Embregerezh"

#. TRANS: Field label in extended profile (when did one start a position or education).
msgid "Start"
msgstr "Deroù"

#. TRANS: Field label in extended profile (when did one end a position or education).
msgid "End"
msgstr "Fin"

#. TRANS: Field value in experience area of extended profile (one still holds a position).
msgid "(Current)"
msgstr "(Red)"

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
msgid "Current"
msgstr "Red"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
msgid "Institution"
msgstr "Ensavadur"

#. TRANS: Field label in extended profile for specifying an academic degree.
msgid "Degree"
msgstr "Diplom"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
msgid "Description"
msgstr "Deskrivadur"

#. TRANS: Link description in extended profile page to add another profile element.
msgid "Add another item"
msgstr "Ouzhpennañ un elfenn all"

#. TRANS: Field label for undefined field in extended profile.
#, php-format
msgid "TYPE: %s"
msgstr "SEURT : %s"

#. TRANS: Button text for saving extended profile properties.
msgctxt "BUTTON"
msgid "Save"
msgstr "Enrollañ"

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
msgid "Save details"
msgstr "Enrollañ ar munudoù"

#. TRANS: Field label for extended profile properties.
msgid "Phone"
msgstr "Pellgomz"

#. TRANS: Field label for extended profile properties (Instant Messaging).
msgid "IM"
msgstr "IM"

#. TRANS: Field label for extended profile properties.
msgid "Website"
msgstr "Lec'hienn internet"

#. TRANS: Field label for extended profile properties.
msgid "Employer"
msgstr "Implijer"

#. TRANS: Field label for extended profile properties.
msgid "Personal"
msgstr "Personel"

#. TRANS: Field label for extended profile properties.
msgid "Full name"
msgstr "Anv klok"

#. TRANS: Field label for extended profile properties.
msgid "Title"
msgstr "Titl"

#. TRANS: Field label for extended profile properties.
msgid "Manager"
msgstr "Merour"

#. TRANS: Field label for extended profile properties.
msgid "Location"
msgstr "Lec'hiadur"

#. TRANS: Field label for extended profile properties.
msgid "Bio"
msgstr "Buhezskrid"

#. TRANS: Field label for extended profile properties.
msgid "Tags"
msgstr "Balizennoù"

#. TRANS: Field label for extended profile properties.
msgid "Contact"
msgstr "Darempred"

#. TRANS: Field label for extended profile properties.
msgid "Birthday"
msgstr "Deiz-ha-bloaz"

#. TRANS: Field label for extended profile properties.
msgid "Spouse's name"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Kids' names"
msgstr "Anv ar vugale"

#. TRANS: Field label for extended profile properties.
msgid "Work experience"
msgstr "Skiant-prenet"

#. TRANS: Field label for extended profile properties.
msgid "Education"
msgstr "Deskadurezh"


code:
# Translation of StatusNet - ExtendedProfile to Catalan (català)
# Exported from translatewiki.net
#
# Author: Solde
# Author: Toniher
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - ExtendedProfile\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:30+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:06+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-extendedprofile\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Title for extended profile settings.
msgid "Extended profile settings"
msgstr "Paràmetres de perfil estès"

#. TRANS: Usage instructions for profile settings.
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""
"Podeu actualitzar la vostra informació personal a continuació per tal que la "
"gent us conegui més."

#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr ""
"S'ha produït un problema amb el vostre testimoni de sessió. Torneu-ho a "
"provar."

#. TRANS: Message given submitting a form with an unknown action.
msgid "Unexpected form submission."
msgstr "Tramesa de formulari no esperada."

#. TRANS: Success message after saving extended profile details.
msgid "Details saved."
msgstr "S'han desat els detalls."

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr ""

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr ""

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#, php-format
msgid "Invalid URL: %s."
msgstr "URL no vàlid: %s."

#. TRANS: Server error displayed when a field could not be saved in the database.
msgid "Could not save profile details."
msgstr "No es poden desar els detalls de perfil."

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr "Etiqueta no vàlida: «%s»."

#. TRANS: Server error thrown when user profile settings could not be saved.
msgid "Could not save profile."
msgstr "No s'ha pogut desar el perfil."

#. TRANS: Server error thrown when user profile settings tags could not be saved.
msgid "Could not save tags."
msgstr "No s'han pogut desar les etiquetes."

#. TRANS: Link title for link on user profile.
msgid "Edit extended profile settings"
msgstr "Edita els paràmetres de perfil estesos"

#. TRANS: Link text for link on user profile.
msgid "Edit"
msgstr "Edita"

#. TRANS: Plugin description.
msgid "UI extensions for additional profile fields."
msgstr "Extensions d'interfície per a camps de perfil addicionals."

#. TRANS: Link text on user profile page leading to extended profile page.
msgid "More details..."
msgstr "Més detalls..."

#. TRANS: Title for extended profile entry deletion dialog.
msgid "Confirmation Required"
msgstr "Cal una confirmació"

#. TRANS: Confirmation text for extended profile entry deletion dialog.
msgid "Really delete this entry?"
msgstr "Voleu eliminar aquesta entrada?"

#. TRANS: Value between parentheses (phone number, website, or IM address).
#, php-format
msgid "(%s)"
msgstr "(%s)"

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
msgid "Company"
msgstr "Empresa"

#. TRANS: Field label in extended profile (when did one start a position or education).
msgid "Start"
msgstr "Comença"

#. TRANS: Field label in extended profile (when did one end a position or education).
msgid "End"
msgstr "Acaba"

#. TRANS: Field value in experience area of extended profile (one still holds a position).
msgid "(Current)"
msgstr "(Actual)"

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
msgid "Current"
msgstr "Actual"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
msgid "Institution"
msgstr "Institució"

#. TRANS: Field label in extended profile for specifying an academic degree.
msgid "Degree"
msgstr "Titolació"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
msgid "Description"
msgstr "Descripció"

#. TRANS: Link description in extended profile page to add another profile element.
msgid "Add another item"
msgstr "Afegeix un altre element"

#. TRANS: Field label for undefined field in extended profile.
#, php-format
msgid "TYPE: %s"
msgstr ""

#. TRANS: Button text for saving extended profile properties.
msgctxt "BUTTON"
msgid "Save"
msgstr "Desa"

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
msgid "Save details"
msgstr "Desa els detalls"

#. TRANS: Field label for extended profile properties.
msgid "Phone"
msgstr "Telèfon"

#. TRANS: Field label for extended profile properties (Instant Messaging).
msgid "IM"
msgstr "MI"

#. TRANS: Field label for extended profile properties.
msgid "Website"
msgstr "Lloc web"

#. TRANS: Field label for extended profile properties.
msgid "Employer"
msgstr "Empresari"

#. TRANS: Field label for extended profile properties.
msgid "Personal"
msgstr "Personal"

#. TRANS: Field label for extended profile properties.
msgid "Full name"
msgstr "Nom complet"

#. TRANS: Field label for extended profile properties.
msgid "Title"
msgstr "Títol"

#. TRANS: Field label for extended profile properties.
msgid "Manager"
msgstr "Manager"

#. TRANS: Field label for extended profile properties.
msgid "Location"
msgstr "Ubicació"

#. TRANS: Field label for extended profile properties.
msgid "Bio"
msgstr "Biografia"

#. TRANS: Field label for extended profile properties.
msgid "Tags"
msgstr "Etiquetes"

#. TRANS: Field label for extended profile properties.
msgid "Contact"
msgstr "Contacte"

#. TRANS: Field label for extended profile properties.
msgid "Birthday"
msgstr "Aniversari"

#. TRANS: Field label for extended profile properties.
msgid "Spouse's name"
msgstr "Nom del cònjuge"

#. TRANS: Field label for extended profile properties.
msgid "Kids' names"
msgstr "Noms dels nens"

#. TRANS: Field label for extended profile properties.
msgid "Work experience"
msgstr "Experiència laboral"

#. TRANS: Field label for extended profile properties.
msgid "Education"
msgstr "Educació"


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

#. TRANS: Title for extended profile settings.
msgid "Extended profile settings"
msgstr "Erweiterte Profileinstellungen"

#. TRANS: Usage instructions for profile settings.
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""
"Du kannst hier dein persönliches Profil aktualisieren, damit andere Personen "
"mehr über dich wissen."

#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr "Es gab ein Problem mit deinem Sessiontoken. Bitte versuche es erneut."

#. TRANS: Message given submitting a form with an unknown action.
msgid "Unexpected form submission."
msgstr "Unerwartete Formulareingabe."

#. TRANS: Success message after saving extended profile details.
msgid "Details saved."
msgstr "Informationen gespeichert."

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr "Du musst in „%s“ ein Datum eintragen."

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr "Ungültiges Datum %2$s für „%1$s“ eingegeben."

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#, php-format
msgid "Invalid URL: %s."
msgstr "Ungültige URL: %s."

#. TRANS: Server error displayed when a field could not be saved in the database.
msgid "Could not save profile details."
msgstr "Konnte Profilinformationen nicht speichern."

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr "Ungültiges Tag: „%s“."

#. TRANS: Server error thrown when user profile settings could not be saved.
msgid "Could not save profile."
msgstr "Konnte Profil nicht speichern."

#. TRANS: Server error thrown when user profile settings tags could not be saved.
msgid "Could not save tags."
msgstr "Konnte Tags nicht speichern."

#. TRANS: Link title for link on user profile.
msgid "Edit extended profile settings"
msgstr "Erweiterte Profileinstellungen bearbeiten"

#. TRANS: Link text for link on user profile.
msgid "Edit"
msgstr "Bearbeiten"

#. TRANS: Plugin description.
msgid "UI extensions for additional profile fields."
msgstr "Benutzeroberflächenerweitungen für zusätzliche Profileinstellungen."

#. TRANS: Link text on user profile page leading to extended profile page.
msgid "More details..."
msgstr "Weitere Details …"

#. TRANS: Title for extended profile entry deletion dialog.
msgid "Confirmation Required"
msgstr "Bestätigung erforderlich"

#. TRANS: Confirmation text for extended profile entry deletion dialog.
msgid "Really delete this entry?"
msgstr "Diesen Eintrag wirklich löschen?"

#. TRANS: Value between parentheses (phone number, website, or IM address).
#, php-format
msgid "(%s)"
msgstr "(%s)"

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
msgid "Company"
msgstr "Unternehmen"

#. TRANS: Field label in extended profile (when did one start a position or education).
msgid "Start"
msgstr "Beginn"

#. TRANS: Field label in extended profile (when did one end a position or education).
msgid "End"
msgstr "Ende"

#. TRANS: Field value in experience area of extended profile (one still holds a position).
msgid "(Current)"
msgstr "(bis heute)"

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
msgid "Current"
msgstr "bis heute"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
msgid "Institution"
msgstr "Einrichtung"

#. TRANS: Field label in extended profile for specifying an academic degree.
msgid "Degree"
msgstr "Akademischer Grad"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
msgid "Description"
msgstr "Beschreibung"

#. TRANS: Link description in extended profile page to add another profile element.
msgid "Add another item"
msgstr "Weiteres Element hinzufügen"

#. TRANS: Field label for undefined field in extended profile.
#, php-format
msgid "TYPE: %s"
msgstr "Typ: %s"

#. TRANS: Button text for saving extended profile properties.
msgctxt "BUTTON"
msgid "Save"
msgstr "Speichern"

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
msgid "Save details"
msgstr "Informationen speichern"

#. TRANS: Field label for extended profile properties.
msgid "Phone"
msgstr "Telefon"

#. TRANS: Field label for extended profile properties (Instant Messaging).
msgid "IM"
msgstr "IM"

#. TRANS: Field label for extended profile properties.
msgid "Website"
msgstr "Website"

#. TRANS: Field label for extended profile properties.
msgid "Employer"
msgstr "Arbeitgeber"

#. TRANS: Field label for extended profile properties.
msgid "Personal"
msgstr "privat"

#. TRANS: Field label for extended profile properties.
msgid "Full name"
msgstr "Voller Name"

#. TRANS: Field label for extended profile properties.
msgid "Title"
msgstr "Titel"

#. TRANS: Field label for extended profile properties.
msgid "Manager"
msgstr "Verwalter"

#. TRANS: Field label for extended profile properties.
msgid "Location"
msgstr "Ort"

#. TRANS: Field label for extended profile properties.
msgid "Bio"
msgstr "Biographie"

#. TRANS: Field label for extended profile properties.
msgid "Tags"
msgstr "Tags"

#. TRANS: Field label for extended profile properties.
msgid "Contact"
msgstr "Kontakt"

#. TRANS: Field label for extended profile properties.
msgid "Birthday"
msgstr "Geburtstag"

#. TRANS: Field label for extended profile properties.
msgid "Spouse's name"
msgstr "Names des Ehepartners"

#. TRANS: Field label for extended profile properties.
msgid "Kids' names"
msgstr "Namen der Kinder"

#. TRANS: Field label for extended profile properties.
msgid "Work experience"
msgstr "Berufserfahrung"

#. TRANS: Field label for extended profile properties.
msgid "Education"
msgstr "Ausbildung"


code:
# Translation of StatusNet - ExtendedProfile to Zazaki (Zazaki)
# Exported from translatewiki.net
#
# Author: Erdemaslancan
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - ExtendedProfile\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:31+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:06+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: Title for extended profile settings.
msgid "Extended profile settings"
msgstr ""

#. TRANS: Usage instructions for profile settings.
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""

#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Message given submitting a form with an unknown action.
msgid "Unexpected form submission."
msgstr ""

#. TRANS: Success message after saving extended profile details.
msgid "Details saved."
msgstr ""

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr ""

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr ""

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#, php-format
msgid "Invalid URL: %s."
msgstr ""

#. TRANS: Server error displayed when a field could not be saved in the database.
msgid "Could not save profile details."
msgstr ""

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr ""

#. TRANS: Server error thrown when user profile settings could not be saved.
msgid "Could not save profile."
msgstr ""

#. TRANS: Server error thrown when user profile settings tags could not be saved.
msgid "Could not save tags."
msgstr ""

#. TRANS: Link title for link on user profile.
msgid "Edit extended profile settings"
msgstr ""

#. TRANS: Link text for link on user profile.
msgid "Edit"
msgstr "Bıvurne"

#. TRANS: Plugin description.
msgid "UI extensions for additional profile fields."
msgstr ""

#. TRANS: Link text on user profile page leading to extended profile page.
msgid "More details..."
msgstr ""

#. TRANS: Title for extended profile entry deletion dialog.
msgid "Confirmation Required"
msgstr ""

#. TRANS: Confirmation text for extended profile entry deletion dialog.
msgid "Really delete this entry?"
msgstr ""

#. TRANS: Value between parentheses (phone number, website, or IM address).
#, php-format
msgid "(%s)"
msgstr "(%s)"

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
msgid "Company"
msgstr "Şirket"

#. TRANS: Field label in extended profile (when did one start a position or education).
msgid "Start"
msgstr "Dest pêkey"

#. TRANS: Field label in extended profile (when did one end a position or education).
msgid "End"
msgstr "Qedya"

#. TRANS: Field value in experience area of extended profile (one still holds a position).
msgid "(Current)"
msgstr "(Nıkayên)"

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
msgid "Current"
msgstr "Nıkayên"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
msgid "Institution"
msgstr ""

#. TRANS: Field label in extended profile for specifying an academic degree.
msgid "Degree"
msgstr ""

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
msgid "Description"
msgstr ""

#. TRANS: Link description in extended profile page to add another profile element.
msgid "Add another item"
msgstr ""

#. TRANS: Field label for undefined field in extended profile.
#, php-format
msgid "TYPE: %s"
msgstr "Babet: %s"

#. TRANS: Button text for saving extended profile properties.
msgctxt "BUTTON"
msgid "Save"
msgstr "Star ke"

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
msgid "Save details"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Phone"
msgstr "Telefun"

#. TRANS: Field label for extended profile properties (Instant Messaging).
msgid "IM"
msgstr "IM"

#. TRANS: Field label for extended profile properties.
msgid "Website"
msgstr "Websita"

#. TRANS: Field label for extended profile properties.
msgid "Employer"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Personal"
msgstr "Personel"

#. TRANS: Field label for extended profile properties.
msgid "Full name"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Title"
msgstr "Sername"

#. TRANS: Field label for extended profile properties.
msgid "Manager"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Location"
msgstr "Lokasyon"

#. TRANS: Field label for extended profile properties.
msgid "Bio"
msgstr "Bio"

#. TRANS: Field label for extended profile properties.
msgid "Tags"
msgstr "Etiketi"

#. TRANS: Field label for extended profile properties.
msgid "Contact"
msgstr "İrtibat"

#. TRANS: Field label for extended profile properties.
msgid "Birthday"
msgstr "Rocbiyayış"

#. TRANS: Field label for extended profile properties.
msgid "Spouse's name"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Kids' names"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Work experience"
msgstr ""

#. TRANS: Field label for extended profile properties.
msgid "Education"
msgstr "Terbiyet"


code:
# Translation of StatusNet - ExtendedProfile to Spanish (español)
# Exported from translatewiki.net
#
# Author: Armando-Martin
# Author: Od1n
# --
# This file is distributed under the same license as the StatusNet package.
#
msgid ""
msgstr ""
"Project-Id-Version: StatusNet - ExtendedProfile\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-30 11:07+0000\n"
"PO-Revision-Date: 2012-06-30 11:08:31+0000\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-POT-Import-Date: 2011-06-05 21:50:06+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: Title for extended profile settings.
msgid "Extended profile settings"
msgstr "Parámetros de perfil extendidos"

#. TRANS: Usage instructions for profile settings.
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""
"Puede actualizar su información de perfil personal aquí para que la gente "
"pueda saber más sobre usted."

#. TRANS: Client error displayed when the session token does not match or is not given.
msgid "There was a problem with your session token. Try again, please."
msgstr "Hay un problema con su contraseña de sesión. Inténtelo de nuevo."

#. TRANS: Message given submitting a form with an unknown action.
msgid "Unexpected form submission."
msgstr "Envío de formulario no esperado."

#. TRANS: Success message after saving extended profile details.
msgid "Details saved."
msgstr "Detalles guardados."

#. TRANS: Exception thrown when no date was entered in a required date field.
#. TRANS: %s is the field name.
#, php-format
msgid "You must supply a date for \"%s\"."
msgstr "Debe suministrar una fecha para \"%s\""

#. TRANS: Exception thrown on incorrect data input.
#. TRANS: %1$s is a field name, %2$s is the incorrect input.
#, php-format
msgid "Invalid date entered for \"%1$s\": %2$s."
msgstr "Fecha inválida introducida para \"%1$s\": %2$s."

#. TRANS: Exception thrown when entering an invalid URL.
#. TRANS: %s is the invalid URL.
#, php-format
msgid "Invalid URL: %s."
msgstr "Dirección URL no válida: %s."

#. TRANS: Server error displayed when a field could not be saved in the database.
msgid "Could not save profile details."
msgstr "No se pudieron guardar los detalles del perfil."

#. TRANS: Validation error in form for profile settings.
#. TRANS: %s is an invalid tag.
#, php-format
msgid "Invalid tag: \"%s\"."
msgstr "Etiqueta incorrecta: \"%s\"."

#. TRANS: Server error thrown when user profile settings could not be saved.
msgid "Could not save profile."
msgstr "No se pudo guardar el perfil."

#. TRANS: Server error thrown when user profile settings tags could not be saved.
msgid "Could not save tags."
msgstr "No se pudieron guardar las etiquetas."

#. TRANS: Link title for link on user profile.
msgid "Edit extended profile settings"
msgstr "Modificar la configuración extendida de perfil"

#. TRANS: Link text for link on user profile.
msgid "Edit"
msgstr "Editar"

#. TRANS: Plugin description.
msgid "UI extensions for additional profile fields."
msgstr ""
"Extensiones de la interfaz de usuario para los campos de perfil adicionales."

#. TRANS: Link text on user profile page leading to extended profile page.
msgid "More details..."
msgstr "Más detalles..."

#. TRANS: Title for extended profile entry deletion dialog.
msgid "Confirmation Required"
msgstr "Se necesita confirmación"

#. TRANS: Confirmation text for extended profile entry deletion dialog.
msgid "Really delete this entry?"
msgstr "¿Está seguro de querer borrar esta entrada?"

#. TRANS: Value between parentheses (phone number, website, or IM address).
#, php-format
msgid "(%s)"
msgstr "(%s)"

#. TRANS: Field label in experience area of extended profile.
#. TRANS: Field label in experience edit area of extended profile (which company does one work for).
msgid "Company"
msgstr "Compañía"

#. TRANS: Field label in extended profile (when did one start a position or education).
msgid "Start"
msgstr "Inicio"

#. TRANS: Field label in extended profile (when did one end a position or education).
msgid "End"
msgstr "Fin"

#. TRANS: Field value in experience area of extended profile (one still holds a position).
msgid "(Current)"
msgstr "(Actual)"

#. TRANS: Checkbox label in experience edit area of extended profile (one still works at a company).
msgid "Current"
msgstr "Actual"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
#. TRANS: Field label for extended profile properties.
msgid "Institution"
msgstr "Institución"

#. TRANS: Field label in extended profile for specifying an academic degree.
msgid "Degree"
msgstr "Diploma"

#. TRANS: Field label in education area of extended profile.
#. TRANS: Field label in education edit area of extended profile.
msgid "Description"
msgstr "Descripción"

#. TRANS: Link description in extended profile page to add another profile element.
msgid "Add another item"
msgstr "Añadir otro elemento"

#. TRANS: Field label for undefined field in extended profile.
#, php-format
msgid "TYPE: %s"
msgstr "TYPE : %s"

#. TRANS: Button text for saving extended profile properties.
msgctxt "BUTTON"
msgid "Save"
msgstr "Guardar"

#. TRANS: .
#. TRANS: Button title for saving extended profile properties.
msgid "Save details"
msgstr "Guardar los detalles"

#. TRANS: Field label for extended profile properties.
msgid "Phone"
msgstr "Teléfono"

#. TRANS: Field label for extended profile properties (Instant Messaging).
msgid "IM"
msgstr "IM"

#. TRANS: Field label for extended profile properties.
msgid "Website"
msgstr "Sitio Web"

#. TRANS: Field label for extended profile properties.
msgid "Employer"
msgstr "Empleador"

#. TRANS: Field label for extended profile properties.
msgid "Personal"
msgstr "Personal"

#. TRANS: Field label for extended profile properties.
msgid "Full name"
msgstr "Nombre completo"

#. TRANS: Field label for extended profile properties.
msgid "Title"
msgstr "Título"

#. TRANS: Field label for extended profile properties.
msgid "Manager"
msgstr "Administrador"

#. TRANS: Field label for extended profile properties.
msgid "Location"
msgstr "Localización"

#. TRANS: Field label for extended profile properties.
msgid "Bio"
msgstr "Biografía"

#. TRANS: Field label for extended profile properties.
msgid "Tags"
msgstr "Etiquetas"

#. TRANS: Field label for extended profile properties.
msgid "Contact"
msgstr "Contacto"

#. TRANS: Field label for extended profile properties.
msgid "Birthday"
msgstr "Fecha de nacimiento"

#. TRANS: Field label for extended profile properties.
msgid "Spouse's name"
msgstr "Nombre del/de la cónyuge"

#. TRANS: Field label for extended profile properties.
msgid "Kids' names"
msgstr "Nombre de los hijos"

#. TRANS: Field label for extended profile properties.
msgid "Work experience"
msgstr "Experiencia profesional"

#. TRANS: Field label for extended profile properties.
msgid "Education"
msgstr "Educación"