return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
strtotime($this->messages[0]->created),
strtotime($this->messages[$last]->created)
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
strtotime($this->groups[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
strtotime($this->groups[0]->created),
strtotime($this->groups[$last]->created))
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->group->id,
strtotime($this->profiles[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->group->id,
strtotime($this->group->modified))
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->notice->id,
strtotime($this->notice->created))
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
isset($this->ids_only) ? 'IDs' : 'Profiles',
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
strtotime($this->notices[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
strtotime($this->notices[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->group->id,
strtotime($this->notices[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
strtotime($this->notices[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
strtotime($this->notices[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
strtotime($this->notices[0]->created),
strtotime($this->notices[$last]->created))
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->tag,
strtotime($this->notices[0]->created),
return '"' . implode(
':',
array($this->arg('action'),
+ common_user_cache_hash($this->auth_user),
common_language(),
$this->user->id,
strtotime($this->notices[0]->created),
function getInstructions()
{
- return _('Design settings for this StatusNet site.');
+ return _('Design settings for this StatusNet site');
}
/**
$config->query('BEGIN');
- // Only update colors if the theme has not changed.
+ if ($themeChanged) {
+ // If the theme has changed, reset custom colors and let them pick
+ // up the new theme's defaults.
+ $colors = array('background', 'content', 'sidebar', 'text', 'link');
+ foreach ($colors as $colorKey) {
+ // Clear from global config so we see defaults on this page...
+ $GLOBALS['config']['design'][$colorKey . 'color'] = false;
- if (!$themeChanged) {
+ // And remove old settings from DB...
+ $this->deleteSetting('design', $colorKey . 'color');
+ }
+ } else {
+ // Only save colors from the form if the theme has not changed.
+ //
+ // @fixme a future more ajaxy form should allow theme switch
+ // and color customization in one step.
$bgcolor = new WebColor($this->trimmed('design_background'));
$ccolor = new WebColor($this->trimmed('design_content'));
} elseif (Oauth_application::descriptionTooLong($description)) {
$this->showForm(sprintf(
_('Description is too long (max %d chars).'),
- Oauth_application::maxDescription()));
+ Oauth_application::maxDesc()));
return;
} elseif (mb_strlen($source_url) > 255) {
$this->showForm(_('Source URL is too long.'));
$result = $this->app->update($orig);
- if (!$result) {
+ // Note: 0 means no rows changed, which can happen if the only
+ // thing we changed was the icon, since it's not altered until
+ // the next step.
+ if ($result === false) {
common_log_db_error($this->app, 'UPDATE', __FILE__);
$this->serverError(_('Could not update application.'));
}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * License administration panel
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Settings
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * License settings
+ *
+ * @category Admin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class LicenseadminpanelAction extends AdminPanelAction
+{
+
+ /**
+ * Returns the page title
+ *
+ * @return string page title
+ */
+
+ function title()
+ {
+ // TRANS: User admin panel title
+ return _m('TITLE', 'License');
+ }
+
+ /**
+ * Instructions for using this form.
+ *
+ * @return string instructions
+ */
+
+ function getInstructions()
+ {
+ return _('License for this StatusNet site');
+ }
+
+ /**
+ * Show the site admin panel form
+ *
+ * @return void
+ */
+
+ function showForm()
+ {
+ $form = new LicenseAdminPanelForm($this);
+ $form->show();
+ return;
+ }
+
+ /**
+ * Save settings from the form
+ *
+ * @return void
+ */
+
+ function saveSettings()
+ {
+ static $settings = array(
+ 'license' => array('type', 'owner', 'url', 'title', 'image')
+ );
+
+ $values = array();
+
+ foreach ($settings as $section => $parts) {
+ foreach ($parts as $setting) {
+ $values[$section][$setting] = $this->trimmed($setting);
+ }
+ }
+
+ // This throws an exception on validation errors
+
+ $this->validate($values);
+
+ // assert(all values are valid);
+
+ $config = new Config();
+
+ $config->query('BEGIN');
+
+ foreach ($settings as $section => $parts) {
+ foreach ($parts as $setting) {
+ Config::save($section, $setting, $values[$section][$setting]);
+ }
+ }
+
+ $config->query('COMMIT');
+
+ return;
+ }
+
+ /**
+ * Validate License admin form values
+ *
+ * @param array &$values from the form
+ *
+ * @return nothing
+ */
+
+ function validate(&$values)
+ {
+ // Validate license type (shouldn't have to do it, but just in case)
+
+ $types = array('private', 'allrightsreserved', 'cc');
+
+ if (!in_array($values['license']['type'], $types)) {
+ $this->clientError(_("Invalid license selection."));
+ }
+
+ // Make sure the user has set an owner if the site has a private
+ // license
+
+ if ($values['license']['type'] == 'allrightsreserved'
+ && empty($values['license']['owner'])
+ ) {
+ $this->clientError(
+ _("You must specify the owner of the content when using the All Rights Reserved license.")
+ );
+ }
+
+ // Make sure the license title is not too long
+ if (mb_strlen($values['license']['type']) > 255) {
+ $this->clientError(
+ _("Invalid license title. Max length is 255 characters.")
+ );
+ }
+
+ // make sure the license URL and license image URL are valid URLs
+
+ $options = array('allowed_schemes' => array('http', 'https'));
+
+ if (!Validate::uri($values['license']['url'], $options)) {
+ $this->clientError(_("Invalid license URL."));
+ }
+
+ if (!Validate::uri($values['license']['image'], $options)) {
+ $this->clientError(_("Invalid license image URL."));
+ }
+ }
+}
+
+class LicenseAdminPanelForm extends AdminForm
+{
+ /**
+ * ID of the form
+ *
+ * @return int ID of the form
+ */
+
+ function id()
+ {
+ return 'licenseadminpanel';
+ }
+
+ /**
+ * class of the form
+ *
+ * @return string class of the form
+ */
+
+ function formClass()
+ {
+ return 'form_settings';
+ }
+
+ /**
+ * Action of the form
+ *
+ * @return string URL of the action
+ */
+
+ function action()
+ {
+ return common_local_url('licenseadminpanel');
+ }
+
+ /**
+ * Data elements of the form
+ *
+ * @return void
+ */
+
+ function formData()
+ {
+ $this->out->elementStart(
+ 'fieldset', array('id' => 'settings_license-selection')
+ );
+ $this->out->element('legend', null, _('License selection'));
+ $this->out->elementStart('ul', 'form_data');
+
+ $this->li();
+
+ $types = array(
+ 'private' => _('Private'),
+ 'allrightsreserved' => _('All Rights Reserved'),
+ 'cc' => _('Creative Commons')
+ );
+
+ $this->out->dropdown(
+ 'type',
+ _('Type'),
+ $types,
+ _('Select license'),
+ false,
+ $this->value('type', 'license')
+ );
+
+ $this->unli();
+
+ $this->out->elementEnd('ul');
+ $this->out->elementEnd('fieldset');
+
+ $this->out->elementStart(
+ 'fieldset',
+ array('id' => 'settings_license-details')
+ );
+ $this->out->element('legend', null, _('License details'));
+ $this->out->elementStart('ul', 'form_data');
+
+ $this->li();
+ $this->input(
+ 'owner',
+ _('Owner'),
+ _('Name of the owner of the site\'s content (if applicable).'),
+ 'license'
+ );
+ $this->unli();
+
+ $this->li();
+ $this->input(
+ 'title',
+ _('License Title'),
+ _('The title of the license.'),
+ 'license'
+ );
+ $this->unli();
+
+ $this->li();
+ $this->input(
+ 'url',
+ _('License URL'),
+ _('URL for more information about the license.'),
+ 'license'
+ );
+ $this->unli();
+
+ $this->li();
+ $this->input(
+ 'image', _('License Image URL'),
+ _('URL for an image to display with the license.'),
+ 'license'
+ );
+ $this->unli();
+
+ $this->out->elementEnd('ul');
+ $this->out->elementEnd('fieldset');
+ }
+
+ /**
+ * Action elements
+ *
+ * @return void
+ */
+
+ function formActions()
+ {
+ $this->out->submit(
+ 'submit', _('Save'), 'submit', null, _('Save license settings')
+ );
+ }
+}
} elseif (Oauth_application::descriptionTooLong($description)) {
$this->showForm(sprintf(
_('Description is too long (max %d chars).'),
- Oauth_application::maxDescription()));
+ Oauth_application::maxDesc()));
return;
} elseif (empty($source_url)) {
$this->showForm(_('Source URL is required.'));
function getInstructions()
{
- return _('You have allowed the following applications to access you account.');
+ return _('You have allowed the following applications to access your account.');
}
/**
function getInstructions()
{
- return _('Path and server settings for this StatusNet site.');
+ return _('Path and server settings for this StatusNet site');
}
/**
function getInstructions()
{
- return _('Session settings for this StatusNet site.');
+ return _('Session settings for this StatusNet site');
}
/**
strtotime($this->avatar->modified) : 0;
return 'W/"' . implode(':', array($this->arg('action'),
+ common_user_cache_hash(),
common_language(),
$this->notice->id,
strtotime($this->notice->created),
* (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.
* @author Evan Prodromou <evan@status.net>
* @author Zach Copley <zach@status.net>
* @author Sarven Capadisli <csarven@status.net>
- * @copyright 2008-2009 StatusNet, Inc.
+ * @copyright 2008-2010 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
function getInstructions()
{
- return _('User settings for this StatusNet site.');
+ return _('User settings for this StatusNet site');
}
/**
function formActions()
{
- $this->out->submit('submit', _('Save'), 'submit', null, _('Save site settings'));
+ $this->out->submit('submit', _('Save'), 'submit', null, _('Save user settings'));
}
}
}
/**
- * @param $groups array of Group *objects*
- * @param $recipients array of profile *ids*
+ * Pull up a full list of local recipients who will be getting
+ * this notice in their inbox. Results will be cached, so don't
+ * change the input data wily-nilly!
+ *
+ * @param array $groups optional list of Group objects;
+ * if left empty, will be loaded from group_inbox records
+ * @param array $recipient optional list of reply profile ids
+ * if left empty, will be loaded from reply records
+ * @return array associating recipient user IDs with an inbox source constant
*/
function whoGets($groups=null, $recipients=null)
{
$ni[$id] = NOTICE_INBOX_SOURCE_SUB;
}
- $profile = $this->getProfile();
-
foreach ($groups as $group) {
$users = $group->getUserMembers();
foreach ($users as $id) {
if (!array_key_exists($id, $ni)) {
- $user = User::staticGet('id', $id);
- if (!$user->hasBlocked($profile)) {
- $ni[$id] = NOTICE_INBOX_SOURCE_GROUP;
- }
+ $ni[$id] = NOTICE_INBOX_SOURCE_GROUP;
}
}
}
foreach ($recipients as $recipient) {
-
if (!array_key_exists($recipient, $ni)) {
- $recipientUser = User::staticGet('id', $recipient);
- if (!empty($recipientUser)) {
- $ni[$recipient] = NOTICE_INBOX_SOURCE_REPLY;
- }
+ $ni[$recipient] = NOTICE_INBOX_SOURCE_REPLY;
+ }
+ }
+
+ // Exclude any deleted, non-local, or blocking recipients.
+ $profile = $this->getProfile();
+ foreach ($ni as $id => $source) {
+ $user = User::staticGet('id', $id);
+ if (empty($user) || $user->hasBlocked($profile)) {
+ unset($ni[$id]);
}
}
' WHERE nickname = ' . $this->_quote($this->nickname);
$orig->decache();
$result = $this->query($qry);
- if ($result) {
- $this->encache();
- }
+ $this->decache();
+
return $result;
}
$user->inboxed = 1;
+ // Set default-on options here, otherwise they'll be disabled
+ // initially for sites using caching, since the initial encache
+ // doesn't know about the defaults in the database.
+ $user->emailnotifysub = 1;
+ $user->emailnotifyfav = 1;
+ $user->emailnotifynudge = 1;
+ $user->emailnotifymsg = 1;
+ $user->emailnotifyattn = 1;
+ $user->emailmicroid = 1;
+ $user->emailpost = 1;
+ $user->jabbermicroid = 1;
+ $user->viewdesigns = 1;
+
$user->created = common_sql_now();
if (Event::handle('StartUserRegister', array(&$user, &$profile))) {
if (Subscription::exists($other, $self)) {
Subscription::cancel($other, $self);
}
+ if (Subscription::exists($self, $other)) {
+ Subscription::cancel($self, $other);
+ }
$block->query('COMMIT');
('socialoomphBfD4pMqz31', 'SocialOomph', 'http://www.socialoomph.com/', now()),
('spaz','Spaz','http://funkatron.com/spaz', now()),
('StatusNet Desktop', 'StatusNet Desktop', 'http://status.net/desktop', now()),
+ ('StatusNet Mobile', 'StatusNet Mobile', 'http://status.net/mobile', now()),
+ ('StatusNet iPhone', 'iPhone', 'http://status.net/iphone', now()),
+ ('StatusNet Android', 'Android', 'http://status.net/android', now()),
+ ('StatusNet Blackberry', 'Blackberry', 'http://status.net/blackberry', now()),
('tarpipe','tarpipe','http://tarpipe.com/', now()),
('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()),
('tr.im','tr.im','http://tr.im/', now()),
{
$this->elementStart('div', array('id' => 'aside_primary',
'class' => 'aside'));
- if (Event::handle('StartShowExportData', array($this))) {
- $this->showExportData();
- Event::handle('EndShowExportData', array($this));
- }
if (Event::handle('StartShowSections', array($this))) {
$this->showSections();
Event::handle('EndShowSections', array($this));
}
+ if (Event::handle('StartShowExportData', array($this))) {
+ $this->showExportData();
+ Event::handle('EndShowExportData', array($this));
+ }
$this->elementEnd('div');
}
}
}
+ $checked = false;
if ($etag) {
$if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ?
$_SERVER['HTTP_IF_NONE_MATCH'] : null;
- if ($if_none_match && $this->_hasEtag($etag, $if_none_match)) {
- header('HTTP/1.1 304 Not Modified');
- // Better way to do this?
- exit(0);
+ if ($if_none_match) {
+ // If this check fails, ignore the if-modified-since below.
+ $checked = true;
+ if ($this->_hasEtag($etag, $if_none_match)) {
+ header('HTTP/1.1 304 Not Modified');
+ // Better way to do this?
+ exit(0);
+ }
}
}
- if ($lm && array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) {
+ if (!$checked && $lm && array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) {
$if_modified_since = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
$ims = strtotime($if_modified_since);
if ($lm <= $ims) {
$alink->height = $size;
$alink->width = $size;
$alink->url = Avatar::defaultImage($size);
+
+ if ($size == AVATAR_PROFILE_SIZE) {
+ // Hack for Twitter import: we don't have a 96x96 image,
+ // but we do have a 73x73 image. For now, fake it with that.
+ $avatar = $profile->getAvatar(73);
+ if ($avatar) {
+ $alink = AvatarLink::fromAvatar($avatar);
+ $alink->height= $size;
+ $alink->width = $size;
+ }
+ }
}
$object->avatarLinks[] = $alink;
$menu_title, $action_name == 'snapshotadminpanel', 'nav_snapshot_admin_panel');
}
+ if (AdminPanelAction::canAdmin('license')) {
+ // TRANS: Menu item title/tooltip
+ $menu_title = _('Set site license');
+ // TRANS: Menu item for site administration
+ $this->out->menuItem(common_local_url('licenseadminpanel'), _('License'),
+ $menu_title, $action_name == 'licenseadminpanel', 'nav_license_admin_panel');
+ }
+
Event::handle('EndAdminPanelNav', array($this));
}
$this->action->elementEnd('ul');
// Default to Browser
- if ($this->application->type == Oauth_application::$browser
- || empty($this->application->type)) {
+ if (empty($this->application)
+ || empty($this->application->type)
+ || $this->application->type == Oauth_application::$browser) {
$attrs['checked'] = 'checked';
}
'class' => 'radio',
'value' => Oauth_application::$desktop);
- if ($this->application->type == Oauth_application::$desktop) {
+ if (!empty($this->application) && $this->application->type == Oauth_application::$desktop) {
$attrs['checked'] = 'checked';
}
// default to read-only access
- if ($this->application->access_type & Oauth_application::$readAccess
- || empty($this->application->access_type)) {
+ if (empty($this->application)
+ || empty($this->application->access_type)
+ || $this->application->access_type & Oauth_application::$readAccess) {
$attrs['checked'] = 'checked';
}
'class' => 'radio',
'value' => 'rw');
- if ($this->application->access_type & Oauth_application::$readAccess
+ if (!empty($this->application)
+ && $this->application->access_type & Oauth_application::$readAccess
&& $this->application->access_type & Oauth_application::$writeAccess
) {
$attrs['checked'] = 'checked';
function handle($channel)
{
$channel->output($this->user,
- // TRANS: Help text for commands.
+ // TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
_("Commands:\n".
"on - turn on notifications\n".
"off - turn off notifications\n".
}
} else {
$this->_log(LOG_INFO, "[$queue] Got empty/deleted item, discarding");
- $this->_fail($qi);
+ $this->_done($qi);
}
return true;
}
'OpenID' => null),
),
'admin' =>
- array('panels' => array('design', 'site', 'user', 'paths', 'access', 'sessions', 'sitenotice')),
+ array('panels' => array('design', 'site', 'user', 'paths', 'access', 'sessions', 'sitenotice', 'license')),
'singleuser' =>
array('enabled' => false,
'nickname' => null),
{
$this->out->elementStart('div', array('id' => 'export_data',
'class' => 'section'));
- $this->out->element('h2', null, _('Export data'));
+ $this->out->element('h2', null, _('Feeds'));
$this->out->elementStart('ul', array('class' => 'xoxo'));
foreach ($feeds as $feed) {
$m->connect('admin/sessions', array('action' => 'sessionsadminpanel'));
$m->connect('admin/sitenotice', array('action' => 'sitenoticeadminpanel'));
$m->connect('admin/snapshot', array('action' => 'snapshotadminpanel'));
+ $m->connect('admin/license', array('action' => 'licenseadminpanel'));
+
$m->connect('getfile/:filename',
array('action' => 'getfile'),
return common_logged_in() && $_SESSION['real_login'];
}
+/**
+ * Get a hash portion for HTTP caching Etags and such including
+ * info on the current user's session. If login/logout state changes,
+ * or we've changed accounts, or we've renamed the current user,
+ * we'll get a new hash value.
+ *
+ * This should not be considered secure information.
+ *
+ * @param User $user (optional; uses common_current_user() if left out)
+ * @return string
+ */
+function common_user_cache_hash($user=false)
+{
+ if ($user === false) {
+ $user = common_current_user();
+ }
+ if ($user) {
+ return crc32($user->id . ':' . $user->nickname);
+ } else {
+ return '0';
+ }
+}
+
// get canonical version of nickname for comparison
function common_canonical_nickname($nickname)
{
// TRANS: Used in notices to indicate when the notice was made compared to now.
return _('about a minute ago');
} else if ($diff < 3300) {
+ $minutes = round($diff/60);
// TRANS: Used in notices to indicate when the notice was made compared to now.
- return sprintf( ngettext('about one minute ago', 'about %d minutes ago'), round($diff/60));
+ return sprintf( ngettext('about one minute ago', 'about %d minutes ago', $minutes), $minutes);
} else if ($diff < 5400) {
// TRANS: Used in notices to indicate when the notice was made compared to now.
return _('about an hour ago');
} else if ($diff < 22 * 3600) {
+ $hours = round($diff/3600);
// TRANS: Used in notices to indicate when the notice was made compared to now.
- return sprintf( ngettext('about one hour ago', 'about %d hours ago'), round($diff/3600));
+ return sprintf( ngettext('about one hour ago', 'about %d hours ago', $hours), $hours);
} else if ($diff < 37 * 3600) {
// TRANS: Used in notices to indicate when the notice was made compared to now.
return _('about a day ago');
} else if ($diff < 24 * 24 * 3600) {
+ $days = round($diff/(24*3600));
// TRANS: Used in notices to indicate when the notice was made compared to now.
- return sprintf( ngettext('about one day ago', 'about %d days ago'), round($diff/(24*3600)));
+ return sprintf( ngettext('about one day ago', 'about %d days ago', $days), $days);
} else if ($diff < 46 * 24 * 3600) {
// TRANS: Used in notices to indicate when the notice was made compared to now.
return _('about a month ago');
} else if ($diff < 330 * 24 * 3600) {
+ $months = round($diff/(30*24*3600));
// TRANS: Used in notices to indicate when the notice was made compared to now.
- return sprintf( ngettext('about one month ago', 'about %d months ago'), round($diff/(30*24*3600)));
+ return sprintf( ngettext('about one month ago', 'about %d months ago',$months), $months);
} else if ($diff < 480 * 24 * 3600) {
// TRANS: Used in notices to indicate when the notice was made compared to now.
return _('about a year ago');
{
$objstr = common_log_objstring($object);
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
- common_log(LOG_ERR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename);
+ if (is_object($last_error)) {
+ $msg = $last_error->message;
+ } else {
+ $msg = 'Unknown error (' . var_export($last_error, true) . ')';
+ }
+ common_log(LOG_ERR, $msg . '(' . $verb . ' on ' . $objstr . ')', $filename);
}
function common_log_objstring(&$object)
-# Translation of StatusNet to Afrikaans (Afrikaans)
+# Translation of StatusNet - Core to Afrikaans (Afrikaans)
# Expored from translatewiki.net
#
# Author: Naudefj
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:37+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:13+0000\n"
"Language-Team: Afrikaans <http://translatewiki.net/wiki/Portal:af>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: af\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrateur"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgstr[0] "U is 'n lid van hierdie groep:"
msgstr[1] "U is 'n lid van hierdie groepe:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Nudge"
msgstr "Aanpor"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/personalgroupnav.php:99
msgid "Personal"
msgstr "Persoonlik"
msgid "Keyword(s)"
msgstr "Term(e)"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "Gebruikers"
msgstr "ongeveer 'n minuut gelede"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "ongeveer 'n uur gelede"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "ongeveer een dag gelede"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "ongeveer een maand gelede"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "ongeveer een jaar gelede"
-# Translation of StatusNet to Arabic (العربية)
+# Translation of StatusNet - Core to Arabic (العربية)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:38+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:19+0000\n"
"Language-Team: Arabic <http://translatewiki.net/wiki/Portal:ar>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ar\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\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"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "إداري"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "اجعل المستخدم إداريًا في المجموعة"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[4] ""
msgstr[5] ""
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "المجموعات الأكثر أعضاءً"
msgid "Nudge"
msgstr "نبّه"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "تعذّر إدراج اشتراك جديد."
msgid "Keyword(s)"
msgstr "الكلمات المفتاحية"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "قبل دقيقة تقريبًا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "قبل ساعة تقريبًا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "قبل يوم تقريبا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "قبل شهر تقريبًا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "قبل سنة تقريبًا"
-# Translation of StatusNet to Egyptian Spoken Arabic (مصرى)
+# Translation of StatusNet - Core to Egyptian Spoken Arabic (مصرى)
# Expored from translatewiki.net
#
# Author: Dudi
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:40+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:21+0000\n"
"Language-Team: Egyptian Spoken Arabic <http://translatewiki.net/wiki/Portal:"
"arz>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: arz\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\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"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "إداري"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgstr[4] ""
msgstr[5] ""
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "المجموعات الأكثر أعضاءً"
msgid "Nudge"
msgstr "نبّه"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "تعذّر إدراج اشتراك جديد."
msgid "Keyword(s)"
msgstr "الكلمات المفتاحية"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "قبل دقيقه تقريبًا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "قبل ساعه تقريبًا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "قبل يوم تقريبا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "قبل شهر تقريبًا"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "قبل سنه تقريبًا"
-# Translation of StatusNet to Bulgarian (Български)
+# Translation of StatusNet - Core to Bulgarian (Български)
# Expored from translatewiki.net
#
# Author: DCLXVI
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:41+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:23+0000\n"
"Language-Team: Bulgarian <http://translatewiki.net/wiki/Portal:bg>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: bg\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Настройки"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgstr[0] "Не членувате в тази група."
msgstr[1] "Не членувате в тази група."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Групи с най-много членове"
msgid "Send a nudge to this user"
msgstr "Побутване на този потребител"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Грешка при добавяне на нов абонамент."
msgid "Keyword(s)"
msgstr "Ключови думи"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "преди около минута"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "преди около час"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "преди около ден"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "преди около месец"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "преди около година"
-# Translation of StatusNet to Breton (Brezhoneg)
+# Translation of StatusNet - Core to Breton (Brezhoneg)
# Expored from translatewiki.net
#
# Author: Fulup
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:42+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:25+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Merañ"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Lakaat an implijer da vezañ ur merour eus ar strollad"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid "You are not a member of any groups."
msgstr "N'oc'h ezel eus strollad ebet."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbypostssection.php:71
msgid "Groups with most posts"
msgstr ""
msgid "Send a nudge to this user"
msgstr "Kas ur blinkadenn d'an implijer-mañ"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/personalgroupnav.php:99
msgid "Personal"
msgstr "Hiniennel"
msgid "Keyword(s)"
msgstr "Ger(ioù) alc'hwez"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "1 vunutenn zo well-wazh"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "1 eurvezh zo well-wazh"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "1 devezh zo well-wazh"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "miz zo well-wazh"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "bloaz zo well-wazh"
-# Translation of StatusNet to Catalan (Català)
+# Translation of StatusNet - Core to Catalan (Català)
# Expored from translatewiki.net
#
# Author: Aleator
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:43+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:26+0000\n"
"Language-Team: Catalan <http://translatewiki.net/wiki/Portal:ca>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ca\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Admin"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Fes l'usuari un administrador del grup"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Sou un membre d'aquest grup:"
msgstr[1] "Sou un membre d'aquests grups:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr "Sobrenoms addicionals del grup, separats amb comes o espais, màx. %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grups amb més membres"
msgid "Could not determine file's MIME type."
msgstr "No s'ha pogut determinar el tipus MIME del fitxer."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Envia un avís directe"
msgid "Send a nudge to this user"
msgstr "Crida l'atenció a l'usuari"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "No s'ha pogut inserir una nova subscripció."
msgid "Keyword(s)"
msgstr "Paraules clau"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "fa un minut"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "fa una hora"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "fa un dia"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "fa un mes"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "fa un any"
-# Translation of StatusNet to Czech (Česky)
+# Translation of StatusNet - Core to Czech (Česky)
# Expored from translatewiki.net
#
# Author: Koo6
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:45+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:28+0000\n"
"Language-Team: Czech <http://translatewiki.net/wiki/Portal:cs>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: cs\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ( (n >= 2 && n <= 4) ? 1 : "
"2 );\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Admin"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Uďelat uživatele adminem skupiny"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[1] "Jste členem těchto skupin:"
msgstr[2] ""
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr "Další přezdívky pro skupinu, oddělené čárkou nebo mezerou, max %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Skupiny s nejvíce členy"
msgid "Could not determine file's MIME type."
msgstr "Nelze určit typ MIME souboru."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Pošlete přímou zprávu"
msgid "Send a nudge to this user"
msgstr "Poslat pošťouchnutí tomuto uživateli"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Nelze vložit odebírání"
msgid "Keyword(s)"
msgstr "Klíčová slova"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "asi před minutou"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "asi před hodinou"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "asi přede dnem"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "asi před měsícem"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "asi před rokem"
-# Translation of StatusNet to Danish (Dansk)
+# Translation of StatusNet - Core to Danish (Dansk)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:46+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:30+0000\n"
"Language-Team: Danish <http://translatewiki.net/wiki/Portal:da>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: da\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrator"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Gør bruger til administrator af gruppen"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgid "No one is subscribed to you."
msgstr ""
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
#. TRANS: Menu item in the group navigation page.
#: lib/groupnav.php:95
msgctxt "MENU"
msgid "Members"
msgstr ""
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Nudge"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/personalgroupnav.php:99
msgid "Personal"
msgstr ""
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1109
+#: lib/util.php:1110
#, php-format
msgid "about one minute ago"
msgid_plural "about %d minutes ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1115
+#: lib/util.php:1117
#, php-format
msgid "about one hour ago"
msgid_plural "about %d hours ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1120
msgid "about a day ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1121
+#: lib/util.php:1124
#, php-format
msgid "about one day ago"
msgid_plural "about %d days ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1124
+#: lib/util.php:1127
msgid "about a month ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1127
+#: lib/util.php:1131
#, php-format
msgid "about one month ago"
msgid_plural "about %d months ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1134
msgid "about a year ago"
msgstr ""
-# Translation of StatusNet to German (Deutsch)
+# Translation of StatusNet - Core to German (Deutsch)
# Expored from translatewiki.net
#
# Author: Apmon
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:47+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:32+0000\n"
"Language-Team: German <http://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
#: actions/register.php:212
msgid "Nickname must have only lowercase letters and numbers and no spaces."
msgstr ""
-"Der Nutzername darf nur aus Kleinbuchstaben und Ziffern bestehen. "
-"Leerzeichen sind nicht erlaubt."
+"Der Nutzername darf nur aus Kleinbuchstaben und Zahlen bestehen. Leerzeichen "
+"sind nicht erlaubt."
#: actions/apigroupcreate.php:177 actions/editgroup.php:190
#: actions/newgroup.php:130 actions/profilesettings.php:238
msgid "Admin"
msgstr "Admin"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Blockieren"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Benutzer zu einem Admin dieser Gruppe ernennen"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#: actions/profilesettings.php:108 lib/groupeditform.php:154
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
-msgstr "1-64 Kleinbuchstaben oder Ziffern, keine Sonder- oder Leerzeichen"
+msgstr "1-64 Kleinbuchstaben oder Zahlen, keine Satz- oder Leerzeichen"
#: actions/profilesettings.php:111 actions/register.php:455
#: actions/showgroup.php:256 actions/tagother.php:104
#: actions/register.php:142
msgid "Registration not allowed."
-msgstr "Registrierung nicht gestattet"
+msgstr "Registrierung nicht erlaubt"
#: actions/register.php:205
msgid "You can't register if you don't agree to the license."
#: actions/register.php:432
msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
msgstr ""
-"1-64 kleingeschriebene Buchstaben oder Zahlen, keine Satz- oder Leerzeichen. "
-"Pflicht."
+"1-64 Kleinbuchstaben oder Zahlen, keine Satz- oder Leerzeichen. Pflicht."
#: actions/register.php:437
msgid "6 or more characters. Required."
#: lib/action.php:495
msgctxt "TOOLTIP"
msgid "Create an account"
-msgstr "Neues Konto erstellen"
+msgstr "Neues Benutzerkonto erstellen"
#. TRANS: Main menu option when not logged in to register a new account
#: lib/action.php:498
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Du bist Mitglied dieser Gruppe:"
msgstr[1] "Du bist Mitglied dieser Gruppen:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"Zusätzliche Spitznamen für die Gruppe, Komma oder Leerzeichen getrennt, max %"
"d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "%s-Logo hinzufügen oder bearbeiten"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "%s-Design hinzufügen oder bearbeiten"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Gruppen mit den meisten Mitgliedern"
msgid "Could not determine file's MIME type."
msgstr "Konnte den MIME-Typ nicht feststellen."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+"„%1$s“ ist kein unterstütztes Dateiformat auf diesem Server. Versuche es mit "
+"einem anderen %2$s-Format."
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Versende eine direkte Nachricht"
msgid "Send a nudge to this user"
msgstr "Sende diesem Benutzer einen Stups"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Konnte neues Abonnement nicht eintragen."
msgid "Keyword(s)"
msgstr "Suchbegriff"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "vor einer Minute"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "vor ca. einer Minute"
+msgstr[1] "vor ca. %d Minuten"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "vor einer Stunde"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "vor ca. einer Stunde"
+msgstr[1] "vor ca. %d Stunden"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "vor einem Tag"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "vor ca. einem Tag"
+msgstr[1] "vor ca. %d Tagen"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "vor einem Monat"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "vor ca. einem Monat"
+msgstr[1] "vor ca. %d Monaten"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "vor einem Jahr"
-# Translation of StatusNet to Greek (Ελληνικά)
+# Translation of StatusNet - Core to Greek (Ελληνικά)
# Expored from translatewiki.net
#
# Author: Crazymadlover
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:48+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:34+0000\n"
"Language-Team: Greek <http://translatewiki.net/wiki/Portal:el>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: el\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Διαχειριστής"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr ""
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
#. TRANS: Submit button title.
#: actions/groupmembers.php:537
msgctxt "TOOLTIP"
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Ομάδες με τα περισσότερα μέλη"
msgstr[1] "Ομάδες με τα περισσότερα μέλη"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Ομάδες με τα περισσότερα μέλη"
msgid "Nudge"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Απέτυχε η εισαγωγή νέας συνδρομής."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1109
+#: lib/util.php:1110
#, php-format
msgid "about one minute ago"
msgid_plural "about %d minutes ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1115
+#: lib/util.php:1117
#, php-format
msgid "about one hour ago"
msgid_plural "about %d hours ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1120
msgid "about a day ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1121
+#: lib/util.php:1124
#, php-format
msgid "about one day ago"
msgid_plural "about %d days ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1124
+#: lib/util.php:1127
msgid "about a month ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1127
+#: lib/util.php:1131
#, php-format
msgid "about one month ago"
msgid_plural "about %d months ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1134
msgid "about a year ago"
msgstr ""
-# Translation of StatusNet to British English (British English)
+# Translation of StatusNet - Core to British English (British English)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:50+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:38+0000\n"
"Language-Team: British English <http://translatewiki.net/wiki/Portal:en-gb>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: en-gb\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Admin"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Make user an admin of the group"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgstr[0] "You are not a member of that group."
msgstr[1] "You are not a member of that group."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Groups with most members"
msgid "Send a nudge to this user"
msgstr "Send a nudge to this user"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Couldn't insert new subscription."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "about a minute ago"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "about an hour ago"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "about a day ago"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "about a month ago"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "about a year ago"
-# Translation of StatusNet to Esperanto (Esperanto)
+# Translation of StatusNet - Core to Esperanto (Esperanto)
# Expored from translatewiki.net
#
# Author: AVRS
# Author: Brion
+# Author: Eliovir
# Author: Ianmcorvidae
# Author: Kris10
# Author: LyzTyphone
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:49+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:36+0000\n"
"Language-Team: Esperanto <http://translatewiki.net/wiki/Portal:eo>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: eo\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administranto"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Bloki"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Elekti uzanton grupestro."
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Estrigi"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Estrigi la uzanton"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "Password and confirmation do not match."
msgstr "Pasvorto kaj komfirmo ne kongruas."
+#: actions/recoverpassword.php:388 actions/register.php:255
+msgid "Error setting user."
+msgstr "Eraris agordi uzanton."
+
#: actions/recoverpassword.php:395
msgid "New password successfully saved. You are now logged in."
msgstr "Nova pasvorto sukcese konserviĝas. Vi nun estas ensalutinta."
#: actions/showapplication.php:236
msgid "Reset key & secret"
-msgstr ""
+msgstr "Rekomencigi ŝlosilon & sekreton"
#: actions/showapplication.php:261
msgid "Application info"
#: actions/showapplication.php:263
msgid "Consumer key"
-msgstr ""
+msgstr "Konsumanta ŝlosilo"
#: actions/showapplication.php:268
msgid "Consumer secret"
-msgstr ""
+msgstr "Konsumanta sekreto"
#: actions/showapplication.php:273
msgid "Request token URL"
-msgstr ""
+msgstr "Pet-ĵetona URL"
#: actions/showapplication.php:278
msgid "Access token URL"
-msgstr ""
+msgstr "Alir-ĵetona URL"
#: actions/showapplication.php:283
msgid "Authorize URL"
"Rimarku: Ni subtenas HMAC-SHA1-subskribo. Ni ne subtenas platteksta "
"subskribado-metodon."
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Ĉu vi certe volas rekomencigi vian konsumantan ŝlosilon kaj sekreton?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
#: actions/siteadminpanel.php:171
msgid "Dupe limit must be one or more seconds."
-msgstr ""
+msgstr "Refoja limo estu almenaŭ unu sekundo."
#: actions/siteadminpanel.php:221
msgid "General"
#: actions/siteadminpanel.php:230
msgid "Text used for credits link in footer of each page"
-msgstr ""
+msgstr "Teksto por dankado-ligilo je subo por ĉiu paĝo"
#: actions/siteadminpanel.php:234
msgid "Brought by URL"
-msgstr ""
+msgstr "Alportita de URL"
#: actions/siteadminpanel.php:235
msgid "URL used for credits link in footer of each page"
msgid "Default language"
msgstr "Defaŭlta lingvo"
+#: actions/siteadminpanel.php:263
+msgid "Site language when autodetection from browser settings is not available"
+msgstr "Reteja lingvo por kiam lingva prefero ne troviĝas el la foliumilo"
+
#: actions/siteadminpanel.php:271
msgid "Limits"
msgstr "Limoj"
#: actions/siteadminpanel.php:274
msgid "Text limit"
-msgstr ""
+msgstr "Teksta longlimo"
#: actions/siteadminpanel.php:274
msgid "Maximum number of characters for notices."
-msgstr ""
+msgstr "Longlimo por afiŝoj."
#: actions/siteadminpanel.php:278
msgid "Dupe limit"
-msgstr ""
+msgstr "Refoja limo"
#: actions/siteadminpanel.php:278
msgid "How long users must wait (in seconds) to post the same thing again."
msgstr ""
+"Kiel longe devas uzantoj atendas (je sekundo) antaŭ afiŝi la saman refejo."
#: actions/sitenoticeadminpanel.php:56
msgid "Site Notice"
-msgstr ""
+msgstr "Reteja Anonco"
+
+#: actions/sitenoticeadminpanel.php:67
+msgid "Edit site-wide message"
+msgstr "Redakti retejan mesaĝon"
#: actions/sitenoticeadminpanel.php:103
msgid "Unable to save site notice."
-msgstr ""
+msgstr "Malsukcesis konservi retejan anoncon."
#: actions/sitenoticeadminpanel.php:113
msgid "Max length for the site-wide notice is 255 chars."
-msgstr ""
+msgstr "Longlimo por reteja anonco estas 255 literoj."
#: actions/sitenoticeadminpanel.php:176
msgid "Site notice text"
-msgstr ""
+msgstr "Teksto de reteja anonco."
#: actions/sitenoticeadminpanel.php:178
msgid "Site-wide notice text (255 chars max; HTML okay)"
-msgstr ""
+msgstr "Teksto de reteja anonco (apenaŭ 255 literoj; HTML eblas)"
#: actions/sitenoticeadminpanel.php:198
msgid "Save site notice"
msgstr "Konservi retejan agordon"
+#. TRANS: Title for SMS settings.
+#: actions/smssettings.php:59
+msgid "SMS settings"
+msgstr "SMM-a agordo"
+
+#. TRANS: SMS settings page instructions.
+#. TRANS: %%site.name%% is the name of the site.
+#: actions/smssettings.php:74
+#, php-format
+msgid "You can receive SMS messages through email from %%site.name%%."
+msgstr "Vi povos ricevi SMM-mesaĝon per retpoŝto de %%site.name%%."
+
+#. TRANS: Message given in the SMS settings if SMS is not enabled on the site.
+#: actions/smssettings.php:97
+msgid "SMS is not available."
+msgstr "SMM ne estas disponebla."
+
+#. TRANS: Form legend for SMS settings form.
+#: actions/smssettings.php:111
+msgid "SMS address"
+msgstr "SMM-a adreso"
+
+#. TRANS: Form guide in SMS settings form.
+#: actions/smssettings.php:120
+msgid "Current confirmed SMS-enabled phone number."
+msgstr "Nuna konfirmita SMM-pova telefonnumero"
+
#. TRANS: Form guide in IM settings form.
#: actions/smssettings.php:133
msgid "Awaiting confirmation on this phone number."
-msgstr ""
+msgstr "Atendante konfirmon por la telefonnumero."
+
+#. TRANS: Field label for SMS address input in SMS settings form.
+#: actions/smssettings.php:142
+msgid "Confirmation code"
+msgstr "Konfirma kodo."
#. TRANS: Form field instructions in SMS settings form.
#: actions/smssettings.php:144
msgid "Enter the code you received on your phone."
-msgstr ""
+msgstr "Entajpu la kodon, kiu vi ricevis per poŝtelefono."
#. TRANS: Button label to confirm SMS confirmation code in SMS settings.
#: actions/smssettings.php:148
#. TRANS: Field label for SMS phone number input in SMS settings form.
#: actions/smssettings.php:153
msgid "SMS phone number"
-msgstr ""
+msgstr "SMM-a telefonnumero"
#. TRANS: SMS phone number input field instructions in SMS settings form.
#: actions/smssettings.php:156
msgid "Phone number, no punctuation or spaces, with area code"
-msgstr ""
+msgstr "Telefonnumero, sen interpunkcio aŭ spacoj, kun loka kodo"
+
+#. TRANS: Form legend for SMS preferences form.
+#: actions/smssettings.php:195
+msgid "SMS preferences"
+msgstr "SMM-aj preferoj"
#. TRANS: Checkbox label in SMS preferences form.
#: actions/smssettings.php:201
"Send me notices through SMS; I understand I may incur exorbitant charges "
"from my carrier."
msgstr ""
+"Sendu al mi avizoj per SMM; mi komprenas ke la kosto eble estos multa de mia "
+"peranto."
+
+#. TRANS: Confirmation message for successful SMS preferences save.
+#: actions/smssettings.php:315
+msgid "SMS preferences saved."
+msgstr "SMM-prefero konserviĝas."
#. TRANS: Message given saving SMS phone number without having provided one.
#: actions/smssettings.php:338
msgid "No phone number."
msgstr "Mankas la telefononumero."
+#. TRANS: Message given saving SMS phone number without having selected a carrier.
+#: actions/smssettings.php:344
+msgid "No carrier selected."
+msgstr "Neniu peranto elektiĝas."
+
+#. TRANS: Message given saving SMS phone number that is already set.
+#: actions/smssettings.php:352
+msgid "That is already your phone number."
+msgstr "Tio estas jam via telefonnumero."
+
+#. TRANS: Message given saving SMS phone number that is already set for another user.
+#: actions/smssettings.php:356
+msgid "That phone number already belongs to another user."
+msgstr "Tiu telefonnumero jam apartenas al alia uzanto."
+
+#. TRANS: Message given saving valid SMS phone number that is to be confirmed.
+#: actions/smssettings.php:384
+msgid ""
+"A confirmation code was sent to the phone number you added. Check your phone "
+"for the code and instructions on how to use it."
+msgstr ""
+"Konfirmkodo jam sendiĝas al la aldonita telefonnumero. Kontrolu vian "
+"poŝtelefonon pri la kodo kaj gvido pri kiel uzi ĝin."
+
+#. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number.
+#: actions/smssettings.php:413
+msgid "That is the wrong confirmation number."
+msgstr "Tiu konfirma kodo estas malĝusta."
+
+#. TRANS: Message given after successfully canceling SMS phone number confirmation.
+#: actions/smssettings.php:427
+msgid "SMS confirmation cancelled."
+msgstr "SMM-a konfirmo nuliĝas."
+
+#. TRANS: Message given trying to remove an SMS phone number that is not
+#. TRANS: registered for the active user.
+#: actions/smssettings.php:448
+msgid "That is not your phone number."
+msgstr "Tio ne estas via telefonnumero."
+
+#. TRANS: Message given after successfully removing a registered SMS phone number.
+#: actions/smssettings.php:470
+msgid "The SMS phone number was removed."
+msgstr "La SMM-numreo estas forigita."
+
#. TRANS: Label for mobile carrier dropdown menu in SMS settings.
#: actions/smssettings.php:511
msgid "Mobile carrier"
-msgstr ""
+msgstr "Poŝtelefona peranto"
#. TRANS: Default option for mobile carrier dropdown menu in SMS settings.
#: actions/smssettings.php:516
msgid "Select a carrier"
-msgstr ""
+msgstr "Elektu peranton"
#. TRANS: Form instructions for mobile carrier dropdown menu in SMS settings.
#. TRANS: %s is an administrative contact's e-mail address.
"Mobile carrier for your phone. If you know a carrier that accepts SMS over "
"email but isn't listed here, send email to let us know at %s."
msgstr ""
+"Poŝtelefona peranto de via telefono. Se vi konas peranton, kiu akceptas SMM "
+"per retpoŝto sed ne listiĝas tie ĉi, sendu mesaĝon al ni sciigi, je %s."
+
+#. TRANS: Message given saving SMS phone number confirmation code without having provided one.
+#: actions/smssettings.php:548
+msgid "No code entered"
+msgstr "Neniu kodo entajpita"
#. TRANS: Menu item for site administration
#: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196
#: lib/adminpanelaction.php:395
msgid "Snapshots"
-msgstr ""
+msgstr "Momentfotoj"
+
+#: actions/snapshotadminpanel.php:65
+msgid "Manage snapshot configuration"
+msgstr "Administri agordon pri momentfoto"
+
+#: actions/snapshotadminpanel.php:127
+msgid "Invalid snapshot run value."
+msgstr "Momentfota ofteco nevalida."
#: actions/snapshotadminpanel.php:133
msgid "Snapshot frequency must be a number."
-msgstr ""
+msgstr "Momentfota ofteco estu nombro."
+
+#: actions/snapshotadminpanel.php:144
+msgid "Invalid snapshot report URL."
+msgstr "Momentfota alraporta URL nevalida."
#: actions/snapshotadminpanel.php:200
msgid "Randomly during web hit"
-msgstr ""
+msgstr "Harzarde dum ret-alklako."
#: actions/snapshotadminpanel.php:201
msgid "In a scheduled job"
-msgstr ""
+msgstr "Laŭplane"
#: actions/snapshotadminpanel.php:206
msgid "Data snapshots"
-msgstr ""
+msgstr "Datumaj momentfotoj"
#: actions/snapshotadminpanel.php:208
msgid "When to send statistical data to status.net servers"
-msgstr ""
+msgstr "Kiam sendu statistikan datumon al status.net serviloj"
#: actions/snapshotadminpanel.php:217
msgid "Frequency"
#: actions/snapshotadminpanel.php:218
msgid "Snapshots will be sent once every N web hits"
-msgstr ""
+msgstr "Momentfotoj sendiĝos post po N alklakoj"
#: actions/snapshotadminpanel.php:226
msgid "Report URL"
-msgstr ""
+msgstr "Alraporta URL"
#: actions/snapshotadminpanel.php:227
msgid "Snapshots will be sent to this URL"
-msgstr ""
+msgstr "Momentfotoj sendiĝos al ĉi tiu URL"
#: actions/snapshotadminpanel.php:248
msgid "Save snapshot settings"
msgstr "Konservi retejan agordon"
+#: actions/subedit.php:70
+msgid "You are not subscribed to that profile."
+msgstr "Vi ne abonis tiun profilon."
+
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
+msgid "Could not save subscription."
+msgstr "Malsukcesis konservi abonon."
+
#: actions/subscribe.php:77
msgid "This action only accepts POST requests."
-msgstr ""
+msgstr "La ago akceptas nur POST-an peton."
+
+#: actions/subscribe.php:107
+msgid "No such profile."
+msgstr "Ne ekzistas tia profilo."
#: actions/subscribe.php:117
msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
-msgstr ""
+msgstr "Vi ne povas aboni foran OMB 0.1-an profilon per ĉi tiu ago."
#: actions/subscribe.php:145
msgid "Subscribed"
msgstr "Abonita"
+#: actions/subscribers.php:50
+#, php-format
+msgid "%s subscribers"
+msgstr "%s abonantoj"
+
+#: actions/subscribers.php:52
+#, php-format
+msgid "%1$s subscribers, page %2$d"
+msgstr "%1$s abonantoj, paĝo %2$d"
+
#: actions/subscribers.php:63
msgid "These are the people who listen to your notices."
-msgstr ""
+msgstr "Jen homoj, kiuj rigardas viajn avizojn."
#: actions/subscribers.php:67
#, php-format
msgid "These are the people who listen to %s's notices."
-msgstr ""
+msgstr "Jen homoj, kiuj rigardas avizojn de %s."
#: actions/subscribers.php:108
msgid ""
"You have no subscribers. Try subscribing to people you know and they might "
"return the favor"
-msgstr ""
+msgstr "Vi ne havas abonanton. Provu aboni konatojn, kaj ili eble reaboni vin"
#: actions/subscribers.php:110
#, php-format
msgid "%s has no subscribers. Want to be the first?"
+msgstr "%s ne havas abonantojn. Ĉu vi volas esti la unua?"
+
+#: actions/subscribers.php:114
+#, php-format
+msgid ""
+"%s has no subscribers. Why not [register an account](%%%%action.register%%%"
+"%) and be the first?"
msgstr ""
+"%s ne havas abonantojn. Kial ne [krei konton](%%%%*action.*Register%%%%) kaj "
+"esti la unua?"
#: actions/subscriptions.php:52
#, php-format
msgid "%s subscriptions"
-msgstr ""
+msgstr "%s abonatoj"
#: actions/subscriptions.php:54
#, php-format
msgid "%1$s subscriptions, page %2$d"
-msgstr ""
+msgstr "%1$s abonatoj, paĝo %2$d"
#: actions/subscriptions.php:65
msgid "These are the people whose notices you listen to."
-msgstr ""
+msgstr "Jen homoj, kies avizoj rigardas vi."
#: actions/subscriptions.php:69
#, php-format
msgid "These are the people whose notices %s listens to."
-msgstr ""
+msgstr "Jen homoj, kies avizoj %s rigardas."
#: actions/subscriptions.php:126
#, php-format
"featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can "
"automatically subscribe to people you already follow there."
msgstr ""
+"Vi ne nun abonas ies ajn avizoj. Provu aboni konatojn. Provu [homserĉi](%%"
+"action.peoplesearch%%), kontrolu grupanojn en interesaj grupoj, kaj nian "
+"[elstarajn uzantojn](%%action.featured%%). Se vi estas [Tvitanto](%%action."
+"twittersettings%%), vi povas aŭtomate aboni homon, kiun vi jam sekvas tie."
#: actions/subscriptions.php:128 actions/subscriptions.php:132
#, php-format
msgid "%s is not listening to anyone."
-msgstr ""
+msgstr "%s ne abonas iun ajn."
#: actions/subscriptions.php:208
msgid "Jabber"
msgid "SMS"
msgstr "SMS"
+#: actions/tag.php:69
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr "Avizoj etikeditaj per %1$s - paĝo %2$d"
+
#: actions/tag.php:87
#, php-format
msgid "Notice feed for tag %s (RSS 1.0)"
-msgstr ""
+msgstr "Avizofluo pri etikedo %s (RSS 1.0)"
#: actions/tag.php:93
#, php-format
msgid "Notice feed for tag %s (RSS 2.0)"
-msgstr ""
+msgstr "Avizofluo pri etikedo %s (RSS 2.0)"
#: actions/tag.php:99
#, php-format
msgid "Notice feed for tag %s (Atom)"
-msgstr ""
+msgstr "Avizofluo pri etikedo %s (Atom)"
+
+#: actions/tagother.php:65
+#, php-format
+msgid "Tag %s"
+msgstr "Etikedo %s"
+
+#: actions/tagother.php:77 lib/userprofile.php:76
+msgid "User profile"
+msgstr "Uzanta profilo"
#: actions/tagother.php:81 actions/userauthorization.php:132
#: lib/userprofile.php:103
msgid "Photo"
msgstr "Foto"
+#: actions/tagother.php:141
+msgid "Tag user"
+msgstr "Etikedi uzanton"
+
+#: actions/tagother.php:151
+msgid ""
+"Tags for this user (letters, numbers, -, ., and _), comma- or space- "
+"separated"
+msgstr ""
+"Etikedoj por ĉi tiuj uzanto (literoj, ciferoj, -, . Kaj _), apartigu per "
+"komo aŭ spaco."
+
#: actions/tagother.php:193
msgid ""
"You can only tag people you are subscribed to or who are subscribed to you."
-msgstr ""
+msgstr "Vi rajtas entikedi nur abonanton aŭ abonaton."
+
+#: actions/tagother.php:200
+msgid "Could not save tags."
+msgstr "Malsukcesis konservi etikedojn."
+
+#: actions/tagother.php:236
+msgid "Use this form to add tags to your subscribers or subscriptions."
+msgstr "Uzu ĉi tiun formularon por etikedi viajn abonantojn aŭ abonatojn."
+
+#: actions/tagrss.php:35
+msgid "No such tag."
+msgstr "Ne estas tiu etikedo."
+
+#: actions/unblock.php:59
+msgid "You haven't blocked that user."
+msgstr "Vi ne jam blokis la uzanton."
#: actions/unsilence.php:72
msgid "User is not silenced."
+msgstr "Uzanto ne estas silentigita."
+
+#: actions/unsubscribe.php:98
+msgid "Unsubscribed"
+msgstr "Malabonita"
+
+#: actions/updateprofile.php:64 actions/userauthorization.php:337
+#, php-format
+msgid ""
+"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
msgstr ""
+"Rigardato-flua permesilo \"%1$s\" ne konformas al reteja permesilo \"%2$s\"."
#. TRANS: User admin panel title
#: actions/useradminpanel.php:59
msgid "User"
msgstr "Uzanto"
+#: actions/useradminpanel.php:70
+msgid "User settings for this StatusNet site."
+msgstr "Uzantaj agordoj por ĉi tiu StatusNet-retejo."
+
#: actions/useradminpanel.php:149
msgid "Invalid bio limit. Must be numeric."
-msgstr ""
+msgstr "Nevalida biografia longlimo. Estu cifero."
#: actions/useradminpanel.php:155
msgid "Invalid welcome text. Max length is 255 characters."
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Dosiero tiel granda superos vian monatan kvoton kun %d bajtoj."
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Nevalida dosiernomo."
+
#. TRANS: Exception thrown when joining a group fails.
#: classes/Group_member.php:42
msgid "Group join failed."
-msgstr ""
+msgstr "Malsukcesis aniĝi al grupon."
+
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
+msgid "Not part of group."
+msgstr "Ne grupano."
+
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
+msgid "Group leave failed."
+msgstr "Malsukcesis foriri de grupo."
+
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
+msgid "Could not update local group."
+msgstr "Malsukcesis ĝisdatigi lokan grupon."
+
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
+#, php-format
+msgid "Could not create login token for %s"
+msgstr "Malsukcesis krei ensalut-ĵetonon por %s"
#. TRANS: Exception thrown when database name or Data Source Name could not be found.
#: classes/Memcached_DataObject.php:533
msgid "No database name or DSN found anywhere."
-msgstr ""
+msgstr "Ne troviĝas datumbaza nomo aŭ DSN ie ajn."
#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
#: classes/Message.php:46
msgid "You are banned from sending direct messages."
-msgstr ""
+msgstr "Vi blokiĝis de sendi rektan mesaĝon."
+
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
+msgid "Could not insert message."
+msgstr "Malsukcesis enmeti mesaĝon."
+
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
+msgid "Could not update message with new URI."
+msgstr "Malsukcesis ĝisdatigi mesaĝon per nova URI"
#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
msgid "Design your profile"
msgstr ""
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:144
+msgid "Other options"
+msgstr "Aliaj"
+
#. TRANS: Link description in user account settings menu.
#: lib/accountsettingsaction.php:146
msgid "Other"
#. TRANS: Page title for a page without a title set.
#: lib/action.php:164
msgid "Untitled page"
-msgstr ""
+msgstr "Sentitola paĝo"
#. TRANS: Tooltip for main menu option "Personal"
#: lib/action.php:455
msgctxt "TOOLTIP"
msgid "Personal profile and friends timeline"
-msgstr ""
+msgstr "Tempstrio pri vi kaj amikoj"
#. TRANS: Main menu option when logged in for access to personal profile and friends timeline
#: lib/action.php:458
msgid "Personal"
msgstr "Persona"
+#. TRANS: Tooltip for main menu option "Account"
+#: lib/action.php:460
+msgctxt "TOOLTIP"
+msgid "Change your email, avatar, password, profile"
+msgstr "Ŝanĝu la retpoŝtadreson, vizaĝbildon, pasvorton aŭ la profilon"
+
#. TRANS: Tooltip for main menu option "Services"
#: lib/action.php:465
msgctxt "TOOLTIP"
#, php-format
msgctxt "TOOLTIP"
msgid "Invite friends and colleagues to join you on %s"
-msgstr "Inviti amikojn kaj kolegojn aliĝi vin sur %s"
+msgstr "Inviti amikojn kaj kolegojn al %s kun vi"
#. TRANS: Main menu option when logged in and invitations are allowed for inviting new users
#: lib/action.php:481
msgid "Invite"
msgstr "Inviti"
+#. TRANS: Tooltip for main menu option "Logout"
+#: lib/action.php:487
+msgctxt "TOOLTIP"
+msgid "Logout from the site"
+msgstr "Elsaluti el la retejo"
+
#. TRANS: Main menu option when logged in to log out the current user
#: lib/action.php:490
msgctxt "MENU"
msgid "Register"
msgstr "Registriĝi"
+#. TRANS: Tooltip for main menu option "Login"
+#: lib/action.php:501
+msgctxt "TOOLTIP"
+msgid "Login to the site"
+msgstr "Ensaluti al la retejo"
+
+#: lib/action.php:504
+msgctxt "MENU"
+msgid "Login"
+msgstr "Ensaluti"
+
#. TRANS: Tooltip for main menu option "Help"
#: lib/action.php:507
msgctxt "TOOLTIP"
#: lib/action.php:513
msgctxt "TOOLTIP"
msgid "Search for people or text"
-msgstr ""
+msgstr "Serĉi homon aŭ tekston"
+
+#: lib/action.php:516
+msgctxt "MENU"
+msgid "Search"
+msgstr "Serĉi"
#. TRANS: DT element for site notice. String is hidden in default CSS.
#. TRANS: Menu item for site administration
#. TRANS: DT element for local views block. String is hidden in default CSS.
#: lib/action.php:605
msgid "Local views"
-msgstr ""
+msgstr "Loka vido"
#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS.
#: lib/action.php:778
#. TRANS: Secondary navigation menu option leading to Terms of Service.
#: lib/action.php:795
msgid "TOS"
-msgstr ""
+msgstr "Serva Kondiĉo"
#. TRANS: Secondary navigation menu option leading to privacy policy.
#: lib/action.php:799
msgid "All %1$s content and data are available under the %2$s license."
msgstr ""
+#. TRANS: DT element for pagination (previous/next, etc.).
+#: lib/action.php:1243
+msgid "Pagination"
+msgstr "Paĝado"
+
#. TRANS: Pagination message to go to a page displaying information more in the
#. TRANS: present than the currently displayed information.
#: lib/action.php:1254
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgid "Default access for this application: read-only, or read-write"
msgstr ""
+#. TRANS: Submit button title.
+#: lib/applicationeditform.php:349
+msgid "Cancel"
+msgstr "Nuligi"
+
#. TRANS: Application access type
#: lib/applicationlist.php:135
msgid "read-write"
msgid "read-only"
msgstr ""
-#. TRANS: Used in application list. %1$s is a modified date, %2$s is access type (read-write or read-only)
-#: lib/applicationlist.php:143
-#, php-format
-msgid "Approved %1$s - \"%2$s\" access."
-msgstr ""
+#. TRANS: DT element label in attachment list.
+#: lib/attachmentlist.php:88
+msgid "Attachments"
+msgstr "Aldonaĵo"
+
+#. TRANS: DT element label in attachment list item.
+#: lib/attachmentlist.php:265
+msgid "Author"
+msgstr "Aŭtoro"
+
+#. TRANS: DT element label in attachment list item.
+#: lib/attachmentlist.php:279
+msgid "Provider"
+msgstr "Donanto"
#. TRANS: Title.
#: lib/attachmentnoticesection.php:68
msgid "Notices where this attachment appears"
-msgstr ""
+msgstr "Avizo, kie ĉi tiu aldonaĵo aperos"
+
+#. TRANS: Title.
+#: lib/attachmenttagcloudsection.php:49
+msgid "Tags for this attachment"
+msgstr "Etikedoj por ĉi tiu aldonaĵo"
+
+#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226
+msgid "Password changing failed"
+msgstr "La ŝanĝo de pasvorto maltrafis"
+
+#: lib/authenticationplugin.php:236
+msgid "Password changing is not allowed"
+msgstr "Ne estas permesita ŝanĝi la pasvorton"
#. TRANS: Title for the form to block a user.
#: lib/blockform.php:70
msgid "Block"
msgstr "Bloki"
+#: lib/channel.php:157 lib/channel.php:177
+msgid "Command results"
+msgstr "Komandaj rezultoj"
+
#: lib/channel.php:229 lib/mailhandler.php:142
msgid "Command complete"
-msgstr ""
+msgstr "Komando kompleta"
+
+#: lib/channel.php:240
+msgid "Command failed"
+msgstr "Komando maltrafis"
#. TRANS: Command exception text shown when a notice ID is requested that does not exist.
#: lib/command.php:84 lib/command.php:108
msgid "Notice with that id does not exist."
-msgstr ""
+msgstr "Avizo kun tiu identigaĵo ne ekzistas."
#. TRANS: Command exception text shown when a last user notice is requested and it does not exist.
#. TRANS: Error text shown when a last user notice is requested and it does not exist.
#: lib/command.php:101 lib/command.php:630
msgid "User has no last notice."
-msgstr ""
+msgstr "La uzanto ne havas lastan averton."
#. TRANS: Message given requesting a profile for a non-existing user.
#. TRANS: %s is the nickname of the user for which the profile could not be found.
#: lib/command.php:130
#, php-format
msgid "Could not find a user with nickname %s."
-msgstr ""
+msgstr "Ne povas trovi uzanton kun kromnomo %s."
#. TRANS: Message given getting a non-existing user.
#. TRANS: %s is the nickname of the user that could not be found.
#. TRANS: Error text shown when an unimplemented command is given.
#: lib/command.php:185
msgid "Sorry, this command is not yet implemented."
-msgstr ""
+msgstr "Pardonon, la komando ankoraŭ ne realiĝas."
#. TRANS: Command exception text shown when a user tries to nudge themselves.
#: lib/command.php:231
msgid "It does not make a lot of sense to nudge yourself!"
-msgstr ""
+msgstr "Iom sensencas puŝeti vin mem!"
#. TRANS: Message given having nudged another user.
#. TRANS: %s is the nickname of the user that was nudged.
#: lib/command.php:240
#, php-format
msgid "Nudge sent to %s."
-msgstr ""
+msgstr "Puŝeto sendiĝas al %s"
#. TRANS: User statistics text.
#. TRANS: %1$s is the number of other user the user is subscribed to.
"Notices: %3$s"
msgstr ""
+#. TRANS: Text shown when a notice has been marked as favourite successfully.
+#: lib/command.php:314
+msgid "Notice marked as fave."
+msgstr "Avizo ŝatiĝas."
+
#. TRANS: Message given having added a user to a group.
#. TRANS: %1$s is the nickname of the user, %2$s is the nickname of the group.
#: lib/command.php:360
#, php-format
msgid "%1$s joined group %2$s."
-msgstr ""
+msgstr "%1$s aniĝis al grupo %2$s."
#. TRANS: Message given having removed a user from a group.
#. TRANS: %1$s is the nickname of the user, %2$s is the nickname of the group.
#: lib/command.php:408
#, php-format
msgid "%1$s left group %2$s."
-msgstr ""
+msgstr "%1$s foriras de grupo %2$s."
+
+#. TRANS: Whois output. %s is the full name of the queried user.
+#: lib/command.php:434
+#, php-format
+msgid "Fullname: %s"
+msgstr "Plennomo: %s"
+
+#. TRANS: Whois output. %s is the location of the queried user.
+#. TRANS: Profile info line in new-subscriber notification e-mail
+#: lib/command.php:438 lib/mail.php:268
+#, php-format
+msgid "Location: %s"
+msgstr "Loko: %s"
+
+#. TRANS: Whois output. %s is the homepage of the queried user.
+#. TRANS: Profile info line in new-subscriber notification e-mail
+#: lib/command.php:442 lib/mail.php:271
+#, php-format
+msgid "Homepage: %s"
+msgstr "Hejmpaĝo: %s"
+
+#. TRANS: Whois output. %s is the bio information of the queried user.
+#: lib/command.php:446
+#, php-format
+msgid "About: %s"
+msgstr "Biografio: %s"
#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server).
#: lib/command.php:474
"%s is a remote profile; you can only send direct messages to users on the "
"same server."
msgstr ""
+"%s estas fora profilo; vi povas sendi rektan mesaĝon nur al uzanto je sama "
+"servilo."
#. TRANS: Message given if content is too long.
#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters.
#. TRANS: Error text shown sending a direct message fails with an unknown reason.
#: lib/command.php:517
msgid "Error sending direct message."
-msgstr ""
+msgstr "Eraris sendi rektan mesaĝon."
#. TRANS: Message given having repeated a notice from another user.
#. TRANS: %s is the name of the user for which the notice was repeated.
#: lib/command.php:554
#, php-format
msgid "Notice from %s repeated."
-msgstr ""
+msgstr "Avizo de %s ripetiĝas."
+
+#. TRANS: Error text shown when repeating a notice fails with an unknown reason.
+#: lib/command.php:557
+msgid "Error repeating notice."
+msgstr "Eraris ripeti avizon."
#. TRANS: Message given if content of a notice for a reply is too long.
#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters.
#, php-format
msgid "Notice too long - maximum is %1$d characters, you sent %2$d."
msgstr ""
+"Avizo tro longas - longlimo estas %1$d lietroj, kaj via mesaĝo longas je %2"
+"$d."
#. TRANS: Text shown having sent a reply to a notice successfully.
#. TRANS: %s is the nickname of the user of the notice the reply was sent to.
#: lib/command.php:603
#, php-format
msgid "Reply to %s sent."
-msgstr ""
+msgstr "Respondo al %s sendiĝas."
+
+#. TRANS: Error text shown when a reply to a notice fails with an unknown reason.
+#: lib/command.php:606
+msgid "Error saving notice."
+msgstr "Eraris sendi avizon."
#. TRANS: Error text shown when no username was provided when issuing a subscribe command.
#: lib/command.php:655
msgid "Specify the name of the user to subscribe to."
-msgstr ""
+msgstr "Specifu nomon de la abonota uzanto."
#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command.
#: lib/command.php:664
#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented.
#: lib/command.php:724 lib/command.php:750
msgid "Command not yet implemented."
-msgstr ""
+msgstr "Komando ankoraŭ ne realigita."
+
+#. TRANS: Text shown when issuing the command "off" successfully.
+#: lib/command.php:728
+msgid "Notification off."
+msgstr "Sciigo for."
#. TRANS: Error text shown when the command "off" fails for an unknown reason.
#: lib/command.php:731
msgid "Can't turn off notification."
-msgstr ""
+msgstr "Malsukcesis malŝalti sciigon."
+
+#. TRANS: Text shown when issuing the command "on" successfully.
+#: lib/command.php:754
+msgid "Notification on."
+msgstr "Sciigo en."
+
+#. TRANS: Error text shown when the command "on" fails for an unknown reason.
+#: lib/command.php:757
+msgid "Can't turn on notification."
+msgstr "Malsukcesis ŝalti sciigon."
#. TRANS: Error text shown when issuing the login command while login is disabled.
#: lib/command.php:771
#: lib/command.php:813
#, php-format
msgid "Unsubscribed %s."
-msgstr ""
+msgstr "%s malaboniĝas."
+
+#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions.
+#: lib/command.php:831
+msgid "You are not subscribed to anyone."
+msgstr "Vi ne abonas iun ajn."
+
+#. TRANS: Text shown after requesting other users a user is subscribed to.
+#. TRANS: This message supports plural forms. This message is followed by a
+#. TRANS: hard coded space and a comma separated list of subscribed users.
+#: lib/command.php:836
+msgid "You are subscribed to this person:"
+msgid_plural "You are subscribed to these people:"
+msgstr[0] "Vi abonas jenan homon:"
+msgstr[1] "Vi abonas jenajn homojn:"
#. TRANS: Text shown after requesting other users that are subscribed to a user
#. TRANS: (followers) without having any subscribers.
#: lib/command.php:858
msgid "No one is subscribed to you."
-msgstr ""
+msgstr "Neniu abonas vin."
#. TRANS: Text shown after requesting other users that are subscribed to a user (followers).
#. TRANS: This message supports plural forms. This message is followed by a
#: lib/command.php:863
msgid "This person is subscribed to you:"
msgid_plural "These people are subscribed to you:"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "La homo abonas vin:"
+msgstr[1] "La homoj abonas vin:"
-#. TRANS: Help text for commands.
+#. TRANS: Text shown after requesting groups a user is subscribed to without having
+#. TRANS: any group subscriptions.
+#: lib/command.php:885
+msgid "You are not a member of any groups."
+msgstr "Vi ne estas grupano de iu ajn grupo."
+
+#. TRANS: Text shown after requesting groups a user is subscribed to.
+#. TRANS: This message supports plural forms. This message is followed by a
+#. TRANS: hard coded space and a comma separated list of subscribed groups.
+#: lib/command.php:890
+msgid "You are a member of this group:"
+msgid_plural "You are a member of these groups:"
+msgstr[0] "Vi estas grupano de jena grupo:"
+msgstr[1] "Vi estas grupano de jenaj grupoj:"
+
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"tracks - not yet implemented.\n"
"tracking - not yet implemented.\n"
msgstr ""
+"Komandoj:\n"
+"on - ŝalti sciigon\n"
+"off - malŝalti sciigon\n"
+"help - montri ĉi tiun helpon\n"
+"follow <nickname> - aboni uzanton\n"
+"groups - listi grupon, kiujn vi aniĝis\n"
+"subscriptions - listi viajn abonatojn\n"
+"subscribers - listi viajn abonantojn\n"
+"leave <nickname> - malabnoi uzanton\n"
+"d <nickname> <text> - sendi rektan mesaĝon al uzanto\n"
+"get <nickname> - legi la lastan avizon de uzanto\n"
+"whois <nickname> - legi profilan informon pri uzanto\n"
+"lose <nickname> - ĉesigi la uzanton de sekvi vin\n"
+"fav <nickname> - ŝati la lastan avizon de uzanto\n"
+"fav #<notice_id> - ŝati la avizon kun la ID\n"
+"repeat #<notice_id> - ripeti la avizon kun la ID\n"
+"repeat <nickname> - ripeti la lastan avizon de uzanto\n"
+"reply #<notice_id> - respondi la avizon kun la ID\n"
+"reply <nickname> - respondi la lastan avizon de uzanto\n"
+"join <group> - aniĝi al grupo\n"
+"login - havi ligilon por ensaluti al reta interfaco\n"
+"drop <group> - foriri de gruop\n"
+"stats - legi vian staton\n"
+"stop - same kiel 'off'\n"
+"quit - same kiel 'off'\n"
+"sub <nickname> - same kiel 'follow'\n"
+"unsub <nickname> - same kiel 'leave'\n"
+"last <nickname> - same kiel 'get'\n"
+"on <nickname> - ankoraŭ ne realigita.\n"
+"off <nickname> - ankoraŭ ne realigita.\n"
+"nudge <nickname> - puŝeti la uzanton, ke li ĝisdatigu!\n"
+"invite <phone number> - ankoraŭ ne realigita.\n"
+"track <word> - ankoraŭ ne realigita.\n"
+"untrack <word> - ankoraŭ ne realigita.\n"
+"track off - ankoraŭ ne realigita.\n"
+"untrack all - ankoraŭ ne realigita.\n"
+"tracks - ankoraŭ ne realigita.\n"
+"tracking -ankoraŭ ne realigita.\n"
#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
#: lib/connectsettingsaction.php:110
msgid "IM"
-msgstr ""
+msgstr "Tujmesaĝilo"
#: lib/connectsettingsaction.php:111
msgid "Updates by instant messenger (IM)"
-msgstr ""
+msgstr "Ĝisdatiĝo per tujmesaĝilo."
#: lib/connectsettingsaction.php:116
msgid "Updates by SMS"
-msgstr ""
+msgstr "Ĝisdatiĝo per SMM"
+
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr "Konektoj"
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr "Konektitaj aplikaĵoj rajtigitaj"
#: lib/dberroraction.php:60
msgid "Database error"
+msgstr "Datumbaza eraro"
+
+#: lib/designsettings.php:105
+msgid "Upload file"
+msgstr "Alŝuti dosieron"
+
+#: lib/designsettings.php:109
+msgid ""
+"You can upload your personal background image. The maximum file size is 2MB."
msgstr ""
+"Vi povas alŝuti vian propran fonbildon. La dosiera grandlimo estas 2MB."
+
+#: lib/designsettings.php:418
+msgid "Design defaults restored."
+msgstr "Desegnaj defaŭltoj konserviĝas."
+
+#: lib/disfavorform.php:114 lib/disfavorform.php:140
+msgid "Disfavor this notice"
+msgstr "Neŝati la avizon"
+
+#: lib/favorform.php:114 lib/favorform.php:140
+msgid "Favor this notice"
+msgstr "Ŝati la avizon"
#: lib/favorform.php:140
msgid "Favor"
-msgstr ""
+msgstr "Ŝati"
#: lib/feed.php:85
msgid "RSS 1.0"
-msgstr ""
+msgstr "RSS 1.0"
#: lib/feed.php:87
msgid "RSS 2.0"
-msgstr ""
+msgstr "RSS 2.0"
#: lib/feed.php:89
msgid "Atom"
-msgstr ""
+msgstr "Atom"
#: lib/feed.php:91
msgid "FOAF"
-msgstr ""
+msgstr "FOAF"
#: lib/feedlist.php:64
msgid "Export data"
-msgstr ""
+msgstr "Elporti datumon"
#: lib/galleryaction.php:121
msgid "Filter tags"
-msgstr ""
+msgstr "Filtrilo-etikedoj"
+
+#: lib/galleryaction.php:131
+msgid "All"
+msgstr "Ĉiuj"
#: lib/galleryaction.php:139
msgid "Select tag to filter"
-msgstr ""
+msgstr "Eletu etikedon por filtrado"
+
+#: lib/galleryaction.php:140
+msgid "Tag"
+msgstr "Etikedo"
#: lib/galleryaction.php:141
msgid "Choose a tag to narrow list"
msgid "Grant this user the \"%s\" role"
msgstr ""
+#: lib/groupeditform.php:163
+msgid "URL of the homepage or blog of the group or topic"
+msgstr "URL de la hejmpaĝo aŭ blogo de la grupo aŭ temo"
+
#: lib/groupeditform.php:168
msgid "Describe the group or topic"
+msgstr "Priskribo de grupo aŭ temo"
+
+#: lib/groupeditform.php:170
+#, php-format
+msgid "Describe the group or topic in %d characters"
+msgstr "Priskribo de grupo aŭ temo, apenaŭ je %d literoj"
+
+#: lib/groupeditform.php:179
+msgid ""
+"Location for the group, if any, like \"City, State (or Region), Country\""
msgstr ""
+"Loko de la grupo, se iu ajn, ekzemple \"Urbo, Stato (aŭ Regiono), Lando\""
#: lib/groupeditform.php:187
#, php-format
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+"Kromaj alnomoj por la grupo, apartigita per komo aŭ spaco, apenaŭ %d literoj"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Grupo"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Grupo %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Grupanoj"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Grupanoj de %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Blokito"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "Blokito de %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Redakti agordon de grupo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Emblemo"
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Add or edit %s logo"
-msgstr ""
+msgstr "Aldoni aŭ redakti emblemon de %s"
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#, php-format
msgctxt "TOOLTIP"
msgid "Add or edit %s design"
-msgstr ""
+msgstr "Aldoni aŭ redakti desegnon de %s"
+
+#: lib/groupsbymemberssection.php:71
+msgid "Groups with most members"
+msgstr "Grupoj kun plej multe da membroj"
#: lib/groupsbypostssection.php:71
msgid "Groups with most posts"
-msgstr ""
+msgstr "Grupoj kun plej multe da avizoj"
#: lib/grouptagcloudsection.php:56
#, php-format
msgid "Tags in %s group's notices"
-msgstr ""
+msgstr "Etikedoj en avizoj de gruop %s"
#. TRANS: Client exception 406
#: lib/htmloutputter.php:104
msgid "This page is not available in a media type you accept"
-msgstr ""
+msgstr "La paĝo estas ne havebla je la komunikil-tipo, kiun vi akceptas"
#. TRANS: Client exception thrown when a file upload operation has failed with an unknown reason.
#: lib/imagefile.php:101 lib/mediafile.php:179
#: lib/imagefile.php:163 lib/imagefile.php:224
msgid "Unknown file type"
-msgstr ""
+msgstr "Nekonata dosiertipo"
#: lib/imagefile.php:244
msgid "MB"
-msgstr ""
+msgstr "MB"
#: lib/imagefile.php:246
msgid "kB"
-msgstr ""
+msgstr "kB"
#: lib/jabber.php:387
#, php-format
msgid "[%s]"
-msgstr ""
+msgstr "[%s]"
#: lib/jabber.php:567
#, php-format
msgid "Unknown inbox source %d."
-msgstr ""
+msgstr "Nekonata alvenkesta fonto %d"
+
+#: lib/joinform.php:114
+msgid "Join"
+msgstr "Aniĝi"
#: lib/leaveform.php:114
msgid "Leave"
msgstr "Forlasi"
+#: lib/logingroupnav.php:80
+msgid "Login with a username and password"
+msgstr "Ensaluti per via uzantnomo kaj pasvorto."
+
#: lib/logingroupnav.php:86
msgid "Sign up for a new account"
-msgstr ""
+msgstr "Krei novan konton"
#. TRANS: Subject for address confirmation email
#: lib/mail.php:174
msgid "Email address confirmation"
-msgstr ""
+msgstr "Retpoŝtadresa konfirmo"
#. TRANS: Body for address confirmation email.
#: lib/mail.php:177
"%s\n"
msgstr ""
+#. TRANS: Subject of new-subscriber notification e-mail
+#: lib/mail.php:243
+#, php-format
+msgid "%1$s is now listening to your notices on %2$s."
+msgstr "%1$s nun rigardas viajn avizojn ĉe %2$s."
+
#: lib/mail.php:248
#, php-format
msgid ""
"If you believe this account is being used abusively, you can block them from "
"your subscribers list and report as spam to site administrators at %s"
msgstr ""
+"Se vi kredas, ke ĉi tiun konton iu misuzas, vi rajtas bloki ĝin de via "
+"abonanto-listo kaj raporti ĝin kiel rubmesaĝanto al administrantoj ĉe %s"
#. TRANS: Main body of new-subscriber notification e-mail
#: lib/mail.php:254
"Change your email address or notification options at %8$s\n"
msgstr ""
+#. TRANS: Profile info line in new-subscriber notification e-mail
+#: lib/mail.php:274
+#, php-format
+msgid "Bio: %s"
+msgstr "Biografio: %s"
+
+#. TRANS: Subject of notification mail for new posting email address
+#: lib/mail.php:304
+#, php-format
+msgid "New email address for posting to %s"
+msgstr "Nova retpoŝta adreso por afiŝi ĉe %s"
+
#. TRANS: Body of notification mail for new posting email address
#: lib/mail.php:308
#, php-format
"%4$s"
msgstr ""
+#. TRANS: Subject line for SMS-by-email notification messages
+#: lib/mail.php:433
+#, php-format
+msgid "%s status"
+msgstr "%s stato"
+
+#. TRANS: Subject line for SMS-by-email address confirmation message
+#: lib/mail.php:460
+msgid "SMS confirmation"
+msgstr "SMS-a konfirmo"
+
#. TRANS: Main body heading for SMS-by-email address confirmation message
#: lib/mail.php:463
#, php-format
msgid "%s: confirm you own this phone number with this code:"
-msgstr ""
+msgstr "%s: konfirmi ke vi havas la telefonnumeron per tiu ĉi kodo:"
#. TRANS: Subject for 'nudge' notification email
#: lib/mail.php:484
#, php-format
msgid "You've been nudged by %s"
-msgstr ""
+msgstr "Vin puŝetis %s"
#. TRANS: Body for 'nudge' notification email
#: lib/mail.php:489
"%4$s\n"
msgstr ""
+#. TRANS: Subject for direct-message notification email
+#: lib/mail.php:536
+#, php-format
+msgid "New private message from %s"
+msgstr "Nova privata mesaĝo de %s"
+
#. TRANS: Body for direct-message notification email
#: lib/mail.php:541
#, php-format
"%5$s\n"
msgstr ""
+#. TRANS: Subject for favorite notification email
+#: lib/mail.php:589
+#, php-format
+msgid "%s (@%s) added your notice as a favorite"
+msgstr "%s (@%s) ŝatis vian avizon"
+
#. TRANS: Body for favorite notification email
#: lib/mail.php:592
#, php-format
"\n"
"\t%s"
msgstr ""
+"La tutan interparolon oni povas legi jene:\n"
+"\n"
+"%s"
#: lib/mail.php:657
#, php-format
#: lib/mailbox.php:89
msgid "Only the user can read their own mailboxes."
-msgstr ""
+msgstr "Nur uzanto povas legi sian propran paŝton."
#: lib/mailbox.php:139
msgid ""
"You have no private messages. You can send private message to engage other "
"users in conversation. People can send you messages for your eyes only."
msgstr ""
+"Vi ne ricevis privatan mesaĝon. Vi povas sendi privatan mesaĝon al iu kaj "
+"interparoli kun ili. Homo sendas al vi mesaĝon al vi sole."
#: lib/mailbox.php:228 lib/noticelist.php:506
msgid "from"
-msgstr ""
+msgstr "de"
#. TRANS: Client exception thrown when a database error was thrown during a file upload operation.
#: lib/mediafile.php:99 lib/mediafile.php:125
#: lib/noticeform.php:174
#, php-format
msgid "What's up, %s?"
-msgstr ""
+msgstr "Kio novas, %s?"
#: lib/noticeform.php:193
msgid "Attach"
-msgstr ""
+msgstr "Aldoni"
#: lib/noticeform.php:197
msgid "Attach a file"
-msgstr ""
+msgstr "Aldoni dosieron"
#: lib/noticeform.php:213
msgid "Share my location"
-msgstr ""
+msgstr "Sciigi mian lokon"
+
+#: lib/noticeform.php:216
+msgid "Do not share my location"
+msgstr "Ne sciigi mian lokon"
#: lib/noticeform.php:217
msgid ""
"Sorry, retrieving your geo location is taking longer than expected, please "
"try again later"
msgstr ""
+"Pardonon, legi vian lokon estas pli malrapide, ol ni pensis. Bonvolu reprovi "
+"poste."
+
+#. TRANS: Used in coordinates as abbreviation of north
+#: lib/noticelist.php:436
+msgid "N"
+msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
#: lib/noticelist.php:438
msgid "S"
-msgstr ""
+msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
#: lib/noticelist.php:440
msgid "E"
-msgstr ""
+msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
#: lib/noticelist.php:442
msgid "W"
-msgstr ""
+msgstr "W"
#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-msgstr ""
+msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
#: lib/noticelist.php:453
msgid "at"
#: lib/noticelist.php:502
msgid "web"
-msgstr ""
+msgstr "reto"
+
+#: lib/noticelist.php:568
+msgid "in context"
+msgstr "kuntekste"
+
+#: lib/noticelist.php:630
+msgid "Reply to this notice"
+msgstr "Respondi ĉi tiun avizon"
#: lib/noticelist.php:631
msgid "Reply"
-msgstr ""
+msgstr "Respondi"
+
+#: lib/noticelist.php:675
+msgid "Notice repeated"
+msgstr "Avizo ripetiĝas"
+
+#: lib/nudgeform.php:116
+msgid "Nudge this user"
+msgstr "Puŝeti la uzanton"
+
+#: lib/nudgeform.php:128
+msgid "Nudge"
+msgstr "Puŝeti"
#: lib/nudgeform.php:128
msgid "Send a nudge to this user"
-msgstr ""
+msgstr "Sendi puŝeton al la uzanto"
+
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Eraris enmeti novan profilon"
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Eraris enmeti novan vizaĝbildon."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Eraris enmeti foran profilon."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Refoja avizo."
+
+#: lib/oauthstore.php:491
+msgid "Couldn't insert new subscription."
+msgstr "Eraris enmeti novan abonon."
+
+#: lib/personalgroupnav.php:99
+msgid "Personal"
+msgstr "Persona"
#: lib/personalgroupnav.php:104
msgid "Replies"
-msgstr ""
+msgstr "Respondoj"
+
+#: lib/personalgroupnav.php:114
+msgid "Favorites"
+msgstr "Ŝatolisto"
#: lib/personalgroupnav.php:125
msgid "Inbox"
-msgstr ""
+msgstr "Alvenkesto"
+
+#: lib/personalgroupnav.php:126
+msgid "Your incoming messages"
+msgstr "Viaj alvenaj mesaĝoj"
#: lib/personaltagcloudsection.php:56
#, php-format
#. TRANS: Fieldset legend for the search form.
#: lib/searchaction.php:121
msgid "Search site"
-msgstr ""
+msgstr "Serĉi ĉe retejo"
#. TRANS: Used as a field label for the field where one or more keywords
#. TRANS: for searching can be entered.
#: lib/searchaction.php:129
msgid "Keyword(s)"
-msgstr ""
+msgstr "Serĉvorto(j)"
+
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Serĉi"
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
-msgstr ""
+msgstr "Serĉa gvido"
+
+#: lib/searchgroupnav.php:80
+msgid "People"
+msgstr "Homon"
#: lib/searchgroupnav.php:81
msgid "Find people on this site"
-msgstr ""
+msgstr "Serĉi homon ĉe la retejo"
#: lib/searchgroupnav.php:83
msgid "Find content of notices"
-msgstr ""
+msgstr "Serĉi enhavon ĉe la retejo"
+
+#: lib/searchgroupnav.php:85
+msgid "Find groups on this site"
+msgstr "Serĉi grupon ĉe la retejo"
#: lib/section.php:89
msgid "Untitled section"
msgid "Silence"
msgstr "Silento"
+#: lib/silenceform.php:78
+msgid "Silence this user"
+msgstr "Silentigi la uzanton"
+
#: lib/subgroupnav.php:83
#, php-format
msgid "People %s subscribes to"
-msgstr ""
+msgstr "Abonatoj de %s"
#: lib/subgroupnav.php:91
#, php-format
msgid "People subscribed to %s"
-msgstr ""
+msgstr "Abonantoj de %s"
+
+#: lib/subgroupnav.php:99
+#, php-format
+msgid "Groups %s is a member of"
+msgstr "Grupoj de %s"
+
+#: lib/subgroupnav.php:105
+msgid "Invite"
+msgstr "Inviti"
+
+#: lib/subgroupnav.php:106
+#, php-format
+msgid "Invite friends and colleagues to join you on %s"
+msgstr "Inviti amikojn kaj kolegojn al %s kun vi"
#: lib/subscriberspeopleselftagcloudsection.php:48
#: lib/subscriptionspeopleselftagcloudsection.php:48
#: lib/topposterssection.php:74
msgid "Top posters"
-msgstr ""
+msgstr "Pintaj afiŝantoj"
#: lib/unsandboxform.php:69
msgid "Unsandbox"
msgstr ""
+#: lib/unsilenceform.php:67
+msgid "Unsilence"
+msgstr "Nesilentigi"
+
+#: lib/unsilenceform.php:78
+msgid "Unsilence this user"
+msgstr "Nesilentigi la uzanton"
+
#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
msgid "Unsubscribe from this user"
msgstr ""
msgid "Unsubscribe"
msgstr "Malaboni"
+#: lib/userprofile.php:117
+msgid "Edit Avatar"
+msgstr "Redakti vizaĝbildon"
+
#: lib/userprofile.php:234 lib/userprofile.php:248
msgid "User actions"
msgstr "Nekonata ago"
msgstr "antaŭ ĉirkaŭ unu minuto"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "antaŭ ĉirkaŭ unu horo"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "antaŭ ĉirkaŭ unu tago"
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
#: lib/webcolor.php:123
#, php-format
msgid "%s is not a valid color! Use 3 or 6 hex chars."
-# Translation of StatusNet to Spanish (Español)
+# Translation of StatusNet - Core to Spanish (Español)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:52+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:40+0000\n"
"Language-Team: Spanish <http://translatewiki.net/wiki/Portal:es>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: es\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Admin"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Convertir al usuario en administrador del grupo"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Eres miembro de este grupo:"
msgstr[1] "Eres miembro de estos grupos:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"tracking - not yet implemented.\n"
msgstr ""
"comandos:\n"
-"activar - activar notificaciones\n"
-"desactivar - desactivar notificaciones\n"
-"ayuda - mostrar esta ayuda\n"
-"seguir <usuario> - suscribirse al usuario\n"
-"grupos - listar los grupos que sigues\n"
-"suscripciones - listar las personas que sigues\n"
-"suscriptores - listar los grupos que te siguen\n"
-"abandonar <usuario> - cancelar la suscripción al usuario\n"
+"on - activar notificaciones\n"
+"off - desactivar notificaciones\n"
+"help - mostrar esta ayuda\n"
+"follow <usuario> - suscribirse al usuario\n"
+"groups - listar los grupos que sigues\n"
+"subscriptions - listar las personas que sigues\n"
+"subscribers - listar los grupos que te siguen\n"
+"leave <usuario> - cancelar la suscripción al usuario\n"
"d <usuario> <text> - dirigir mensaje al usuario\n"
-"obtener <usuario> - obtener último aviso del usuario\n"
-"quienes <usuario> - obtener información del perfil del usuario\n"
-"bloquear <usuario> - obligar al usuario a que deje de seguirte\n"
+"get <usuario> - obtener último aviso del usuario\n"
+"whois <usuario> - obtener información del perfil del usuario\n"
+"lose <usuario> - obligar al usuario a que deje de seguirte\n"
"fav <usuario> - añadir el último aviso del usario a tus favoritos\n"
"fav #<id_aviso> - añadir el aviso con el ID dado a tus favoritos\n"
-"repetir #<id_aviso> - repetir el aviso con el ID dado\n"
-"repetir <usuario> - repetir el último aviso del usuario\n"
-"responder #<id_aviso> - responder al aviso del ID dado\n"
-"responder <usuario> - responder al último aviso del usuario\n"
-"unirse <grupo> - unirse a un grupo\n"
-"entrar - obtener un vínculo para iniciar sesión en la interfaz Web\n"
-"abandonar <grupo> - abandonar el grupo\n"
-"estadísticas - obtener tus estadísticas\n"
-"detener - igual que 'desactivar'\n"
-"parar - igual que 'desactivar'\n"
-"sus <usuario> - igual que 'seguir'\n"
-"desus <usuario> - igual que 'abandonar'\n"
-"último <usuario> - igual que 'obtener'\n"
-"activado <usuario> - aún sin implementar.\n"
-"desactivado <usuario> - aún sin implementar.\n"
-"toque <usuario> - recordarle a un ausuario que actualice.\n"
-"invitar <phone number> - aún sin implementar.\n"
-"rastrear <word> - aún sin implementar.\n"
-"no rastrear <word> - aún sin implementar.\n"
-"dejar de rastrear - aún sin implementar.\n"
-"dejar de rastrear todos - aún sin implementar.\n"
-"rastrear - aún sin implementar.\n"
-"rastreando - aún sin implementar.\n"
+"repeat #<id_aviso> - repetir el aviso con el ID dado\n"
+"repeat <usuario> - repetir el último aviso del usuario\n"
+"reply #<id_aviso> - responder al aviso del ID dado\n"
+"reply <usuario> - responder al último aviso del usuario\n"
+"join <grupo> - unirse a un grupo\n"
+"login - obtener un vínculo para iniciar sesión en la interfaz Web\n"
+"drop <grupo> - abandonar el grupo\n"
+"stats - obtener tus estadísticas\n"
+"stop - igual que 'desactivar'\n"
+"quit - igual que 'desactivar'\n"
+"sub <usuario> - igual que 'seguir'\n"
+"unsub <usuario> - igual que 'abandonar'\n"
+"last <usuario> - igual que 'obtener'\n"
+"on <usuario> - aún sin implementar.\n"
+"off <usuario> - aún sin implementar.\n"
+"nudge <usuario> - recordarle a un ausuario que actualice.\n"
+"invite <phone number> - aún sin implementar.\n"
+"track <word> - aún sin implementar.\n"
+"untrack <word> - aún sin implementar.\n"
+"track off - aún sin implementar.\n"
+"untrack all - aún sin implementar.\n"
+"tracks - aún sin implementar.\n"
+"tracking - aún sin implementar.\n"
#: lib/common.php:135
msgid "No configuration file found. "
msgstr ""
"Nombres adicionales para el grupo, separados por comas o espacios. Máximo: %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupos con más miembros"
msgid "Could not determine file's MIME type."
msgstr "No se pudo determinar tipo MIME del archivo"
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Enviar un aviso directo"
msgid "Send a nudge to this user"
msgstr "Dar un toque a este usuario"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "No se pudo insertar una nueva suscripción."
msgid "Keyword(s)"
msgstr "Palabra(s) clave"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "hace un minuto"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "hace una hora"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "hace un día"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "hace un mes"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "hace un año"
-# Translation of StatusNet to Persian (فارسی)
+# Translation of StatusNet - Core to Persian (فارسی)
# Expored from translatewiki.net
#
# Author: ArianHT
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:54+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:45+0000\n"
"Last-Translator: Ahmad Sufi Mahmudi\n"
"Language-Team: Persian <http://translatewiki.net/wiki/Portal:fa>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Language-Code: fa\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "مدیر"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "کاربر یک مدیر گروه شود"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid_plural "You are a member of these groups:"
msgstr[0] "شما یک عضو این گروه هستید:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr "نامهای مستعار اضافی برای گروه، با کاما- یا فاصله- جدا شود، بیشینه %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "گروه های با اعضاء بیشتر"
msgid "Could not determine file's MIME type."
msgstr "نمیتوان فرمت پرونده را تعیین کرد."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "فرستادن یک پیام مستقیم"
msgid "Send a nudge to this user"
msgstr "یک یادآوری به این کاربر فرستاده شود"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "نمیتوان اشتراک تازهای افزود."
msgid "Keyword(s)"
msgstr "کلمه(های) کلیدی"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "حدود یک دقیقه پیش"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "حدود یک ساعت پیش"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "حدود یک روز پیش"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "حدود یک ماه پیش"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "حدود یک سال پیش"
-# Translation of StatusNet to Finnish (Suomi)
+# Translation of StatusNet - Core to Finnish (Suomi)
# Expored from translatewiki.net
#
# Author: Crt
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:53+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:42+0000\n"
"Language-Team: Finnish <http://translatewiki.net/wiki/Portal:fi>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fi\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Checkbox instructions for admin setting "Private"
#: actions/accessadminpanel.php:165
msgid "Admin"
msgstr "Ylläpito"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Tee tästä käyttäjästä ylläpitäjä"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Sinä et kuulu tähän ryhmään."
msgstr[1] "Sinä et kuulu tähän ryhmään."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Ryhmät, joissa eniten jäseniä"
msgid "Send a nudge to this user"
msgstr "Lähetä tönäisy tälle käyttäjälle"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Ei voitu lisätä uutta tilausta."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "Henkilö"
msgstr "noin minuutti sitten"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "noin tunti sitten"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "noin päivä sitten"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "noin kuukausi sitten"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "noin vuosi sitten"
-# Translation of StatusNet to French (Français)
+# Translation of StatusNet - Core to French (Français)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:55+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:50+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrer"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Faire de cet utilisateur un administrateur du groupe"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Vous êtes membre de ce groupe :"
msgstr[1] "Vous êtes membre de ces groupes :"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"Pseudos supplémentaires pour le groupe, séparés par des virgules ou des "
"espaces, %d au maximum"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Groupes avec le plus de membres"
msgid "Could not determine file's MIME type."
msgstr "Impossible de déterminer le type MIME du fichier."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Envoyer un message direct"
msgid "Send a nudge to this user"
msgstr "Envoyer un clin d’œil à cet utilisateur"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Impossible d’insérer un nouvel abonnement."
msgid "Keyword(s)"
msgstr "Mot(s) clef(s)"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "il y a 1 minute"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "il y a 1 heure"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "il y a 1 jour"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "il y a 1 mois"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "il y a environ 1 an"
-# Translation of StatusNet to Irish (Gaeilge)
+# Translation of StatusNet - Core to Irish (Gaeilge)
# Expored from translatewiki.net
#
# Author: McDutchie
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:52+0000\n"
"Language-Team: Irish <http://translatewiki.net/wiki/Portal:ga>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ga\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=5; plural=(n == 1) ? 0 : ( (n == 2) ? 1 : ( (n < 7) ? "
"2 : ( (n < 11) ? 3 : 4 ) ) );\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page notice
#: actions/accessadminpanel.php:67
msgid "Admin"
msgstr ""
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr ""
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid "Group"
msgstr ""
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:120
msgid "Edit %s group properties"
msgstr ""
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Reply"
msgstr "Respostas"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Non se puido inserir a nova subscrición."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "Xente"
msgstr "fai un minuto"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "fai unha hora"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "fai un día"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "fai un mes"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "fai un ano"
-# Translation of StatusNet to Galician (Galego)
+# Translation of StatusNet - Core to Galician (Galego)
# Expored from translatewiki.net
#
# Author: Gallaecio
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:58+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:54+0000\n"
"Language-Team: Galician <http://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: gl\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrador"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Bloquear"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Converter ao usuario en administrador do grupo"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Converter en administrador"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Converter a este usuario en administrador"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Vostede pertence a este grupo:"
msgstr[1] "Vostede pertence a estes grupos:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"Alcumes adicionais para o grupo, separados por comas ou espazos, %d como "
"máximo"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Grupo"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Grupo %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Membros"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Membros do grupo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Bloqueado"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "Usuarios bloqueados en %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Modificar as propiedades do grupo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Logotipo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "Engadir ou modificar o logotipo de %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "Engadir ou modificar o deseño de %s"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupos con máis membros"
msgid "Could not determine file's MIME type."
msgstr "Non se puido determinar o tipo MIME do ficheiro."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "Neste servidor non se soporta o tipo de ficheiro \"%s\"."
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Enviar unha nota directa"
msgid "Send a nudge to this user"
msgstr "Facerlle un aceno a este usuario"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Houbo un erro ao inserir o novo perfil."
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Houbo un erro ao inserir o avatar."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Houbo un erro ao inserir o perfil remoto."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Nota duplicada."
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Non se puido inserir unha subscrición nova."
msgid "Keyword(s)"
msgstr "Termos de busca"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Procurar"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "hai como un minuto"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "hai como unha hora"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "hai como un día"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "hai como un mes"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "hai como un ano"
-# Translation of StatusNet to Hebrew (עברית)
+# Translation of StatusNet - Core to Hebrew (עברית)
# Expored from translatewiki.net
#
# --
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:53:59+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:55+0000\n"
"Language-Team: Hebrew <http://translatewiki.net/wiki/Portal:he>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: he\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page notice
#: actions/accessadminpanel.php:67
msgid "Admin"
msgstr ""
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr ""
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "לא שלחנו אלינו את הפרופיל הזה"
msgstr[1] "לא שלחנו אלינו את הפרופיל הזה"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:120
msgid "Edit %s group properties"
msgstr ""
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Send a nudge to this user"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "הכנסת מנוי חדש נכשלה."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "אנשים"
msgstr "לפני כדקה"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "לפני כשעה"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "לפני כיום"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "לפני כחודש"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "לפני כשנה"
-# Translation of StatusNet to Upper Sorbian (Hornjoserbsce)
+# Translation of StatusNet - Core to Upper Sorbian (Hornjoserbsce)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:00+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:57+0000\n"
"Language-Team: Upper Sorbian <http://translatewiki.net/wiki/Portal:hsb>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: hsb\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : (n%100==3 || "
"n%100==4) ? 2 : 3)\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrator"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Wužiwarja k administratorej skupiny činić"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[2] "Sy čłon tutych skupinow:"
msgstr[3] "Sy čłon tutych skupinow:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Could not determine file's MIME type."
msgstr "MIME-typ dataje njeda so zwěsćić."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Direktnu zdźělenku pósłać"
msgid "Nudge"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Nowy abonement njeda so zasunyć."
msgid "Keyword(s)"
msgstr "Klučowe hesła"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "před něhdźe jednej mjeńšinu"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "před něhdźe jednej hodźinu"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "před něhdźe jednym dnjom"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "před něhdźe jednym měsacom"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "před něhdźe jednym lětom"
-# Translation of StatusNet to Interlingua (Interlingua)
+# Translation of StatusNet - Core to Interlingua (Interlingua)
# Expored from translatewiki.net
#
# Author: McDutchie
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:01+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:07:58+0000\n"
"Language-Team: Interlingua <http://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrator"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Blocar"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Facer le usator administrator del gruppo"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Facer admin"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Facer iste usator un administrator"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "Nulle application pro iste clave de consumitor."
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "Mal indicio de accesso."
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
-msgstr ""
+msgstr "Nulle usator pro iste indicio."
+
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr "Non poteva authenticar te."
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
-msgstr ""
+msgid "Tried to revoke unknown token."
+msgstr "Tentava revocar un indicio non cognoscite."
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
+msgstr "Falleva de deler le indicio revocate."
#. TRANS: Form legend.
#: lib/applicationeditform.php:129
msgstr[0] "Tu es membro de iste gruppo:"
msgstr[1] "Tu es membro de iste gruppos:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
"Pseudonymos additional pro le gruppo, separate per commas o spatios, max %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Gruppo"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Gruppo %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Membros"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Membros del gruppo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Blocate"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "%s usatores blocate"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Modificar proprietates del gruppo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Logotypo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "Adder o modificar logotypo de %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "Adder o modificar apparentia de %s"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Gruppos con le plus membros"
msgid "Could not determine file's MIME type."
msgstr "Non poteva determinar le typo MIME del file."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+"\"%1$s\" non es un typo de file supportate in iste servitor. Tenta usar un "
+"altere formato de %2$s."
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "\"%s\" non es un typo de file supportate in iste servitor."
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Inviar un nota directe"
msgid "Send a nudge to this user"
msgstr "Inviar un pulsata a iste usator"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Error durante le insertion del nove profilo."
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Error durante le insertion del avatar."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Error durante le insertion del profilo remote."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Nota duplicate."
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Non poteva inserer nove subscription."
msgid "Keyword(s)"
msgstr "Parola(s)-clave"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Cercar"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "circa un minuta retro"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "un minuta"
+msgstr[1] "%d minutas"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "circa un hora retro"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "un hora"
+msgstr[1] "%d horas"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "circa un die retro"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "un die"
+msgstr[1] "%d dies"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "circa un mense retro"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "un mense"
+msgstr[1] "%d menses"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "circa un anno retro"
-# Translation of StatusNet to Icelandic (Íslenska)
+# Translation of StatusNet - Core to Icelandic (Íslenska)
# Expored from translatewiki.net
#
# Author: McDutchie
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:02+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:00+0000\n"
"Language-Team: Icelandic <http://translatewiki.net/wiki/Portal:is>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: is\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Checkbox instructions for admin setting "Private"
#: actions/accessadminpanel.php:165
msgid "Admin"
msgstr "Stjórnandi"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr ""
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
#. TRANS: Submit button title.
#: actions/groupmembers.php:537
msgctxt "TOOLTIP"
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Þú ert ekki meðlimur í þessum hópi."
msgstr[1] "Þú ert ekki meðlimur í þessum hópi."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Hóparnir með flestu meðlimina"
msgid "Send a nudge to this user"
msgstr "Ýta við þessum notanda"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Gat ekki sett inn nýja áskrift."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "Fólk"
msgstr "fyrir um einni mínútu síðan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "fyrir um einum klukkutíma síðan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "fyrir um einum degi síðan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "fyrir um einum mánuði síðan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "fyrir um einu ári síðan"
-# Translation of StatusNet to Italian (Italiano)
+# Translation of StatusNet - Core to Italian (Italiano)
# Expored from translatewiki.net
#
# Author: HalphaZ
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:04+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:01+0000\n"
"Language-Team: Italian <http://translatewiki.net/wiki/Portal:it>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: it\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Amministra"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Rende l'utente amministratore del gruppo"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Non fai parte di questo gruppo:"
msgstr[1] "Non fai parte di questi gruppi:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
"Soprannomi aggiuntivi per il gruppo, separati da virgole o spazi, max %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "I gruppi più numerosi"
msgid "Could not determine file's MIME type."
msgstr "Impossibile determinare il tipo MIME del file."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Invia un messaggio diretto"
msgid "Send a nudge to this user"
msgstr "Invia un richiamo a questo utente"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Impossibile inserire un nuovo abbonamento."
msgid "Keyword(s)"
msgstr "Parole"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "circa un minuto fa"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "circa un'ora fa"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "circa un giorno fa"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "circa un mese fa"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "circa un anno fa"
-# Translation of StatusNet to Japanese (日本語)
+# Translation of StatusNet - Core to Japanese (日本語)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:05+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:03+0000\n"
"Language-Team: Japanese <http://translatewiki.net/wiki/Portal:ja>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ja\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "管理者"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "ユーザをグループの管理者にする"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid_plural "You are a member of these groups:"
msgstr[0] "あなたはこのグループのメンバーではありません:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr "グループのエクストラニックネーム、カンマまたはスペース区切り、最大 %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "メンバー数が多いグループ"
msgid "Could not determine file's MIME type."
msgstr "ファイルのMIMEタイプを決定できません。"
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "直接つぶやきを送る"
msgid "Send a nudge to this user"
msgstr "このユーザへ合図を送る"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "サブスクリプションを追加できません"
msgid "Keyword(s)"
msgstr "キーワード"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "約 1 分前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "約 1 時間前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "約 1 日前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "約 1 ヵ月前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "約 1 年前"
-# Translation of StatusNet to Georgian (ქართული)
+# Translation of StatusNet - Core to Georgian (ქართული)
# Expored from translatewiki.net
#
# Author: Zaal
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:06+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:04+0000\n"
"Language-Team: Georgian <http://translatewiki.net/wiki/Portal:ka>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ka\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "ადმინი"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "მიანიჭე მომხმარებელს ჯგუფის ადმინობა"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid_plural "You are a member of these groups:"
msgstr[0] ""
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"ჯგუფის დამატებითი მეტსახელები. გამოყავით მძიმით ან სივრცით. მაქსიმუმ %d "
"სიმბოლო"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "ჯგუფები უმეტესი მომხმარებლებით"
msgid "Could not determine file's MIME type."
msgstr "ფაილის MIME ტიპი ვერ დადგინდა."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "გააგზავნე პირდაპირი შეტყობინება"
msgid "Send a nudge to this user"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "ახალი გამოწერის ჩასმა ვერ მოხერხდა."
msgid "Keyword(s)"
msgstr "საკვანძო სიტყვები"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "დაახლოებით 1 წუთის წინ"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "დაახლოებით 1 საათის წინ"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "დაახლოებით 1 დღის წინ"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "დაახლოებით 1 თვის წინ"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "დაახლოებით 1 წლის წინ"
-# Translation of StatusNet to Korean (한국어)
+# Translation of StatusNet - Core to Korean (한국어)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:08+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:05+0000\n"
"Language-Team: Korean <http://translatewiki.net/wiki/Portal:ko>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ko\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "관리자"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form guide.
msgid_plural "You are a member of these groups:"
msgstr[0] "당신은 해당 그룹의 멤버가 아닙니다."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "가장 많은 회원수를 가진 그룹들"
msgid "Send a nudge to this user"
msgstr "이 사용자에게 찔러 보기 메시지 보내기"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "예약 구독을 추가 할 수 없습니다."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "1분 전"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "1시간 전"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "하루 전"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "1달 전"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "1년 전"
-# Translation of StatusNet to Macedonian (Македонски)
+# Translation of StatusNet - Core to Macedonian (Македонски)
# Expored from translatewiki.net
#
# Author: Bjankuloski06
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:10+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:07+0000\n"
"Language-Team: Macedonian <http://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Администратор"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Блокирај"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Направи го корисникот администратор на групата"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Назначи за администратор"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Назначи го корисников за администратор"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#: actions/useradminpanel.php:155
msgid "Invalid welcome text. Max length is 255 characters."
-msgstr "Ð\9dÐ\95важечки текст за добредојде. Дозволени се највеќе 255 знаци."
+msgstr "Ð\9dеважечки текст за добредојде. Дозволени се највеќе 255 знаци."
#: actions/useradminpanel.php:165
#, php-format
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "Нема програм за тој потрошувачки клуч."
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "Лош пристапен жетон."
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
-msgstr ""
+msgstr "Нема корисник за тој жетон."
+
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr "Не можевме да ве потврдиме."
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
-msgstr ""
+msgid "Tried to revoke unknown token."
+msgstr "Се обидовте да отповикате непознат жетон."
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
+msgstr "Не успеав да го избришам отповиканиот жетон."
#. TRANS: Form legend.
#: lib/applicationeditform.php:129
msgstr[0] "Не ни го испративте тој профил."
msgstr[1] "Не ни го испративте тој профил."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"Дополнителни прекари за групата, одделени со запирка или празно место, "
"највеќе до %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Група"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Група „%s“"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Членови"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Членови на групата „%s“"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Блокирани"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "Блокирани корисници од групата „%s“"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Уредување на својства на групата „%s“"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Лого"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "Додавање или уредување на лого на групата „%s “"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "Додавање или уредување на изгледот на групата „%s“"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Групи со највеќе членови"
msgid "Could not determine file's MIME type."
msgstr "Не можев да го утврдам mime-типот на податотеката."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+"„%1$s“ не е поддржан податотечен тип на овој опслужувач. Обидете се со друг %"
+"2$s-формат."
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "„%s„ не е поддржан податотечен тип на овој опслужувач."
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Испрати директна забелешка"
msgid "Send a nudge to this user"
msgstr "Испрати подбуцнување на корисников"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Грешка при вметнувањето на новиот профил."
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Грешка при вметнувањето на аватарот."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Грешка при вметнувањето на далечинскиот профил."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Дуплирана забелешка."
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Не може да се внесе нова претплата."
msgid "Keyword(s)"
msgstr "Клучен збор"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Пребарај"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "пред една минута"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "пред околу една минута"
+msgstr[1] "пред околу %d минути"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "пред еден час"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "пред околу еден час"
+msgstr[1] "пред околу %d часа"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "пред еден ден"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "пред околу еден ден"
+msgstr[1] "пред околу %d дена"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "пред еден месец"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "пред околу еден месец"
+msgstr[1] "пред околу %d месеци"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "пред една година"
-# Translation of StatusNet to Norwegian (bokmål) (Norsk (bokmål))
+# Translation of StatusNet - Core to Norwegian (bokmål) (Norsk (bokmål))
# Expored from translatewiki.net
#
# Author: Laaknor
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:11+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:10+0000\n"
"Language-Team: Norwegian (bokmål) <http://translatewiki.net/wiki/Portal:no>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: no\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrator"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Gjør brukeren til en administrator for gruppen"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Du er allerede logget inn!"
msgstr[1] "Du er allerede logget inn!"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupper med flest medlemmer"
msgid "Could not determine file's MIME type."
msgstr "Kunne ikke avgjøre filens MIME-type."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Send en direktenotis"
msgid "Send a nudge to this user"
msgstr "Send et knuff til denne brukeren"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/personalgroupnav.php:99
msgid "Personal"
msgstr "Personlig"
msgid "Keyword(s)"
msgstr "Nøkkelord"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "omtrent ett minutt siden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "omtrent én time siden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "omtrent én dag siden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "omtrent én måned siden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "omtrent ett år siden"
-# Translation of StatusNet to Dutch (Nederlands)
+# Translation of StatusNet - Core to Dutch (Nederlands)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:13+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:13+0000\n"
"Language-Team: Dutch <http://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Beheerder"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Blokkeren"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Deze gebruiker groepsbeheerder maken"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Beheerder maken"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Deze gebruiker beheerder maken"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "Er is geen applicatie voor die gebruikerssleutel."
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "Ongeldig toegangstoken."
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
-msgstr ""
+msgstr "Er is geen gebruiker voor dat token."
+
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr "U kon niet geauthenticeerd worden."
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
-msgstr ""
+msgid "Tried to revoke unknown token."
+msgstr "Er is geprobeerd een onbekend token in te trekken."
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
+msgstr "Het was niet mogelijk een ingetrokken token te verwijderen."
#. TRANS: Form legend.
#: lib/applicationeditform.php:129
msgstr[0] "U bent lid van deze groep:"
msgstr[1] "U bent lid van deze groepen:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
"Extra namen voor de groep, gescheiden door komma's of spaties. Maximaal %d."
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Groep"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Groep %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Leden"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Leden van de group %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Geblokkeerd"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "Geblokkeerde gebruikers in %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Eigenschappen van de groep %s bewerken"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Logo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "Logo voor de groep %s toevoegen of bewerken"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "Vormgeving van de groep %s toevoegen of aanpassen"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Groepen met de meeste leden"
msgid "Could not determine file's MIME type."
msgstr "Het was niet mogelijk het MIME-type van het bestand te bepalen."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+"\"%1$s\" is geen ondersteund bestandstype op deze server. Probeer een andere "
+"bestandstype van de applicatie \"%2$s\" te gebruiken."
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "\"%s\" is geen ondersteund bestandstype op deze server."
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Directe mededeling verzenden"
msgid "Send a nudge to this user"
msgstr "Deze gebruiker porren"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Fout tijdens het invoegen van een nieuw profiel."
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Fout bij het invoegen van de avatar."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Fout bij het invoegen van het profiel van een andere server."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Dubbele mededeling."
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Kon nieuw abonnement niet toevoegen."
msgid "Keyword(s)"
msgstr "Term(en)"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Zoeken"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "ongeveer een minuut geleden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "ongeveer een minuut geleden"
+msgstr[1] "ongeveer %d minuten geleden"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "ongeveer een uur geleden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "ongeveer een uur geleden"
+msgstr[1] "ongeveer %d uur geleden"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "ongeveer een dag geleden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "ongeveer een dag geleden"
+msgstr[1] "ongeveer %d dagen geleden"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "ongeveer een maand geleden"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "ongeveer een maand geleden"
+msgstr[1] "ongeveer %d maanden geleden"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "ongeveer een jaar geleden"
-# Translation of StatusNet to Norwegian Nynorsk (Norsk (nynorsk))
+# Translation of StatusNet - Core to Norwegian Nynorsk (Norsk (nynorsk))
# Expored from translatewiki.net
#
# Author: Nghtwlkr
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:12+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:11+0000\n"
"Language-Team: Norwegian Nynorsk <http://translatewiki.net/wiki/Portal:nn>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nn\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Checkbox instructions for admin setting "Private"
#: actions/accessadminpanel.php:165
msgid "Admin"
msgstr "Administrator"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Du er ikkje medlem av den gruppa."
msgstr[1] "Du er ikkje medlem av den gruppa."
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupper med flest medlemmar"
msgid "Send a nudge to this user"
msgstr "Send eit dult til denne brukaren"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Kan ikkje leggja til ny tinging."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "Folk"
msgstr "omtrent eitt minutt sidan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "omtrent ein time sidan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "omtrent ein dag sidan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "omtrent ein månad sidan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "omtrent eitt år sidan"
-# Translation of StatusNet to Polish (Polski)
+# Translation of StatusNet - Core to Polish (Polski)
# Expored from translatewiki.net
#
# Author: McDutchie
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:15+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:14+0000\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <http://translatewiki.net/wiki/Portal:pl>\n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && "
"(n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pl\n"
-"X-Message-Group: #out-statusnet\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-Message-Group: #out-statusnet-core\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administrator"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Zablokuj"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Uczyń użytkownika administratorem grupy"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[1] "Jesteś członkiem tych grup:"
msgstr[2] "Jesteś członkiem tych grup:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"Dodatkowe pseudonimy grupy, oddzielone przecinkami lub spacjami, maksymalnie "
"%d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Grupa"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Grupa %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Zablokowany"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Logo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupy z największą liczbą członków"
msgid "Could not determine file's MIME type."
msgstr "Nie można określić typu MIME pliku."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Wyślij bezpośredni wpis"
msgid "Send a nudge to this user"
msgstr "Wyślij szturchnięcie do tego użytkownika"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Nie można wprowadzić nowej subskrypcji."
msgid "Keyword(s)"
msgstr "Słowa kluczowe"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Wyszukaj"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "około minutę temu"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "około godzinę temu"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "blisko dzień temu"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "około miesiąc temu"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "około rok temu"
-# Translation of StatusNet to Portuguese (Português)
+# Translation of StatusNet - Core to Portuguese (Português)
# Expored from translatewiki.net
#
# Author: Gallaecio
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:16+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:16+0000\n"
"Language-Team: Portuguese <http://translatewiki.net/wiki/Portal:pt>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Gestor"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Bloquear"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Tornar utilizador o gestor do grupo"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Tornar Gestor"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Tornar este utilizador um gestor"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "Nenhuma aplicação para essa chave de consumidor."
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "Código de acesso incorrecto."
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
-msgstr ""
+msgstr "Nenhum utilizador para esse código."
+
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr "Não foi possível autenticá-lo."
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
-msgstr ""
+msgid "Tried to revoke unknown token."
+msgstr "Tentou revogar um código desconhecido."
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
+msgstr "Falha ao eliminar código revogado."
#. TRANS: Form legend.
#: lib/applicationeditform.php:129
msgstr[0] "Está no grupo:"
msgstr[1] "Está nos grupos:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
"Nomes adicionais para o grupo, separados por vírgulas ou espaços, máx. %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Grupo"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Grupo %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Membros"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Membros do grupo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Bloqueado"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "Utilizadores bloqueados de %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Editar propriedades do grupo %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Logotipo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "Adicionar ou editar o logotipo de %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "Adicionar ou editar o design de %s"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupos com mais membros"
msgid "Could not determine file's MIME type."
msgstr "Não foi possível determinar o tipo MIME do ficheiro."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+"\"%1$s\" não é um tipo de ficheiro suportado neste servidor. Tente usar "
+"outro formato de %2$s."
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "\"%s\" não é um tipo de ficheiro suportado neste servidor."
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Enviar uma nota directa"
msgid "Send a nudge to this user"
msgstr "Enviar toque a este utilizador"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Erro ao inserir perfil novo."
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Erro ao inserir avatar."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Erro ao inserir perfil remoto."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Nota duplicada."
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Não foi possível inserir nova subscrição."
msgid "Keyword(s)"
msgstr "Categorias"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Pesquisar"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "há cerca de um minuto"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "um minuto"
+msgstr[1] "%d minutos"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "há cerca de uma hora"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "uma hora"
+msgstr[1] "%d horas"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "há cerca de um dia"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "um dia"
+msgstr[1] "%d dias"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "há cerca de um mês"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "um mês"
+msgstr[1] "%d meses"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "há cerca de um ano"
-# Translation of StatusNet to Brazilian Portuguese (Português do Brasil)
+# Translation of StatusNet - Core to Brazilian Portuguese (Português do Brasil)
# Expored from translatewiki.net
#
# Author: Aracnus
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:17+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:17+0000\n"
"Language-Team: Brazilian Portuguese <http://translatewiki.net/wiki/Portal:pt-"
"br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt-br\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Admin"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Bloquear"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Tornar o usuário um administrador do grupo"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Tornar administrador"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Torna este usuário um administrador"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "Não foi encontrado nenhuma aplicação para essa chave de consumidor."
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "Token de acesso incorreto."
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Você é membro deste grupo:"
msgstr[1] "Você é membro destes grupos:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
"Apelidos extras para o grupo, separado por vírgulas ou espaços, no máximo %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupos com mais membros"
msgid "Could not determine file's MIME type."
msgstr "Não foi possível determinar o tipo MIME do arquivo."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Enviar uma mensagem direta"
msgid "Send a nudge to this user"
msgstr "Chame a atenção deste usuário"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Não foi possível inserir a nova assinatura."
msgid "Keyword(s)"
msgstr "Palavra(s)-chave"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "cerca de 1 minuto atrás"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "cerca de 1 hora atrás"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "cerca de 1 dia atrás"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "cerca de 1 mês atrás"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "cerca de 1 ano atrás"
-# Translation of StatusNet to Russian (Русский)
+# Translation of StatusNet - Core to Russian (Русский)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:18+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:19+0000\n"
"Language-Team: Russian <http://translatewiki.net/wiki/Portal:ru>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Настройки"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Сделать пользователя администратором группы"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[1] "Вы являетесь участником следующих групп:"
msgstr[2] "Вы являетесь участником следующих групп:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"Дополнительные имена для группы, разделённые запятой или пробелом, максимум %"
"d имён"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Группы с наибольшим количеством участников"
msgid "Could not determine file's MIME type."
msgstr "Не удаётся определить mime-тип файла."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Послать прямую запись"
msgid "Send a nudge to this user"
msgstr "«Подтолкнуть» этого пользователя"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Не удаётся вставить новую подписку."
msgid "Keyword(s)"
msgstr "Ключевые слова"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "около минуты назад"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "около часа назад"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "около дня назад"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "около месяца назад"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "около года назад"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] ""
msgstr[1] ""
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1109
+#: lib/util.php:1110
#, php-format
msgid "about one minute ago"
msgid_plural "about %d minutes ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1115
+#: lib/util.php:1117
#, php-format
msgid "about one hour ago"
msgid_plural "about %d hours ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1120
msgid "about a day ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1121
+#: lib/util.php:1124
#, php-format
msgid "about one day ago"
msgid_plural "about %d days ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1124
+#: lib/util.php:1127
msgid "about a month ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1127
+#: lib/util.php:1131
#, php-format
msgid "about one month ago"
msgid_plural "about %d months ago"
msgstr[1] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1134
msgid "about a year ago"
msgstr ""
-# Translation of StatusNet to Swedish (Svenska)
+# Translation of StatusNet - Core to Swedish (Svenska)
# Expored from translatewiki.net
#
# Author: Jamminjohn
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:20+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:24+0000\n"
"Language-Team: Swedish <http://translatewiki.net/wiki/Portal:sv>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: sv\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Administratör"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Gör användare till en administratör för gruppen"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No application for that consumer key."
msgstr ""
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr ""
+
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "Du är en medlem i denna grupp:"
msgstr[1] "Du är en medlem i dessa grupper:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr "Extra smeknamn för gruppen, komma- eller mellanslagsseparerade, max &d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr ""
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Grupper med flest medlemmar"
msgid "Could not determine file's MIME type."
msgstr "Kunde inte fastställa filens MIME-typ."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr ""
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Skicka en direktnotis"
msgid "Send a nudge to this user"
msgstr "Skicka en knuff till denna användare"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Kunde inte infoga ny prenumeration."
msgid "Keyword(s)"
msgstr "Nyckelord"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "för nån minut sedan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "för en timma sedan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "för en dag sedan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "för en månad sedan"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "för ett år sedan"
-# Translation of StatusNet to Telugu (తెలుగు)
+# Translation of StatusNet - Core to Telugu (తెలుగు)
# Expored from translatewiki.net
#
# Author: Brion
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:21+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:25+0000\n"
"Language-Team: Telugu <http://translatewiki.net/wiki/Portal:te>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: te\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "నిర్వాహకులు"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "వాడుకరిని గుంపుకి ఒక నిర్వాహకునిగా చేయి"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr ""
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgstr[0] "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!"
msgstr[1] "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Notice repeated"
msgstr "నోటీసుని పునరావృతించారు"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "కొత్త చందాని చేర్చలేకపోయాం."
msgid "Keyword(s)"
msgstr "కీపదము(లు)"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "ఓ నిమిషం క్రితం"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "ఒక గంట క్రితం"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "ఓ రోజు క్రితం"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "ఓ నెల క్రితం"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "ఒక సంవత్సరం క్రితం"
-# Translation of StatusNet to Turkish (Türkçe)
+# Translation of StatusNet - Core to Turkish (Türkçe)
# Expored from translatewiki.net
#
# Author: Joseph
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:22+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:27+0000\n"
"Language-Team: Turkish <http://translatewiki.net/wiki/Portal:tr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tr\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page notice
#: actions/accessadminpanel.php:67
msgid "Admin"
msgstr ""
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr ""
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid_plural "You are a member of these groups:"
msgstr[0] "Bize o profili yollamadınız"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Group"
msgstr ""
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:120
msgid "Edit %s group properties"
msgstr ""
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Send a nudge to this user"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Yeni abonelik eklenemedi."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:81
msgid "Find people on this site"
msgstr ""
msgstr "yaklaşık bir dakika önce"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "yaklaşık bir saat önce"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "yaklaşık bir gün önce"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "yaklaşık bir ay önce"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "yaklaşık bir yıl önce"
-# Translation of StatusNet to Ukrainian (Українська)
+# Translation of StatusNet - Core to Ukrainian (Українська)
# Expored from translatewiki.net
#
# Author: AS
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:23+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:28+0000\n"
"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "Адмін"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "Блок"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "Надати користувачеві права адміністратора"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "Зробити адміном"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "Надати цьому користувачеві права адміністратора"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "Немає додатків для даного споживчого ключа."
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "Токен погодження невірний."
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
-msgstr ""
+msgstr "Немає користувача для цього токену."
+
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr "Не вдалося автентифікувати Вас."
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
-msgstr ""
+msgid "Tried to revoke unknown token."
+msgstr "Спроба скасувати невідомий токен."
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
+msgstr "Не вдалося видалити скасований токен."
#. TRANS: Form legend.
#: lib/applicationeditform.php:129
msgstr[1] "Ви є учасником таких груп:"
msgstr[2] "Ви є учасником таких груп:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgstr ""
"Додаткові імена для групи, відокремлювати комами або пробілами, максимум %d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "Група"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "Група %s"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "Учасники"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "Учасники групи %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "Заблоковані"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "Заблоковані користувачі %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "Редагувати властивості групи %s"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Логотип"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "Додати або редагувати логотип %s"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "Додати або редагувати дизайн %s"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "Групи з найбільшою кількістю учасників"
msgid "Could not determine file's MIME type."
msgstr "Не вдається визначити MIME-тип файлу."
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr ""
+"Тип файлів «%1$s» тепер не підтримується на даному сервері. Спробуйте "
+"використати інший формат %2$s."
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "Тип файлів «%s» тепер не підтримується на даному сервері."
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "Надіслати прямий допис"
msgid "Send a nudge to this user"
msgstr "Спробувати «розштовхати» цього користувача"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "Помилка при додаванні нового профілю."
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "Помилка при додаванні аватари."
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "Помилка при додаванні віддаленого профілю."
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "Дублікат допису."
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Не вдалося додати нову підписку."
msgid "Keyword(s)"
msgstr "Ключові слова"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "Пошук"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "хвилину тому"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "хвилину тому"
+msgstr[1] "%d хвилин тому"
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "годину тому"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "годину тому"
+msgstr[1] "%d годин тому"
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "день тому"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "день тому"
+msgstr[1] "%d днів тому"
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "місяць тому"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "місяць тому"
+msgstr[1] "%d місяців тому"
+msgstr[2] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "рік тому"
-# Translation of StatusNet to Vietnamese (Tiếng Việt)
+# Translation of StatusNet - Core to Vietnamese (Tiếng Việt)
# Expored from translatewiki.net
#
# Author: Minh Nguyen
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:24+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:30+0000\n"
"Language-Team: Vietnamese <http://translatewiki.net/wiki/Portal:vi>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: vi\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr ""
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#. TRANS: Button text for the form that will make a user administrator.
#: actions/groupmembers.php:533
msgctxt "BUTTON"
msgid "Make Admin"
msgstr ""
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr ""
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
msgid "Login to the site"
msgstr ""
+#: lib/action.php:510
+msgctxt "MENU"
+msgid "Help"
+msgstr "Trợ giúp"
+
#. TRANS: Tooltip for main menu option "Search"
#: lib/action.php:513
msgctxt "TOOLTIP"
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid_plural "You are a member of these groups:"
msgstr[0] "Bạn chưa cập nhật thông tin riêng"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Database error"
msgstr ""
+#: lib/designsettings.php:105
+msgid "Upload file"
+msgstr "Tải tập tin lên"
+
#: lib/designsettings.php:418
msgid "Design defaults restored."
msgstr ""
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Nudge this user"
msgstr "Bỏ chặn người dùng này"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "Không thể chèn thêm vào đăng nhận."
msgid "Keyword(s)"
msgstr ""
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
#: lib/searchgroupnav.php:80
msgid "People"
msgstr "Tên tài khoản"
msgstr "1 phút trước"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "1 giờ trước"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "1 ngày trước"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "1 tháng trước"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "1 năm trước"
-# Translation of StatusNet to Simplified Chinese (中文(简体))
+# Translation of StatusNet - Core to Simplified Chinese (中文(简体))
# Expored from translatewiki.net
#
# Author: Chenxiaoqino
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:26+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:31+0000\n"
"Language-Team: Simplified Chinese <http://translatewiki.net/wiki/Portal:zh-"
"hans>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page title
#. TRANS: Menu item for site administration
msgid "Admin"
msgstr "管理"
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr "屏蔽"
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr "使用户成为小组的管理员"
+#. TRANS: Button text for the form that will make a user administrator.
+#: actions/groupmembers.php:533
+msgctxt "BUTTON"
+msgid "Make Admin"
+msgstr "设置管理员"
+
+#. TRANS: Submit button title.
+#: actions/groupmembers.php:537
+msgctxt "TOOLTIP"
+msgid "Make this user an admin"
+msgstr "将这个用户设为管理员"
+
#. TRANS: Message is used as link title. %s is a user nickname.
#. TRANS: Title in atom group notice feed. %s is a group name.
#. TRANS: Title in atom user notice feed. %s is a user name.
#. TRANS: OAuth exception thrown when no application is found for a given consumer key.
#: lib/apiauth.php:175
msgid "No application for that consumer key."
-msgstr ""
+msgstr "没有应用使用这个 consumer key。"
+
+#. TRANS: OAuth exception given when an incorrect access token was given for a user.
+#: lib/apiauth.php:212
+msgid "Bad access token."
+msgstr "无效的 access token。"
#. TRANS: OAuth exception given when no user was found for a given token (no token was found).
#: lib/apiauth.php:217
msgid "No user for that token."
-msgstr ""
+msgstr "没有用户使用这个 token。"
+
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr "无法验证你。"
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
+msgstr ""
+
+#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
+#: lib/apioauthstore.php:182
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form legend.
msgid_plural "You are a member of these groups:"
msgstr[0] "你是该小组成员:"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
"fav #<消息id> - 将该id的消息加为'收藏'\n"
"repeat #<消息id> - 转发该id的消息\n"
"repeat <昵称> - 转发该用户的最后一条消息\n"
-"reply #<notice_id> - 对该id消息回复\n"
-"reply <昵称> - 对该用户的最后一条小心回复\n"
+"reply #<消息id> - 对该id消息回复\n"
+"reply <昵称> - 对该用户的最后一条消息回复\n"
"join <小组> - 加入小组\n"
"login - 获取网页登录的地址\n"
"drop <小组> - 离开小组\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr "该小组额外的昵称,用逗号或者空格分隔开,最长%d"
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr "小组"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr "%s小组"
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr "组员"
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr "%s 小组成员"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr "屏蔽的用户"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr "%s 屏蔽的用户"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr "编辑 %s 小组设置"
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr "Logo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:129
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s logo"
+msgstr "添加或编辑 %s logo"
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:138
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Add or edit %s design"
+msgstr "添加或编辑 %s 外观"
+
#: lib/groupsbymemberssection.php:71
msgid "Groups with most members"
msgstr "人气最旺的小组"
msgid "Could not determine file's MIME type."
msgstr "无法判断文件的 MIME 类型。"
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %1$s is the file type that was denied, %2$s is the application part of
+#. TRANS: the MIME type that was denied.
+#: lib/mediafile.php:340
+#, php-format
+msgid ""
+"\"%1$s\" is not a supported file type on this server. Try using another %2$s "
+"format."
+msgstr "此服务器不支持 “%1$s” 的文件格式,试下使用其他的 %2$s 格式。"
+
+#. TRANS: Client exception thrown trying to upload a forbidden MIME type.
+#. TRANS: %s is the file type that was denied.
+#: lib/mediafile.php:345
+#, php-format
+msgid "\"%s\" is not a supported file type on this server."
+msgstr "这个服务器不支持 %s 的文件格式。"
+
#: lib/messageform.php:120
msgid "Send a direct notice"
msgstr "发送一条私信"
msgid "Send a nudge to this user"
msgstr "呼叫这个用户"
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr "添加新个人信息出错。"
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr "添加头像出错。"
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr "添加远程个人信息时出错。"
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr "复制消息。"
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "无法添加新的关注。"
msgid "Keyword(s)"
msgstr "关键词"
+#: lib/searchaction.php:130
+msgctxt "BUTTON"
+msgid "Search"
+msgstr "搜索"
+
#. TRANS: Definition list item with instructions on how to get (better) search results.
#: lib/searchaction.php:170
msgid "Search help"
msgstr "约1分钟前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1110
+#, php-format
+msgid "about one minute ago"
+msgid_plural "about %d minutes ago"
+msgstr[0] "约1分钟前"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr "约1小时前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1117
+#, php-format
+msgid "about one hour ago"
+msgid_plural "about %d hours ago"
+msgstr[0] "约一小时前"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1120
msgid "about a day ago"
msgstr "约1天前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
#: lib/util.php:1124
+#, php-format
+msgid "about one day ago"
+msgid_plural "about %d days ago"
+msgstr[0] "约1天前"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1127
msgid "about a month ago"
msgstr "约1个月前"
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1131
+#, php-format
+msgid "about one month ago"
+msgid_plural "about %d months ago"
+msgstr[0] "约1个月前"
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1134
msgid "about a year ago"
msgstr "约1年前"
-# Translation of StatusNet to Traditional Chinese (中文(繁體))
+# Translation of StatusNet - Core to Traditional Chinese (中文(繁體))
# Expored from translatewiki.net
#
# --
#
msgid ""
msgstr ""
-"Project-Id-Version: StatusNet\n"
+"Project-Id-Version: StatusNet - Core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 19:53+0000\n"
-"PO-Revision-Date: 2010-09-14 19:54:27+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+0000\n"
+"PO-Revision-Date: 2010-09-18 22:08:32+0000\n"
"Language-Team: Traditional Chinese <http://translatewiki.net/wiki/Portal:zh-"
"hant>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r73009); Translate extension (2010-08-20)\n"
+"X-Generator: MediaWiki 1.17alpha (r73298); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hant\n"
-"X-Message-Group: #out-statusnet\n"
+"X-Message-Group: #out-statusnet-core\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 1284-49-16 34::+0000\n"
+"X-POT-Import-Date: 1284-74-75 38::+0000\n"
#. TRANS: Page notice
#: actions/accessadminpanel.php:67
msgid "Admin"
msgstr ""
+#. TRANS: Button text for the form that will block a user from a group.
+#: actions/groupmembers.php:399
+msgctxt "BUTTON"
+msgid "Block"
+msgstr ""
+
#: actions/groupmembers.php:498
msgid "Make user an admin of the group"
msgstr ""
msgid "No user for that token."
msgstr ""
+#. TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
+#. TRANS: Client error thrown when authentication fails.
+#: lib/apiauth.php:258 lib/apiauth.php:290
+msgid "Could not authenticate you."
+msgstr ""
+
#. TRANS: Exception thrown when an attempt is made to revoke an unknown token.
#: lib/apioauthstore.php:178
-msgid "Tried to revoke unknown token"
+msgid "Tried to revoke unknown token."
msgstr ""
#. TRANS: Exception thrown when an attempt is made to remove a revoked token.
#: lib/apioauthstore.php:182
-msgid "Failed to delete revoked token"
+msgid "Failed to delete revoked token."
msgstr ""
#. TRANS: Form input field instructions.
msgid_plural "You are a member of these groups:"
msgstr[0] "無法連結到伺服器:%s"
-#. TRANS: Help text for commands.
+#. TRANS: Help text for commands. Do not translate the command names themselves; they are fixed strings.
#: lib/command.php:905
msgid ""
"Commands:\n"
msgid "Extra nicknames for the group, comma- or space- separated, max %d"
msgstr ""
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:86
+msgctxt "MENU"
+msgid "Group"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:89
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page.
+#: lib/groupnav.php:95
+msgctxt "MENU"
+msgid "Members"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:98
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s group members"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:108
+msgctxt "MENU"
+msgid "Blocked"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:111
+#, php-format
+msgctxt "TOOLTIP"
+msgid "%s blocked users"
+msgstr ""
+
+#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+#. TRANS: %s is the nickname of the group.
+#: lib/groupnav.php:120
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Edit %s group properties"
+msgstr ""
+
+#. TRANS: Menu item in the group navigation page. Only shown for group administrators.
+#: lib/groupnav.php:126
+msgctxt "MENU"
+msgid "Logo"
+msgstr ""
+
#. TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
#. TRANS: %s is the nickname of the group.
#: lib/groupnav.php:129
msgid "Send a nudge to this user"
msgstr ""
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile."
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar."
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a notice is denied because it has been sent before.
+#: lib/oauthstore.php:346
+msgid "Duplicate notice."
+msgstr ""
+
#: lib/oauthstore.php:491
msgid "Couldn't insert new subscription."
msgstr "無法新增訂閱"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1109
+#: lib/util.php:1110
#, php-format
msgid "about one minute ago"
msgid_plural "about %d minutes ago"
msgstr[0] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1112
+#: lib/util.php:1113
msgid "about an hour ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1115
+#: lib/util.php:1117
#, php-format
msgid "about one hour ago"
msgid_plural "about %d hours ago"
msgstr[0] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1118
+#: lib/util.php:1120
msgid "about a day ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1121
+#: lib/util.php:1124
#, php-format
msgid "about one day ago"
msgid_plural "about %d days ago"
msgstr[0] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1124
+#: lib/util.php:1127
msgid "about a month ago"
msgstr ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1127
+#: lib/util.php:1131
#, php-format
msgid "about one month ago"
msgid_plural "about %d months ago"
msgstr[0] ""
#. TRANS: Used in notices to indicate when the notice was made compared to now.
-#: lib/util.php:1130
+#: lib/util.php:1134
msgid "about a year ago"
msgstr ""
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for APC variable cache
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * A plugin to use APC's variable cache for the cache interface
+ *
+ * New plugin interface lets us use alternative cache systems
+ * for caching. This one uses APC's variable cache.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class APCPlugin extends Plugin
+{
+ /**
+ * Get a value associated with a key
+ *
+ * The value should have been set previously.
+ *
+ * @param string &$key in; Lookup key
+ * @param mixed &$value out; value associated with key
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheGet(&$key, &$value)
+ {
+ $value = apc_fetch($key);
+ Event::handle('EndCacheGet', array($key, &$value));
+ return false;
+ }
+
+ /**
+ * Associate a value with a key
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param mixed &$value in; Value to associate
+ * @param integer &$flag in; Flag (passed through to Memcache)
+ * @param integer &$expiry in; Expiry (passed through to Memcache)
+ * @param boolean &$success out; Whether the set was successful
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+ {
+ $success = apc_store($key, $value, ((is_null($expiry)) ? 0 : $expiry));
+
+ Event::handle('EndCacheSet', array($key, $value, $flag,
+ $expiry));
+ return false;
+ }
+
+ /**
+ * Delete a value associated with a key
+ *
+ * @param string &$key in; Key to lookup
+ * @param boolean &$success out; whether it worked
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheDelete(&$key, &$success)
+ {
+ $success = apc_delete($key);
+ Event::handle('EndCacheDelete', array($key));
+ return false;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'APC',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:APC',
+ 'rawdescription' =>
+ _m('Use the <a href="http://pecl.php.net/package/apc">APC</a> variable cache to cache query results.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: APCPlugin.php:115
+msgid ""
+"Use the <a href=\"http://pecl.php.net/package/apc\">APC</a> variable cache "
+"to cache query results."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * Plugin to implement cache interface for APC variable cache
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * A plugin to use APC's variable cache for the cache interface
- *
- * New plugin interface lets us use alternative cache systems
- * for caching. This one uses APC's variable cache.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-class APCPlugin extends Plugin
-{
- /**
- * Get a value associated with a key
- *
- * The value should have been set previously.
- *
- * @param string &$key in; Lookup key
- * @param mixed &$value out; value associated with key
- *
- * @return boolean hook success
- */
-
- function onStartCacheGet(&$key, &$value)
- {
- $value = apc_fetch($key);
- Event::handle('EndCacheGet', array($key, &$value));
- return false;
- }
-
- /**
- * Associate a value with a key
- *
- * @param string &$key in; Key to use for lookups
- * @param mixed &$value in; Value to associate
- * @param integer &$flag in; Flag (passed through to Memcache)
- * @param integer &$expiry in; Expiry (passed through to Memcache)
- * @param boolean &$success out; Whether the set was successful
- *
- * @return boolean hook success
- */
-
- function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
- {
- $success = apc_store($key, $value, ((is_null($expiry)) ? 0 : $expiry));
-
- Event::handle('EndCacheSet', array($key, $value, $flag,
- $expiry));
- return false;
- }
-
- /**
- * Delete a value associated with a key
- *
- * @param string &$key in; Key to lookup
- * @param boolean &$success out; whether it worked
- *
- * @return boolean hook success
- */
-
- function onStartCacheDelete(&$key, &$success)
- {
- $success = apc_delete($key);
- Event::handle('EndCacheDelete', array($key));
- return false;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'APC',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:APC',
- 'rawdescription' =>
- _m('Use the <a href="http://pecl.php.net/package/apc">APC</a> variable cache to cache query results.'));
- return true;
- }
-}
-
}
return true;
}
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'BlankAdPlugin',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:Adsense',
+ 'rawdescription' =>
+ _m('Plugin to add Google Adsense to StatusNet sites.'));
+ return true;
+ }
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
$contactuser = User::staticGet('nickname', $this->contact);
if (!empty($contactuser)) {
$contactlink = "@<a href=\"$contactuser->uri\">$contactuser->nickname</a>";
+ // TRANS: $contactlink is a clickable e-mailaddress.
$instr = _m("Note you will initially be \"sandboxed\" so your posts will not appear in the public timeline. ".
'Send a message to $contactlink to speed up the unsandboxing process.');
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"the public timeline."
msgstr ""
-#: AutoSandboxPlugin.php:78
+#. TRANS: $contactlink is a clickable e-mailaddress.
+#: AutoSandboxPlugin.php:79
msgid ""
"Note you will initially be \"sandboxed\" so your posts will not appear in "
"the public timeline. Send a message to $contactlink to speed up the "
function etag()
{
return '"' . implode(':', array($this->arg('action'),
+ common_user_cache_hash(),
crc32($this->arg('q')), //the actual string can have funny characters in we don't want showing up in the etag
$this->arg('limit'),
$this->lastModified())) . '"';
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
$url = htmlspecialchars_decode($url);
if (!$this->_checkUrl($url)) {
- $msg = sprintf(_m("You may not use UTL \"%s\" in notices."),
+ $msg = sprintf(_m("You may not use URL \"%s\" in notices."),
$url);
throw new ClientException($msg);
}
*
* @return boolean hook value
*/
-
function onAdminPanelCheck($name, &$isOK)
{
if ($name == 'blacklist') {
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
#: BlacklistPlugin.php:234
#, php-format
-msgid "You may not use UTL \"%s\" in notices."
+msgid "You may not use URL \"%s\" in notices."
msgstr ""
#: BlacklistPlugin.php:338
*
* @seeAlso Location
*/
-
class BlankAdPlugin extends UAPPlugin
{
/**
*
* @return void
*/
-
protected function showMediumRectangle($action)
{
$action->element('img',
*
* @return void
*/
-
protected function showRectangle($action)
{
$action->element('img',
*
* @return void
*/
-
protected function showWideSkyscraper($action)
{
$action->element('img',
*
* @return void
*/
-
protected function showLeaderboard($action)
{
$action->element('img',
'src' => common_path('plugins/BlankAd/redpixel.png')),
'');
}
-}
\ No newline at end of file
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'BlankAd',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:BlankAdPlugin',
+ 'rawdescription' =>
+ _m('Plugin for testing ad layout.'));
+ return true;
+ }
+}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to check submitted notices with blogspam.net
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @author Brion Vibber <brion@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+define('BLOGSPAMNETPLUGIN_VERSION', '0.1');
+
+/**
+ * Plugin to check submitted notices with blogspam.net
+ *
+ * When new notices are saved, we check their text with blogspam.net (or
+ * a compatible service).
+ *
+ * Blogspam.net is supposed to catch blog comment spam, and I found that
+ * some of its tests (min/max size, bayesian match) gave a lot of false positives.
+ * So, I've turned those tests off by default. This may not get as many
+ * hits, but it's better than nothing.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+class BlogspamNetPlugin extends Plugin
+{
+ var $baseUrl = 'http://test.blogspam.net:8888/';
+
+ function __construct($url=null)
+ {
+ parent::__construct();
+ if ($url) {
+ $this->baseUrl = $url;
+ }
+ }
+
+ function onStartNoticeSave($notice)
+ {
+ $args = $this->testArgs($notice);
+ common_debug("Blogspamnet args = " . print_r($args, TRUE));
+ $requestBody = xmlrpc_encode_request('testComment', array($args));
+
+ $request = new HTTPClient($this->baseUrl, HTTPClient::METHOD_POST);
+ $request->setHeader('Content-Type', 'text/xml');
+ $request->setBody($requestBody);
+ $httpResponse = $request->send();
+
+ $response = xmlrpc_decode($httpResponse->getBody());
+ if (xmlrpc_is_fault($response)) {
+ throw new ServerException("$response[faultString] ($response[faultCode])", 500);
+ } else {
+ common_debug("Blogspamnet results = " . $response);
+ if (preg_match('/^ERROR(:(.*))?$/', $response, $match)) {
+ throw new ServerException(sprintf(_("Error from %s: %s"), $this->baseUrl, $match[2]), 500);
+ } else if (preg_match('/^SPAM(:(.*))?$/', $response, $match)) {
+ throw new ClientException(sprintf(_("Spam checker results: %s"), $match[2]), 400);
+ } else if (preg_match('/^OK$/', $response)) {
+ // don't do anything
+ } else {
+ throw new ServerException(sprintf(_("Unexpected response from %s: %s"), $this->baseUrl, $response), 500);
+ }
+ }
+ return true;
+ }
+
+ function testArgs($notice)
+ {
+ $args = array();
+ $args['comment'] = $notice->content;
+ $args['ip'] = $this->getClientIP();
+
+ if (isset($_SERVER) && array_key_exists('HTTP_USER_AGENT', $_SERVER)) {
+ $args['agent'] = $_SERVER['HTTP_USER_AGENT'];
+ }
+
+ $profile = $notice->getProfile();
+
+ if ($profile && $profile->homepage) {
+ $args['link'] = $profile->homepage;
+ }
+
+ if ($profile && $profile->fullname) {
+ $args['name'] = $profile->fullname;
+ } else {
+ $args['name'] = $profile->nickname;
+ }
+
+ $args['site'] = common_root_url();
+ $args['version'] = $this->userAgent();
+
+ $args['options'] = "max-size=" . common_config('site','textlimit') . ",min-size=0,min-words=0,exclude=bayasian";
+
+ return $args;
+ }
+
+ function getClientIP()
+ {
+ if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+ // Note: order matters here; use proxy-forwarded stuff first
+ foreach (array('HTTP_X_FORWARDED_FOR', 'CLIENT-IP', 'REMOTE_ADDR') as $k) {
+ if (isset($_SERVER[$k])) {
+ return $_SERVER[$k];
+ }
+ }
+ }
+ return '127.0.0.1';
+ }
+
+ function userAgent()
+ {
+ return 'BlogspamNetPlugin/'.BLOGSPAMNETPLUGIN_VERSION . ' StatusNet/' . STATUSNET_VERSION;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'BlogspamNet',
+ 'version' => BLOGSPAMNETPLUGIN_VERSION,
+ 'author' => 'Evan Prodromou, Brion Vibber',
+ 'homepage' => 'http://status.net/wiki/Plugin:BlogspamNet',
+ 'rawdescription' =>
+ _m('Plugin to check submitted notices with blogspam.net.'));
+ return true;
+ }
+}
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to check submitted notices with blogspam.net
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Brion Vibber <brion@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-define('BLOGSPAMNETPLUGIN_VERSION', '0.1');
-
-/**
- * Plugin to check submitted notices with blogspam.net
- *
- * When new notices are saved, we check their text with blogspam.net (or
- * a compatible service).
- *
- * Blogspam.net is supposed to catch blog comment spam, and I found that
- * some of its tests (min/max size, bayesian match) gave a lot of false positives.
- * So, I've turned those tests off by default. This may not get as many
- * hits, but it's better than nothing.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class BlogspamNetPlugin extends Plugin
-{
- var $baseUrl = 'http://test.blogspam.net:8888/';
-
- function __construct($url=null)
- {
- parent::__construct();
- if ($url) {
- $this->baseUrl = $url;
- }
- }
-
- function onStartNoticeSave($notice)
- {
- $args = $this->testArgs($notice);
- common_debug("Blogspamnet args = " . print_r($args, TRUE));
- $requestBody = xmlrpc_encode_request('testComment', array($args));
-
- $request = new HTTPClient($this->baseUrl, HTTPClient::METHOD_POST);
- $request->setHeader('Content-Type', 'text/xml');
- $request->setBody($requestBody);
- $httpResponse = $request->send();
-
- $response = xmlrpc_decode($httpResponse->getBody());
- if (xmlrpc_is_fault($response)) {
- throw new ServerException("$response[faultString] ($response[faultCode])", 500);
- } else {
- common_debug("Blogspamnet results = " . $response);
- if (preg_match('/^ERROR(:(.*))?$/', $response, $match)) {
- throw new ServerException(sprintf(_("Error from %s: %s"), $this->baseUrl, $match[2]), 500);
- } else if (preg_match('/^SPAM(:(.*))?$/', $response, $match)) {
- throw new ClientException(sprintf(_("Spam checker results: %s"), $match[2]), 400);
- } else if (preg_match('/^OK$/', $response)) {
- // don't do anything
- } else {
- throw new ServerException(sprintf(_("Unexpected response from %s: %s"), $this->baseUrl, $response), 500);
- }
- }
- return true;
- }
-
- function testArgs($notice)
- {
- $args = array();
- $args['comment'] = $notice->content;
- $args['ip'] = $this->getClientIP();
-
- if (isset($_SERVER) && array_key_exists('HTTP_USER_AGENT', $_SERVER)) {
- $args['agent'] = $_SERVER['HTTP_USER_AGENT'];
- }
-
- $profile = $notice->getProfile();
-
- if ($profile && $profile->homepage) {
- $args['link'] = $profile->homepage;
- }
-
- if ($profile && $profile->fullname) {
- $args['name'] = $profile->fullname;
- } else {
- $args['name'] = $profile->nickname;
- }
-
- $args['site'] = common_root_url();
- $args['version'] = $this->userAgent();
-
- $args['options'] = "max-size=" . common_config('site','textlimit') . ",min-size=0,min-words=0,exclude=bayasian";
-
- return $args;
- }
-
- function getClientIP()
- {
- if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
- // Note: order matters here; use proxy-forwarded stuff first
- foreach (array('HTTP_X_FORWARDED_FOR', 'CLIENT-IP', 'REMOTE_ADDR') as $k) {
- if (isset($_SERVER[$k])) {
- return $_SERVER[$k];
- }
- }
- }
- return '127.0.0.1';
- }
-
- function userAgent()
- {
- return 'BlogspamNetPlugin/'.BLOGSPAMNETPLUGIN_VERSION . ' StatusNet/' . STATUSNET_VERSION;
- }
-}
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Logs cache access
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * Log cache access
+ *
+ * Note that since most caching plugins return false for StartCache*
+ * methods, you should add this plugin before them, i.e.
+ *
+ * addPlugin('CacheLog');
+ * addPlugin('XCache');
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+class CacheLogPlugin extends Plugin
+{
+ function onStartCacheGet(&$key, &$value)
+ {
+ $this->log(LOG_INFO, "Fetching key '$key'");
+ return true;
+ }
+
+ function onEndCacheGet($key, &$value)
+ {
+ if ($value === false) {
+ $this->log(LOG_INFO, "Cache MISS for key '$key'");
+ } else {
+ $this->log(LOG_INFO, "Cache HIT for key '$key'");
+ }
+ return true;
+ }
+
+ function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+ {
+ if (empty($value)) {
+ if (is_array($value)) {
+ $this->log(LOG_INFO, "Setting empty array for key '$key'");
+ } else if (is_null($value)) {
+ $this->log(LOG_INFO, "Setting null value for key '$key'");
+ } else if (is_string($value)) {
+ $this->log(LOG_INFO, "Setting empty string for key '$key'");
+ } else if (is_integer($value)) {
+ $this->log(LOG_INFO, "Setting integer 0 for key '$key'");
+ } else {
+ $this->log(LOG_INFO, "Setting empty value '$value' for key '$key'");
+ }
+ } else {
+ $this->log(LOG_INFO, "Setting non-empty value for key '$key'");
+ }
+ return true;
+ }
+
+ function onEndCacheSet($key, $value, $flag, $expiry)
+ {
+ $this->log(LOG_INFO, "Done setting cache value for key '$key'");
+ return true;
+ }
+
+ function onStartCacheDelete(&$key, &$success)
+ {
+ $this->log(LOG_INFO, "Deleting cache value for key '$key'");
+ return true;
+ }
+
+ function onEndCacheDelete($key)
+ {
+ $this->log(LOG_INFO, "Done deleting cache value for key '$key'");
+ return true;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'CacheLog',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:CacheLog',
+ 'description' =>
+ _m('Log reads and writes to the cache.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-19 15:29+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"
+
+#: CacheLogPlugin.php:116
+msgid "Log reads and writes to the cache."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * Logs cache access
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * Log cache access
- *
- * Note that since most caching plugins return false for StartCache*
- * methods, you should add this plugin before them, i.e.
- *
- * addPlugin('CacheLog');
- * addPlugin('XCache');
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-class CacheLogPlugin extends Plugin
-{
- function onStartCacheGet(&$key, &$value)
- {
- $this->log(LOG_INFO, "Fetching key '$key'");
- return true;
- }
-
- function onEndCacheGet($key, &$value)
- {
- if ($value === false) {
- $this->log(LOG_INFO, "Cache MISS for key '$key'");
- } else {
- $this->log(LOG_INFO, "Cache HIT for key '$key'");
- }
- return true;
- }
-
- function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
- {
- if (empty($value)) {
- if (is_array($value)) {
- $this->log(LOG_INFO, "Setting empty array for key '$key'");
- } else if (is_null($value)) {
- $this->log(LOG_INFO, "Setting null value for key '$key'");
- } else if (is_string($value)) {
- $this->log(LOG_INFO, "Setting empty string for key '$key'");
- } else if (is_integer($value)) {
- $this->log(LOG_INFO, "Setting integer 0 for key '$key'");
- } else {
- $this->log(LOG_INFO, "Setting empty value '$value' for key '$key'");
- }
- } else {
- $this->log(LOG_INFO, "Setting non-empty value for key '$key'");
- }
- return true;
- }
-
- function onEndCacheSet($key, $value, $flag, $expiry)
- {
- $this->log(LOG_INFO, "Done setting cache value for key '$key'");
- return true;
- }
-
- function onStartCacheDelete(&$key, &$success)
- {
- $this->log(LOG_INFO, "Deleting cache value for key '$key'");
- return true;
- }
-
- function onEndCacheDelete($key)
- {
- $this->log(LOG_INFO, "Done deleting cache value for key '$key'");
- return true;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'CacheLog',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:CacheLog',
- 'description' =>
- _m('Log reads and writes to the cache'));
- return true;
- }
-}
-
$action_name = $action->trimmed('action');
$action->menuItem(common_local_url('caslogin'),
+ // TRANS: Menu item. CAS is Central Authentication Service.
_m('CAS'),
- _m('Login or register with CAS'),
+ // TRANS: Tooltip for menu item. CAS is Central Authentication Service.
+ _m('Login or register with CAS.'),
$action_name === 'caslogin');
return true;
switch ($name)
{
case 'login':
- $instr = '(Have an account with CAS? ' .
- 'Try our [CAS login]'.
- '(%%action.caslogin%%)!)';
+ // TRANS: Invitation to users with a CAS account to log in using the service.
+ // TRANS: "[CAS login]" is a link description. (%%action.caslogin%%) is the URL.
+ // TRANS: These two elements may not be separated.
+ $instr = _m('(Have an account with CAS? ' .
+ 'Try our [CAS login](%%action.caslogin%%)!)');
break;
default:
return true;
function onInitializePlugin(){
parent::onInitializePlugin();
if(!isset($this->server)){
- throw new Exception("must specify a server");
+ throw new Exception(_m("Specifying a server is required.");
}
if(!isset($this->port)){
- throw new Exception("must specify a port");
+ throw new Exception(_m("Specifying a port is required.");
}
if(!isset($this->path)){
- throw new Exception("must specify a path");
+ throw new Exception(_m("Specifying a path is required.");
}
//These values need to be accessible to a action object
//I can't think of any other way than global variables
'version' => STATUSNET_VERSION,
'author' => 'Craig Andrews',
'homepage' => 'http://status.net/wiki/Plugin:CasAuthentication',
- 'rawdescription' =>
- _m('The CAS Authentication plugin allows for StatusNet to handle authentication through CAS (Central Authentication Service).'));
+ // TRANS: Plugin description. CAS is Central Authentication Service.
+ 'rawdescription' => _m('The CAS Authentication plugin allows for StatusNet to handle authentication through CAS (Central Authentication Service).'));
return true;
}
}
$casTempPassword = common_good_rand(16);
$user = common_check_user(phpCAS::getUser(), $casTempPassword);
if (!$user) {
- $this->serverError(_('Incorrect username or password.'));
+ $this->serverError(_m('Incorrect username or password.'));
return;
}
// success!
if (!common_set_user($user)) {
- $this->serverError(_('Error setting user. You are probably not authorized.'));
+ $this->serverError(_m('Error setting user. You are probably not authorized.'));
return;
}
}
common_redirect($url, 303);
-
}
}
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: CasAuthenticationPlugin.php:82
+#. TRANS: Menu item. CAS is Central Authentication Service.
+#: CasAuthenticationPlugin.php:83
msgid "CAS"
msgstr ""
-#: CasAuthenticationPlugin.php:83
-msgid "Login or register with CAS"
+#. TRANS: Tooltip for menu item. CAS is Central Authentication Service.
+#: CasAuthenticationPlugin.php:85
+msgid "Login or register with CAS."
+msgstr ""
+
+#. TRANS: Invitation to users with a CAS account to log in using the service.
+#. TRANS: "[CAS login]" is a link description. (%%action.caslogin%%) is the URL.
+#. TRANS: These two elements may not be separated.
+#: CasAuthenticationPlugin.php:101
+#, php-format
+msgid "(Have an account with CAS? Try our [CAS login](%%action.caslogin%%)!)"
+msgstr ""
+
+#: CasAuthenticationPlugin.php:128
+msgid "Specifying a server is required."
+msgstr ""
+
+#: CasAuthenticationPlugin.php:131
+msgid "Specifying a port is required."
+msgstr ""
+
+#: CasAuthenticationPlugin.php:134
+msgid "Specifying a path is required."
msgstr ""
-#: CasAuthenticationPlugin.php:150
+#. TRANS: Plugin description. CAS is Central Authentication Service.
+#: CasAuthenticationPlugin.php:154
msgid ""
"The CAS Authentication plugin allows for StatusNet to handle authentication "
"through CAS (Central Authentication Service)."
#: caslogin.php:28
msgid "Already logged in."
msgstr ""
+
+#: caslogin.php:39
+msgid "Incorrect username or password."
+msgstr ""
+
+#: caslogin.php:45
+msgid "Error setting user. You are probably not authorized."
+msgstr ""
'author' => 'Craig Andrews',
'homepage' => 'http://status.net/wiki/Plugin:ClientSideShorten',
'rawdescription' =>
- _m('ClientSideShorten causes the web interface\'s notice form to automatically shorten urls as they entered, and before the notice is submitted.'));
+ _m('ClientSideShorten causes the web interface\'s notice form to automatically shorten URLs as they entered, and before the notice is submitted.'));
return true;
}
-
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
#: ClientSideShortenPlugin.php:74
msgid ""
"ClientSideShorten causes the web interface's notice form to automatically "
-"shorten urls as they entered, and before the notice is submitted."
+"shorten URLs as they entered, and before the notice is submitted."
msgstr ""
#: shorten.php:56
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class ShortenAction extends Action
{
private $text;
print $shortened_text;
}
}
-
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class CometPlugin extends RealtimePlugin
{
public $server = null;
}
return '/' . implode('/', $path);
}
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Comet',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:Comet',
+ 'rawdescription' =>
+ _m('Plugin to do "real time" updates using Comet/Bayeux.'));
+ return true;
+ }
}
<?php
+
/**
* DirectionDetector plugin, detects notices with RTL content & sets RTL
* style for them.
*
* @category Plugin
* @package StatusNet
- * @author Behrooz shabani (everplays) - <behrooz@rock.com>
+ * @author Behrooz shabani (everplays) - <behrooz@rock.com>
* @copyright 2009-2010 Behrooz shabani
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
*
*/
if (!defined('STATUSNET')) {
- exit(1);
+ exit(1);
}
-define('DIRECTIONDETECTORPLUGIN_VERSION', '0.1.2');
+define('DIRECTIONDETECTORPLUGIN_VERSION', '0.2.0');
class DirectionDetectorPlugin extends Plugin {
- /**
- * SN plugin API, here we will make changes on rendered column
- *
- * @param object $notice notice is going to be saved
- */
- public function onStartNoticeSave(&$notice){
- if(!preg_match('/<span class="rtl">/', $notice->rendered) && self::isRTL($notice->content))
- $notice->rendered = '<span class="rtl">'.$notice->rendered.'</span>';
- return true;
- }
+ /**
+ * SN plugin API, here we will make changes on rendered column
+ *
+ * @param object $notice notice is going to be saved
+ */
+ public function onStartNoticeSave($notice){
+ if(!preg_match('/<span class="rtl">/', $notice->rendered) && self::isRTL($notice->content))
+ $notice->rendered = '<span class="rtl">'.$notice->rendered.'</span>';
+ return true;
+ }
+
+ /**
+ * SN plugin API, here we will add css needed for modifiyed rendered
+ *
+ * @param Action $xml
+ */
+ public function onEndShowStatusNetStyles($xml){
+ $xml->element('style', array('type' => 'text/css'), 'span.rtl {display:block;direction:rtl;text-align:right;float:right;} .notice .author {float:left}');
+ }
+
+ /**
+ * is passed string a rtl content or not
+ *
+ * @param string $content
+ * @return boolean
+ */
+ public static function isRTL($content){
+ $content = self::getClearText($content);
+ $words = explode(' ', $content);
+ $rtl = 0;
+ foreach($words as $str)
+ if(self::startsWithRTLCharacter($str))
+ $rtl++;
+ else
+ $rtl--;
+ if($rtl>0)// if number of rtl words is more than ltr words so it's a rtl content
+ return true;
+ elseif($rtl==0)
+ // check first word again
+ return self::startsWithRTLCharacter($words[0]);
+ return false;
+ }
+
+ /**
+ * checks that passed string starts with a RTL language or not
+ *
+ * @param string $str
+ * @return boolean
+ */
+ public static function startsWithRTLCharacter($str){
+ if( is_array($cc = self::utf8ToUnicode(mb_substr($str, 0, 1, 'utf-8'))) )
+ $cc = $cc[0];
+ else
+ return false;
+ if($cc>=1536 && $cc<=1791) // arabic, persian, urdu, kurdish, ...
+ return true;
+ if($cc>=65136 && $cc<=65279) // arabic peresent 2
+ return true;
+ if($cc>=64336 && $cc<=65023) // arabic peresent 1
+ return true;
+ if($cc>=1424 && $cc<=1535) // hebrew
+ return true;
+ if($cc>=64256 && $cc<=64335) // hebrew peresent
+ return true;
+ if($cc>=1792 && $cc<=1871) // Syriac
+ return true;
+ if($cc>=1920 && $cc<=1983) // Thaana
+ return true;
+ if($cc>=1984 && $cc<=2047) // NKo
+ return true;
+ if($cc>=11568 && $cc<=11647) // Tifinagh
+ return true;
+ return false;
+ }
- /**
- * SN plugin API, here we will add css needed for modifiyed rendered
- *
- * @param
- */
- public function onEndShowStatusNetStyles($xml){
- $xml->element('style', array('type' => 'text/css'), 'span.rtl {display:block;direction:rtl;text-align:right;float:right;width:490px;} .notice .author {float:left}');
- }
- /**
- * checks that passed string is a RTL language or not
- *
- * @param string $str String to be checked
- */
- public static function isRTL($str){
- self::getClearText($str);
- if( is_array($cc = self::utf8ToUnicode(mb_substr($str, 0, 1, 'utf-8'))) )
- $cc = $cc[0];
- else
- return false;
- if($cc>=1536 && $cc<=1791) // Arabic, Persian, Urdu, Kurdish, ...
- return true;
- if($cc>=65136 && $cc<=65279) // Arabic peresent 2
- return true;
- if($cc>=64336 && $cc<=65023) // Arabic peresent 1
- return true;
- if($cc>=1424 && $cc<=1535) // Hebrew
- return true;
- if($cc>=64256 && $cc<=64335) // Hebrew peresent
- return true;
- if($cc>=1792 && $cc<=1871) // Syriac
- return true;
- if($cc>=1920 && $cc<=1983) // Thaana
- return true;
- if($cc>=1984 && $cc<=2047) // NKo
- return true;
- if($cc>=11568 && $cc<=11647) // Tifinagh
- return true;
- return false;
- }
+ /**
+ * clears text from replys, tags, groups, reteets & whitespaces
+ *
+ * @param string $str
+ * @return string
+ */
+ private static function getClearText($str){
+ $str = preg_replace('/@[^ ]+|![^ ]+|#[^ ]+/u', '', $str); // reply, tag, group
+ $str = preg_replace('/^RT[: ]{1}| RT | RT: |^RD[: ]{1}| RD | RD: |[♺♻:]/u', '', $str); // redent, retweet
+ $str = preg_replace("/[ \r\t\n]+/", ' ', trim($str)); // remove spaces
+ return $str;
+ }
- /**
- * clears text from replies, tags, groups, repeats & whitespaces
- *
- * @param string &$str string to be cleared
- */
- private static function getClearText(&$str){
- $str = preg_replace('/@[^ ]+|![^ ]+|#[^ ]+/u', '', $str); // reply, tag, group
- $str = preg_replace('/^RT[: ]{1}| RT | RT: |^RD[: ]{1}| RD | RD: |[♺♻:]/u', '', $str); // redent, retweet
- $str = preg_replace("/[ \r\t\n]+/", ' ', trim($str)); // remove spaces
- }
+ /**
+ * adds javascript to do same thing on input textarea
+ *
+ * @param Action $action
+ */
+ function onEndShowScripts($action){
+ if (common_logged_in()) {
+ $action->script('plugins/DirectionDetector/jquery.DirectionDetector.js');
+ }
+ }
- /**
- * Takes a UTF-8 string and returns an array of ints representing the
- * Unicode characters. Astral planes are supported i.e. the ints in the
- * output can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
- * are not allowed. ### modified ### returns first character code
- *
- * Returns false if the input string isn't a valid UTF-8 octet sequence.
- */
- private static function utf8ToUnicode($str){
- $mState = 0; // cached expected number of octets after the current octet
- // until the beginning of the next UTF8 character sequence
- $mUcs4 = 0; // cached Unicode character
- $mBytes = 1; // cached expected number of octets in the current sequence
- $out = array();
- $len = strlen($str);
+ /**
+ * Takes an UTF-8 string and returns an array of ints representing the
+ * Unicode characters. Astral planes are supported ie. the ints in the
+ * output can be > 0xFFFF. O$ccurrances of the BOM are ignored. Surrogates
+ * are not allowed.
+ *
+ * @param string $str
+ * @return mixed array of ints, or false on invalid input
+ */
+ private static function utf8ToUnicode($str){
+ $mState = 0; // cached expected number of octets after the current octet
+ // until the beginning of the next UTF8 character sequence
+ $mUcs4 = 0; // cached Unicode character
+ $mBytes = 1; // cached expected number of octets in the current sequence
+ $out = array();
+ $len = strlen($str);
- for($i = 0; $i < $len; $i++) {
- $in = ord($str{$i});
- if (0 == $mState) {
- // When mState is zero we expect either a US-ASCII character or a
- // multi-octet sequence.
- if (0 == (0x80 & ($in))) {
- // US-ASCII, pass straight through.
- $out[] = $in;
- $mBytes = 1;
- } elseif (0xC0 == (0xE0 & ($in))) {
- // First octet of 2 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x1F) << 6;
- $mState = 1;
- $mBytes = 2;
- } elseif (0xE0 == (0xF0 & ($in))) {
- // First octet of 3 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x0F) << 12;
- $mState = 2;
- $mBytes = 3;
- } elseif (0xF0 == (0xF8 & ($in))) {
- // First octet of 4 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x07) << 18;
- $mState = 3;
- $mBytes = 4;
- } elseif (0xF8 == (0xFC & ($in))) {
- /* First octet of 5 octet sequence.
- *
- * This is illegal because the encoded codepoint must be either
- * (a) not the shortest form or
- * (b) outside the Unicode range of 0-0x10FFFF.
- * Rather than trying to resynchronize, we will carry on until the end
- * of the sequence and let the later error handling code catch it.
- */
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x03) << 24;
- $mState = 4;
- $mBytes = 5;
- } elseif (0xFC == (0xFE & ($in))) {
- // First octet of 6 octet sequence, see comments for 5 octet sequence.
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 1) << 30;
- $mState = 5;
- $mBytes = 6;
- } else {
- /* Current octet is neither in the US-ASCII range nor a legal first
- * octet of a multi-octet sequence.
- */
- return false;
- }
- } else {
- // When mState is non-zero, we expect a continuation of the multi-octet
- // sequence
- if (0x80 == (0xC0 & ($in))) {
- // Legal continuation.
- $shift = ($mState - 1) * 6;
- $tmp = $in;
- $tmp = ($tmp & 0x0000003F) << $shift;
- $mUcs4 |= $tmp;
- if (0 == --$mState) {
- /* End of the multi-octet sequence. mUcs4 now contains the final
- * Unicode codepoint to be output
- *
- * Check for illegal sequences and codepoints.
- */
- // From Unicode 3.1, non-shortest form is illegal
- if (
- ((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
- ((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
- ((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
- (4 < $mBytes) ||
- // From Unicode 3.2, surrogate characters are illegal
- (($mUcs4 & 0xFFFFF800) == 0xD800) ||
- // Codepoints outside the Unicode range are illegal
- ($mUcs4 > 0x10FFFF)
- ){
- return false;
- }
- if (0xFEFF != $mUcs4) {
- $out[] = $mUcs4;
- }
- //initialize UTF8 cache
- $mState = 0;
- $mUcs4 = 0;
- $mBytes = 1;
- }
- } else {
- /* ((0xC0 & (*in) != 0x80) && (mState != 0))
- *
- * Incomplete multi-octet sequence.
- */
- return false;
- }
- }
- }
- return $out;
- }
+ for($i = 0; $i < $len; $i++) {
+ $in = ord($str{$i});
+ if (0 == $mState) {
+ // When mState is zero we expect either a US-ASCII character or a
+ // multi-octet sequence.
+ if (0 == (0x80 & ($in))) {
+ // US-ASCII, pass straight through.
+ $out[] = $in;
+ $mBytes = 1;
+ } elseif (0xC0 == (0xE0 & ($in))) {
+ // First octet of 2 octet sequence
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x1F) << 6;
+ $mState = 1;
+ $mBytes = 2;
+ } elseif (0xE0 == (0xF0 & ($in))) {
+ // First octet of 3 octet sequence
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x0F) << 12;
+ $mState = 2;
+ $mBytes = 3;
+ } elseif (0xF0 == (0xF8 & ($in))) {
+ // First octet of 4 octet sequence
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x07) << 18;
+ $mState = 3;
+ $mBytes = 4;
+ } elseif (0xF8 == (0xFC & ($in))) {
+ /* First octet of 5 octet sequence.
+ *
+ * This is illegal because the encoded codepoint must be either
+ * (a) not the shortest form or
+ * (b) outside the Unicode range of 0-0x10FFFF.
+ * Rather than trying to resynchronize, we will carry on until the end
+ * of the sequence and let the later error handling code catch it.
+ */
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x03) << 24;
+ $mState = 4;
+ $mBytes = 5;
+ } elseif (0xFC == (0xFE & ($in))) {
+ // First octet of 6 octet sequence, see comments for 5 octet sequence.
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 1) << 30;
+ $mState = 5;
+ $mBytes = 6;
+ } else {
+ /* Current octet is neither in the US-ASCII range nor a legal first
+ * octet of a multi-octet sequence.
+ */
+ return false;
+ }
+ } else {
+ // When mState is non-zero, we expect a continuation of the multi-octet
+ // sequence
+ if (0x80 == (0xC0 & ($in))) {
+ // Legal continuation.
+ $shift = ($mState - 1) * 6;
+ $tmp = $in;
+ $tmp = ($tmp & 0x0000003F) << $shift;
+ $mUcs4 |= $tmp;
+ if (0 == --$mState) {
+ /* End of the multi-octet sequence. mUcs4 now contains the final
+ * Unicode codepoint to be output
+ *
+ * Check for illegal sequences and codepoints.
+ */
+ // From Unicode 3.1, non-shortest form is illegal
+ if (
+ ((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
+ ((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
+ ((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
+ (4 < $mBytes) ||
+ // From Unicode 3.2, surrogate characters are illegal
+ (($mUcs4 & 0xFFFFF800) == 0xD800) ||
+ // Codepoints outside the Unicode range are illegal
+ ($mUcs4 > 0x10FFFF)
+ ){
+ return false;
+ }
+ if (0xFEFF != $mUcs4) {
+ $out[] = $mUcs4;
+ }
+ //initialize UTF8 cache
+ $mState = 0;
+ $mUcs4 = 0;
+ $mBytes = 1;
+ }
+ } else {
+ /* ((0xC0 & (*in) != 0x80) && (mState != 0))
+ *
+ * Incomplete multi-octet sequence.
+ */
+ return false;
+ }
+ }
+ }
+ return $out;
+ }
- /**
- * plugin details
- */
- function onPluginVersion(&$versions){
- $versions[] = array(
- 'name' => 'Direction detector',
- 'version' => DIRECTIONDETECTORPLUGIN_VERSION,
- 'author' => 'Behrooz Shabani',
- // TRANS: Direction detector plugin description.
- 'rawdescription' => _m('Shows notices with right-to-left content in correct direction.')
- );
- return true;
- }
+ /**
+ * plugin details
+ */
+ function onPluginVersion(&$versions){
+ $versions[] = array(
+ 'name' => 'Direction detector',
+ 'version' => DIRECTIONDETECTORPLUGIN_VERSION,
+ 'author' => 'Behrooz Shabani',
+ 'rawdescription' => _m('Shows notices with right-to-left content in correct direction.')
+ );
+ return true;
+ }
}
/*
--- /dev/null
+
+/**
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Behrooz shabani (everplays) - <behrooz@rock.com>
+ * @copyright 2009-2010 Behrooz shabani
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ *
+ */
+
+(function($){
+ $.fn.isRTL = function(str){
+ if(typeof str != typeof "" || str.length<1)
+ return false;
+ var cc = str.charCodeAt(0);
+ if(cc>=1536 && cc<=1791) // arabic, persian, ...
+ return true;
+ if(cc>=65136 && cc<=65279) // arabic peresent 2
+ return true;
+ if(cc>=64336 && cc<=65023) // arabic peresent 1
+ return true;
+ if(cc>=1424 && cc<=1535) // hebrew
+ return true;
+ if(cc>=64256 && cc<=64335) // hebrew peresent
+ return true;
+ if(cc>=1792 && cc<=1871) // Syriac
+ return true;
+ if(cc>=1920 && cc<=1983) // Thaana
+ return true;
+ if(cc>=1984 && cc<=2047) // NKo
+ return true;
+ if(cc>=11568 && cc<=11647) // Tifinagh
+ return true;
+ return false;
+ };
+ $(document).ready(function(){
+ var tArea = $("#notice_data-text");
+ var tCleaner = new RegExp('@[^ ]+|![^ ]+|#[^ ]+|^RT[: ]{1}| RT | RT: |^RD[: ]{1}| RD | RD: |[♺♻:]+', 'g')
+ tArea.keyup(function(){
+ var cleaned = tArea.val().replace(tCleaner, '').replace(/^[ ]+/, '');
+ if($().isRTL(cleaned))
+ tArea.css('direction', 'rtl');
+ else
+ tArea.css('direction', 'ltr');
+ });
+ });
+})(jQuery);
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface with disk files
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * A plugin to cache data on local disk
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class DiskCachePlugin extends Plugin
+{
+ var $root = '/tmp';
+
+ function keyToFilename($key)
+ {
+ return $this->root . '/' . str_replace(':', '/', $key);
+ }
+
+ /**
+ * Get a value associated with a key
+ *
+ * The value should have been set previously.
+ *
+ * @param string &$key in; Lookup key
+ * @param mixed &$value out; value associated with key
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheGet(&$key, &$value)
+ {
+ $filename = $this->keyToFilename($key);
+
+ if (file_exists($filename)) {
+ $data = file_get_contents($filename);
+ if ($data !== false) {
+ $value = unserialize($data);
+ }
+ }
+
+ Event::handle('EndCacheGet', array($key, &$value));
+ return false;
+ }
+
+ /**
+ * Associate a value with a key
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param mixed &$value in; Value to associate
+ * @param integer &$flag in; Flag (passed through to Memcache)
+ * @param integer &$expiry in; Expiry (passed through to Memcache)
+ * @param boolean &$success out; Whether the set was successful
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+ {
+ $filename = $this->keyToFilename($key);
+ $parent = dirname($filename);
+
+ $sofar = '';
+
+ foreach (explode('/', $parent) as $part) {
+ if (empty($part)) {
+ continue;
+ }
+ $sofar .= '/' . $part;
+ if (!is_dir($sofar)) {
+ $this->debug("Creating new directory '$sofar'");
+ $success = mkdir($sofar, 0750);
+ if (!$success) {
+ $this->log(LOG_ERR, "Can't create directory '$sofar'");
+ return false;
+ }
+ }
+ }
+
+ if (is_dir($filename)) {
+ $success = false;
+ return false;
+ }
+
+ // Write to a temp file and move to destination
+
+ $tempname = tempnam(null, 'statusnetdiskcache');
+
+ $result = file_put_contents($tempname, serialize($value));
+
+ if ($result === false) {
+ $this->log(LOG_ERR, "Couldn't write '$key' to temp file '$tempname'");
+ return false;
+ }
+
+ $result = rename($tempname, $filename);
+
+ if (!$result) {
+ $this->log(LOG_ERR, "Couldn't move temp file '$tempname' to path '$filename' for key '$key'");
+ @unlink($tempname);
+ return false;
+ }
+
+ Event::handle('EndCacheSet', array($key, $value, $flag,
+ $expiry));
+
+ return false;
+ }
+
+ /**
+ * Delete a value associated with a key
+ *
+ * @param string &$key in; Key to lookup
+ * @param boolean &$success out; whether it worked
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheDelete(&$key, &$success)
+ {
+ $filename = $this->keyToFilename($key);
+
+ if (file_exists($filename) && !is_dir($filename)) {
+ unlink($filename);
+ }
+
+ Event::handle('EndCacheDelete', array($key));
+ return false;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'DiskCache',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:DiskCache',
+ 'rawdescription' =>
+ _m('Plugin to implement cache interface with disk files.'));
+ return true;
+ }
+}
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * Plugin to implement cache interface with disk files
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * A plugin to cache data on local disk
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-class DiskCachePlugin extends Plugin
-{
- var $root = '/tmp';
-
- function keyToFilename($key)
- {
- return $this->root . '/' . str_replace(':', '/', $key);
- }
-
- /**
- * Get a value associated with a key
- *
- * The value should have been set previously.
- *
- * @param string &$key in; Lookup key
- * @param mixed &$value out; value associated with key
- *
- * @return boolean hook success
- */
-
- function onStartCacheGet(&$key, &$value)
- {
- $filename = $this->keyToFilename($key);
-
- if (file_exists($filename)) {
- $data = file_get_contents($filename);
- if ($data !== false) {
- $value = unserialize($data);
- }
- }
-
- Event::handle('EndCacheGet', array($key, &$value));
- return false;
- }
-
- /**
- * Associate a value with a key
- *
- * @param string &$key in; Key to use for lookups
- * @param mixed &$value in; Value to associate
- * @param integer &$flag in; Flag (passed through to Memcache)
- * @param integer &$expiry in; Expiry (passed through to Memcache)
- * @param boolean &$success out; Whether the set was successful
- *
- * @return boolean hook success
- */
-
- function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
- {
- $filename = $this->keyToFilename($key);
- $parent = dirname($filename);
-
- $sofar = '';
-
- foreach (explode('/', $parent) as $part) {
- if (empty($part)) {
- continue;
- }
- $sofar .= '/' . $part;
- if (!is_dir($sofar)) {
- $this->debug("Creating new directory '$sofar'");
- $success = mkdir($sofar, 0750);
- if (!$success) {
- $this->log(LOG_ERR, "Can't create directory '$sofar'");
- return false;
- }
- }
- }
-
- if (is_dir($filename)) {
- $success = false;
- return false;
- }
-
- // Write to a temp file and move to destination
-
- $tempname = tempnam(null, 'statusnetdiskcache');
-
- $result = file_put_contents($tempname, serialize($value));
-
- if ($result === false) {
- $this->log(LOG_ERR, "Couldn't write '$key' to temp file '$tempname'");
- return false;
- }
-
- $result = rename($tempname, $filename);
-
- if (!$result) {
- $this->log(LOG_ERR, "Couldn't move temp file '$tempname' to path '$filename' for key '$key'");
- @unlink($tempname);
- return false;
- }
-
- Event::handle('EndCacheSet', array($key, $value, $flag,
- $expiry));
-
- return false;
- }
-
- /**
- * Delete a value associated with a key
- *
- * @param string &$key in; Key to lookup
- * @param boolean &$success out; whether it worked
- *
- * @return boolean hook success
- */
-
- function onStartCacheDelete(&$key, &$success)
- {
- $filename = $this->keyToFilename($key);
-
- if (file_exists($filename) && !is_dir($filename)) {
- unlink($filename);
- }
-
- Event::handle('EndCacheDelete', array($key));
- return false;
- }
-}
-
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to add Disqus commenting to notice pages
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ *
+ * This plugin adds Disqus commenting to your notices. Enabling this
+ * plugin will make each notice page display the Disqus widget, and
+ * notice lists will display the number of commments each notice has.
+ *
+ * To use this plugin, you need to first register your site with Disqus
+ * and get a Discus 'shortname' for it.
+ *
+ * http://disqus.com
+ *
+ * To enable the plugin, put the following in you config.php:
+ *
+ * addPlugin(
+ * 'Disqus', array(
+ * 'shortname' => 'YOURSHORTNAME',
+ * 'div_style' => 'width:675px; padding-top:10px; position:relative; float:left;'
+ * )
+ * );
+ *
+ * NOTE: the 'div_style' in an optional parameter that passes in some
+ * inline CSS when creating the Disqus widget. It's a shortcut to make
+ * the widget look OK with the default StatusNet theme. If you leave
+ * it out you'll have to edit your theme CSS files to make the widget
+ * look good. You can also control the way the widget looks by
+ * adding style rules to your theme.
+ *
+ * See: http://help.disqus.com/entries/100878-css-customization
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+class DisqusPlugin extends Plugin
+{
+ public $shortname; // Required 'shortname' for actually triggering Disqus.
+ public $div_style; // Optional CSS chunk for the main <div>
+
+ function onEndShowContentBlock($action)
+ {
+ if (get_class($action) == 'ShownoticeAction') {
+
+ $attrs = array();
+ $attrs['id'] = 'disqus_thread';
+
+ if ($this->div_style) {
+ $attrs['style'] = $this->div_style;
+ }
+
+ $action->element('div', $attrs, null);
+
+ $script = <<<ENDOFSCRIPT
+var disqus_identifier = %d;
+ (function() {
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+ dsq.src = 'http://%s.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ })();
+ENDOFSCRIPT;
+
+ $action->inlineScript(sprintf($script, $action->notice->id, $this->shortname));
+
+ $attrs = array();
+
+ $attrs['id'] = 'disqus_thread_footer';
+
+ if ($this->div_style) {
+ $attrs['style'] = $this->div_style;
+ }
+
+ $action->elementStart('div', $attrs);
+ $action->elementStart('noscript');
+
+ // @todo FIXME: No i18n yet, because of bad implementation. Should be one string.
+ $action->raw('Please enable JavaScript to view the ');
+ $noscriptUrl = 'http://disqus.com/?ref_noscript=' . $this->shortname;
+ $action->element('a', array('href' => $noscriptUrl), 'comments powered by Disqus.');
+ $action->elementEnd('noscript');
+
+ $action->elementStart('a', array('href' => 'http://disqus.com', 'class' => 'dsq-brlink'));
+ $action->raw('blog comments powered by ');
+ $action->element('span', array('class' => 'logo-disqus'), 'Disqus');
+ $action->elementEnd('a');
+ $action->elementEnd('div');
+ }
+ }
+
+ function onEndShowScripts($action)
+ {
+ // fugly
+ $script = <<<ENDOFSCRIPT
+var disqus_shortname = '%s';
+(function () {
+ var s = document.createElement('script'); s.async = true;
+ s.src = 'http://disqus.com/forums/%s/count.js';
+ (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+}());
+ENDOFSCRIPT;
+ $action->inlineScript(sprintf($script, $this->shortname, $this->shortname));
+
+ return true;
+ }
+
+ function onStartShowNoticeItem($noticeListItem)
+ {
+ if (empty($noticeListItem->notice->is_local)) {
+ return true;
+ }
+
+ $noticeListItem->showNotice();
+ $noticeListItem->showNoticeInfo();
+
+ $noticeUrl = $noticeListItem->notice->bestUrl();
+ $noticeUrl .= '#disqus_thread';
+
+ $noticeListItem->out->element(
+ 'a', array('href' => $noticeUrl, 'class' => 'disqus_count'), 'Comments'
+ );
+
+ $noticeListItem->showNoticeOptions();
+ Event::handle('EndShowNoticeItem', array($noticeListItem));
+
+ return false;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Disqus',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Zach Copley',
+ 'homepage' => 'http://status.net/wiki/Plugin:Disqus',
+ 'rawdescription' =>
+ _m('Use <a href="http://disqus.com/">Disqus</a>'.
+ ' to add commenting to notice pages.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: DisqusPlugin.php:167
+msgid ""
+"Use <a href=\"http://disqus.com/\">Disqus</a> to add commenting to notice "
+"pages."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to add Disqus commenting to notice pages
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Zach Copley <zach@status.net>
- * @copyright 2010 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- *
- * This plugin adds Disqus commenting to your notices. Enabling this
- * plugin will make each notice page display the Disqus widget, and
- * notice lists will display the number of commments each notice has.
- *
- * To use this plugin, you need to first register your site with Disqus
- * and get a Discus 'shortname' for it.
- *
- * http://disqus.com
- *
- * To enable the plugin, put the following in you config.php:
- *
- * addPlugin(
- * 'Disqus', array(
- * 'shortname' => 'YOURSHORTNAME',
- * 'div_style' => 'width:675px; padding-top:10px; position:relative; float:left;'
- * )
- * );
- *
- * NOTE: the 'div_style' in an optional parameter that passes in some
- * inline CSS when creating the Disqus widget. It's a shortcut to make
- * the widget look OK with the default StatusNet theme. If you leave
- * it out you'll have to edit your theme CSS files to make the widget
- * look good. You can also control the way the widget looks by
- * adding style rules to your theme.
- *
- * See: http://help.disqus.com/entries/100878-css-customization
- *
- * @category Plugin
- * @package StatusNet
- * @author Zach Copley <zach@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class DisqusPlugin extends Plugin
-{
- function onEndShowContentBlock($action)
- {
- if (get_class($action) == 'ShownoticeAction') {
-
- $attrs = array();
- $attrs['id'] = 'disqus_thread';
-
- if ($this->div_style) {
- $attrs['style'] = $this->div_style;
- }
-
- $action->element('div', $attrs, null);
-
- $script = <<<ENDOFSCRIPT
-var disqus_identifier = %d;
- (function() {
- var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
- dsq.src = 'http://%s.disqus.com/embed.js';
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
- })();
-ENDOFSCRIPT;
-
- $action->inlineScript(sprintf($script, $action->notice->id, $this->shortname));
-
- $attrs = array();
-
- $attrs['id'] = 'disqus_thread_footer';
-
- if ($this->div_style) {
- $attrs['style'] = $this->div_style;
- }
-
- $action->elementStart('div', $attrs);
- $action->elementStart('noscript');
-
- $action->raw('Please enable JavaScript to view the ');
- $noscriptUrl = 'http://disqus.com/?ref_noscript=' . $this->shortname;
- $action->element('a', array('href' => $noscriptUrl), 'comments powered by Disqus.');
- $action->elementEnd('noscript');
-
- $action->elementStart('a', array('href' => 'http://disqus.com', 'class' => 'dsq-brlink'));
- $action->raw('blog comments powered by ');
- $action->element('span', array('class' => 'logo-disqus'), 'Disqus');
- $action->elementEnd('a');
- $action->elementEnd('div');
- }
- }
-
- function onEndShowScripts($action)
- {
- // fugly
- $script = <<<ENDOFSCRIPT
-var disqus_shortname = '%s';
-(function () {
- var s = document.createElement('script'); s.async = true;
- s.src = 'http://disqus.com/forums/%s/count.js';
- (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
-}());
-ENDOFSCRIPT;
- $action->inlineScript(sprintf($script, $this->shortname, $this->shortname));
-
- return true;
- }
-
- function onStartShowNoticeItem($noticeListItem)
- {
- if (empty($noticeListItem->notice->is_local)) {
- return true;
- }
-
- $noticeListItem->showNotice();
- $noticeListItem->showNoticeInfo();
-
- $noticeUrl = $noticeListItem->notice->bestUrl();
- $noticeUrl .= '#disqus_thread';
-
- $noticeListItem->out->element(
- 'a', array('href' => $noticeUrl, 'class' => 'disqus_count'), 'Comments'
- );
-
- $noticeListItem->showNoticeOptions();
- Event::handle('EndShowNoticeItem', array($noticeListItem));
-
- return false;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Disqus',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Zach Copley',
- 'homepage' => 'http://status.net/wiki/Plugin:Disqus',
- 'rawdescription' =>
- _m('Use <a href="http://disqus.com/">Disqus</a>'.
- ' to add commenting to notice pages.'));
- return true;
- }
-}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to add Echo/JS-Kit commenting to notice pages
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to use Echo (formerly JS-Kit)
+ *
+ * This plugin adds an Echo commenting widget to each notice page on
+ * your site. To get it to work, first you'll have to sign up for Echo
+ * (a for-pay service) and register your site's URL.
+ *
+ * http://aboutecho.com/
+ *
+ * Once you've done that it's pretty straight forward to turn the
+ * plugin on; just add this to your config.php:
+ *
+ * addPlugin(
+ * 'Echo',
+ * array('div_style' => 'width:675px; padding-top:10px; position:relative; float:left;')
+ * );
+ *
+ * NOTE: the 'div_style' in an optional parameter that passes in some
+ * inline CSS when creating the Echo widget. It's a shortcut to make
+ * the widget look OK with the default StatusNet theme. If you leave
+ * it out you'll have to edit your theme CSS files to make the widget
+ * look good. You can also control the way the widget looks by
+ * adding style rules to your theme.
+ *
+ * See: http://wiki.js-kit.com/Skinning-Guide#UsingCSSnbsptocustomizefontsandcolors
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+class EchoPlugin extends Plugin
+{
+ // NOTE: The Echo documentation says that this script will change on
+ // a per site basis, but I think that's incorrect. It always seems to
+ // be the same.
+ public $script = 'http://cdn.js-kit.com/scripts/comments.js';
+
+ function onEndShowScripts($action)
+ {
+ if (get_class($action) == 'ShownoticeAction') {
+ $action->script($this->script);
+ }
+
+ return true;
+ }
+
+ function onEndShowContentBlock($action)
+ {
+ if (get_class($action) == 'ShownoticeAction') {
+
+ $attrs = array();
+ $attrs['class'] = 'js-kit-comments';
+ $attrs['permalink'] = $action->notice->uri;
+ $attrs['uniq'] = $action->notice->id;
+
+ // NOTE: there are some other attributes that could be useful
+ // http://wiki.js-kit.com/Echo-Behavior
+
+ if (!empty($this->div_style)) {
+ $attrs['style'] = $this->div_style;
+ }
+
+ $action->element('div', $attrs, null);
+ }
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Echo',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Zach Copley',
+ 'homepage' => 'http://status.net/wiki/Plugin:Echo',
+ 'rawdescription' =>
+ _m('Use <a href="http://aboutecho.com/">Echo</a>'.
+ ' to add commenting to notice pages.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: EchoPlugin.php:112
+msgid ""
+"Use <a href=\"http://aboutecho.com/\">Echo</a> to add commenting to notice "
+"pages."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to add Echo/JS-Kit commenting to notice pages
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Zach Copley <zach@status.net>
- * @copyright 2010 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to use Echo (formerly JS-Kit)
- *
- * This plugin adds an Echo commenting widget to each notice page on
- * your site. To get it to work, first you'll have to sign up for Echo
- * (a for-pay service) and register your site's URL.
- *
- * http://aboutecho.com/
- *
- * Once you've done that it's pretty straight forward to turn the
- * plugin on; just add this to your config.php:
- *
- * addPlugin(
- * 'Echo',
- * array('div_style' => 'width:675px; padding-top:10px; position:relative; float:left;')
- * );
- *
- * NOTE: the 'div_style' in an optional parameter that passes in some
- * inline CSS when creating the Echo widget. It's a shortcut to make
- * the widget look OK with the default StatusNet theme. If you leave
- * it out you'll have to edit your theme CSS files to make the widget
- * look good. You can also control the way the widget looks by
- * adding style rules to your theme.
- *
- * See: http://wiki.js-kit.com/Skinning-Guide#UsingCSSnbsptocustomizefontsandcolors
- *
- * @category Plugin
- * @package StatusNet
- * @author Zach Copley <zach@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class EchoPlugin extends Plugin
-{
- // NOTE: The Echo documentation says that this script will change on
- // a per site basis, but I think that's incorrect. It always seems to
- // be the same.
- public $script = 'http://cdn.js-kit.com/scripts/comments.js';
-
- function onEndShowScripts($action)
- {
- if (get_class($action) == 'ShownoticeAction') {
- $action->script($this->script);
- }
-
- return true;
- }
-
- function onEndShowContentBlock($action)
- {
- if (get_class($action) == 'ShownoticeAction') {
-
- $attrs = array();
- $attrs['class'] = 'js-kit-comments';
- $attrs['permalink'] = $action->notice->uri;
- $attrs['uniq'] = $action->notice->id;
-
- // NOTE: there are some other attributes that could be useful
- // http://wiki.js-kit.com/Echo-Behavior
-
- if (!empty($this->div_style)) {
- $attrs['style'] = $this->div_style;
- }
-
- $action->element('div', $attrs, null);
- }
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Echo',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Zach Copley',
- 'homepage' => 'http://status.net/wiki/Plugin:Echo',
- 'rawdescription' =>
- _m('Use <a href="http://aboutecho.com/">Echo</a>'.
- ' to add commenting to notice pages.'));
- return true;
- }
-}
class EmailAuthenticationPlugin extends Plugin
{
//---interface implementation---//
-
function onStartCheckPassword($nickname, $password, &$authenticatedUser)
{
if(strpos($nickname, '@'))
return true;
}
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
return $response->isOk();
}
-
}
<?php
+/**
+ * @todo Add header and documentation
+ */
if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1);
*/
class FBC_XDReceiverAction extends Action
{
-
/**
* Do we need to write to the database?
*
* @return boolean true
*/
-
function isReadonly()
{
return true;
*
* @return void
*/
-
function handle($args)
{
// Parent handling, including cache check
$this->elementEnd('html');
}
-
}
-
parent::handle($args);
if (common_is_real_login()) {
-
// User is already logged in. Does she already have a linked Facebook acct?
$flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_CONNECT_SERVICE);
if (!empty($flink)) {
-
// User already has a linked Facebook account and shouldn't be here
common_debug('Facebook Connect Plugin - ' .
'There is already a local user (' . $flink->user_id .
// We don't want these cookies
getFacebook()->clear_cookie_state();
- $this->clientError(_m('There is already a local user linked with this Facebook.'));
-
+ $this->clientError(_m('There is already a local user linked with this Facebook account.'));
} else {
// User came from the Facebook connect settings tab, and
} else {
common_debug('Facebook Connect Plugin - ' .
print_r($this->args, true));
- $this->showForm(_m('Something weird happened.'),
+ $this->showForm(_m('An unknown error has occured.'),
$this->trimmed('newname'));
}
} else {
$this->element('div', array('class' => 'error'), $this->error);
} else {
$this->element('div', 'instructions',
+ // TRANS: %s is the site name.
sprintf(_m('This is the first time you\'ve logged into %s so we must connect your Facebook to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
}
}
function title()
{
+ // TRANS: Page title.
return _m('Facebook Account Setup');
}
'class' => 'form_settings',
'action' => common_local_url('FBConnectAuth')));
$this->elementStart('fieldset', array('id' => 'settings_facebook_connect_options'));
+ // TRANS: Legend.
$this->element('legend', null, _m('Connection options'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
'name' => 'license',
'value' => 'true'));
$this->elementStart('label', array('class' => 'checkbox', 'for' => 'license'));
- $message = _('My text and files are available under %s ' .
+ // TRANS: %s is the name of the license used by the user for their status updates.
+ $message = _m('My text and files are available under %s ' .
'except this private data: password, ' .
'email address, IM address, and phone number.');
$link = '<a href="' .
$this->elementStart('fieldset');
$this->hidden('token', common_session_token());
$this->element('legend', null,
+ // TRANS: Legend.
_m('Create new account'));
$this->element('p', null,
_m('Create a new user with this nickname.'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
+ // TRANS: Field label.
$this->input('newname', _m('New nickname'),
($this->username) ? $this->username : '',
_m('1-64 lowercase letters or numbers, no punctuation or spaces'));
$this->elementEnd('li');
$this->elementEnd('ul');
- $this->submit('create', _m('Create'));
+ // TRANS: Submit button.
+ $this->submit('create', _m('BUTTON','Create'));
$this->elementEnd('fieldset');
$this->elementStart('fieldset');
+ // TRANS: Legend.
$this->element('legend', null,
_m('Connect existing account'));
$this->element('p', null,
_m('If you already have an account, login with your username and password to connect it to your Facebook.'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
+ // TRANS: Field label.
$this->input('nickname', _m('Existing nickname'));
$this->elementEnd('li');
$this->elementStart('li');
$this->password('password', _m('Password'));
$this->elementEnd('li');
$this->elementEnd('ul');
- $this->submit('connect', _m('Connect'));
+ // TRANS: Submit button.
+ $this->submit('connect', _m('BUTTON','Connect'));
$this->elementEnd('fieldset');
$this->elementEnd('fieldset');
function createNewUser()
{
if (common_config('site', 'closed')) {
+ // TRANS: Client error trying to register with registrations not allowed.
$this->clientError(_m('Registration not allowed.'));
return;
}
if (common_config('site', 'inviteonly')) {
$code = $_SESSION['invitecode'];
if (empty($code)) {
+ // TRANS: Client error trying to register with registrations 'invite only'.
$this->clientError(_m('Registration not allowed.'));
return;
}
$invite = Invitation::staticGet($code);
if (empty($invite)) {
+ // TRANS: Client error trying to register with an invalid invitation code.
$this->clientError(_m('Not a valid invitation code.'));
return;
}
return null;
}
- // Given a string, try to make it work as a nickname
-
+ /**
+ * Given a string, try to make it work as a nickname
+ */
function nicknamize($str)
{
$str = preg_replace('/\W/', '', $str);
return null;
}
}
-
}
function getInstructions()
{
+ // TRANS: Instructions.
return _m('Login with your Facebook Account');
}
function title()
{
+ // TRANS: Page title.
return _m('Facebook Login');
}
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class FBConnectSettingsAction extends ConnectSettingsAction
{
/**
*
* @return string Title of the page
*/
-
function title()
{
+ // TRANS: Page title.
return _m('Facebook Connect Settings');
}
*
* @return instructions for use
*/
-
function getInstructions()
{
+ // TRANS: Instructions.
return _m('Manage how your account connects to Facebook');
}
*
* @return void
*/
-
function showContent()
{
$user = common_current_user();
$this->elementStart('fieldset');
+ // TRANS: Legend.
$this->element('legend', null, _m('Disconnect my account from Facebook'));
if (!$user->password) {
$this->elementStart('p', array('class' => 'form_guide'));
+ // @todo FIXME: Bad i18n. Patchwork message in three parts.
+ // TRANS: Followed by a link containing text "set a password".
$this->text(_m('Disconnecting your Faceboook ' .
'would make it impossible to log in! Please '));
$this->element('a',
array('href' => common_local_url('passwordsettings')),
+ // TRANS: Preceded by "Please " and followed by " first."
_m('set a password'));
-
+ // TRANS: Preceded by "Please set a password".
$this->text(_m(' first.'));
$this->elementEnd('p');
} else {
$this->element('p', 'instructions',
sprintf($note, $site, $site));
- $this->submit('disconnect', _m('Disconnect'));
+ // TRANS: Submit button.
+ $this->submit('disconnect', _m('BUTTON','Disconnect'));
}
$this->elementEnd('fieldset');
*
* @return void
*/
-
function handlePost()
{
// CSRF protection
$this->showForm(_m('Not sure what you\'re trying to do.'));
return;
}
-
}
-
}
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class FacebookPlugin extends Plugin
{
-
const VERSION = STATUSNET_VERSION;
/**
{
// Allow the key and secret to be passed in
// Control panel will override
-
if (isset($this->apikey)) {
$key = common_config('facebook', 'apikey');
if (empty($key)) {
*
* @return boolean result
*/
-
static function hasKeys()
{
$apiKey = common_config('facebook', 'apikey');
*
* @return boolean hook return
*/
-
function onStartInitializeRouter($m)
{
$m->connect('admin/facebook', array('action' => 'facebookadminpanel'));
if (self::hasKeys()) {
-
// Facebook App stuff
$m->connect('facebook/app', array('action' => 'facebookhome'));
* @return boolean hook return
*
*/
-
function onAutoload($cls)
{
switch ($cls) {
*
* @return boolean hook value
*/
-
function onEndAdminPanelNav($nav)
{
if (AdminPanelAction::canAdmin('facebook')) {
$nav->out->menuItem(
common_local_url('facebookadminpanel'),
- _m('Facebook'),
+ // TRANS: Menu item.
+ _m('MENU','Facebook'),
+ // TRANS: Tooltip for menu item "Facebook".
_m('Facebook integration configuration'),
$action_name == 'facebookadminpanel',
'nav_facebook_admin_panel'
*
* @return void
*/
-
function onStartShowHTML($action)
{
-
if ($this->reqFbScripts($action)) {
-
// XXX: Horrible hack to make Safari, FF2, and Chrome work with
// Facebook Connect. These browser cannot use Facebook's
// DOM parsing routines unless the mime type of the page is
'lang' => $language));
return false;
-
} else {
-
return true;
}
}
* @return void
*
*/
-
function onEndShowScripts($action)
{
if ($this->reqFbScripts($action)) {
$js = sprintf($js, $apikey, $login_url, $logout_url);
// Compress the bugger down a bit
-
$js = str_replace(' ', '', $js);
$action->inlineScript($js);
}
-
}
/**
* @return void
*
*/
-
function onEndShowFooter($action)
{
if ($this->reqFbScripts($action)) {
* @return void
*
*/
-
function onEndShowStatusNetStyles($action)
{
if ($this->reqFbScripts($action)) {
*
* @return boolean true
*/
-
function reqFbScripts($action)
{
if (!self::hasKeys()) {
}
// If you're logged in w/FB Connect, you always need the FB stuff
-
$fbuid = $this->loggedIn();
if (!empty($fbuid)) {
}
// List of actions that require FB stuff
-
$needy = array('FBConnectLoginAction',
'FBConnectauthAction',
'FBConnectSettingsAction');
}
return false;
-
}
/**
*
* @return mixed $fbuid the Facebook ID of the logged in user, or null
*/
-
function loggedIn()
{
$user = common_current_user();
$fbuid = 0;
if (!empty($flink)) {
-
try {
-
$facebook = getFacebook();
$fbuid = $facebook->get_loggedin_user();
-
} catch (Exception $e) {
common_log(LOG_WARNING, 'Facebook Connect Plugin - ' .
'Problem getting Facebook user: ' .
* @return void
*
*/
-
function onStartPrimaryNav($action)
{
if (self::hasKeys()) {
$user = common_current_user();
if (!empty($user)) {
-
$fbuid = $this->loggedIn();
if (!empty($fbuid)) {
-
/* Default FB silhouette pic for FB users who haven't
uploaded a profile pic yet. */
$action->element('img', array('id' => 'fbc_profile-pic',
'src' => (!empty($url)) ? $url : $silhouetteUrl,
- 'alt' => 'Facebook Connect User',
+ 'alt' => _m('Facebook Connect User'),
'width' => '16'), '');
$iconurl = common_path('plugins/Facebook/fbfavicon.ico');
*
* @return void
*/
-
function onEndLoginGroupNav(&$action)
{
if (self::hasKeys()) {
-
$action_name = $action->trimmed('action');
$action->menuItem(common_local_url('FBConnectLogin'),
- _m('Facebook'),
+ // @todo CHECKME: Should be 'Facebook Login'?
+ // TRANS: Menu item.
+ _m('MENU','Facebook'),
+ // TRANS: Tooltip for menu item "Facebook".
_m('Login or register using Facebook'),
'FBConnectLogin' === $action_name);
}
+
return true;
}
*
* @return void
*/
-
function onEndConnectSettingsNav(&$action)
{
if (self::hasKeys()) {
-
$action_name = $action->trimmed('action');
$action->menuItem(common_local_url('FBConnectSettings'),
- _m('Facebook'),
+ // @todo CHECKME: Should be 'Facebook Connect'?
+ // TRANS: Menu item tab.
+ _m('MENU','Facebook'),
+ // TRANS: Tooltip for menu item "Facebook".
_m('Facebook Connect Settings'),
$action_name === 'FBConnectSettings');
}
+
return true;
}
*
* @return void
*/
-
function onStartLogout($action)
{
if (self::hasKeys()) {
*
* @return string $url the url for the user's Facebook avatar
*/
-
function getProfilePicURL($fbuid)
{
$facebook = getFacebook();
$url = null;
try {
-
$fqry = 'SELECT pic_square FROM user WHERE uid = %s';
$result = $facebook->api_client->fql_query(sprintf($fqry, $fbuid));
*
* @return boolean hook return
*/
-
function onStartEnqueueNotice($notice, &$transports)
{
if (self::hasKeys() && $notice->isLocal()) {
'version' => self::VERSION,
'author' => 'Zach Copley',
'homepage' => 'http://status.net/wiki/Plugin:Facebook',
+ // TRANS: Plugin description.
'rawdescription' => _m(
- 'The Facebook plugin allows you to integrate ' .
- 'your StatusNet instance with ' .
+ 'The Facebook plugin allows integrating ' .
+ 'StatusNet instances with ' .
'<a href="http://facebook.com/">Facebook</a> ' .
'and Facebook Connect.'
)
);
return true;
}
-
}
class FacebookAction extends Action
{
-
var $facebook = null;
var $fbuid = null;
var $flink = null;
*
* @return void
*/
-
function startHTML($type=null)
{
$this->showStylesheets();
function showHead($error, $success)
{
-
if ($error) {
$this->element("h1", null, $error);
}
$this->elementStart('li', array('class' =>
($this->action == 'facebookhome') ? 'current' : 'facebook_home'));
$this->element('a',
- array('href' => 'index.php', 'title' => _m('Home')), _m('Home'));
+ // TRANS: Link description for 'Home' link that leads to a start page.
+ array('href' => 'index.php', 'title' => _m('MENU','Home')),
+ // TRANS: Tooltip for 'Home' link that leads to a start page.
+ _m('Home'));
$this->elementEnd('li');
if (common_config('invite', 'enabled')) {
array('class' =>
($this->action == 'facebookinvite') ? 'current' : 'facebook_invite'));
$this->element('a',
- array('href' => 'invite.php', 'title' => _m('Invite')), _m('Invite'));
+ // TRANS: Link description for 'Invite' link that leads to a page where friends can be invited.
+ array('href' => 'invite.php', 'title' => _m('MENU','Invite')),
+ // TRANS: Tooltip for 'Invite' link that leads to a page where friends can be invited.
+ _m('Invite'));
$this->elementEnd('li');
}
($this->action == 'facebooksettings') ? 'current' : 'facebook_settings'));
$this->element('a',
array('href' => 'settings.php',
- 'title' => _m('Settings')), _m('Settings'));
+ // TRANS: Link description for 'Settings' link that leads to a page user preferences can be set.
+ 'title' => _m('MENU','Settings')),
+ // TRANS: Tooltip for 'Settings' link that leads to a page user preferences can be set.
+ _m('Settings'));
$this->elementEnd('li');
$this->elementEnd('ul');
function showInstructions()
{
-
$this->elementStart('div', array('class' => 'facebook_guide'));
$this->elementStart('dl', array('class' => 'system_notice'));
$this->element('dt', null, 'Page Notice');
$loginmsg_part1 = _m('To use the %s Facebook Application you need to login ' .
- 'with your username and password. Don\'t have a username yet? ');
+ 'with your username and password. Don\'t have a username yet?');
$loginmsg_part2 = _m(' a new account.');
$this->elementStart('dd');
$this->elementStart('p');
$this->text(sprintf($loginmsg_part1, common_config('site', 'name')));
+ // @todo FIXME: Bad i18n. Patchwork message in two parts.
$this->element('a',
array('href' => common_local_url('register')), _m('Register'));
- $this->text($loginmsg_part2);
+ $this->text( " " . $loginmsg_part2);
$this->elementEnd('p');
$this->elementEnd('dd');
$this->elementEnd('li');
$this->elementEnd('ul');
- $this->submit('submit', _m('Login'));
+ // TRANS: Login button.
+ $this->submit('submit', _m('BUTTON','Login'));
$this->elementEnd('fieldset');
$this->elementEnd('form');
$this->elementEnd('div');
$this->elementEnd('div');
-
}
function updateProfileBox($notice)
function saveNewNotice()
{
-
$user = $this->flink->getUser();
$content = $this->trimmed('status_textarea');
$content_shortened = common_shorten_links($content);
if (Notice::contentTooLong($content_shortened)) {
+ // @todo FIXME: i18n: Needs plural.
$this->showPage(sprintf(_m('That\'s too long. Max notice size is %d chars.'),
Notice::maxContent()));
return;
$cmd = $inter->handle_command($user, $content_shortened);
if ($cmd) {
-
// XXX fix this
-
$cmd->execute(new WebChannel());
return;
}
}
}
-
}
class FacebookNoticeList extends NoticeList
{
-
/**
* constructor
*
*
* @return int count of notices listed.
*/
-
function show()
{
$this->out->elementStart('div', array('id' =>'notices_primary'));
* @return FacebookNoticeListItem a list item for displaying the notice
* formatted for display in the Facebook App.
*/
-
function newListItem($notice)
{
return new FacebookNoticeListItem($notice, $this);
}
-
}
class FacebookNoticeListItem extends NoticeListItem
{
-
/**
* constructor
*
*
* @param Notice $notice The notice we'll display
*/
-
function __construct($notice, $out=null)
{
parent::__construct($notice, $out);
*
* @return void
*/
-
function show()
{
$this->showStart();
$this->showEnd();
}
-
}
class FacebookProfileBoxNotice extends FacebookNoticeListItem
{
-
/**
* constructor
*
*
* @param Notice $notice The notice we'll display
*/
-
function __construct($notice, $out=null)
{
parent::__construct($notice, $out);
*
* @return void
*/
-
function show()
{
$this->showNotice();
function showAppLink()
{
-
$this->facebook = getFacebook();
$app_props = $this->facebook->api_client->Admin_getAppProperties(
$this->out->text($this->app_name);
$this->out->elementEnd('a');
}
-
}
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class FacebookadminpanelAction extends AdminPanelAction
{
/**
*
* @return string page title
*/
-
function title()
{
return _m('Facebook');
*
* @return string instructions
*/
-
function getInstructions()
{
return _m('Facebook integration settings');
*
* @return void
*/
-
function showForm()
{
$form = new FacebookAdminPanelForm($this);
*
* @return void
*/
-
function saveSettings()
{
static $settings = array(
}
// This throws an exception on validation errors
-
$this->validate($values);
// assert(all values are valid);
*
* @return int ID of the form
*/
-
function id()
{
return 'facebookadminpanel';
*
* @return string class of the form
*/
-
function formClass()
{
return 'form_settings';
*
* @return string URL of the action
*/
-
function action()
{
return common_local_url('facebookadminpanel');
*
* @return void
*/
-
function formData()
{
$this->out->elementStart(
*
* @return void
*/
-
function formActions()
{
- $this->out->submit('submit', _('Save'), 'submit', null, _('Save Facebook settings'));
+ $this->out->submit('submit', _m('Save'), 'submit', null, _m('Save Facebook settings'));
}
}
class FacebookhomeAction extends FacebookAction
{
-
var $page = null;
function prepare($argarray)
}
if ($this->flink) {
-
$this->user = $this->flink->getUser();
// If this is the first time the user has started the app
// Facebook status update permission? Then show the main page
// of the app
$this->showPage();
-
} else {
-
// User hasn't authenticated yet, prompt for creds
$this->login();
}
-
}
function login()
{
-
$this->showStylesheets();
$nickname = common_canonical_nickname($this->trimmed('nickname'));
$msg = null;
if ($nickname) {
-
if (common_check_user($nickname, $password)) {
-
$user = User::staticGet('nickname', $nickname);
if (!$user) {
- $this->showLoginForm(_m("Server error - couldn't get user!"));
+ $this->showLoginForm(_m("Server error: Couldn't get user!"));
}
$flink = DB_DataObject::factory('foreign_link');
$this->getUpdatePermission();
return;
-
} else {
$msg = _m('Incorrect username or password.');
}
$this->showLoginForm($msg);
$this->showFooter();
-
}
function setDefaults()
function title()
{
if ($this->page > 1) {
- return sprintf(_m("%s and friends, page %d"), $this->user->nickname, $this->page);
+ // @todo FIXME: Core should have methods to get "Full name (nickname)" in a localised form
+ // so that this can be used consistenly throughout StatusNet without having to implement it
+ // over and over..
+ // TRANS: Page title.
+ // TRANS: %1$s is a user nickname, %2$s is a page number.
+ return sprintf(_m("%1$s and friends, page %2$d"), $this->user->nickname, $this->page);
} else {
+ // TRANS: Page title.
+ // TRANS: %s is a user nickname
return sprintf(_m("%s and friends"), $this->user->nickname);
}
}
function showNoticeList($notice)
{
-
$nl = new NoticeList($notice, $this);
return $nl->show();
}
function getUpdatePermission() {
-
$this->showStylesheets();
$this->elementStart('div', array('class' => 'facebook_guide'));
+ // TRANS: Instructions. %s is the application name.
$instructions = sprintf(_m('If you would like the %s app to automatically update ' .
'your Facebook status with your latest notice, you need ' .
'to give it permission.'), $this->app_name);
'&next_cancel=' . $next . '&submit=skip';
$this->elementStart('span', array('class' => 'facebook-button'));
+ // @todo FIXME: sprintf not needed here?
$this->element('a', array('href' => $auth_url),
sprintf(_m('Okay, do it!'), $this->app_name));
$this->elementEnd('span');
$this->elementEnd('li');
$this->elementStart('li', array('id' => 'fb-permissions-item'));
- $this->submit('skip', _m('Skip'));
+ // TRANS: Button text. Clicking the button will skip updating Facebook permissions.
+ $this->submit('skip', _m('BUTTON','Skip'));
$this->elementEnd('li');
$this->elementEnd('ul');
$this->elementEnd('form');
$this->elementEnd('div');
-
}
/**
*/
function pagination($have_before, $have_after, $page, $action, $args=null)
{
-
// Does a little before-after block for next/prev page
// XXX: Fix so this uses common_local_url() if possible.
$newargs = $args ? array_merge($args, $pargs) : $pargs;
$this->elementStart('li', array('class' => 'nav_prev'));
$this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'prev'),
+ // TRANS: Pagination link.
_m('After'));
$this->elementEnd('li');
}
$newargs = $args ? array_merge($args, $pargs) : $pargs;
$this->elementStart('li', array('class' => 'nav_next'));
$this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'next'),
+ // TRANS: Pagination link.
_m('Before'));
$this->elementEnd('li');
}
$this->elementEnd('dl');
}
}
-
}
class FacebookinviteAction extends FacebookAction
{
-
function handle($args)
{
parent::handle($args);
*
* @return void
*/
-
function showForm($error=null)
{
$this->error = $error;
*
* @return void
*/
-
function showContent()
{
if ($this->arg('ids')) {
function showSuccessContent()
{
-
- $this->element('h2', null, sprintf(_m('Thanks for inviting your friends to use %s'),
+ // TRANS: %s is the name of the site.
+ $this->element('h2', null, sprintf(_m('Thanks for inviting your friends to use %s.'),
common_config('site', 'name')));
+ // TRANS: Followed by an unordered list with invited friends.
$this->element('p', null, _m('Invitations have been sent to the following users:'));
$friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list?
$this->elementEnd('li');
}
- $this->elementEnd("ul");
-
+ $this->elementEnd('ul');
}
function showFormContent()
'type' => common_config('site', 'name'),
'content' => $content));
$this->hidden('invite', 'true');
+ // TRANS: %s is the name of the site.
$actiontext = sprintf(_m('Invite your friends to use %s'), common_config('site', 'name'));
$multi_params = array('showborder' => 'false');
if ($exclude_ids) {
+ // TRANS: %s is the name of the site.
$this->element('h2', null, sprintf(_m('Friends already using %s:'),
common_config('site', 'name')));
$this->elementStart('ul', array('id' => 'facebook-friends'));
function title()
{
+ // TRANS: Page title.
return sprintf(_m('Send invitations'));
}
-
}
class FacebookinviteAction extends FacebookAction
{
-
function handle($args)
{
parent::handle($args);
$this->facebook->api_client->data_getUserPreference(
FACEBOOK_PROMPTED_UPDATE_PREF) == 'true') {
+ // @todo FIXME: Missing i18n?
echo '<h1>REDIRECT TO HOME</h1>';
}
} else {
function showContent()
{
-
// If the user has opted not to initially allow the app to have
// Facebook status update permission, store that preference. Only
// promt the user the first time she uses the app
}
if ($this->flink) {
-
$this->user = $this->flink->getUser();
// If this is the first time the user has started the app
return;
}
}
-
} else {
$this->showLoginForm();
}
function title()
{
+ // @todo FIXME: Give a more precise description? Suggestion: "Login with Facebook Connect"
+ // TRANS: Page title.
return sprintf(_m('Login'));
}
{
}
-
}
/**
* StatusNet, the distributed open-source microblogging tool
*
- * Form for posting a notice from within the Facebook App.
+ * Form for posting a notice from within the Facebook App.
*
* This is a stripped down version of the normal NoticeForm (sans
* location stuff and media upload stuff). I'm not sure we can share the
*
* @see HTMLOutputter
*/
-
class FacebookNoticeForm extends Form
{
/**
* Current action, used for returning to this page.
*/
-
var $action = null;
/**
* Pre-filled content of the form
*/
-
var $content = null;
/**
* The current user
*/
-
var $user = null;
/**
* The notice being replied to
*/
-
var $inreplyto = null;
/**
* @param string $action action to return to, if any
* @param string $content content to pre-fill
*/
-
function __construct($out=null, $action=null, $content=null, $post_action=null, $user=null, $inreplyto=null)
{
parent::__construct($out);
} else {
$this->user = common_current_user();
}
-
+
// Note: Facebook doesn't allow multipart/form-data posting to
// canvas pages, so don't try to set it--no file uploads, at
// least not this way. It can be done using multiple servers
*
* @return string ID of the form
*/
-
function id()
{
return 'form_notice';
*
* @return string class of the form
*/
-
function formClass()
{
return 'form_notice';
*
* @return string URL of the action
*/
-
function action()
{
return $this->post_action;
*/
function formLegend()
{
- $this->out->element('legend', null, _('Send a notice'));
+ // TRANS: Legend.
+ $this->out->element('legend', null, _m('Send a notice'));
}
/**
*
* @return void
*/
-
function formData()
{
if (Event::handle('StartShowNoticeFormData', array($this))) {
$this->out->element('label', array('for' => 'notice_data-text'),
- sprintf(_('What\'s up, %s?'), $this->user->nickname));
+ // TRANS: Field label.
+ sprintf(_m('What\'s up, %s?'), $this->user->nickname));
// XXX: vary by defined max size
$this->out->element('textarea', array('id' => 'notice_data-text',
'cols' => 35,
if ($contentLimit > 0) {
$this->out->elementStart('dl', 'form_note');
- $this->out->element('dt', null, _('Available characters'));
+ $this->out->element('dt', null, _m('Available characters'));
$this->out->element('dd', array('id' => 'notice_text-count'),
$contentLimit);
$this->out->elementEnd('dl');
*
* @return void
*/
-
function formActions()
{
$this->out->element('input', array('id' => 'notice_action-submit',
'class' => 'submit',
'name' => 'status_submit',
'type' => 'submit',
- 'value' => _('Send')));
+ // TRANS: Button text.
+ 'value' => _m('BUTTON','Send')));
}
}
class FacebookremoveAction extends FacebookAction
{
-
function handle($args)
{
parent::handle($args);
'unsuccessfully tried to remove a foreign link to Facebook!');
}
}
-
}
class FacebooksettingsAction extends FacebookAction
{
-
function handle($args)
{
parent::handle($args);
*
* @return void
*/
-
function showContent()
{
if ($this->arg('save')) {
if ($result === false) {
$this->showForm(_m('There was a problem saving your sync preferences!'));
} else {
+ // TRANS: Confirmation that synchronisation settings have been saved into the system.
$this->showForm(_m('Sync preferences saved.'), true);
}
}
$this->elementStart('li');
- $this->submit('save', _m('Save'));
+ // TRANS: Submit button to save synchronisation settings.
+ $this->submit('save', _m('BUTTON','Save'));
$this->elementEnd('li');
$this->elementEnd('ul');
$this->elementEnd('form');
-
} else {
-
+ // TRANS: %s is the application name.
$instructions = sprintf(_m('If you would like %s to automatically update ' .
'your Facebook status with your latest notice, you need ' .
'to give it permission.'), $this->app_name);
$this->elementEnd('li');
$this->elementEnd('ul');
}
-
}
function title()
{
+ // TRANS: Page title for synchronisation settings.
return _m('Sync preferences');
}
-
}
}
function isFacebookBound($notice, $flink) {
-
if (empty($flink)) {
return false;
}
// Avoid a loop
-
if ($notice->source == 'Facebook') {
common_log(LOG_INFO, "Skipping notice $notice->id because its " .
'source is Facebook.');
}
// If the user does not want to broadcast to Facebook, move along
-
if (!($flink->noticesync & FOREIGN_NOTICE_SEND == FOREIGN_NOTICE_SEND)) {
common_log(LOG_INFO, "Skipping notice $notice->id " .
'because user has FOREIGN_NOTICE_SEND bit off.');
// If it's not a reply, or if the user WANTS to send @-replies,
// then, yeah, it can go to Facebook.
-
if (!preg_match('/@[a-zA-Z0-9_]{1,15}\b/u', $notice->content) ||
($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY)) {
return true;
}
return false;
-
}
function facebookBroadcastNotice($notice)
);
if (isFacebookBound($notice, $flink)) {
-
// Okay, we're good to go, update the FB status
-
$fbuid = $flink->foreign_id;
$user = $flink->getUser();
try {
-
// Check permissions
-
common_debug(
'FacebookPlugin - checking for publish_stream permission for user '
. "$user->nickname ($user->id), Facebook UID: $fbuid"
// NOTE: $facebook->api_client->users_hasAppPermission('publish_stream', $fbuid)
// has been returning bogus results, so we're using FQL to check for
// publish_stream permission now
-
$fql = "SELECT publish_stream FROM permissions WHERE uid = $fbuid";
$result = $facebook->api_client->fql_query($fql);
}
// Post to Facebook
-
if ($notice->hasAttachments() && $canPublish == 1) {
publishStream($notice, $user, $fbuid);
} elseif ($canUpdate == 1 || $canPublish == 1) {
}
// Finally, attempt to update the user's profile box
-
if ($canPublish == 1 || $canUpdate == 1) {
updateProfileBox($facebook, $flink, $notice, $user);
}
common_log(LOG_WARNING, $msg);
}
-
}
/**
*
* @return boolean success flag
*/
-
function mail_facebook_app_removed($user)
{
$profile = $user->getProfile();
common_switch_locale();
return mail_to_user($user, $subject, $body);
-
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-19 15:29+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: facebookutil.php:439
+#: facebookutil.php:425
#, php-format
msgid ""
"Hi, %1$s. We're sorry to inform you that we are unable to update your "
msgid "You must be logged into Facebook to use Facebook Connect."
msgstr ""
-#: FBConnectAuth.php:77
-msgid "There is already a local user linked with this Facebook."
+#: FBConnectAuth.php:75
+msgid "There is already a local user linked with this Facebook account."
msgstr ""
-#: FBConnectAuth.php:90 FBConnectSettings.php:164
+#: FBConnectAuth.php:87 FBConnectSettings.php:166
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: FBConnectAuth.php:95
+#: FBConnectAuth.php:92
msgid "You can't register if you don't agree to the license."
msgstr ""
-#: FBConnectAuth.php:105
-msgid "Something weird happened."
+#: FBConnectAuth.php:102
+msgid "An unknown error has occured."
msgstr ""
-#: FBConnectAuth.php:119
+#. TRANS: %s is the site name.
+#: FBConnectAuth.php:117
#, php-format
msgid ""
"This is the first time you've logged into %s so we must connect your "
"with your existing account, if you have one."
msgstr ""
-#: FBConnectAuth.php:125
+#. TRANS: Page title.
+#: FBConnectAuth.php:124
msgid "Facebook Account Setup"
msgstr ""
+#. TRANS: Legend.
#: FBConnectAuth.php:158
msgid "Connection options"
msgstr ""
-#: FBConnectAuth.php:183
-msgid "Create new account"
+#. TRANS: %s is the name of the license used by the user for their status updates.
+#: FBConnectAuth.php:168
+#, php-format
+msgid ""
+"My text and files are available under %s except this private data: password, "
+"email address, IM address, and phone number."
msgstr ""
+#. TRANS: Legend.
#: FBConnectAuth.php:185
+msgid "Create new account"
+msgstr ""
+
+#: FBConnectAuth.php:187
msgid "Create a new user with this nickname."
msgstr ""
-#: FBConnectAuth.php:188
+#. TRANS: Field label.
+#: FBConnectAuth.php:191
msgid "New nickname"
msgstr ""
-#: FBConnectAuth.php:190
+#: FBConnectAuth.php:193
msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
msgstr ""
-#: FBConnectAuth.php:193
+#. TRANS: Submit button.
+#: FBConnectAuth.php:197
+msgctxt "BUTTON"
msgid "Create"
msgstr ""
-#: FBConnectAuth.php:198
+#: FBConnectAuth.php:203
msgid "Connect existing account"
msgstr ""
-#: FBConnectAuth.php:200
+#: FBConnectAuth.php:205
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your Facebook."
msgstr ""
-#: FBConnectAuth.php:203
+#. TRANS: Field label.
+#: FBConnectAuth.php:209
msgid "Existing nickname"
msgstr ""
-#: FBConnectAuth.php:206 facebookaction.php:271
+#: FBConnectAuth.php:212 facebookaction.php:277
msgid "Password"
msgstr ""
-#: FBConnectAuth.php:209
+#. TRANS: Submit button.
+#: FBConnectAuth.php:216
+msgctxt "BUTTON"
msgid "Connect"
msgstr ""
-#: FBConnectAuth.php:225 FBConnectAuth.php:234
+#. TRANS: Client error trying to register with registrations not allowed.
+#. TRANS: Client error trying to register with registrations 'invite only'.
+#: FBConnectAuth.php:233 FBConnectAuth.php:243
msgid "Registration not allowed."
msgstr ""
-#: FBConnectAuth.php:241
+#. TRANS: Client error trying to register with an invalid invitation code.
+#: FBConnectAuth.php:251
msgid "Not a valid invitation code."
msgstr ""
-#: FBConnectAuth.php:251
+#: FBConnectAuth.php:261
msgid "Nickname must have only lowercase letters and numbers and no spaces."
msgstr ""
-#: FBConnectAuth.php:256
+#: FBConnectAuth.php:266
msgid "Nickname not allowed."
msgstr ""
-#: FBConnectAuth.php:261
+#: FBConnectAuth.php:271
msgid "Nickname already in use. Try another one."
msgstr ""
-#: FBConnectAuth.php:279 FBConnectAuth.php:313 FBConnectAuth.php:333
+#: FBConnectAuth.php:289 FBConnectAuth.php:323 FBConnectAuth.php:343
msgid "Error connecting user to Facebook."
msgstr ""
-#: FBConnectAuth.php:299
+#: FBConnectAuth.php:309
msgid "Invalid username or password."
msgstr ""
-#: facebooklogin.php:91 facebookaction.php:249 facebookaction.php:275
+#. TRANS: Page title.
+#: facebooklogin.php:90 facebookaction.php:255
msgid "Login"
msgstr ""
-#: facebookhome.php:111
-msgid "Server error - couldn't get user!"
+#. TRANS: Legend.
+#: facebooknoticeform.php:144
+msgid "Send a notice"
msgstr ""
-#: facebookhome.php:131
-msgid "Incorrect username or password."
+#. TRANS: Field label.
+#: facebooknoticeform.php:157
+#, php-format
+msgid "What's up, %s?"
msgstr ""
-#: facebookhome.php:158
-#, php-format
-msgid "%s and friends, page %d"
+#: facebooknoticeform.php:169
+msgid "Available characters"
+msgstr ""
+
+#. TRANS: Button text.
+#: facebooknoticeform.php:196
+msgctxt "BUTTON"
+msgid "Send"
msgstr ""
-#: facebookhome.php:160
+#: facebookhome.php:103
+msgid "Server error: Couldn't get user!"
+msgstr ""
+
+#: facebookhome.php:122
+msgid "Incorrect username or password."
+msgstr ""
+
+#. TRANS: Page title.
+#. TRANS: %s is a user nickname
+#: facebookhome.php:157
#, php-format
msgid "%s and friends"
msgstr ""
-#: facebookhome.php:189
+#. TRANS: Instructions. %s is the application name.
+#: facebookhome.php:185
#, php-format
msgid ""
"If you would like the %s app to automatically update your Facebook status "
"with your latest notice, you need to give it permission."
msgstr ""
-#: facebookhome.php:213
+#: facebookhome.php:210
msgid "Okay, do it!"
msgstr ""
-#: facebookhome.php:219
+#. TRANS: Button text. Clicking the button will skip updating Facebook permissions.
+#: facebookhome.php:217
+msgctxt "BUTTON"
msgid "Skip"
msgstr ""
-#: facebookhome.php:248 facebookaction.php:330
+#: facebookhome.php:244 facebookaction.php:336
msgid "Pagination"
msgstr ""
-#: facebookhome.php:257 facebookaction.php:339
+#. TRANS: Pagination link.
+#: facebookhome.php:254 facebookaction.php:345
msgid "After"
msgstr ""
-#: facebookhome.php:265 facebookaction.php:347
+#. TRANS: Pagination link.
+#: facebookhome.php:263 facebookaction.php:353
msgid "Before"
msgstr ""
-#: facebookinvite.php:72
+#. TRANS: %s is the name of the site.
+#: facebookinvite.php:69
#, php-format
-msgid "Thanks for inviting your friends to use %s"
+msgid "Thanks for inviting your friends to use %s."
msgstr ""
-#: facebookinvite.php:74
+#. TRANS: Followed by an unordered list with invited friends.
+#: facebookinvite.php:72
msgid "Invitations have been sent to the following users:"
msgstr ""
-#: facebookinvite.php:94
+#: facebookinvite.php:91
#, php-format
msgid "You have been invited to %s"
msgstr ""
-#: facebookinvite.php:103
+#. TRANS: %s is the name of the site.
+#: facebookinvite.php:101
#, php-format
msgid "Invite your friends to use %s"
msgstr ""
-#: facebookinvite.php:125
+#. TRANS: %s is the name of the site.
+#: facebookinvite.php:124
#, php-format
msgid "Friends already using %s:"
msgstr ""
+#. TRANS: Page title.
#: facebookinvite.php:143
msgid "Send invitations"
msgstr ""
-#: FacebookPlugin.php:195 FacebookPlugin.php:488 FacebookPlugin.php:510
-#: facebookadminpanel.php:54
+#. TRANS: Menu item.
+#. TRANS: Menu item tab.
+#: FacebookPlugin.php:188 FacebookPlugin.php:461 FacebookPlugin.php:485
+msgctxt "MENU"
msgid "Facebook"
msgstr ""
-#: FacebookPlugin.php:196
+#. TRANS: Tooltip for menu item "Facebook".
+#: FacebookPlugin.php:190
msgid "Facebook integration configuration"
msgstr ""
-#: FacebookPlugin.php:489
+#: FacebookPlugin.php:431
+msgid "Facebook Connect User"
+msgstr ""
+
+#. TRANS: Tooltip for menu item "Facebook".
+#: FacebookPlugin.php:463
msgid "Login or register using Facebook"
msgstr ""
-#: FacebookPlugin.php:511 FBConnectSettings.php:56
+#. TRANS: Tooltip for menu item "Facebook".
+#. TRANS: Page title.
+#: FacebookPlugin.php:487 FBConnectSettings.php:55
msgid "Facebook Connect Settings"
msgstr ""
-#: FacebookPlugin.php:617
+#: FacebookPlugin.php:591
msgid ""
-"The Facebook plugin allows you to integrate your StatusNet instance with <a "
-"href=\"http://facebook.com/\">Facebook</a> and Facebook Connect."
+"The Facebook plugin allows integrating StatusNet instances with <a href="
+"\"http://facebook.com/\">Facebook</a> and Facebook Connect."
msgstr ""
#: FBConnectLogin.php:33
msgid "Already logged in."
msgstr ""
-#: FBConnectLogin.php:41
+#. TRANS: Instructions.
+#: FBConnectLogin.php:42
msgid "Login with your Facebook Account"
msgstr ""
-#: FBConnectLogin.php:55
+#. TRANS: Page title.
+#: FBConnectLogin.php:57
msgid "Facebook Login"
msgstr ""
-#: facebookremove.php:58
+#: facebookremove.php:57
msgid "Couldn't remove Facebook user."
msgstr ""
+#. TRANS: Link description for 'Home' link that leads to a start page.
+#: facebookaction.php:169
+msgctxt "MENU"
+msgid "Home"
+msgstr ""
+
+#. TRANS: Tooltip for 'Home' link that leads to a start page.
#: facebookaction.php:171
msgid "Home"
msgstr ""
-#: facebookaction.php:179
+#. TRANS: Link description for 'Invite' link that leads to a page where friends can be invited.
+#: facebookaction.php:180
+msgctxt "MENU"
+msgid "Invite"
+msgstr ""
+
+#. TRANS: Tooltip for 'Invite' link that leads to a page where friends can be invited.
+#: facebookaction.php:182
msgid "Invite"
msgstr ""
-#: facebookaction.php:188
+#. TRANS: Link description for 'Settings' link that leads to a page user preferences can be set.
+#: facebookaction.php:192
+msgctxt "MENU"
+msgid "Settings"
+msgstr ""
+
+#. TRANS: Tooltip for 'Settings' link that leads to a page user preferences can be set.
+#: facebookaction.php:194
msgid "Settings"
msgstr ""
-#: facebookaction.php:228
+#: facebookaction.php:233
#, php-format
msgid ""
"To use the %s Facebook Application you need to login with your username and "
-"password. Don't have a username yet? "
+"password. Don't have a username yet?"
msgstr ""
-#: facebookaction.php:230
+#: facebookaction.php:235
msgid " a new account."
msgstr ""
-#: facebookaction.php:236
+#: facebookaction.php:242
msgid "Register"
msgstr ""
-#: facebookaction.php:268
+#: facebookaction.php:274
msgid "Nickname"
msgstr ""
-#: facebookaction.php:281
+#. TRANS: Login button.
+#: facebookaction.php:282
+msgctxt "BUTTON"
+msgid "Login"
+msgstr ""
+
+#: facebookaction.php:288
msgid "Lost or forgotten password?"
msgstr ""
-#: facebookaction.php:365
+#: facebookaction.php:370
msgid "No notice content!"
msgstr ""
-#: facebookaction.php:371
+#: facebookaction.php:377
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
-#: facebookaction.php:430
+#: facebookaction.php:431
msgid "Notices"
msgstr ""
-#: facebookadminpanel.php:65
+#: facebookadminpanel.php:52
+msgid "Facebook"
+msgstr ""
+
+#: facebookadminpanel.php:62
msgid "Facebook integration settings"
msgstr ""
-#: facebookadminpanel.php:129
+#: facebookadminpanel.php:123
msgid "Invalid Facebook API key. Max length is 255 characters."
msgstr ""
-#: facebookadminpanel.php:135
+#: facebookadminpanel.php:129
msgid "Invalid Facebook API secret. Max length is 255 characters."
msgstr ""
-#: facebookadminpanel.php:188
+#: facebookadminpanel.php:178
msgid "Facebook application settings"
msgstr ""
-#: facebookadminpanel.php:194
+#: facebookadminpanel.php:184
msgid "API key"
msgstr ""
-#: facebookadminpanel.php:195
+#: facebookadminpanel.php:185
msgid "API key provided by Facebook"
msgstr ""
-#: facebookadminpanel.php:203
+#: facebookadminpanel.php:193
msgid "Secret"
msgstr ""
-#: facebookadminpanel.php:204
+#: facebookadminpanel.php:194
msgid "API secret provided by Facebook"
msgstr ""
-#: FBConnectSettings.php:67
+#: facebookadminpanel.php:210
+msgid "Save"
+msgstr ""
+
+#: facebookadminpanel.php:210
+msgid "Save Facebook settings"
+msgstr ""
+
+#. TRANS: Instructions.
+#: FBConnectSettings.php:66
msgid "Manage how your account connects to Facebook"
msgstr ""
-#: FBConnectSettings.php:92
+#: FBConnectSettings.php:90
msgid "There is no Facebook user connected to this account."
msgstr ""
-#: FBConnectSettings.php:100
+#: FBConnectSettings.php:98
msgid "Connected Facebook user"
msgstr ""
-#: FBConnectSettings.php:119
+#. TRANS: Legend.
+#: FBConnectSettings.php:118
msgid "Disconnect my account from Facebook"
msgstr ""
-#: FBConnectSettings.php:124
+#. TRANS: Followed by a link containing text "set a password".
+#: FBConnectSettings.php:125
msgid ""
"Disconnecting your Faceboook would make it impossible to log in! Please "
msgstr ""
-#: FBConnectSettings.php:128
+#. TRANS: Preceded by "Please " and followed by " first."
+#: FBConnectSettings.php:130
msgid "set a password"
msgstr ""
-#: FBConnectSettings.php:130
+#. TRANS: Preceded by "Please set a password".
+#: FBConnectSettings.php:132
msgid " first."
msgstr ""
-#: FBConnectSettings.php:142
+#. TRANS: Submit button.
+#: FBConnectSettings.php:145
+msgctxt "BUTTON"
msgid "Disconnect"
msgstr ""
-#: FBConnectSettings.php:178
+#: FBConnectSettings.php:180
msgid "Couldn't delete link to Facebook."
msgstr ""
-#: FBConnectSettings.php:194
+#: FBConnectSettings.php:196
msgid "You have disconnected from Facebook."
msgstr ""
-#: FBConnectSettings.php:197
+#: FBConnectSettings.php:199
msgid "Not sure what you're trying to do."
msgstr ""
-#: facebooksettings.php:63
+#: facebooksettings.php:61
msgid "There was a problem saving your sync preferences!"
msgstr ""
-#: facebooksettings.php:65
+#. TRANS: Confirmation that synchronisation settings have been saved into the system.
+#: facebooksettings.php:64
msgid "Sync preferences saved."
msgstr ""
-#: facebooksettings.php:88
+#: facebooksettings.php:87
msgid "Automatically update my Facebook status with my notices."
msgstr ""
-#: facebooksettings.php:95
+#: facebooksettings.php:94
msgid "Send \"@\" replies to Facebook."
msgstr ""
+#. TRANS: Submit button to save synchronisation settings.
#: facebooksettings.php:102
+msgctxt "BUTTON"
msgid "Save"
msgstr ""
-#: facebooksettings.php:112
+#. TRANS: %s is the application name.
+#: facebooksettings.php:111
#, php-format
msgid ""
"If you would like %s to automatically update your Facebook status with your "
"latest notice, you need to give it permission."
msgstr ""
-#: facebooksettings.php:125
+#: facebooksettings.php:124
#, php-format
msgid "Allow %s to update my Facebook status"
msgstr ""
-#: facebooksettings.php:135
+#. TRANS: Page title for synchronisation settings.
+#: facebooksettings.php:134
msgid "Sync preferences"
msgstr ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to add ICBM metadata to HTML pages and report data to GeoURL.org
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to add ICBM metadata to HTML pages and report data to GeoURL.org
+ *
+ * Adds metadata to notice and profile pages that geourl.org and others
+ * understand. Also, pings geourl.org when a new notice is saved or
+ * a profile is changed.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @seeAlso Location
+ */
+class GeoURLPlugin extends Plugin
+{
+ public $ping = 'http://geourl.org/ping/';
+
+ /**
+ * Add extra <meta> headers for certain pages that geourl.org understands
+ *
+ * @param Action $action page being shown
+ *
+ * @return boolean event handler flag
+ */
+ function onEndShowHeadElements($action)
+ {
+ $name = $action->trimmed('action');
+
+ $location = null;
+
+ if ($name == 'showstream') {
+ $profile = $action->profile;
+ if (!empty($profile) && !empty($profile->lat) && !empty($profile->lon)) {
+ $location = $profile->lat . ', ' . $profile->lon;
+ }
+ } else if ($name == 'shownotice') {
+ $notice = $action->profile;
+ if (!empty($notice) && !empty($notice->lat) && !empty($notice->lon)) {
+ $location = $notice->lat . ', ' . $notice->lon;
+ }
+ }
+
+ if (!empty($location)) {
+ $action->element('meta', array('name' => 'ICBM',
+ 'content' => $location));
+ $action->element('meta', array('name' => 'DC.title',
+ 'content' => $action->title()));
+ }
+
+ return true;
+ }
+
+ /**
+ * Report local notices to GeoURL.org when they're created
+ *
+ * @param Notice &$notice queued notice
+ *
+ * @return boolean event handler flag
+ */
+ function onHandleQueuedNotice(&$notice)
+ {
+ if ($notice->is_local == 1) {
+
+ $request = HTTPClient::start();
+
+ $url = common_local_url('shownotice',
+ array('notice' => $notice->id));
+
+ try {
+ $request->post($this->ping,
+ null,
+ array('p' => $url));
+ } catch (HTTP_Request2_Exception $e) {
+ common_log(LOG_WARNING,
+ "GeoURL.org ping failed for '$url' ($this->ping)");
+ }
+ }
+
+ return true;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'GeoURL',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:GeoURL',
+ 'rawdescription' =>
+ _m('Ping <a href="http://geourl.org/">GeoURL</a> when '.
+ 'new geolocation-enhanced notices are posted.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: GeoURLPlugin.php:127
+msgid ""
+"Ping <a href=\"http://geourl.org/\">GeoURL</a> when new geolocation-enhanced "
+"notices are posted."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to add ICBM metadata to HTML pages and report data to GeoURL.org
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Action
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to add ICBM metadata to HTML pages and report data to GeoURL.org
- *
- * Adds metadata to notice and profile pages that geourl.org and others
- * understand. Also, pings geourl.org when a new notice is saved or
- * a profile is changed.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @seeAlso Location
- */
-
-class GeoURLPlugin extends Plugin
-{
- public $ping = 'http://geourl.org/ping/';
-
- /**
- * Add extra <meta> headers for certain pages that geourl.org understands
- *
- * @param Action $action page being shown
- *
- * @return boolean event handler flag
- */
-
- function onEndShowHeadElements($action)
- {
- $name = $action->trimmed('action');
-
- $location = null;
-
- if ($name == 'showstream') {
- $profile = $action->profile;
- if (!empty($profile) && !empty($profile->lat) && !empty($profile->lon)) {
- $location = $profile->lat . ', ' . $profile->lon;
- }
- } else if ($name == 'shownotice') {
- $notice = $action->profile;
- if (!empty($notice) && !empty($notice->lat) && !empty($notice->lon)) {
- $location = $notice->lat . ', ' . $notice->lon;
- }
- }
-
- if (!empty($location)) {
- $action->element('meta', array('name' => 'ICBM',
- 'content' => $location));
- $action->element('meta', array('name' => 'DC.title',
- 'content' => $action->title()));
- }
-
- return true;
- }
-
- /**
- * Report local notices to GeoURL.org when they're created
- *
- * @param Notice &$notice queued notice
- *
- * @return boolean event handler flag
- */
-
- function onHandleQueuedNotice(&$notice)
- {
- if ($notice->is_local == 1) {
-
- $request = HTTPClient::start();
-
- $url = common_local_url('shownotice',
- array('notice' => $notice->id));
-
- try {
- $request->post($this->ping,
- null,
- array('p' => $url));
- } catch (HTTP_Request2_Exception $e) {
- common_log(LOG_WARNING,
- "GeoURL.org ping failed for '$url' ($this->ping)");
- }
- }
-
- return true;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'GeoURL',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:GeoURL',
- 'rawdescription' =>
- _m('Ping <a href="http://geourl.org/">GeoURL</a> when '.
- 'new geolocation-enhanced notices are posted.'));
- return true;
- }
-}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to convert string locations to Geonames IDs and vice versa
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to convert string locations to Geonames IDs and vice versa
+ *
+ * This handles most of the events that Location class emits. It uses
+ * the geonames.org Web service to convert names like 'Montreal, Quebec, Canada'
+ * into IDs and lat/lon pairs.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @seeAlso Location
+ */
+class GeonamesPlugin extends Plugin
+{
+ const LOCATION_NS = 1;
+
+ public $host = 'ws.geonames.org';
+ public $username = null;
+ public $token = null;
+ public $expiry = 7776000; // 90-day expiry
+ public $timeout = 2; // Web service timeout in seconds.
+ public $timeoutWindow = 60; // Further lookups in this process will be disabled for N seconds after a timeout.
+ public $cachePrefix = null; // Optional shared memcache prefix override
+ // to share lookups between local instances.
+
+ protected $lastTimeout = null; // timestamp of last web service timeout
+
+ /**
+ * convert a name into a Location object
+ *
+ * @param string $name Name to convert
+ * @param string $language ISO code for anguage the name is in
+ * @param Location &$location Location object (may be null)
+ *
+ * @return boolean whether to continue (results in $location)
+ */
+ function onLocationFromName($name, $language, &$location)
+ {
+ $loc = $this->getCache(array('name' => $name,
+ 'language' => $language));
+
+ if ($loc !== false) {
+ $location = $loc;
+ return false;
+ }
+
+ try {
+ $geonames = $this->getGeonames('search',
+ array('maxRows' => 1,
+ 'q' => $name,
+ 'lang' => $language,
+ 'type' => 'xml'));
+ } catch (Exception $e) {
+ $this->log(LOG_WARNING, "Error for $name: " . $e->getMessage());
+ return true;
+ }
+
+ if (count($geonames) == 0) {
+ // no results
+ $this->setCache(array('name' => $name,
+ 'language' => $language),
+ null);
+ return true;
+ }
+
+ $n = $geonames[0];
+
+ $location = new Location();
+
+ $location->lat = $this->canonical($n->lat);
+ $location->lon = $this->canonical($n->lng);
+ $location->names[$language] = (string)$n->name;
+ $location->location_id = (string)$n->geonameId;
+ $location->location_ns = self::LOCATION_NS;
+
+ $this->setCache(array('name' => $name,
+ 'language' => $language),
+ $location);
+
+ // handled, don't continue processing!
+ return false;
+ }
+
+ /**
+ * convert an id into a Location object
+ *
+ * @param string $id Name to convert
+ * @param string $ns Name to convert
+ * @param string $language ISO code for language for results
+ * @param Location &$location Location object (may be null)
+ *
+ * @return boolean whether to continue (results in $location)
+ */
+ function onLocationFromId($id, $ns, $language, &$location)
+ {
+ if ($ns != self::LOCATION_NS) {
+ // It's not one of our IDs... keep processing
+ return true;
+ }
+
+ $loc = $this->getCache(array('id' => $id));
+
+ if ($loc !== false) {
+ $location = $loc;
+ return false;
+ }
+
+ try {
+ $geonames = $this->getGeonames('hierarchy',
+ array('geonameId' => $id,
+ 'lang' => $language));
+ } catch (Exception $e) {
+ $this->log(LOG_WARNING, "Error for ID $id: " . $e->getMessage());
+ return false;
+ }
+
+ $parts = array();
+
+ foreach ($geonames as $level) {
+ if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+ $parts[] = (string)$level->name;
+ }
+ }
+
+ $last = $geonames[count($geonames)-1];
+
+ if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+ $parts[] = (string)$last->name;
+ }
+
+ $location = new Location();
+
+ $location->location_id = (string)$last->geonameId;
+ $location->location_ns = self::LOCATION_NS;
+ $location->lat = $this->canonical($last->lat);
+ $location->lon = $this->canonical($last->lng);
+
+ $location->names[$language] = implode(', ', array_reverse($parts));
+
+ $this->setCache(array('id' => (string)$last->geonameId),
+ $location);
+
+ // We're responsible for this namespace; nobody else
+ // can resolve it
+
+ return false;
+ }
+
+ /**
+ * convert a lat/lon pair into a Location object
+ *
+ * Given a lat/lon, we try to find a Location that's around
+ * it or nearby. We prefer populated places (cities, towns, villages).
+ *
+ * @param string $lat Latitude
+ * @param string $lon Longitude
+ * @param string $language ISO code for language for results
+ * @param Location &$location Location object (may be null)
+ *
+ * @return boolean whether to continue (results in $location)
+ */
+ function onLocationFromLatLon($lat, $lon, $language, &$location)
+ {
+ // Make sure they're canonical
+
+ $lat = $this->canonical($lat);
+ $lon = $this->canonical($lon);
+
+ $loc = $this->getCache(array('lat' => $lat,
+ 'lon' => $lon));
+
+ if ($loc !== false) {
+ $location = $loc;
+ return false;
+ }
+
+ try {
+ $geonames = $this->getGeonames('findNearbyPlaceName',
+ array('lat' => $lat,
+ 'lng' => $lon,
+ 'lang' => $language));
+ } catch (Exception $e) {
+ $this->log(LOG_WARNING, "Error for coords $lat, $lon: " . $e->getMessage());
+ return true;
+ }
+
+ if (count($geonames) == 0) {
+ // no results
+ $this->setCache(array('lat' => $lat,
+ 'lon' => $lon),
+ null);
+ return true;
+ }
+
+ $n = $geonames[0];
+
+ $parts = array();
+
+ $location = new Location();
+
+ $parts[] = (string)$n->name;
+
+ if (!empty($n->adminName1)) {
+ $parts[] = (string)$n->adminName1;
+ }
+
+ if (!empty($n->countryName)) {
+ $parts[] = (string)$n->countryName;
+ }
+
+ $location->location_id = (string)$n->geonameId;
+ $location->location_ns = self::LOCATION_NS;
+ $location->lat = $this->canonical($n->lat);
+ $location->lon = $this->canonical($n->lng);
+
+ $location->names[$language] = implode(', ', $parts);
+
+ $this->setCache(array('lat' => $lat,
+ 'lon' => $lon),
+ $location);
+
+ // Success! We handled it, so no further processing
+
+ return false;
+ }
+
+ /**
+ * Human-readable name for a location
+ *
+ * Given a location, we try to retrieve a human-readable name
+ * in the target language.
+ *
+ * @param Location $location Location to get the name for
+ * @param string $language ISO code for language to find name in
+ * @param string &$name Place to put the name
+ *
+ * @return boolean whether to continue
+ */
+ function onLocationNameLanguage($location, $language, &$name)
+ {
+ if ($location->location_ns != self::LOCATION_NS) {
+ // It's not one of our IDs... keep processing
+ return true;
+ }
+
+ $id = $location->location_id;
+
+ $n = $this->getCache(array('id' => $id,
+ 'language' => $language));
+
+ if ($n !== false) {
+ $name = $n;
+ return false;
+ }
+
+ try {
+ $geonames = $this->getGeonames('hierarchy',
+ array('geonameId' => $id,
+ 'lang' => $language));
+ } catch (Exception $e) {
+ $this->log(LOG_WARNING, "Error for ID $id: " . $e->getMessage());
+ return false;
+ }
+
+ if (count($geonames) == 0) {
+ $this->setCache(array('id' => $id,
+ 'language' => $language),
+ null);
+ return false;
+ }
+
+ $parts = array();
+
+ foreach ($geonames as $level) {
+ if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+ $parts[] = (string)$level->name;
+ }
+ }
+
+ $last = $geonames[count($geonames)-1];
+
+ if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+ $parts[] = (string)$last->name;
+ }
+
+ if (count($parts)) {
+ $name = implode(', ', array_reverse($parts));
+ $this->setCache(array('id' => $id,
+ 'language' => $language),
+ $name);
+ }
+
+ return false;
+ }
+
+ /**
+ * Human-readable URL for a location
+ *
+ * Given a location, we try to retrieve a geonames.org URL.
+ *
+ * @param Location $location Location to get the url for
+ * @param string &$url Place to put the url
+ *
+ * @return boolean whether to continue
+ */
+ function onLocationUrl($location, &$url)
+ {
+ if ($location->location_ns != self::LOCATION_NS) {
+ // It's not one of our IDs... keep processing
+ return true;
+ }
+
+ $url = 'http://www.geonames.org/' . $location->location_id;
+
+ // it's been filled, so don't process further.
+ return false;
+ }
+
+ /**
+ * Machine-readable name for a location
+ *
+ * Given a location, we try to retrieve a geonames.org URL.
+ *
+ * @param Location $location Location to get the url for
+ * @param string &$url Place to put the url
+ *
+ * @return boolean whether to continue
+ */
+ function onLocationRdfUrl($location, &$url)
+ {
+ if ($location->location_ns != self::LOCATION_NS) {
+ // It's not one of our IDs... keep processing
+ return true;
+ }
+
+ $url = 'http://sws.geonames.org/' . $location->location_id . '/';
+
+ // it's been filled, so don't process further.
+ return false;
+ }
+
+ function getCache($attrs)
+ {
+ $c = common_memcache();
+
+ if (empty($c)) {
+ return null;
+ }
+
+ $key = $this->cacheKey($attrs);
+
+ $value = $c->get($key);
+
+ return $value;
+ }
+
+ function setCache($attrs, $loc)
+ {
+ $c = common_memcache();
+
+ if (empty($c)) {
+ return null;
+ }
+
+ $key = $this->cacheKey($attrs);
+
+ $result = $c->set($key, $loc, 0, time() + $this->expiry);
+
+ return $result;
+ }
+
+ function cacheKey($attrs)
+ {
+ $key = 'geonames:' .
+ implode(',', array_keys($attrs)) . ':'.
+ common_keyize(implode(',', array_values($attrs)));
+ if ($this->cachePrefix) {
+ return $this->cachePrefix . ':' . $key;
+ } else {
+ return common_cache_key($key);
+ }
+ }
+
+ function wsUrl($method, $params)
+ {
+ if (!empty($this->username)) {
+ $params['username'] = $this->username;
+ }
+
+ if (!empty($this->token)) {
+ $params['token'] = $this->token;
+ }
+
+ $str = http_build_query($params, null, '&');
+
+ return 'http://'.$this->host.'/'.$method.'?'.$str;
+ }
+
+ function getGeonames($method, $params)
+ {
+ if ($this->lastTimeout && (time() - $this->lastTimeout < $this->timeoutWindow)) {
+ throw new Exception("skipping due to recent web service timeout");
+ }
+
+ $client = HTTPClient::start();
+ $client->setConfig('connect_timeout', $this->timeout);
+ $client->setConfig('timeout', $this->timeout);
+
+ try {
+ $result = $client->get($this->wsUrl($method, $params));
+ } catch (Exception $e) {
+ common_log(LOG_ERR, __METHOD__ . ": " . $e->getMessage());
+ $this->lastTimeout = time();
+ throw $e;
+ }
+
+ if (!$result->isOk()) {
+ throw new Exception("HTTP error code " . $result->getStatus());
+ }
+
+ $body = $result->getBody();
+
+ if (empty($body)) {
+ throw new Exception("Empty HTTP body in response");
+ }
+
+ // This will throw an exception if the XML is mal-formed
+
+ $document = new SimpleXMLElement($body);
+
+ // No children, usually no results
+
+ $children = $document->children();
+
+ if (count($children) == 0) {
+ return array();
+ }
+
+ if (isset($document->status)) {
+ throw new Exception("Error #".$document->status['value']." ('".$document->status['message']."')");
+ }
+
+ // Array of elements, >0 elements
+
+ return $document->geoname;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Geonames',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:Geonames',
+ 'rawdescription' =>
+ _m('Uses <a href="http://geonames.org/">Geonames</a> service to get human-readable '.
+ 'names for locations based on user-provided lat/long pairs.'));
+ return true;
+ }
+
+ function canonical($coord)
+ {
+ $coord = rtrim($coord, "0");
+ $coord = rtrim($coord, ".");
+
+ return $coord;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: GeonamesPlugin.php:498
+msgid ""
+"Uses <a href=\"http://geonames.org/\">Geonames</a> service to get human-"
+"readable names for locations based on user-provided lat/long pairs."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to convert string locations to Geonames IDs and vice versa
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Action
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to convert string locations to Geonames IDs and vice versa
- *
- * This handles most of the events that Location class emits. It uses
- * the geonames.org Web service to convert names like 'Montreal, Quebec, Canada'
- * into IDs and lat/lon pairs.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @seeAlso Location
- */
-
-class GeonamesPlugin extends Plugin
-{
- const LOCATION_NS = 1;
-
- public $host = 'ws.geonames.org';
- public $username = null;
- public $token = null;
- public $expiry = 7776000; // 90-day expiry
- public $timeout = 2; // Web service timeout in seconds.
- public $timeoutWindow = 60; // Further lookups in this process will be disabled for N seconds after a timeout.
- public $cachePrefix = null; // Optional shared memcache prefix override
- // to share lookups between local instances.
-
- protected $lastTimeout = null; // timestamp of last web service timeout
-
- /**
- * convert a name into a Location object
- *
- * @param string $name Name to convert
- * @param string $language ISO code for anguage the name is in
- * @param Location &$location Location object (may be null)
- *
- * @return boolean whether to continue (results in $location)
- */
-
- function onLocationFromName($name, $language, &$location)
- {
- $loc = $this->getCache(array('name' => $name,
- 'language' => $language));
-
- if ($loc !== false) {
- $location = $loc;
- return false;
- }
-
- try {
- $geonames = $this->getGeonames('search',
- array('maxRows' => 1,
- 'q' => $name,
- 'lang' => $language,
- 'type' => 'xml'));
- } catch (Exception $e) {
- $this->log(LOG_WARNING, "Error for $name: " . $e->getMessage());
- return true;
- }
-
- if (count($geonames) == 0) {
- // no results
- $this->setCache(array('name' => $name,
- 'language' => $language),
- null);
- return true;
- }
-
- $n = $geonames[0];
-
- $location = new Location();
-
- $location->lat = $this->canonical($n->lat);
- $location->lon = $this->canonical($n->lng);
- $location->names[$language] = (string)$n->name;
- $location->location_id = (string)$n->geonameId;
- $location->location_ns = self::LOCATION_NS;
-
- $this->setCache(array('name' => $name,
- 'language' => $language),
- $location);
-
- // handled, don't continue processing!
- return false;
- }
-
- /**
- * convert an id into a Location object
- *
- * @param string $id Name to convert
- * @param string $ns Name to convert
- * @param string $language ISO code for language for results
- * @param Location &$location Location object (may be null)
- *
- * @return boolean whether to continue (results in $location)
- */
-
- function onLocationFromId($id, $ns, $language, &$location)
- {
- if ($ns != self::LOCATION_NS) {
- // It's not one of our IDs... keep processing
- return true;
- }
-
- $loc = $this->getCache(array('id' => $id));
-
- if ($loc !== false) {
- $location = $loc;
- return false;
- }
-
- try {
- $geonames = $this->getGeonames('hierarchy',
- array('geonameId' => $id,
- 'lang' => $language));
- } catch (Exception $e) {
- $this->log(LOG_WARNING, "Error for ID $id: " . $e->getMessage());
- return false;
- }
-
- $parts = array();
-
- foreach ($geonames as $level) {
- if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
- $parts[] = (string)$level->name;
- }
- }
-
- $last = $geonames[count($geonames)-1];
-
- if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
- $parts[] = (string)$last->name;
- }
-
- $location = new Location();
-
- $location->location_id = (string)$last->geonameId;
- $location->location_ns = self::LOCATION_NS;
- $location->lat = $this->canonical($last->lat);
- $location->lon = $this->canonical($last->lng);
-
- $location->names[$language] = implode(', ', array_reverse($parts));
-
- $this->setCache(array('id' => (string)$last->geonameId),
- $location);
-
- // We're responsible for this namespace; nobody else
- // can resolve it
-
- return false;
- }
-
- /**
- * convert a lat/lon pair into a Location object
- *
- * Given a lat/lon, we try to find a Location that's around
- * it or nearby. We prefer populated places (cities, towns, villages).
- *
- * @param string $lat Latitude
- * @param string $lon Longitude
- * @param string $language ISO code for language for results
- * @param Location &$location Location object (may be null)
- *
- * @return boolean whether to continue (results in $location)
- */
-
- function onLocationFromLatLon($lat, $lon, $language, &$location)
- {
- // Make sure they're canonical
-
- $lat = $this->canonical($lat);
- $lon = $this->canonical($lon);
-
- $loc = $this->getCache(array('lat' => $lat,
- 'lon' => $lon));
-
- if ($loc !== false) {
- $location = $loc;
- return false;
- }
-
- try {
- $geonames = $this->getGeonames('findNearbyPlaceName',
- array('lat' => $lat,
- 'lng' => $lon,
- 'lang' => $language));
- } catch (Exception $e) {
- $this->log(LOG_WARNING, "Error for coords $lat, $lon: " . $e->getMessage());
- return true;
- }
-
- if (count($geonames) == 0) {
- // no results
- $this->setCache(array('lat' => $lat,
- 'lon' => $lon),
- null);
- return true;
- }
-
- $n = $geonames[0];
-
- $parts = array();
-
- $location = new Location();
-
- $parts[] = (string)$n->name;
-
- if (!empty($n->adminName1)) {
- $parts[] = (string)$n->adminName1;
- }
-
- if (!empty($n->countryName)) {
- $parts[] = (string)$n->countryName;
- }
-
- $location->location_id = (string)$n->geonameId;
- $location->location_ns = self::LOCATION_NS;
- $location->lat = $this->canonical($n->lat);
- $location->lon = $this->canonical($n->lng);
-
- $location->names[$language] = implode(', ', $parts);
-
- $this->setCache(array('lat' => $lat,
- 'lon' => $lon),
- $location);
-
- // Success! We handled it, so no further processing
-
- return false;
- }
-
- /**
- * Human-readable name for a location
- *
- * Given a location, we try to retrieve a human-readable name
- * in the target language.
- *
- * @param Location $location Location to get the name for
- * @param string $language ISO code for language to find name in
- * @param string &$name Place to put the name
- *
- * @return boolean whether to continue
- */
-
- function onLocationNameLanguage($location, $language, &$name)
- {
- if ($location->location_ns != self::LOCATION_NS) {
- // It's not one of our IDs... keep processing
- return true;
- }
-
- $id = $location->location_id;
-
- $n = $this->getCache(array('id' => $id,
- 'language' => $language));
-
- if ($n !== false) {
- $name = $n;
- return false;
- }
-
- try {
- $geonames = $this->getGeonames('hierarchy',
- array('geonameId' => $id,
- 'lang' => $language));
- } catch (Exception $e) {
- $this->log(LOG_WARNING, "Error for ID $id: " . $e->getMessage());
- return false;
- }
-
- if (count($geonames) == 0) {
- $this->setCache(array('id' => $id,
- 'language' => $language),
- null);
- return false;
- }
-
- $parts = array();
-
- foreach ($geonames as $level) {
- if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
- $parts[] = (string)$level->name;
- }
- }
-
- $last = $geonames[count($geonames)-1];
-
- if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
- $parts[] = (string)$last->name;
- }
-
- if (count($parts)) {
- $name = implode(', ', array_reverse($parts));
- $this->setCache(array('id' => $id,
- 'language' => $language),
- $name);
- }
-
- return false;
- }
-
- /**
- * Human-readable URL for a location
- *
- * Given a location, we try to retrieve a geonames.org URL.
- *
- * @param Location $location Location to get the url for
- * @param string &$url Place to put the url
- *
- * @return boolean whether to continue
- */
-
- function onLocationUrl($location, &$url)
- {
- if ($location->location_ns != self::LOCATION_NS) {
- // It's not one of our IDs... keep processing
- return true;
- }
-
- $url = 'http://www.geonames.org/' . $location->location_id;
-
- // it's been filled, so don't process further.
- return false;
- }
-
- /**
- * Machine-readable name for a location
- *
- * Given a location, we try to retrieve a geonames.org URL.
- *
- * @param Location $location Location to get the url for
- * @param string &$url Place to put the url
- *
- * @return boolean whether to continue
- */
-
- function onLocationRdfUrl($location, &$url)
- {
- if ($location->location_ns != self::LOCATION_NS) {
- // It's not one of our IDs... keep processing
- return true;
- }
-
- $url = 'http://sws.geonames.org/' . $location->location_id . '/';
-
- // it's been filled, so don't process further.
- return false;
- }
-
- function getCache($attrs)
- {
- $c = common_memcache();
-
- if (empty($c)) {
- return null;
- }
-
- $key = $this->cacheKey($attrs);
-
- $value = $c->get($key);
-
- return $value;
- }
-
- function setCache($attrs, $loc)
- {
- $c = common_memcache();
-
- if (empty($c)) {
- return null;
- }
-
- $key = $this->cacheKey($attrs);
-
- $result = $c->set($key, $loc, 0, time() + $this->expiry);
-
- return $result;
- }
-
- function cacheKey($attrs)
- {
- $key = 'geonames:' .
- implode(',', array_keys($attrs)) . ':'.
- common_keyize(implode(',', array_values($attrs)));
- if ($this->cachePrefix) {
- return $this->cachePrefix . ':' . $key;
- } else {
- return common_cache_key($key);
- }
- }
-
- function wsUrl($method, $params)
- {
- if (!empty($this->username)) {
- $params['username'] = $this->username;
- }
-
- if (!empty($this->token)) {
- $params['token'] = $this->token;
- }
-
- $str = http_build_query($params, null, '&');
-
- return 'http://'.$this->host.'/'.$method.'?'.$str;
- }
-
- function getGeonames($method, $params)
- {
- if ($this->lastTimeout && (time() - $this->lastTimeout < $this->timeoutWindow)) {
- throw new Exception("skipping due to recent web service timeout");
- }
-
- $client = HTTPClient::start();
- $client->setConfig('connect_timeout', $this->timeout);
- $client->setConfig('timeout', $this->timeout);
-
- try {
- $result = $client->get($this->wsUrl($method, $params));
- } catch (Exception $e) {
- common_log(LOG_ERR, __METHOD__ . ": " . $e->getMessage());
- $this->lastTimeout = time();
- throw $e;
- }
-
- if (!$result->isOk()) {
- throw new Exception("HTTP error code " . $result->getStatus());
- }
-
- $body = $result->getBody();
-
- if (empty($body)) {
- throw new Exception("Empty HTTP body in response");
- }
-
- // This will throw an exception if the XML is mal-formed
-
- $document = new SimpleXMLElement($body);
-
- // No children, usually no results
-
- $children = $document->children();
-
- if (count($children) == 0) {
- return array();
- }
-
- if (isset($document->status)) {
- throw new Exception("Error #".$document->status['value']." ('".$document->status['message']."')");
- }
-
- // Array of elements, >0 elements
-
- return $document->geoname;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Geonames',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:Geonames',
- 'rawdescription' =>
- _m('Uses <a href="http://geonames.org/">Geonames</a> service to get human-readable '.
- 'names for locations based on user-provided lat/long pairs.'));
- return true;
- }
-
- function canonical($coord)
- {
- $coord = rtrim($coord, "0");
- $coord = rtrim($coord, ".");
-
- return $coord;
- }
-}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to use Google Analytics
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2008 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to use Google Analytics
+ *
+ * This plugin will spoot out the correct JavaScript spell to invoke Google Analytics on a page.
+ *
+ * Note that Google Analytics is not compatible with the Franklin Street Statement; consider using
+ * Piwik (http://www.piwik.org/) instead!
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+class GoogleAnalyticsPlugin extends Plugin
+{
+ var $code = null;
+
+ function __construct($code=null)
+ {
+ $this->code = $code;
+ parent::__construct();
+ }
+
+ function onEndShowScripts($action)
+ {
+ $js1 = 'var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");'.
+ 'document.write(unescape("%3Cscript src=\'" + gaJsHost + "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));';
+ $js2 = sprintf('try{'.
+ 'var pageTracker = _gat._getTracker("%s");'.
+ 'pageTracker._trackPageview();'.
+ '} catch(err) {}',
+ $this->code);
+ $action->inlineScript($js1);
+ $action->inlineScript($js2);
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'GoogleAnalytics',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:GoogleAnalytics',
+ 'rawdescription' =>
+ _m('Use <a href="http://www.google.com/analytics/">Google Analytics</a>'.
+ ' to track web access.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-19 15:29+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"
+
+#: GoogleAnalyticsPlugin.php:80
+msgid ""
+"Use <a href=\"http://www.google.com/analytics/\">Google Analytics</a> to "
+"track web access."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to use Google Analytics
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2008 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to use Google Analytics
- *
- * This plugin will spoot out the correct JavaScript spell to invoke Google Analytics on a page.
- *
- * Note that Google Analytics is not compatible with the Franklin Street Statement; consider using
- * Piwik (http://www.piwik.org/) instead!
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class GoogleAnalyticsPlugin extends Plugin
-{
- var $code = null;
-
- function __construct($code=null)
- {
- $this->code = $code;
- parent::__construct();
- }
-
- function onEndShowScripts($action)
- {
- $js1 = 'var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");'.
- 'document.write(unescape("%3Cscript src=\'" + gaJsHost + "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));';
- $js2 = sprintf('try{'.
- 'var pageTracker = _gat._getTracker("%s");'.
- 'pageTracker._trackPageview();'.
- '} catch(err) {}',
- $this->code);
- $action->inlineScript($js1);
- $action->inlineScript($js2);
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'GoogleAnalytics',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:GoogleAnalytics',
- 'rawdescription' =>
- _m('Use <a href="http://www.google.com/analytics/">Google Analytics</a>'.
- ' to track Web access.'));
- return true;
- }
-}
{
return true;
}
-
+
function onStartAvatarFormData($action)
{
$user = common_current_user();
$hasGravatar = $this->hasGravatar($user->id);
-
+
if($hasGravatar) {
return false;
}
}
-
+
function onEndAvatarFormData($action)
{
$user = common_current_user();
_m('To use a Gravatar first enter in an email address.'));
}
}
-
+
function onStartAvatarSaveForm($action)
{
if ($action->arg('add')) {
}
return false;
}
-
function gravatar_save()
{
$cur = common_current_user();
-
+
if(empty($cur->email)) {
- return array('message' => _m('You do not have a email set in your profile.'),
+ return array('message' => _m('You do not have an email address set in your profile.'),
'success' => false);
}
//Get rid of previous Avatar
$this->gravatar_remove();
-
+
foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
$gravatar = new Avatar();
$gravatar->profile_id = $cur->id;
$gravatar->created = DB_DataObject_Cast::dateTime(); # current time
if (!$gravatar->insert()) {
- return array('message' => _m('Failed to save Gravatar to the DB.'),
+ return array('message' => _m('Failed to save Gravatar to the database.'),
'success' => false);
}
}
return array('message' => _m('Gravatar removed.'),
'success' => true);
}
-
+
function gravatar_url($email, $size)
{
$url = "http://www.gravatar.com/avatar.php?gravatar_id=".
return true;
}
-}
\ No newline at end of file
+}
ToDo:
Site default all on for gravatar by default
Migration Script
-Localize
\ No newline at end of file
+Localize
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
msgstr ""
#: GravatarPlugin.php:141
-msgid "You do not have a email set in your profile."
+msgid "You do not have an email address set in your profile."
msgstr ""
#: GravatarPlugin.php:159
-msgid "Failed to save Gravatar to the DB."
+msgid "Failed to save Gravatar to the database."
msgstr ""
#: GravatarPlugin.php:163
function initialize(){
if(!isset($this->mailbox)){
- throw new Exception("must specify a mailbox");
+ throw new Exception(_m("A mailbox must be specified."));
}
if(!isset($this->user)){
- throw new Exception("must specify a user");
+ throw new Exception(_m("A user must be specified.");
}
if(!isset($this->password)){
- throw new Exception("must specify a password");
+ throw new Exception(_m("A password must be specified."));
}
if(!isset($this->poll_frequency)){
- throw new Exception("must specify a poll_frequency");
+ throw new Exception(_m("A poll_frequency must be specified."));
}
return true;
*/
public static function get()
{
- throw new Exception('ImapManager should be created using it\'s constructor, not the static get method');
+ throw new Exception(_m('ImapManager should be created using its constructor, not the using the static get method.'));
}
/**
{
return $this->check_mailbox() > 0;
}
-
+
function pollInterval()
{
return $this->plugin->poll_frequency;
}
-
+
protected function connect()
{
$this->conn = imap_open($this->plugin->mailbox, $this->plugin->user, $this->plugin->password);
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
msgid "Error"
msgstr ""
+#: ImapPlugin.php:54
+msgid "A mailbox must be specified."
+msgstr ""
+
+#: ImapPlugin.php:57
+msgid "A user must be specified."
+msgstr ""
+
+#: ImapPlugin.php:60
+msgid "A password must be specified."
+msgstr ""
+
+#: ImapPlugin.php:63
+msgid "A poll_frequency must be specified."
+msgstr ""
+
#: ImapPlugin.php:103
msgid ""
"The IMAP plugin allows for StatusNet to check a POP or IMAP mailbox for "
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
$this->ldap_config = $this->get_ldap_config();
if(!isset($this->host)){
- throw new Exception("must specify a host");
+ throw new Exception(_m("A host must be specified."));
}
if(!isset($this->basedn)){
- throw new Exception("must specify a basedn");
+ throw new Exception(_m('"basedn" must be specified.'));
}
if(!isset($this->attributes['username'])){
- throw new Exception("username attribute must be set.");
+ throw new Exception(_m('The username attribute must be set.'));
}
}
if(!$entry){
return false;
}else{
+ if(empty($password)) {
+ //NET_LDAP2 will do an anonymous bind if bindpw is not set / empty string
+ //which causes all login attempts that involve a blank password to appear
+ //to succeed. Which is obviously not good.
+ return false;
+ }
$config = $this->get_ldap_config();
$config['binddn']=$entry->dn();
$config['bindpw']=$password;
$ldap = $this->get_ldap_connection($config);
$entry = $this->get_user($username,array(),$ldap);
-
+
$newCryptedPassword = $this->hashPassword($newpassword, $this->password_encoding);
if ($newCryptedPassword===false) {
return false;
* @return string The hashed password.
*
*/
-
- function hashPassword( $passwordClear, $encodageType )
+ function hashPassword( $passwordClear, $encodageType )
{
$encodageType = strtolower( $encodageType );
switch( $encodageType ) {
- case 'crypt':
- $cryptedPassword = '{CRYPT}' . crypt($passwordClear,$this->randomSalt(2));
+ case 'crypt':
+ $cryptedPassword = '{CRYPT}' . crypt($passwordClear,$this->randomSalt(2));
break;
-
+
case 'ext_des':
// extended des crypt. see OpenBSD crypt man page.
if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 ) {return FALSE;} //Your system crypt library does not support extended DES encryption.
* @param int $length The length of the salt string to generate.
* @return string The generated salt string.
*/
-
- function randomSalt( $length )
+ function randomSalt( $length )
{
$possible = '0123456789'.
'abcdefghijklmnopqrstuvwxyz'.
return $str;
}
-
}
class LdapInvalidCredentialsException extends Exception
{
-
}
<?php
-/**
+/**
* StatusNet, the distributed open-source microblogging tool
*
* Cache the LDAP schema in memcache to improve performance
protected $cacheKey;
/**
- * Initialize the simple cache
- *
- * Config is as following:
- * memcache memcache instance
- * cachekey the key in the cache to look at
- *
- * @param array $cfg Config array
- */
+ * Initialize the simple cache
+ *
+ * Config is as following:
+ * memcache memcache instance
+ * cachekey the key in the cache to look at
+ *
+ * @param array $cfg Config array
+ */
public function MemcacheSchemaCache($cfg)
{
$this->c = $cfg['c'];
}
/**
- * Store a schema object in the cache
- *
- * This method will be called, if Net_LDAP2 has fetched a fresh
- * schema object from LDAP and wants to init or refresh the cache.
- *
- * To invalidate the cache and cause Net_LDAP2 to refresh the cache,
- * you can call this method with null or false as value.
- * The next call to $ldap->schema() will then refresh the caches object.
- *
- * @param mixed $schema The object that should be cached
- * @return true|Net_LDAP2_Error|false
- */
+ * Store a schema object in the cache
+ *
+ * This method will be called, if Net_LDAP2 has fetched a fresh
+ * schema object from LDAP and wants to init or refresh the cache.
+ *
+ * To invalidate the cache and cause Net_LDAP2 to refresh the cache,
+ * you can call this method with null or false as value.
+ * The next call to $ldap->schema() will then refresh the caches object.
+ *
+ * @param mixed $schema The object that should be cached
+ * @return true|Net_LDAP2_Error|false
+ */
public function storeSchema($schema) {
return $this->c->set($this->cacheKey, $schema);
}
function onInitializePlugin(){
parent::onInitializePlugin();
if(!isset($this->serviceUrl)){
- throw new Exception("must specify a serviceUrl");
+ throw new Exception(_m('A serviceUrl must be specified.'));
}
}
return true;
}
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to do linkbacks for notices containing links
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+require_once('Auth/Yadis/Yadis.php');
+
+define('LINKBACKPLUGIN_VERSION', '0.1');
+
+/**
+ * Plugin to do linkbacks for notices containing URLs
+ *
+ * After new notices are saved, we check their text for URLs. If there
+ * are URLs, we test each URL to see if it supports any
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+class LinkbackPlugin extends Plugin
+{
+ var $notice = null;
+
+ function __construct()
+ {
+ parent::__construct();
+ }
+
+ function onHandleQueuedNotice($notice)
+ {
+ if ($notice->is_local == 1) {
+ // Try to avoid actually mucking with the
+ // notice content
+ $c = $notice->content;
+ $this->notice = $notice;
+ // Ignoring results
+ common_replace_urls_callback($c,
+ array($this, 'linkbackUrl'));
+ }
+ return true;
+ }
+
+ function linkbackUrl($url)
+ {
+ common_log(LOG_DEBUG,"Attempting linkback for " . $url);
+
+ $orig = $url;
+ $url = htmlspecialchars_decode($orig);
+ $scheme = parse_url($url, PHP_URL_SCHEME);
+ if (!in_array($scheme, array('http', 'https'))) {
+ return $orig;
+ }
+
+ // XXX: Do a HEAD first to save some time/bandwidth
+
+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
+
+ $result = $fetcher->get($url,
+ array('User-Agent: ' . $this->userAgent(),
+ 'Accept: application/html+xml,text/html'));
+
+ if (!in_array($result->status, array('200', '206'))) {
+ return $orig;
+ }
+
+ $pb = null;
+ $tb = null;
+
+ if (array_key_exists('X-Pingback', $result->headers)) {
+ $pb = $result->headers['X-Pingback'];
+ } else if (preg_match('/<link rel="pingback" href="([^"]+)" ?\/?>/',
+ $result->body,
+ $match)) {
+ $pb = $match[1];
+ }
+
+ if (!empty($pb)) {
+ $this->pingback($result->final_url, $pb);
+ } else {
+ $tb = $this->getTrackback($result->body, $result->final_url);
+ if (!empty($tb)) {
+ $this->trackback($result->final_url, $tb);
+ }
+ }
+
+ return $orig;
+ }
+
+ function pingback($url, $endpoint)
+ {
+ $args = array($this->notice->uri, $url);
+
+ if (!extension_loaded('xmlrpc')) {
+ if (!dl('xmlrpc.so')) {
+ common_log(LOG_ERR, "Can't pingback; xmlrpc extension not available.");
+ return;
+ }
+ }
+
+ $request = HTTPClient::start();
+ try {
+ $response = $request->post($endpoint,
+ array('Content-Type: text/xml'),
+ xmlrpc_encode_request('pingback.ping', $args));
+ $response = xmlrpc_decode($response->getBody());
+ if (xmlrpc_is_fault($response)) {
+ common_log(LOG_WARNING,
+ "Pingback error for '$url' ($endpoint): ".
+ "$response[faultString] ($response[faultCode])");
+ } else {
+ common_log(LOG_INFO,
+ "Pingback success for '$url' ($endpoint): ".
+ "'$response'");
+ }
+ } catch (HTTP_Request2_Exception $e) {
+ common_log(LOG_WARNING,
+ "Pingback request failed for '$url' ($endpoint)");
+ }
+ }
+
+ // Largely cadged from trackback_cls.php by
+ // Ran Aroussi <ran@blogish.org>, GPL2 or any later version
+ // http://phptrackback.sourceforge.net/
+ function getTrackback($text, $url)
+ {
+ if (preg_match_all('/(<rdf:RDF.*?<\/rdf:RDF>)/sm', $text, $match, PREG_SET_ORDER)) {
+ for ($i = 0; $i < count($match); $i++) {
+ if (preg_match('|dc:identifier="' . preg_quote($url) . '"|ms', $match[$i][1])) {
+ $rdf_array[] = trim($match[$i][1]);
+ }
+ }
+
+ // Loop through the RDFs array and extract trackback URIs
+
+ $tb_array = array(); // <- holds list of trackback URIs
+
+ if (!empty($rdf_array)) {
+
+ for ($i = 0; $i < count($rdf_array); $i++) {
+ if (preg_match('/trackback:ping="([^"]+)"/', $rdf_array[$i], $array)) {
+ $tb_array[] = trim($array[1]);
+ break;
+ }
+ }
+ }
+
+ // Return Trackbacks
+
+ if (empty($tb_array)) {
+ return null;
+ } else {
+ return $tb_array[0];
+ }
+ }
+
+ if (preg_match_all('/(<a[^>]*?rel=[\'"]trackback[\'"][^>]*?>)/', $text, $match)) {
+ foreach ($match[1] as $atag) {
+ if (preg_match('/href=[\'"]([^\'"]*?)[\'"]/', $atag, $url)) {
+ return $url[1];
+ }
+ }
+ }
+
+ return null;
+
+ }
+
+ function trackback($url, $endpoint)
+ {
+ $profile = $this->notice->getProfile();
+
+ $args = array('title' => sprintf(_('%1$s\'s status on %2$s'),
+ $profile->nickname,
+ common_exact_date($this->notice->created)),
+ 'excerpt' => $this->notice->content,
+ 'url' => $this->notice->uri,
+ 'blog_name' => $profile->nickname);
+
+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
+
+ $result = $fetcher->post($endpoint,
+ http_build_query($args),
+ array('User-Agent: ' . $this->userAgent()));
+
+ if ($result->status != '200') {
+ common_log(LOG_WARNING,
+ "Trackback error for '$url' ($endpoint): ".
+ "$result->body");
+ } else {
+ common_log(LOG_INFO,
+ "Trackback success for '$url' ($endpoint): ".
+ "'$result->body'");
+ }
+ }
+
+ function userAgent()
+ {
+ return 'LinkbackPlugin/'.LINKBACKPLUGIN_VERSION .
+ ' StatusNet/' . STATUSNET_VERSION;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Linkback',
+ 'version' => LINKBACKPLUGIN_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:Linkback',
+ 'rawdescription' =>
+ _m('Notify blog authors when their posts have been linked in '.
+ 'microblog notices using '.
+ '<a href="http://www.hixie.ch/specs/pingback/pingback">Pingback</a> '.
+ 'or <a href="http://www.movabletype.org/docs/mttrackback.html">Trackback</a> protocols.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: LinkbackPlugin.php:243
+msgid ""
+"Notify blog authors when their posts have been linked in microblog notices "
+"using <a href=\"http://www.hixie.ch/specs/pingback/pingback\">Pingback</a> "
+"or <a href=\"http://www.movabletype.org/docs/mttrackback.html\">Trackback</"
+"a> protocols."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to do linkbacks for notices containing links
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-require_once('Auth/Yadis/Yadis.php');
-
-define('LINKBACKPLUGIN_VERSION', '0.1');
-
-/**
- * Plugin to do linkbacks for notices containing URLs
- *
- * After new notices are saved, we check their text for URLs. If there
- * are URLs, we test each URL to see if it supports any
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class LinkbackPlugin extends Plugin
-{
- var $notice = null;
-
- function __construct()
- {
- parent::__construct();
- }
-
- function onHandleQueuedNotice($notice)
- {
- if ($notice->is_local == 1) {
- // Try to avoid actually mucking with the
- // notice content
- $c = $notice->content;
- $this->notice = $notice;
- // Ignoring results
- common_replace_urls_callback($c,
- array($this, 'linkbackUrl'));
- }
- return true;
- }
-
- function linkbackUrl($url)
- {
- common_log(LOG_DEBUG,"Attempting linkback for " . $url);
-
- $orig = $url;
- $url = htmlspecialchars_decode($orig);
- $scheme = parse_url($url, PHP_URL_SCHEME);
- if (!in_array($scheme, array('http', 'https'))) {
- return $orig;
- }
-
- // XXX: Do a HEAD first to save some time/bandwidth
-
- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-
- $result = $fetcher->get($url,
- array('User-Agent: ' . $this->userAgent(),
- 'Accept: application/html+xml,text/html'));
-
- if (!in_array($result->status, array('200', '206'))) {
- return $orig;
- }
-
- $pb = null;
- $tb = null;
-
- if (array_key_exists('X-Pingback', $result->headers)) {
- $pb = $result->headers['X-Pingback'];
- } else if (preg_match('/<link rel="pingback" href="([^"]+)" ?\/?>/',
- $result->body,
- $match)) {
- $pb = $match[1];
- }
-
- if (!empty($pb)) {
- $this->pingback($result->final_url, $pb);
- } else {
- $tb = $this->getTrackback($result->body, $result->final_url);
- if (!empty($tb)) {
- $this->trackback($result->final_url, $tb);
- }
- }
-
- return $orig;
- }
-
- function pingback($url, $endpoint)
- {
- $args = array($this->notice->uri, $url);
-
- if (!extension_loaded('xmlrpc')) {
- if (!dl('xmlrpc.so')) {
- common_log(LOG_ERR, "Can't pingback; xmlrpc extension not available.");
- return;
- }
- }
-
- $request = HTTPClient::start();
- try {
- $response = $request->post($endpoint,
- array('Content-Type: text/xml'),
- xmlrpc_encode_request('pingback.ping', $args));
- $response = xmlrpc_decode($response->getBody());
- if (xmlrpc_is_fault($response)) {
- common_log(LOG_WARNING,
- "Pingback error for '$url' ($endpoint): ".
- "$response[faultString] ($response[faultCode])");
- } else {
- common_log(LOG_INFO,
- "Pingback success for '$url' ($endpoint): ".
- "'$response'");
- }
- } catch (HTTP_Request2_Exception $e) {
- common_log(LOG_WARNING,
- "Pingback request failed for '$url' ($endpoint)");
- }
- }
-
- // Largely cadged from trackback_cls.php by
- // Ran Aroussi <ran@blogish.org>, GPL2 or any later version
- // http://phptrackback.sourceforge.net/
-
- function getTrackback($text, $url)
- {
- if (preg_match_all('/(<rdf:RDF.*?<\/rdf:RDF>)/sm', $text, $match, PREG_SET_ORDER)) {
- for ($i = 0; $i < count($match); $i++) {
- if (preg_match('|dc:identifier="' . preg_quote($url) . '"|ms', $match[$i][1])) {
- $rdf_array[] = trim($match[$i][1]);
- }
- }
-
- // Loop through the RDFs array and extract trackback URIs
-
- $tb_array = array(); // <- holds list of trackback URIs
-
- if (!empty($rdf_array)) {
-
- for ($i = 0; $i < count($rdf_array); $i++) {
- if (preg_match('/trackback:ping="([^"]+)"/', $rdf_array[$i], $array)) {
- $tb_array[] = trim($array[1]);
- break;
- }
- }
- }
-
- // Return Trackbacks
-
- if (empty($tb_array)) {
- return null;
- } else {
- return $tb_array[0];
- }
- }
-
- if (preg_match_all('/(<a[^>]*?rel=[\'"]trackback[\'"][^>]*?>)/', $text, $match)) {
- foreach ($match[1] as $atag) {
- if (preg_match('/href=[\'"]([^\'"]*?)[\'"]/', $atag, $url)) {
- return $url[1];
- }
- }
- }
-
- return null;
-
- }
-
- function trackback($url, $endpoint)
- {
- $profile = $this->notice->getProfile();
-
- $args = array('title' => sprintf(_('%1$s\'s status on %2$s'),
- $profile->nickname,
- common_exact_date($this->notice->created)),
- 'excerpt' => $this->notice->content,
- 'url' => $this->notice->uri,
- 'blog_name' => $profile->nickname);
-
- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-
- $result = $fetcher->post($endpoint,
- http_build_query($args),
- array('User-Agent: ' . $this->userAgent()));
-
- if ($result->status != '200') {
- common_log(LOG_WARNING,
- "Trackback error for '$url' ($endpoint): ".
- "$result->body");
- } else {
- common_log(LOG_INFO,
- "Trackback success for '$url' ($endpoint): ".
- "'$result->body'");
- }
- }
-
- function userAgent()
- {
- return 'LinkbackPlugin/'.LINKBACKPLUGIN_VERSION .
- ' StatusNet/' . STATUSNET_VERSION;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Linkback',
- 'version' => LINKBACKPLUGIN_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:Linkback',
- 'rawdescription' =>
- _m('Notify blog authors when their posts have been linked in '.
- 'microblog notices using '.
- '<a href="http://www.hixie.ch/specs/pingback/pingback">Pingback</a> '.
- 'or <a href="http://www.movabletype.org/docs/mttrackback.html">Trackback</a> protocols.'));
- return true;
- }
-}
*
* @seeAlso Location
*/
-
class MapstractionPlugin extends Plugin
{
const VERSION = STATUSNET_VERSION;
*
* @return boolean event handler return
*/
-
function onRouterInitialized($m)
{
$m->connect(':nickname/all/map',
*
* @return boolean event handler return
*/
-
function onAutoload($cls)
{
switch ($cls)
*
* @return boolean event handler return
*/
-
function onEndShowScripts($action)
{
$actionName = $action->trimmed('action');
array('nickname' => $action->trimmed('nickname')));
$action->element('a', array('href' => $mapUrl),
+ // TRANS: Clickable item to allow opening the map in full size.
_m("Full size"));
$action->elementEnd('div');
'homepage' => 'http://status.net/wiki/Plugin:Mapstraction',
'rawdescription' =>
_m('Show maps of users\' and friends\' notices '.
- 'with <a href="http://www.mapstraction.com/">Mapstraction</a> '.
- 'JavaScript library.'));
+ 'with <a href="http://www.mapstraction.com/">Mapstraction</a>.'));
return true;
}
}
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class AllmapAction extends MapAction
{
function prepare($args)
function title()
{
if (!empty($this->profile->fullname)) {
+ // @todo FIXME: Bad i18n. Should be "%1$s (%2$s)".
$base = $this->profile->fullname . ' (' . $this->user->nickname . ') ';
} else {
$base = $this->user->nickname;
}
if ($this->page == 1) {
+ // TRANS: Page title.
+ // TRANS: %s is a user nickname.
return sprintf(_m("%s friends map"),
$base);
} else {
- return sprintf(_m("%s friends map, page %d"),
+ // @todo CHECKME: does this even happen? May not be needed.
+ // TRANS: Page title.
+ // TRANS: %1$s is a user nickname, %2$d is a page number.
+ return sprintf(_m("%1$s friends map, page %2$d"),
$base,
$this->page);
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: MapstractionPlugin.php:182
+#: MapstractionPlugin.php:178
msgid "Map"
msgstr ""
-#: MapstractionPlugin.php:193
+#. TRANS: Clickable item to allow opening the map in full size.
+#: MapstractionPlugin.php:190
msgid "Full size"
msgstr ""
-#: MapstractionPlugin.php:205
+#: MapstractionPlugin.php:202
msgid ""
"Show maps of users' and friends' notices with <a href=\"http://www."
-"mapstraction.com/\">Mapstraction</a> JavaScript library."
+"mapstraction.com/\">Mapstraction</a>."
msgstr ""
-#: map.php:73
+#: map.php:72
msgid "No such user."
msgstr ""
-#: map.php:80
+#: map.php:79
msgid "User has no profile."
msgstr ""
-#: allmap.php:72
+#. TRANS: Page title.
+#. TRANS: %s is a user nickname.
+#: allmap.php:74
#, php-format
msgid "%s friends map"
msgstr ""
-#: allmap.php:75
-#, php-format
-msgid "%s friends map, page %d"
-msgstr ""
-
-#: usermap.php:72
+#: usermap.php:73
#, php-format
msgid "%s map, page %d"
msgstr ""
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class MapAction extends OwnerDesignAction
{
var $profile = null;
*
* @return boolean event handler return
*/
-
function showScripts()
{
parent::showScripts();
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class UsermapAction extends MapAction
{
-
function prepare($args)
{
if(parent::prepare($args)) {
function title()
{
if (!empty($this->profile->fullname)) {
- $base = $this->profile->fullname . ' (' . $this->user->nickname . ') ';
+ // @todo FIXME: Bad i18n. Should be '%1$s (%2$s)'
+ $base = $this->profile->fullname . ' (' . $this->user->nickname . ')';
} else {
$base = $this->user->nickname;
}
if ($this->page == 1) {
+ // @todo CHECKME: inconsisten with paged variant below. " map" missing.
return $base;
} else {
+ // @todo CHECKME: Is the part ", page %2$d" relevant here?
return sprintf(_m("%s map, page %d"),
$base,
$this->page);
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for memcache
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * A plugin to use memcache for the cache interface
+ *
+ * This used to be encoded as config-variable options in the core code;
+ * it's now broken out to a separate plugin. The same interface can be
+ * implemented by other plugins.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+class MemcachePlugin extends Plugin
+{
+ static $cacheInitialized = false;
+
+ private $_conn = null;
+ public $servers = array('127.0.0.1;11211');
+
+ public $compressThreshold = 20480;
+ public $compressMinSaving = 0.2;
+
+ public $persistent = null;
+
+ public $defaultExpiry = 86400; // 24h
+
+ /**
+ * Initialize the plugin
+ *
+ * Note that onStartCacheGet() may have been called before this!
+ *
+ * @return boolean flag value
+ */
+ function onInitializePlugin()
+ {
+ if (self::$cacheInitialized) {
+ $this->persistent = true;
+ } else {
+ // If we're a parent command-line process we need
+ // to be able to close out the connection after
+ // forking, so disable persistence.
+ //
+ // We'll turn it back on again the second time
+ // through which will either be in a child process,
+ // or a single-process script which is switching
+ // configurations.
+ $this->persistent = (php_sapi_name() == 'cli') ? false : true;
+ }
+ $this->_ensureConn();
+ self::$cacheInitialized = true;
+ return true;
+ }
+
+ /**
+ * Get a value associated with a key
+ *
+ * The value should have been set previously.
+ *
+ * @param string &$key in; Lookup key
+ * @param mixed &$value out; value associated with key
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheGet(&$key, &$value)
+ {
+ $this->_ensureConn();
+ $value = $this->_conn->get($key);
+ Event::handle('EndCacheGet', array($key, &$value));
+ return false;
+ }
+
+ /**
+ * Associate a value with a key
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param mixed &$value in; Value to associate
+ * @param integer &$flag in; Flag empty or Cache::COMPRESSED
+ * @param integer &$expiry in; Expiry (passed through to Memcache)
+ * @param boolean &$success out; Whether the set was successful
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+ {
+ $this->_ensureConn();
+ if ($expiry === null) {
+ $expiry = $this->defaultExpiry;
+ }
+ $success = $this->_conn->set($key, $value, $this->flag(intval($flag)), $expiry);
+ Event::handle('EndCacheSet', array($key, $value, $flag,
+ $expiry));
+ return false;
+ }
+
+ /**
+ * Atomically increment an existing numeric key value.
+ * Existing expiration time will not be changed.
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param int &$step in; Amount to increment (default 1)
+ * @param mixed &$value out; Incremented value, or false if key not set.
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheIncrement(&$key, &$step, &$value)
+ {
+ $this->_ensureConn();
+ $value = $this->_conn->increment($key, $step);
+ Event::handle('EndCacheIncrement', array($key, $step, $value));
+ return false;
+ }
+
+ /**
+ * Delete a value associated with a key
+ *
+ * @param string &$key in; Key to lookup
+ * @param boolean &$success out; whether it worked
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheDelete(&$key, &$success)
+ {
+ $this->_ensureConn();
+ $success = $this->_conn->delete($key);
+ Event::handle('EndCacheDelete', array($key));
+ return false;
+ }
+
+ function onStartCacheReconnect(&$success)
+ {
+ if (empty($this->_conn)) {
+ // nothing to do
+ return true;
+ }
+ if ($this->persistent) {
+ common_log(LOG_ERR, "Cannot close persistent memcached connection");
+ $success = false;
+ } else {
+ common_log(LOG_INFO, "Closing memcached connection");
+ $success = $this->_conn->close();
+ $this->_conn = null;
+ }
+ return false;
+ }
+
+ /**
+ * Ensure that a connection exists
+ *
+ * Checks the instance $_conn variable and connects
+ * if it is empty.
+ *
+ * @return void
+ */
+ private function _ensureConn()
+ {
+ if (empty($this->_conn)) {
+ $this->_conn = new Memcache();
+
+ if (is_array($this->servers)) {
+ $servers = $this->servers;
+ } else {
+ $servers = array($this->servers);
+ }
+ foreach ($servers as $server) {
+ if (strpos($server, ';') !== false) {
+ list($host, $port) = explode(';', $server);
+ } else {
+ $host = $server;
+ $port = 11211;
+ }
+
+ $this->_conn->addServer($host, $port, $this->persistent);
+ }
+
+ // Compress items stored in the cache if they're over threshold in size
+ // (default 2KiB) and the compression would save more than min savings
+ // ratio (default 0.2).
+
+ // Allows the cache to store objects larger than 1MB (if they
+ // compress to less than 1MB), and improves cache memory efficiency.
+
+ $this->_conn->setCompressThreshold($this->compressThreshold,
+ $this->compressMinSaving);
+ }
+ }
+
+ /**
+ * Translate general flags to Memcached-specific flags
+ * @param int $flag
+ * @return int
+ */
+ protected function flag($flag)
+ {
+ $out = 0;
+ if ($flag & Cache::COMPRESSED == Cache::COMPRESSED) {
+ $out |= MEMCACHE_COMPRESSED;
+ }
+ return $out;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Memcache',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou, Craig Andrews',
+ 'homepage' => 'http://status.net/wiki/Plugin:Memcache',
+ 'rawdescription' =>
+ _m('Use <a href="http://memcached.org/">Memcached</a> to cache query results.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: MemcachePlugin.php:252
+msgid ""
+"Use <a href=\"http://memcached.org/\">Memcached</a> to cache query results."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * Plugin to implement cache interface for memcache
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * A plugin to use memcache for the cache interface
- *
- * This used to be encoded as config-variable options in the core code;
- * it's now broken out to a separate plugin. The same interface can be
- * implemented by other plugins.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-class MemcachePlugin extends Plugin
-{
- static $cacheInitialized = false;
-
- private $_conn = null;
- public $servers = array('127.0.0.1;11211');
-
- public $compressThreshold = 20480;
- public $compressMinSaving = 0.2;
-
- public $persistent = null;
-
- public $defaultExpiry = 86400; // 24h
-
- /**
- * Initialize the plugin
- *
- * Note that onStartCacheGet() may have been called before this!
- *
- * @return boolean flag value
- */
-
- function onInitializePlugin()
- {
- if (self::$cacheInitialized) {
- $this->persistent = true;
- } else {
- // If we're a parent command-line process we need
- // to be able to close out the connection after
- // forking, so disable persistence.
- //
- // We'll turn it back on again the second time
- // through which will either be in a child process,
- // or a single-process script which is switching
- // configurations.
- $this->persistent = (php_sapi_name() == 'cli') ? false : true;
- }
- $this->_ensureConn();
- self::$cacheInitialized = true;
- return true;
- }
-
- /**
- * Get a value associated with a key
- *
- * The value should have been set previously.
- *
- * @param string &$key in; Lookup key
- * @param mixed &$value out; value associated with key
- *
- * @return boolean hook success
- */
-
- function onStartCacheGet(&$key, &$value)
- {
- $this->_ensureConn();
- $value = $this->_conn->get($key);
- Event::handle('EndCacheGet', array($key, &$value));
- return false;
- }
-
- /**
- * Associate a value with a key
- *
- * @param string &$key in; Key to use for lookups
- * @param mixed &$value in; Value to associate
- * @param integer &$flag in; Flag empty or Cache::COMPRESSED
- * @param integer &$expiry in; Expiry (passed through to Memcache)
- * @param boolean &$success out; Whether the set was successful
- *
- * @return boolean hook success
- */
-
- function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
- {
- $this->_ensureConn();
- if ($expiry === null) {
- $expiry = $this->defaultExpiry;
- }
- $success = $this->_conn->set($key, $value, $this->flag(intval($flag)), $expiry);
- Event::handle('EndCacheSet', array($key, $value, $flag,
- $expiry));
- return false;
- }
-
- /**
- * Atomically increment an existing numeric key value.
- * Existing expiration time will not be changed.
- *
- * @param string &$key in; Key to use for lookups
- * @param int &$step in; Amount to increment (default 1)
- * @param mixed &$value out; Incremented value, or false if key not set.
- *
- * @return boolean hook success
- */
- function onStartCacheIncrement(&$key, &$step, &$value)
- {
- $this->_ensureConn();
- $value = $this->_conn->increment($key, $step);
- Event::handle('EndCacheIncrement', array($key, $step, $value));
- return false;
- }
-
- /**
- * Delete a value associated with a key
- *
- * @param string &$key in; Key to lookup
- * @param boolean &$success out; whether it worked
- *
- * @return boolean hook success
- */
-
- function onStartCacheDelete(&$key, &$success)
- {
- $this->_ensureConn();
- $success = $this->_conn->delete($key);
- Event::handle('EndCacheDelete', array($key));
- return false;
- }
-
- function onStartCacheReconnect(&$success)
- {
- if (empty($this->_conn)) {
- // nothing to do
- return true;
- }
- if ($this->persistent) {
- common_log(LOG_ERR, "Cannot close persistent memcached connection");
- $success = false;
- } else {
- common_log(LOG_INFO, "Closing memcached connection");
- $success = $this->_conn->close();
- $this->_conn = null;
- }
- return false;
- }
-
- /**
- * Ensure that a connection exists
- *
- * Checks the instance $_conn variable and connects
- * if it is empty.
- *
- * @return void
- */
-
- private function _ensureConn()
- {
- if (empty($this->_conn)) {
- $this->_conn = new Memcache();
-
- if (is_array($this->servers)) {
- $servers = $this->servers;
- } else {
- $servers = array($this->servers);
- }
- foreach ($servers as $server) {
- if (strpos($server, ';') !== false) {
- list($host, $port) = explode(';', $server);
- } else {
- $host = $server;
- $port = 11211;
- }
-
- $this->_conn->addServer($host, $port, $this->persistent);
- }
-
- // Compress items stored in the cache if they're over threshold in size
- // (default 2KiB) and the compression would save more than min savings
- // ratio (default 0.2).
-
- // Allows the cache to store objects larger than 1MB (if they
- // compress to less than 1MB), and improves cache memory efficiency.
-
- $this->_conn->setCompressThreshold($this->compressThreshold,
- $this->compressMinSaving);
- }
- }
-
- /**
- * Translate general flags to Memcached-specific flags
- * @param int $flag
- * @return int
- */
- protected function flag($flag)
- {
- $out = 0;
- if ($flag & Cache::COMPRESSED == Cache::COMPRESSED) {
- $out |= MEMCACHE_COMPRESSED;
- }
- return $out;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Memcache',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou, Craig Andrews',
- 'homepage' => 'http://status.net/wiki/Plugin:Memcache',
- 'rawdescription' =>
- _m('Use <a href="http://memcached.org/">Memcached</a> to cache query results.'));
- return true;
- }
-}
-
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for memcached
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @author Craig Andrews <candrews@integralblue.com>
+ * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * A plugin to use memcached for the cache interface
+ *
+ * This used to be encoded as config-variable options in the core code;
+ * it's now broken out to a separate plugin. The same interface can be
+ * implemented by other plugins.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @author Craig Andrews <candrews@integralblue.com>
+ * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class MemcachedPlugin extends Plugin
+{
+ static $cacheInitialized = false;
+
+ private $_conn = null;
+ public $servers = array('127.0.0.1;11211');
+
+ public $defaultExpiry = 86400; // 24h
+
+ /**
+ * Initialize the plugin
+ *
+ * Note that onStartCacheGet() may have been called before this!
+ *
+ * @return boolean flag value
+ */
+ function onInitializePlugin()
+ {
+ $this->_ensureConn();
+ self::$cacheInitialized = true;
+ return true;
+ }
+
+ /**
+ * Get a value associated with a key
+ *
+ * The value should have been set previously.
+ *
+ * @param string &$key in; Lookup key
+ * @param mixed &$value out; value associated with key
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheGet(&$key, &$value)
+ {
+ $this->_ensureConn();
+ $value = $this->_conn->get($key);
+ Event::handle('EndCacheGet', array($key, &$value));
+ return false;
+ }
+
+ /**
+ * Associate a value with a key
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param mixed &$value in; Value to associate
+ * @param integer &$flag in; Flag empty or Cache::COMPRESSED
+ * @param integer &$expiry in; Expiry (passed through to Memcache)
+ * @param boolean &$success out; Whether the set was successful
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+ {
+ $this->_ensureConn();
+ if ($expiry === null) {
+ $expiry = $this->defaultExpiry;
+ }
+ $success = $this->_conn->set($key, $value, $expiry);
+ Event::handle('EndCacheSet', array($key, $value, $flag,
+ $expiry));
+ return false;
+ }
+
+ /**
+ * Atomically increment an existing numeric key value.
+ * Existing expiration time will not be changed.
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param int &$step in; Amount to increment (default 1)
+ * @param mixed &$value out; Incremented value, or false if key not set.
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheIncrement(&$key, &$step, &$value)
+ {
+ $this->_ensureConn();
+ $value = $this->_conn->increment($key, $step);
+ Event::handle('EndCacheIncrement', array($key, $step, $value));
+ return false;
+ }
+
+ /**
+ * Delete a value associated with a key
+ *
+ * @param string &$key in; Key to lookup
+ * @param boolean &$success out; whether it worked
+ *
+ * @return boolean hook success
+ */
+ function onStartCacheDelete(&$key, &$success)
+ {
+ $this->_ensureConn();
+ $success = $this->_conn->delete($key);
+ Event::handle('EndCacheDelete', array($key));
+ return false;
+ }
+
+ function onStartCacheReconnect(&$success)
+ {
+ // nothing to do
+ return true;
+ }
+
+ /**
+ * Ensure that a connection exists
+ *
+ * Checks the instance $_conn variable and connects
+ * if it is empty.
+ *
+ * @return void
+ */
+ private function _ensureConn()
+ {
+ if (empty($this->_conn)) {
+ $this->_conn = new Memcached(common_config('site', 'nickname'));
+
+ if (!count($this->_conn->getServerList())) {
+ if (is_array($this->servers)) {
+ $servers = $this->servers;
+ } else {
+ $servers = array($this->servers);
+ }
+ foreach ($servers as $server) {
+ if (strpos($server, ';') !== false) {
+ list($host, $port) = explode(';', $server);
+ } else {
+ $host = $server;
+ $port = 11211;
+ }
+
+ $this->_conn->addServer($host, $port);
+ }
+
+ // Compress items stored in the cache.
+
+ // Allows the cache to store objects larger than 1MB (if they
+ // compress to less than 1MB), and improves cache memory efficiency.
+
+ $this->_conn->setOption(Memcached::OPT_COMPRESSION, true);
+ }
+ }
+ }
+
+ /**
+ * Translate general flags to Memcached-specific flags
+ * @param int $flag
+ * @return int
+ */
+ protected function flag($flag)
+ {
+ //no flags are presently supported
+ return $flag;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Memcached',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou, Craig Andrews',
+ 'homepage' => 'http://status.net/wiki/Plugin:Memcached',
+ 'rawdescription' =>
+ _m('Use <a href="http://memcached.org/">Memcached</a> to cache query results.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: MemcachedPlugin.php:223
+msgid ""
+"Use <a href=\"http://memcached.org/\">Memcached</a> to cache query results."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * Plugin to implement cache interface for memcached
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Craig Andrews <candrews@integralblue.com>
- * @copyright 2009 StatusNet, Inc.
- * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * A plugin to use memcached for the cache interface
- *
- * This used to be encoded as config-variable options in the core code;
- * it's now broken out to a separate plugin. The same interface can be
- * implemented by other plugins.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Craig Andrews <candrews@integralblue.com>
- * @copyright 2009 StatusNet, Inc.
- * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-class MemcachedPlugin extends Plugin
-{
- static $cacheInitialized = false;
-
- private $_conn = null;
- public $servers = array('127.0.0.1;11211');
-
- public $defaultExpiry = 86400; // 24h
-
- /**
- * Initialize the plugin
- *
- * Note that onStartCacheGet() may have been called before this!
- *
- * @return boolean flag value
- */
-
- function onInitializePlugin()
- {
- $this->_ensureConn();
- self::$cacheInitialized = true;
- return true;
- }
-
- /**
- * Get a value associated with a key
- *
- * The value should have been set previously.
- *
- * @param string &$key in; Lookup key
- * @param mixed &$value out; value associated with key
- *
- * @return boolean hook success
- */
-
- function onStartCacheGet(&$key, &$value)
- {
- $this->_ensureConn();
- $value = $this->_conn->get($key);
- Event::handle('EndCacheGet', array($key, &$value));
- return false;
- }
-
- /**
- * Associate a value with a key
- *
- * @param string &$key in; Key to use for lookups
- * @param mixed &$value in; Value to associate
- * @param integer &$flag in; Flag empty or Cache::COMPRESSED
- * @param integer &$expiry in; Expiry (passed through to Memcache)
- * @param boolean &$success out; Whether the set was successful
- *
- * @return boolean hook success
- */
-
- function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
- {
- $this->_ensureConn();
- if ($expiry === null) {
- $expiry = $this->defaultExpiry;
- }
- $success = $this->_conn->set($key, $value, $expiry);
- Event::handle('EndCacheSet', array($key, $value, $flag,
- $expiry));
- return false;
- }
-
- /**
- * Atomically increment an existing numeric key value.
- * Existing expiration time will not be changed.
- *
- * @param string &$key in; Key to use for lookups
- * @param int &$step in; Amount to increment (default 1)
- * @param mixed &$value out; Incremented value, or false if key not set.
- *
- * @return boolean hook success
- */
- function onStartCacheIncrement(&$key, &$step, &$value)
- {
- $this->_ensureConn();
- $value = $this->_conn->increment($key, $step);
- Event::handle('EndCacheIncrement', array($key, $step, $value));
- return false;
- }
-
- /**
- * Delete a value associated with a key
- *
- * @param string &$key in; Key to lookup
- * @param boolean &$success out; whether it worked
- *
- * @return boolean hook success
- */
-
- function onStartCacheDelete(&$key, &$success)
- {
- $this->_ensureConn();
- $success = $this->_conn->delete($key);
- Event::handle('EndCacheDelete', array($key));
- return false;
- }
-
- function onStartCacheReconnect(&$success)
- {
- // nothing to do
- return true;
- }
-
- /**
- * Ensure that a connection exists
- *
- * Checks the instance $_conn variable and connects
- * if it is empty.
- *
- * @return void
- */
-
- private function _ensureConn()
- {
- if (empty($this->_conn)) {
- $this->_conn = new Memcached(common_config('site', 'nickname'));
-
- if (!count($this->_conn->getServerList())) {
- if (is_array($this->servers)) {
- $servers = $this->servers;
- } else {
- $servers = array($this->servers);
- }
- foreach ($servers as $server) {
- if (strpos($server, ';') !== false) {
- list($host, $port) = explode(';', $server);
- } else {
- $host = $server;
- $port = 11211;
- }
-
- $this->_conn->addServer($host, $port);
- }
-
- // Compress items stored in the cache.
-
- // Allows the cache to store objects larger than 1MB (if they
- // compress to less than 1MB), and improves cache memory efficiency.
-
- $this->_conn->setOption(Memcached::OPT_COMPRESSION, true);
- }
- }
- }
-
- /**
- * Translate general flags to Memcached-specific flags
- * @param int $flag
- * @return int
- */
- protected function flag($flag)
- {
- //no flags are presently supported
- return $flag;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Memcached',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou, Craig Andrews',
- 'homepage' => 'http://status.net/wiki/Plugin:Memcached',
- 'rawdescription' =>
- _m('Use <a href="http://memcached.org/">Memcached</a> to cache query results.'));
- return true;
- }
-}
-
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class MeteorPlugin extends RealtimePlugin
{
public $webserver = null;
// May throw an exception.
$this->_socket = stream_socket_client("tcp://{$controlserver}:{$this->controlport}", $errno, $errstr, $timeout, $flags);
if (!$this->_socket) {
- throw new Exception("Couldn't connect to {$controlserver} on {$this->controlport}");
+ // TRANS: Exception. %1$s is the control server, %2$s is the control port.
+ throw new Exception(sprintf(_m('Couldn\'t connect to %1$s on %2$s.'),$controlserver,$this->controlport));
}
}
$cnt = fwrite($this->_socket, $cmd);
$result = fgets($this->_socket);
if (preg_match('/^ERR (.*)$/', $result, $matches)) {
- throw new Exception('Error adding meteor message "'.$matches[1].'"');
+ // TRANS: Exception. %s is the Meteor message that could not be added.
+ throw new Exception(sprintf(_m('Error adding meteor message "%s"'),$matches[1]));
}
// TODO: parse and deal with result
}
}
return implode('-', $path);
}
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Meteor',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:Meteor',
+ 'rawdescription' =>
+ _m('Plugin to do "real time" updates using Comet/Bayeux.'));
+ return true;
+ }
}
*
* @return boolean hook return
*/
-
function onStartInitializeRouter($m)
{
$m->connect('main/min',
'author' => 'Craig Andrews',
'homepage' => 'http://status.net/wiki/Plugin:Minify',
'rawdescription' =>
- _m('The Minify plugin minifies your CSS and Javascript, removing whitespace and comments.'));
+ _m('The Minify plugin minifies StatusNet\'s CSS and JavaScript, removing whitespace and comments.'));
return true;
}
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
+#: minify.php:49
+msgid "The parameter \"f\" is not a valid path."
+msgstr ""
+
+#: minify.php:53
+msgid "The parameter \"f\" is required but missing."
+msgstr ""
+
+#: minify.php:111
+msgid "File type not supported."
+msgstr ""
+
#: MinifyPlugin.php:180
msgid ""
-"The Minify plugin minifies your CSS and Javascript, removing whitespace and "
-"comments."
+"The Minify plugin minifies StatusNet's CSS and JavaScript, removing "
+"whitespace and comments."
msgstr ""
if(file_exists($this->file)) {
return true;
} else {
- $this->clientError(_('f parameter is not a valid path'),404);
+ $this->clientError(_m('The parameter "f" is not a valid path.'),404);
return false;
}
}else{
- $this->clientError(_('f parameter is required'),500);
+ $this->clientError(_m('The parameter "f" is required but missing.'),500);
return false;
}
}
header('Content-Type: ' . self::TYPE_CSS);
break;
default:
- $this->clientError(_('File type not supported'),500);
+ $this->clientError(_m('File type not supported.'),500);
return false;
}
return $out;
}
}
-
require_once INSTALLDIR.'/plugins/Mobile/WAP20Plugin.php';
-
/**
* Superclass for plugin to output XHTML Mobile Profile
*
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class MobileProfilePlugin extends WAP20Plugin
{
public $DTD = null;
parent::__construct();
}
-
function onStartShowHTML($action)
{
// XXX: This should probably graduate to WAP20Plugin
// If they are on the mobile site, serve them MP
if ((common_config('site', 'mobileserver').'/'.
- common_config('site', 'path').'/' ==
+ common_config('site', 'path').'/' ==
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) {
$this->serveMobile = true;
//if (strstr('application/vnd.wap.xhtml+xml', $type) !== false) {
// $this->serveMobile = true;
//} else {
- // If they are a mobile device that supports WAP 2.0,
+ // If they are a mobile device that supports WAP 2.0,
// serve them MP
// XXX: Browser sniffing sucks
- // I really don't like going through this every page,
+ // I really don't like going through this every page,
// perhaps use $_SESSION or cookies
- // May be better to group the devices in terms of
+ // May be better to group the devices in terms of
// low,mid,high-end
- // Or, detect the mobile devices based on their support for
+ // Or, detect the mobile devices based on their support for
// MP 1.0, 1.1, or 1.2 may be ideal. Possible?
$this->mobiledevices = array(
}
//}
- // If they are okay with MP, and the site has a mobile server,
+ // If they are okay with MP, and the site has a mobile server,
// redirect there
- if ($this->serveMobile &&
+ if ($this->serveMobile &&
common_config('site', 'mobileserver') !== false &&
- (common_config('site', 'mobileserver') !=
+ (common_config('site', 'mobileserver') !=
common_config('site', 'server'))) {
// FIXME: Redirect to equivalent page on mobile site instead
$type = common_negotiate_type($cp, $sp);
if (!$type) {
- throw new ClientException(_('This page is not available in a '.
- 'media type you accept'), 406);
+ throw new ClientException(_m('This page is not available in a '.
+ 'media type you accept.'), 406);
}
//}
return false;
}
-
function setMobileFeatures($useragent)
{
$mobiledeviceInputFileType = array(
}
}
-
function onStartShowStatusNetStyles($action)
{
if (!$this->serveMobile) {
return false;
}
-
function onStartShowUAStyles($action) {
if (!$this->serveMobile) {
return true;
return false;
}
-
function _showLogo($action)
{
$action->elementStart('address', 'vcard');
$action->elementStart('a', array('class' => 'url home bookmark',
'href' => common_local_url('public')));
- if (common_config('site', 'mobilelogo') ||
- file_exists(Theme::file('logo.png')) ||
+ if (common_config('site', 'mobilelogo') ||
+ file_exists(Theme::file('logo.png')) ||
file_exists(Theme::file('mobilelogo.png'))) {
$action->element('img', array('class' => 'photo',
- 'src' => (common_config('site', 'mobilelogo')) ? common_config('site', 'mobilelogo') :
+ 'src' => (common_config('site', 'mobilelogo')) ? common_config('site', 'mobilelogo') :
((file_exists(Theme::file('mobilelogo.png'))) ? (Theme::path('mobilelogo.png')) : Theme::path('logo.png')),
'alt' => common_config('site', 'name')));
}
$action->elementEnd('address');
}
-
function _showPrimaryNav($action)
{
$user = common_current_user();
$action->elementStart('ul', array('id' => 'site_nav_global_primary'));
if ($user) {
$action->menuItem(common_local_url('all', array('nickname' => $user->nickname)),
- _('Home'));
+ _m('Home'));
$action->menuItem(common_local_url('profilesettings'),
- _('Account'));
+ _m('Account'));
$action->menuItem(common_local_url('oauthconnectionssettings'),
- _('Connect'));
+ _m('Connect'));
if ($user->hasRight(Right::CONFIGURESITE)) {
$action->menuItem(common_local_url('siteadminpanel'),
- _('Admin'), _('Change site configuration'), false, 'nav_admin');
+ _m('Admin'), _m('Change site configuration'), false, 'nav_admin');
}
if (common_config('invite', 'enabled')) {
$action->menuItem(common_local_url('invite'),
- _('Invite'));
+ _m('Invite'));
}
$action->menuItem(common_local_url('logout'),
- _('Logout'));
+ _m('Logout'));
} else {
if (!common_config('site', 'closed')) {
$action->menuItem(common_local_url('register'),
- _('Register'));
+ _m('Register'));
}
$action->menuItem(common_local_url('login'),
- _('Login'));
+ _m('Login'));
}
if ($user || !common_config('site', 'private')) {
$action->menuItem(common_local_url('peoplesearch'),
- _('Search'));
+ _m('Search'));
}
$action->elementEnd('ul');
}
-
function onStartShowNoticeFormData($form)
{
if (!$this->serveMobile) {
if (common_config('attachments', 'uploads')) {
if ($this->mobileFeatures['inputfiletype']) {
- $form->out->element('label', array('for' => 'notice_data-attach'), _('Attach'));
+ $form->out->element('label', array('for' => 'notice_data-attach'), _m('Attach'));
$form->out->element('input', array('id' => 'notice_data-attach',
'type' => 'file',
'name' => 'attach',
- 'title' => _('Attach a file')));
+ 'title' => _m('Attach a file')));
$form->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota'));
}
}
return false;
}
-
function onStartShowAside($action)
{
if ($this->serveMobile) {
}
}
-
function onStartShowScripts($action)
{
}
-
function _common_path($relative, $ssl=false)
{
$pathpart = (common_config('site', 'path')) ? common_config('site', 'path')."/" : '';
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
'author' => 'Evan Prodromou',
'homepage' => $url,
'rawdescription' =>
- _m('Adds optional titles to notices'));
+ _m('Adds optional titles to notices.'));
return true;
}
$title = $action->trimmed('notice_title');
if (!empty($title)) {
if (mb_strlen($title) > Notice_title::MAXCHARS) {
- throw new Exception(sprintf(_m("Notice title too long (max %d)",
+ throw new Exception(sprintf(_m("The notice title is too long (max %d characters).",
Notice_title::MAXCHARS)));
}
}
if (!empty($title)) {
$action->element('title', null,
// TRANS: Page title. %1$s is the title, %2$s is the site name.
- sprintf(_("%1\$s - %2\$s"),
+ sprintf(_m("%1\$s - %2\$s"),
$title,
common_config('site', 'name')));
}
return true;
}
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Transfer-Encoding: 8bit\n"
#: NoticeTitlePlugin.php:126
-msgid "Adds optional titles to notices"
+msgid "Adds optional titles to notices."
+msgstr ""
+
+#. TRANS: Page title. %1$s is the title, %2$s is the site name.
+#: NoticeTitlePlugin.php:299
+#, php-format
+msgid "%1$s - %2$s"
msgstr ""
array('nickname' => $profile->nickname));
$output->element('a', array('href' => $url,
'class' => 'entity_remote_subscribe'),
+ // TRANS: Link description for link to subscribe to a remote user.
_m('Subscribe'));
$output->elementEnd('li');
array('group' => $group->nickname));
$output->element('a', array('href' => $url,
'class' => 'entity_remote_subscribe'),
+ // TRANS: Link description for link to join a remote group.
_m('Join'));
}
}
$url = $notice->url;
+ // TRANSLATE: %s is a domain.
$title = sprintf(_m("Sent from %s via OStatus"), $domain);
return false;
}
}
if (!$oprofile->subscribe()) {
+ // TRANS: Exception.
throw new Exception(_m('Could not set up remote subscription.'));
}
}
common_date_iso8601(time()));
$act->time = time();
- $act->title = _("Unfollow");
+ $act->title = _m('Unfollow');
// TRANS: Success message for unsubscribe from user attempt through OStatus.
// TRANS: %1$s is the unsubscriber's name, %2$s is the unsubscribed user's name.
- $act->content = sprintf(_("%1$s stopped following %2$s."),
+ $act->content = sprintf(_m('%1$s stopped following %2$s.'),
$profile->getBestName(),
$other->getBestName());
return true;
} else {
$oprofile->garbageCollect();
+ // TRANS: Exception.
throw new Exception(_m("Failed joining remote group."));
}
}
* @param Notice $notice being favored
* @return hook return value
*/
-
function onEndFavorNotice(Profile $profile, Notice $notice)
{
$user = User::staticGet('id', $profile->id);
$notice->id,
common_date_iso8601(time()));
$act->time = time();
- $act->title = _("Disfavor");
+ $act->title = _m('Disfavor');
// TRANS: Success message for remove a favorite notice through OStatus.
// TRANS: %1$s is the unfavoring user's name, %2$s is URI to the no longer favored notice.
- $act->content = sprintf(_("%1$s marked notice %2$s as no longer a favorite."),
+ $act->content = sprintf(_m('%1$s marked notice %2$s as no longer a favorite.'),
$profile->getBestName(),
$notice->uri);
$action->elementStart('p', array('id' => 'entity_remote_subscribe',
'class' => 'entity_subscribe'));
$action->element('a', array('href' => common_local_url($target),
- 'class' => 'entity_remote_subscribe')
- , _m('Remote')); // @todo: i18n: Add translator hint for this text.
+ 'class' => 'entity_remote_subscribe'),
+ // TRANS: Link text for link to remote subscribe.
+ _m('Remote'));
$action->elementEnd('p');
$action->elementEnd('div');
}
$profile->id,
common_date_iso8601(time()));
$act->time = time();
+ // TRANS: Title for activity.
$act->title = _m("Profile update");
// TRANS: Ping text for remote profile update through OStatus.
// TRANS: %s is user that updated their profile.
array('nickname' => $profileUser->nickname));
$output->element('a', array('href' => $url,
'class' => 'entity_remote_subscribe'),
- _m('Subscribe')); // @todo: i18n: Add context.
+ // TRANS: Link text for a user to subscribe to an OStatus user.
+ _m('Subscribe'));
$output->elementEnd('li');
}
}
'version' => STATUSNET_VERSION,
'author' => 'Evan Prodromou, James Walker, Brion Vibber, Zach Copley',
'homepage' => 'http://status.net/wiki/Plugin:OStatus',
- 'rawdescription' =>
- _m('Follow people across social networks that implement '.
- '<a href="http://ostatus.org/">OStatus</a>.')); // @todo i18n: Add translator hint.
+ // TRANS: Plugin description.
+ 'rawdescription' => _m('Follow people across social networks that implement '.
+ '<a href="http://ostatus.org/">OStatus</a>.'));
return true;
}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/**
- * @package OStatusPlugin
- * @author James Walker <james@status.net>
- */
-
if (!defined('STATUSNET')) {
exit(1);
}
+/**
+ * @package OStatusPlugin
+ * @author James Walker <james@status.net>
+ */
class GroupsalmonAction extends SalmonAction
{
var $group = null;
$id = $this->trimmed('id');
if (!$id) {
- $this->clientError(_('No ID.'));
+ // TRANS: Client error.
+ $this->clientError(_m('No ID.'));
}
$this->group = User_group::staticGet('id', $id);
if (empty($this->group)) {
- $this->clientError(_('No such group.'));
+ // TRANS: Client error.
+ $this->clientError(_m('No such group.'));
}
$oprofile = Ostatus_profile::staticGet('group_id', $id);
if ($oprofile) {
+ // TRANS: Client error.
$this->clientError(_m("Can't accept remote posts for a remote group."));
}
/**
* We've gotten a post event on the Salmon backchannel, probably a reply.
*/
-
function handlePost()
{
// @fixme process all objects?
case ActivityObject::COMMENT:
break;
default:
+ // TRANS: Client exception.
throw new ClientException("Can't handle that kind of post.");
}
// Notice must be to the attention of this group
-
$context = $this->activity->context;
if (empty($context->attention)) {
+ // TRANS: Client exception.
throw new ClientException("Not to the attention of anyone.");
} else {
$uri = common_local_url('groupbyid', array('id' => $this->group->id));
if (!in_array($uri, $context->attention)) {
+ // TRANS: Client exception.
throw new ClientException("Not to the attention of this group.");
}
}
* currently we're doing the main logic in joingroup action
* and so have to repeat it here.
*/
-
function handleJoin()
{
$oprofile = $this->ensureProfile();
if (!$oprofile) {
+ // TRANS: Client error.
$this->clientError(_m("Can't read profile to set up group membership."));
}
if ($oprofile->isGroup()) {
+ // TRANS: Client error.
$this->clientError(_m("Groups can't join groups."));
}
}
if (Group_block::isBlocked($this->group, $profile)) {
- $this->clientError(_('You have been blocked from that group by the admin.'), 403);
+ $this->clientError(_m('You have been blocked from that group by the admin.'), 403);
return false;
}
//Event::handle('EndJoinGroup', array($this->group, $profile));
//}
} catch (Exception $e) {
+ // TRANS: Server error. %1$s is a profile URI, %2$s is a group nickname.
$this->serverError(sprintf(_m('Could not join remote user %1$s to group %2$s.'),
$oprofile->uri, $this->group->nickname));
}
/**
* A remote user left our group.
*/
-
function handleLeave()
{
$oprofile = $this->ensureProfile();
//Event::handle('EndLeaveGroup', array($this->group, $profile));
//}
} catch (Exception $e) {
+ // TRANS: Server error. %1$s is a profile URI, %2$s is a group nickname.
$this->serverError(sprintf(_m('Could not remove remote user %1$s from group %2$s.'),
$oprofile->uri, $this->group->nickname));
return;
}
}
-
}
class HostMetaAction extends Action
{
-
function handle()
{
parent::handle();
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
$this->input('profile',
+ // TRANS: Field label.
_m('Join group'),
$this->profile_uri,
+ // TRANS: Tooltip for field label "Join group".
_m("OStatus group's address, like http://example.net/group/nickname."));
$this->elementEnd('li');
$this->elementEnd('ul');
- $this->submit('validate', _m('Continue'));
+ // TRANS: Button text.
+ $this->submit('validate', _m('BUTTON','Continue'));
$this->elementEnd('fieldset');
*
* @return string Title of the page
*/
-
function title()
{
// TRANS: Page title for OStatus remote group join form
*
* @return instructions for use
*/
-
function getInstructions()
{
+ // TRANS: Instructions.
return _m('You can subscribe to groups from other supported sites. Paste the group\'s profile URI below:');
}
class OStatusInitAction extends Action
{
-
var $nickname;
var $group;
var $profile;
parent::prepare($args);
if (common_logged_in()) {
+ // TRANS: Client error.
$this->clientError(_m('You can use the local subscription!'));
return false;
}
$this->xw->startDocument('1.0', 'UTF-8');
$this->elementStart('html');
$this->elementStart('head');
+ // TRANS: Form title.
$this->element('title', null, _m('Subscribe to user'));
$this->elementEnd('head');
$this->elementStart('body');
function showContent()
{
if ($this->group) {
+ // TRANS: Form legend.
$header = sprintf(_m('Join group %s'), $this->group);
- $submit = _m('Join');
+ // TRANS: Button text.
+ $submit = _m('BUTTON','Join');
} else {
+ // TRANS: Form legend.
$header = sprintf(_m('Subscribe to %s'), $this->nickname);
- $submit = _m('Subscribe');
+ // TRANS: Button text.
+ $submit = _m('BUTTON','Subscribe');
}
$this->elementStart('form', array('id' => 'form_ostatus_connect',
'method' => 'post',
$this->elementStart('ul', 'form_data');
$this->elementStart('li', array('id' => 'ostatus_nickname'));
+ // TRANS: Field label.
$this->input('nickname', _m('User nickname'), $this->nickname,
_m('Nickname of the user you want to follow.'));
$this->hidden('group', $this->group); // pass-through for magic links
$this->elementEnd('li');
$this->elementStart('li', array('id' => 'ostatus_profile'));
+ // TRANS: Field label.
$this->input('profile', _m('Profile Account'), $this->profile,
+ // TRANS: Tooltip for field label "Profile Account".
_m('Your account id (e.g. user@identi.ca).'));
$this->elementEnd('li');
$this->elementEnd('ul');
} elseif (strpos($this->profile, '@') !== false) {
$this->connectWebfinger($this->profile);
} else {
+ // TRANS: Client error.
$this->clientError(_m("Must provide a remote profile."));
}
}
$disco = new Discovery;
$result = $disco->lookup($acct);
if (!$result) {
+ // TRANS: Client error.
$this->clientError(_m("Couldn't look up OStatus account profile."));
}
}
}
+ // TRANS: Client error.
$this->clientError(_m("Couldn't confirm remote profile address."));
}
if ($user) {
return common_local_url('userbyid', array('id' => $user->id));
} else {
+ // TRANS: Client error.
$this->clientError("No such user.");
}
} else if ($this->group) {
if ($group) {
return common_local_url('groupbyid', array('id' => $group->group_id));
} else {
+ // TRANS: Client error.
$this->clientError("No such group.");
}
} else {
+ // TRANS: Client error.
$this->clientError("No local user or group nickname provided.");
}
}
function title()
{
+ // TRANS: Page title.
return _m('OStatus Connect');
}
-
}
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
$this->input('profile',
+ // TRANS: Field label for a field that takes an OStatus user address.
_m('Subscribe to'),
$this->profile_uri,
- _m("OStatus user's address, like nickname@example.com or http://example.net/nickname")); // @todo i18n FIXME: needs context/translator hint.
+ // TRANS: Tooltip for field label "Subscribe to".
+ _m('OStatus user\'s address, like nickname@example.com or http://example.net/nickname'));
$this->elementEnd('li');
$this->elementEnd('ul');
-
- $this->submit('validate', _m('Continue')); // @todo i18n FIXME: needs context/translator hint.
+ // TRANS: Button text.
+ $this->submit('validate', _m('BUTTON','Continue'));
$this->elementEnd('fieldset');
$this->hidden('profile', $this->profile_uri);
if ($this->oprofile->isGroup()) {
$this->submit('submit', _m('Join'), 'submit', null,
- _m('Join this group')); // @todo i18n FIXME: needs context/translator hint.
+ // TRANS: Button text.
+ // TRANS: Tooltip for button "Join".
+ _m('BUTTON','Join this group'));
} else {
- $this->submit('submit', _m('Confirm'), 'submit', null,
- _m('Subscribe to this user')); // @todo i18n FIXME: needs context/translator hint.
+ // TRANS: Button text.
+ $this->submit('submit', _m('BUTTON','Confirm'), 'submit', null,
+ // TRANS: Tooltip for button "Confirm".
+ _m('Subscribe to this user'));
}
$this->elementEnd('fieldset');
$this->elementEnd('form');
$this->elementStart('div', 'entity_profile vcard');
$this->elementStart('dl', 'entity_depiction');
- $this->element('dt', null, _('Photo'));
+ $this->element('dt', null, _m('Photo'));
$this->elementStart('dd');
$this->element('img', array('src' => $avatar,
'class' => 'photo avatar',
$this->elementEnd('dl');
$this->elementStart('dl', 'entity_nickname');
- $this->element('dt', null, _('Nickname'));
+ $this->element('dt', null, _m('Nickname'));
$this->elementStart('dd');
$hasFN = ($fullname !== '') ? 'nickname' : 'fn nickname';
$this->elementStart('a', array('href' => $profile,
}
if (!is_null($location)) {
$this->elementStart('dl', 'entity_location');
- $this->element('dt', null, _('Location'));
+ $this->element('dt', null, _m('Location'));
$this->elementStart('dd', 'label');
$this->raw($location);
$this->elementEnd('dd');
if (!is_null($homepage)) {
$this->elementStart('dl', 'entity_url');
- $this->element('dt', null, _('URL'));
+ $this->element('dt', null, _m('URL'));
$this->elementStart('dd');
$this->elementStart('a', array('href' => $homepage,
'class' => 'url'));
if (!is_null($note)) {
$this->elementStart('dl', 'entity_note');
- $this->element('dt', null, _('Note'));
+ $this->element('dt', null, _m('Note'));
$this->elementStart('dd', 'note');
$this->raw($note);
$this->elementEnd('dd');
} else if (Validate::uri($this->profile_uri)) {
$this->oprofile = Ostatus_profile::ensureProfileURL($this->profile_uri);
} else {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname.");
common_debug('Invalid address format.', __FILE__);
return false;
}
return true;
} catch (FeedSubBadURLException $e) {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname.");
common_debug('Invalid URL or could not reach server.', __FILE__);
} catch (FeedSubBadResponseException $e) {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later.");
common_debug('Cannot read feed; server returned error.', __FILE__);
} catch (FeedSubEmptyException $e) {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later.");
common_debug('Cannot read feed; server returned an empty page.', __FILE__);
} catch (FeedSubBadHTMLException $e) {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later.");
common_debug('Bad HTML, could not find feed link.', __FILE__);
} catch (FeedSubNoFeedException $e) {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later.");
common_debug('Could not find a feed linked from this URL.', __FILE__);
} catch (FeedSubUnrecognizedTypeException $e) {
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later.");
common_debug('Not a recognized feed type.', __FILE__);
} catch (Exception $e) {
// Any new ones we forgot about
+ // TRANS: Error text.
$this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname.");
common_debug(sprintf('Bad feed URL: %s %s', get_class($e), $e->getMessage()), __FILE__);
}
// CSRF protection
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
- $this->showForm(_('There was a problem with your session token. '.
+ $this->showForm(_m('There was a problem with your session token. '.
'Try again, please.'));
return;
}
$this->xw->startDocument('1.0', 'UTF-8');
$this->elementStart('html');
$this->elementStart('head');
+ // TRANS: Form title.
$this->element('title', null, _m('Subscribe to user'));
$this->elementEnd('head');
$this->elementStart('body');
function getInstructions()
{
+ // TRANS: Instructions.
return _m('You can subscribe to users from other supported sites. Paste their address or profile URI below:');
}
*
* @return void
*/
-
function showContent()
{
if ($this->oprofile) {
function showNoticeForm() {
// nop
}
-
}
$this->user = User::siteOwner();
if (!$this->user) {
- $this->clientError(_('No such user.'), 404);
+ $this->clientError(_m('No such user.'), 404);
return false;
}
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
class PushCallbackAction extends Action
{
function handle()
$feedid = $this->arg('feed');
common_log(LOG_INFO, "POST for feed id $feedid");
if (!$feedid) {
- throw new ServerException('Empty or invalid feed id.', 400);
+ throw new ServerException(_m('Empty or invalid feed id.'), 400);
}
$feedsub = FeedSub::staticGet('id', $feedid);
if (!$feedsub) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ServerException('Unknown PuSH feed id ' . $feedid, 400);
+ // TRANS: Server exception. %s is a feed ID.
+ throw new ServerException(sprintf(_m('Unknown PuSH feed id %s'),$feedid), 400);
}
$hmac = '';
$verify_token = $this->arg('hub_verify_token');
if ($mode != 'subscribe' && $mode != 'unsubscribe') {
- throw new ClientException("Bad hub.mode $mode", 404);
+ // TRANS: Client exception. %s is an invalid value for hub.mode.
+ throw new ClientException(sprintf(_m('Bad hub.mode "$s".',$mode)), 404);
}
$feedsub = FeedSub::staticGet('uri', $topic);
if (!$feedsub) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Bad hub.topic feed $topic.", 404);
+ // TRANS: Client exception. %s is an invalid feed name.
+ throw new ClientException(sprintf(_m('Bad hub.topic feed "%s".'),$topic), 404);
}
if ($feedsub->verify_token !== $verify_token) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Bad hub.verify_token $token for $topic.", 404);
+ // TRANS: Client exception. %1$s the invalid token, %2$s is the topic for which the invalid token was given.
+ throw new ClientException(sprintf(_m('Bad hub.verify_token %1$s for %2$s.'),$token,$topic), 404);
}
if ($mode == 'subscribe') {
// We may get re-sub requests legitimately.
if ($feedsub->sub_state != 'subscribe' && $feedsub->sub_state != 'active') {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Unexpected subscribe request for $topic.", 404);
+ // TRANS: Client exception. %s is an invalid topic.
+ throw new ClientException(sprintf(_m('Unexpected subscribe request for %s.'),$topic), 404);
}
} else {
if ($feedsub->sub_state != 'unsubscribe') {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Unexpected unsubscribe request for $topic.", 404);
+ // TRANS: Client exception. %s is an invalid topic.
+ throw new ClientException(sprintf(_m('Unexpected unsubscribe request for %s.'),$topic), 404);
}
}
$this->subunsub($mode);
break;
case "publish":
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Publishing outside feeds not supported.", 400);
+ // TRANS: Client exception.
+ throw new ClientException(_m('Publishing outside feeds not supported.'), 400);
default:
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Unrecognized mode '$mode'.", 400);
+ // TRANS: Client exception. %s is a mode.
+ throw new ClientException(sprintf(_m('Unrecognized mode "%s".'),$mode), 400);
}
}
$topic = $this->argUrl('hub.topic');
if (!$this->recognizedFeed($topic)) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Unsupported hub.topic $topic; this hub only serves local user and group Atom feeds.");
+ // TRANS: Client exception. %s is a topic.
+ throw new ClientException(sprintf(_m('Unsupported hub.topic %s this hub only serves local user and group Atom feeds.'),$topic));
}
$verify = $this->arg('hub.verify'); // @fixme may be multiple
if ($verify != 'sync' && $verify != 'async') {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Invalid hub.verify $verify; must be sync or async.");
+ // TRANS: Client exception.
+ throw new ClientException(sprintf(_m('Invalid hub.verify "%s". It must be sync or async.'),$verify));
}
$lease = $this->arg('hub.lease_seconds', null);
if ($mode == 'subscribe' && $lease != '' && !preg_match('/^\d+$/', $lease)) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Invalid hub.lease $lease; must be empty or positive integer.");
+ // TRANS: Client exception.
+ throw new ClientException(sprintf(_m('Invalid hub.lease "%s". It must be empty or positive integer.'),$lease));
}
$token = $this->arg('hub.verify_token', null);
$secret = $this->arg('hub.secret', null);
if ($secret != '' && strlen($secret) >= 200) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Invalid hub.secret $secret; must be under 200 bytes.");
+ // TRANS: Client exception.
+ throw new ClientException(sprintf(_m('Invalid hub.secret "%s". It must be under 200 bytes.'),$secret));
}
$sub = HubSub::staticGet($topic, $callback);
if ($feed == $userFeed) {
$user = User::staticGet('id', $id);
if (!$user) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Invalid hub.topic $feed; user doesn't exist.");
+ // TRANS: Client exception.
+ throw new ClientException(sprintt(_m('Invalid hub.topic "%s". User doesn\'t exist.'),$feed));
} else {
return true;
}
if ($feed == $groupFeed) {
$user = User_group::staticGet('id', $id);
if (!$user) {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Invalid hub.topic $feed; group doesn't exist.");
+ // TRANS: Client exception.
+ throw new ClientException(sprintf(_m('Invalid hub.topic "%s". Group doesn\'t exist.'),$feed));
} else {
return true;
}
if (Validate::uri($url, $params)) {
return $url;
} else {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new ClientException("Invalid URL passed for $arg: '$url'");
+ // TRANS: Client exception.
+ // TRANS: %1$s is this argument to the method this exception occurs in, %2$s is a URL.
+ throw new ClientException(sprintf(_m('Invalid URL passed for %1$s: "%2$s"'),$arg,$url));
}
}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/**
- * @package OStatusPlugin
- * @author James Walker <james@status.net>
- */
-
if (!defined('STATUSNET')) {
exit(1);
}
+/**
+ * @package OStatusPlugin
+ * @author James Walker <james@status.net>
+ */
class UsersalmonAction extends SalmonAction
{
function prepare($args)
$id = $this->trimmed('id');
if (!$id) {
- $this->clientError(_('No ID.'));
+ $this->clientError(_m('No ID.'));
}
$this->user = User::staticGet('id', $id);
if (empty($this->user)) {
- $this->clientError(_('No such user.'));
+ $this->clientError(_m('No such user.'));
}
return true;
if (!empty($context->replyToID)) {
$notice = Notice::staticGet('uri', $context->replyToID);
if (empty($notice)) {
- throw new ClientException("In reply to unknown notice");
+ // TRANS: Client exception.
+ throw new ClientException(_m('In reply to unknown notice.'));
}
if ($notice->profile_id != $this->user->id &&
!in_array($this->user->id, $notice->getReplies())) {
- throw new ClientException("In reply to a notice not by this user and not mentioning this user");
+ // TRANS: Client exception.
+ throw new ClientException(_m('In reply to a notice not by this user and not mentioning this user.'));
}
} else if (!empty($context->attention)) {
if (!in_array($this->user->uri, $context->attention) &&
!in_array(common_profile_url($this->user->nickname), $context->attention)) {
common_log(LOG_ERR, "{$this->user->uri} not in attention list (".implode(',', $context->attention).")");
- throw new ClientException("To the attention of user(s) not including this one!");
+ // TRANS: Client exception.
+ throw new ClientException('To the attention of user(s), not including this one.');
}
} else {
- throw new ClientException("Not to anyone in reply to anything!");
+ // TRANS: Client exception.
+ throw new ClientException('Not to anyone in reply to anything.');
}
$existing = Notice::staticGet('uri', $this->activity->objects[0]->id);
* We've gotten a follow/subscribe notification from a remote user.
* Save a subscription relationship for them.
*/
-
function handleFollow()
{
$oprofile = $this->ensureProfile();
'notice_id' => $notice->id));
if (!empty($old)) {
- throw new ClientException("We already know that's a fave!");
+ // TRANS: Client exception.
+ throw new ClientException(_('This is already a favorite.'));
}
if (!Fave::addNew($profile, $notice)) {
- throw new ClientException("Could not save new favorite.");
+ // TRANS: Client exception.
+ throw new ClientException(_m('Could not save new favorite.'));
}
}
$fave = Fave::pkeyGet(array('user_id' => $profile->id,
'notice_id' => $notice->id));
if (empty($fave)) {
- throw new ClientException("Notice wasn't favorited!");
+ // TRANS: Client exception.
+ throw new ClientException(_('Notice wasn\'t favorited!'));
}
$fave->delete();
function getNotice($object)
{
if (!$object) {
- throw new ClientException("Can't favorite/unfavorite without an object.");
+ // TRANS: Client exception.
+ throw new ClientException(_m('Can\'t favorite/unfavorite without an object.'));
}
switch ($object->type) {
case ActivityObject::COMMENT:
break;
default:
- throw new ClientException("Can't handle that kind of object for liking/faving.");
+ // TRANS: Client exception.
+ throw new ClientException(_m('Can\'t handle that kind of object for liking/faving.'));
}
$notice = Notice::staticGet('uri', $object->id);
if (empty($notice)) {
- throw new ClientException("Notice with ID $object->id unknown.");
+ // TRANS: Client exception. %s is an object ID.
+ throw new ClientException(sprintf(_m('Notice with ID %s unknown.'),$object->id));
}
if ($notice->profile_id != $this->user->id) {
- throw new ClientException("Notice with ID $object->id not posted by $this->user->id.");
+ // TRANS: Client exception. %1$s is a notice ID, %2$s is a user ID.
+ throw new ClientException(sprintf(_m('Notice with ID %1$s not posted by %2$s.'),$object->id,$this->user->id));
}
return $notice;
}
-
}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+if (!defined('STATUSNET')) { exit(1); }
+
/**
* @package OStatusPlugin
* @maintainer James Walker <james@status.net>
*/
-
-if (!defined('STATUSNET')) { exit(1); }
-
class UserxrdAction extends XrdAction
{
-
function prepare($args)
{
parent::prepare($args);
$this->user = User::staticGet('uri', $this->uri);
}
if (!$this->user) {
- $this->clientError(_('No such user.'), 404);
+ $this->clientError(_m('No such user.'), 404);
return false;
}
hub sends us updates via POST
*/
-
class FeedDBException extends FeedSubException
{
public $obj;
*
* @return array array of column definitions
*/
-
function table()
{
return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
*
* @return array key definitions
*/
-
function keys()
{
return array_keys($this->keyTypes());
*
* @return array key definitions
*/
-
function keyTypes()
{
return array('id' => 'K', 'uri' => 'U');
// We'll never actually get updates in this mode.
return true;
} else {
- throw new ServerException("Attempting to start PuSH subscription for feed with no hub.");
+ throw new ServerException(_m('Attempting to start PuSH subscription for feed with no hub.'));
}
}
// We'll never actually get updates in this mode.
return true;
} else {
- throw new ServerException("Attempting to end PuSH subscription for feed with no hub.");
+ throw new ServerException(_m('Attempting to end PuSH subscription for feed with no hub.'));
}
}
}
return false;
}
-
}
*
* @return array array of column definitions
*/
-
function table()
{
return array('hashkey' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
*
* @return array key definitions
*/
-
function keyTypes()
{
return array('hashkey' => 'K');
if ($status >= 200 && $status < 300) {
common_log(LOG_INFO, "Verified $mode of $this->callback:$this->topic");
} else {
- // @todo i18n FIXME: add i18n and use sprintf for parameter.
- throw new ClientException("Hub subscriber verification returned HTTP $status");
+ // TRANS: Client exception. %s is a HTTP status code.
+ throw new ClientException(sprintf(_m('Hub subscriber verification returned HTTP %s.'),$status));
}
$old = HubSub::staticGet($this->topic, $this->callback);
if ($response->isOk()) {
return true;
} else {
- throw new Exception("Callback returned status: " .
- $response->getStatus() .
- "; body: " .
- trim($response->getBody()));
+ // TRANS: Exception. %1$s is a response status code, %2$s is the body of the response.
+ throw new Exception(sprintf(_m('Callback returned status: %1$s. Body: %2$s'),
+ $response->getStatus(),trim($response->getBody())));
}
}
}
class Magicsig extends Memcached_DataObject
{
-
const PUBLICKEYREL = 'magic-public-key';
public $__table = 'magicsig';
64, false));
}
-
function keys()
{
return array_keys($this->keyTypes());
$this->insert();
}
-
public function toString($full_pair = true)
{
$mod = Magicsig::base64_url_encode($this->publicKey->modulus->toBytes());
case 'RSA-SHA256':
return 'sha256';
}
-
}
public function sign($bytes)
* @package OStatusPlugin
* @maintainer Brion Vibber <brion@status.net>
*/
-
class Ostatus_profile extends Memcached_DataObject
{
public $__table = 'ostatus_profile';
*
* @return array array of column definitions
*/
-
function table()
{
return array('uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
*
* @return array key definitions
*/
-
function keys()
{
return array_keys($this->keyTypes());
*
* @return array key definitions
*/
-
function keyTypes()
{
return array('uri' => 'K', 'profile_id' => 'U', 'group_id' => 'U', 'feeduri' => 'U');
} else if ($this->group_id && !$this->profile_id) {
return true;
} else if ($this->group_id && $this->profile_id) {
- // @todo i18n FIXME: use sprintf and add i18n.
- throw new ServerException("Invalid ostatus_profile state: both group and profile IDs set for $this->uri.");
+ // TRANS: Server exception.
+ throw new ServerException(sprintf(_m('Invalid ostatus_profile state: both group and profile IDs set for %s.'),$this->uri));
} else {
- // @todo i18n FIXME: use sprintf and add i18n.
- throw new ServerException("Invalid ostatus_profile state: both group and profile IDs empty for $this->uri.");
+ // TRANS: Server exception.
+ throw new ServerException(sprintf(_m('Invalid ostatus_profile state: both group and profile IDs empty for %s.'),$this->uri));
}
}
if ($type == 'object') {
$type = get_class($actor);
}
- throw new ServerException("Invalid actor passed to " . __METHOD__ . ": " . $type);
+ // TRANS: Server exception.
+ // TRANS: %1$s is the method name the exception occured in, %2$s is the actor type.
+ throw new ServerException(sprintf(_m('Invalid actor passed to %1$s: %2$s.'),__METHOD__,$type));
}
if ($object == null) {
$object = $this;
} else if ($entry instanceof Notice) {
return $preamble . $entry->asAtomEntry(true, true);
} else {
- // @todo i18n FIXME: use sprintf and add i18n.
- throw new ServerException("Invalid type passed to Ostatus_profile::notify; must be XML string or Activity entry.");
+ // TRANS: Server exception.
+ throw new ServerException(_m('Invalid type passed to Ostatus_profile::notify. It must be XML string or Activity entry.'));
}
}
} else if ($feed->localName == 'rss') { // @fixme check namespace
$this->processRssFeed($feed, $source);
} else {
- throw new Exception("Unknown feed format.");
+ throw new Exception(_m('Unknown feed format.'));
}
}
$channels = $rss->getElementsByTagName('channel');
if ($channels->length == 0) {
- throw new Exception("RSS feed without a channel.");
+ throw new Exception(_m('RSS feed without a channel.'));
} else if ($channels->length > 1) {
common_log(LOG_WARNING, __METHOD__ . ": more than one channel in an RSS feed");
}
}
break;
default:
- throw new ClientException("Can't handle that kind of post.");
+ // TRANS: Client exception.
+ throw new ClientException(_m('Can\'t handle that kind of post.'));
}
Event::handle('EndHandleFeedEntry', array($activity));
$sourceContent = $note->title;
} else {
// @fixme fetch from $sourceUrl?
- // @todo i18n FIXME: use sprintf and add i18n.
- throw new ClientException("No content for notice {$sourceUri}.");
+ // TRANS: Client exception. %s is a source URL.
+ throw new ClientException(sprintf(_m('No content for notice %s.'),$sourceUri));
}
// Get (safe!) HTML and text versions of the content
// We mark up the attachment link specially for the HTML output
// so we can fold-out the full version inline.
+
+ // TRANS: Shown when a notice is longer than supported and/or when attachments are present.
+ $showMoreText = _m('Show more');
$attachUrl = common_local_url('attachment',
array('attachment' => $attachment->id));
$rendered = common_render_text($shortSummary) .
'<a href="' . htmlspecialchars($attachUrl) .'"'.
' class="attachment more"' .
- ' title="'. htmlspecialchars(_m('Show more')) . '">' .
+ ' title="'. htmlspecialchars($showMoreText) . '">' .
'…' .
- '</a>'; // @todo i18n FIXME: add translator hint/context.
+ '</a>';
}
}
continue;
}
- // Is the recipient a remote group?
- $oprofile = Ostatus_profile::ensureProfileURI($recipient);
-
- if ($oprofile) {
- if ($oprofile->isGroup()) {
- // Deliver to local members of this remote group.
- // @fixme sender verification?
- $groups[] = $oprofile->group_id;
- } else {
- // may be canonicalized or something
- $replies[] = $oprofile->uri;
- }
- continue;
- }
-
// Is the recipient a local group?
- // @fixme uri on user_group isn't reliable yet
// $group = User_group::staticGet('uri', $recipient);
$id = OStatusPlugin::localGroupFromUrl($recipient);
if ($id) {
}
}
- common_log(LOG_DEBUG, "Skipping reply to unrecognized profile $recipient");
+ // Is the recipient a remote user or group?
+ try {
+ $oprofile = Ostatus_profile::ensureProfileURI($recipient);
+ if ($oprofile->isGroup()) {
+ // Deliver to local members of this remote group.
+ // @fixme sender verification?
+ $groups[] = $oprofile->group_id;
+ } else {
+ // may be canonicalized or something
+ $replies[] = $oprofile->uri;
+ }
+ continue;
+ } catch (Exception $e) {
+ // Neither a recognizable local nor remote user!
+ common_log(LOG_DEBUG, "Skipping reply to unrecognized profile $recipient: " . $e->getMessage());
+ }
}
$attention_uris = $replies;
$response = $client->get($profile_url);
if (!$response->isOk()) {
- // @todo i18n FIXME: use sprintf and add i18n.
- throw new Exception("Could not reach profile page: " . $profile_url);
+ // TRANS: Exception. %s is a profile URL.
+ throw new Exception(sprintf(_m('Could not reach profile page %s.'),$profile_url));
}
// Check if we have a non-canonical URL
return self::ensureFeedURL($feedurl, $hints);
}
- // @todo i18n FIXME: use sprintf and add i18n.
- throw new Exception("Could not find a feed URL for profile page " . $finalUrl);
+ // TRANS: Exception.
+ throw new Exception(sprintf(_m('Could not find a feed URL for profile page %s.'),$finalUrl));
}
/**
$user = User::staticGet('id', $profile->id);
if (!empty($user)) {
- // @todo i18n FIXME: use sprintf and add i18n.
+ // @todo i18n FIXME: use sprintf and add i18n (?)
throw new OStatusShadowException($profile, "'$profile_url' is the profile for local user '{$user->nickname}'.");
}
}
// XXX: make some educated guesses here
-
- throw new FeedSubException("Can't find enough profile information to make a feed.");
+ throw new FeedSubException(_m('Can\'t find enough profile information to make a feed.'));
}
/**
$user = User::staticGet('uri', $homeuri);
if ($user) {
- // @todo i18n FIXME: add i18n.
- throw new Exception("Local user can't be referenced as remote.");
+ // TRANS: Exception.
+ throw new Exception(_m('Local user can\'t be referenced as remote.'));
}
if (OStatusPlugin::localGroupFromUrl($homeuri)) {
- // @todo i18n FIXME: add i18n.
- throw new Exception("Local group can't be referenced as remote.");
+ // TRANS: Exception.
+ throw new Exception(_m('Local group can\'t be referenced as remote.'));
}
if (array_key_exists('feedurl', $hints)) {
$oprofile->profile_id = $profile->insert();
if (!$oprofile->profile_id) {
- // @todo i18n FIXME: add i18n.
- throw new ServerException("Can't save local profile.");
+ // TRANS: Exception.
+ throw new ServerException(_m('Can\'t save local profile.'));
}
} else {
$group = new User_group();
$oprofile->group_id = $group->insert();
if (!$oprofile->group_id) {
- // @todo i18n FIXME: add i18n.
- throw new ServerException("Can't save local profile.");
+ // TRANS: Exception.
+ throw new ServerException(_m('Can\'t save local profile.'));
}
}
$ok = $oprofile->insert();
if (!$ok) {
- // @todo i18n FIXME: add i18n.
- throw new ServerException("Can't save OStatus profile.");
+ // TRANS: Exception.
+ throw new ServerException(_m('Can\'t save OStatus profile.'));
}
$avatar = self::getActivityObjectAvatar($object, $hints);
if ($uri !== false) {
if (is_null($uri)) {
// Negative cache entry
- // @todo i18n FIXME: add i18n.
- throw new Exception('Not a valid webfinger address.');
+ // TRANS: Exception.
+ throw new Exception(_m('Not a valid webfinger address.'));
}
$oprofile = Ostatus_profile::staticGet('uri', $uri);
if (!empty($oprofile)) {
// Save negative cache entry so we don't waste time looking it up again.
// @fixme distinguish temporary failures?
self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), null);
- // @todo i18n FIXME: add i18n.
- throw new Exception('Not a valid webfinger address.');
+ // TRANS: Exception.
+ throw new Exception(_m('Not a valid webfinger address.'));
}
$hints = array('webfinger' => $addr);
if (!$profile_id) {
common_log_db_error($profile, 'INSERT', __FILE__);
- // @todo i18n FIXME: add i18n and use sprintf for parameter.
- throw new Exception("Couldn't save profile for '$addr'.");
+ // TRANS: Exception. %s is a webfinger address.
+ throw new Exception(sprintf(_m('Couldn\'t save profile for "%s".'),$addr));
}
$oprofile = new Ostatus_profile();
if (!$result) {
common_log_db_error($oprofile, 'INSERT', __FILE__);
- // @todo i18n FIXME: add i18n and use sprintf for parameter.
- throw new Exception("Couldn't save ostatus_profile for '$addr'.");
+ // TRANS: Exception. %s is a webfinger address.
+ throw new Exception(sprintf(_m('Couldn\'t save ostatus_profile for "%s".'),$addr));
}
self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->uri);
return $oprofile;
}
- // @todo i18n FIXME: add i18n and use sprintf for parameter.
- throw new Exception("Couldn't find a valid profile for '$addr'");
+ // TRANS: Exception. %s is a webfinger address.
+ throw new Exception(sprintf(_m('Couldn\'t find a valid profile for "%s".'),$addr));
}
/**
if ($file_id === false) {
common_log_db_error($file, "INSERT", __FILE__);
- throw new ServerException(_('Could not store HTML content of long post as file.'));
+ throw new ServerException(_m('Could not store HTML content of long post as file.'));
}
return $file;
* @package OStatusPlugin
* @maintainer Brion Vibber <brion@status.net>
*/
-
class Ostatus_source extends Memcached_DataObject
{
public $__table = 'ostatus_source';
*
* @return array array of column definitions
*/
-
function table()
{
return array('notice_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
*
* @return array key definitions
*/
-
function keys()
{
return array_keys($this->keyTypes());
*
* @return array key definitions
*/
-
function keyTypes()
{
return array('notice_id' => 'K');
}
}
- // @todo Needs i18n.
- throw new Exception('Unable to find services for '. $id . '.');
+ // TRANS: Exception.
+ throw new Exception(sprintf(_m('Unable to find services for %s.'),$id));
}
public static function getService($links, $service) {
*/
class DiscoveryHints {
-
static function fromXRD($xrd)
{
$hints = array();
<?php
+/**
+ * @todo Add file header and documentation.
+ */
class LinkHeader
{
}
}
}
- throw new Exception('Unable to locate signer public key.');
+ // TRANS: Exception.
+ throw new Exception(_m('Unable to locate signer public key.'));
}
'sig' => $signature_alg->sign($armored_text),
'alg' => $signature_alg->getName()
);
-
}
public function toXML($env) {
return $string;
}
-
public function unfold($env)
{
$dom = new DOMDocument();
'sig' => preg_replace('/\s/', '', $sig_element->nodeValue),
);
}
-
}
* @package FeedSub
* @author Brion Vibber <brion@status.net>
*/
-
class PushInQueueHandler extends QueueHandler
{
function transport()
$magickey->generate($user->id);
}
} else {
- // @todo i18n FIXME: added i18n and use sprintf when using parameters.
- throw new Exception("Salmon invalid actor for signing.");
+ // TRANS: Exception.
+ throw new Exception(_m('Salmon invalid actor for signing.'));
}
try {
return $magic_env->toXML($env);
}
-
public function verifyMagicEnv($text)
{
$magic_env = new MagicEnvelope();
parent::prepare($args);
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
- // TRANS: POST is a HTTP command. It should not be translated.
+ // TRANS: Client error. POST is a HTTP command. It should not be translated.
$this->clientError(_m('This method requires a POST.'));
}
if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/magic-envelope+xml') {
+ // TRANS: Client error. Do not translate "application/magic-envelope+xml"
$this->clientError(_m('Salmon requires "application/magic-envelope+xml".'));
}
$salmon = new Salmon;
if (!$salmon->verifyMagicEnv($xml)) {
common_log(LOG_DEBUG, "Salmon signature verification failed.");
+ // TRANS: Client error.
$this->clientError(_m('Salmon signature verification failed.'));
} else {
$magic_env = new MagicEnvelope();
if ($dom->documentElement->namespaceURI != Activity::ATOM ||
$dom->documentElement->localName != 'entry') {
common_log(LOG_DEBUG, "Got invalid Salmon post: $xml");
+ // TRANS: Client error.
$this->clientError(_m('Salmon post must be an Atom entry.'));
}
$this->handleUpdateProfile();
break;
default:
+ // TRANS: Client exception.
throw new ClientException(_m("Unrecognized activity type."));
}
Event::handle('EndHandleSalmon', array($this->activity));
function handlePost()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand posts."));
}
function handleFollow()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand follows."));
}
function handleUnfollow()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand unfollows."));
}
function handleFavorite()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand favorites."));
}
function handleUnfavorite()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand unfavorites."));
}
function handleShare()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand share events."));
}
function handleJoin()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand joins."));
}
function handleLeave()
{
+ // TRANS: Client exception.
throw new ClientException(_m("This target doesn't understand leave events."));
}
if (empty($actor->id)) {
common_log(LOG_ERR, "broken actor: " . var_export($actor, true));
common_log(LOG_ERR, "activity with no actor: " . var_export($this->activity, true));
- throw new Exception("Received a salmon slap from unidentified actor.");
+ // TRANS: Exception.
+ throw new Exception(_m('Received a salmon slap from unidentified actor.'));
}
return Ostatus_profile::ensureActivityObjectProfile($actor);
* @link http://status.net/
*/
-
class XRD
{
const XML_NS = 'http://www.w3.org/2000/xmlns/';
error_reporting($old);
if (!$ok) {
- throw new Exception("Invalid XML.");
+ // TRANS: Exception.
+ throw new Exception(_m('Invalid XML.'));
}
$xrd_element = $dom->getElementsByTagName('XRD')->item(0);
if (!$xrd_element) {
- throw new Exception("Invalid XML, missing XRD root.");
+ // TRANS: Exception.
+ throw new Exception(_m('Invalid XML, missing XRD root.'));
}
// Check for host-meta host
header('Content-type: application/xrd+xml');
print $xrd->toXML();
}
-
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-19 15:29+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: OStatusPlugin.php:226 OStatusPlugin.php:951 actions/ostatusinit.php:99
+#. TRANS: Link description for link to subscribe to a remote user.
+#. TRANS: Link text for a user to subscribe to an OStatus user.
+#: OStatusPlugin.php:227 OStatusPlugin.php:958
msgid "Subscribe"
msgstr ""
-#: OStatusPlugin.php:244 OStatusPlugin.php:663 actions/ostatussub.php:105
-#: actions/ostatusinit.php:96
+#. TRANS: Link description for link to join a remote group.
+#: OStatusPlugin.php:246 OStatusPlugin.php:667 actions/ostatussub.php:107
msgid "Join"
msgstr ""
-#: OStatusPlugin.php:456
+#. TRANSLATE: %s is a domain.
+#: OStatusPlugin.php:459
#, php-format
msgid "Sent from %s via OStatus"
msgstr ""
-#: OStatusPlugin.php:527
+#. TRANS: Exception.
+#: OStatusPlugin.php:531
msgid "Could not set up remote subscription."
msgstr ""
-#: OStatusPlugin.php:647
+#: OStatusPlugin.php:570
+msgid "Follow"
+msgstr ""
+
+#. TRANS: Success message for subscribe to user attempt through OStatus.
+#. TRANS: %1$s is the subscriber name, %2$s is the subscribed user's name.
+#: OStatusPlugin.php:573
+#, php-format
+msgid "%1$s is now following %2$s."
+msgstr ""
+
+#: OStatusPlugin.php:620
+msgid "Unfollow"
+msgstr ""
+
+#. TRANS: Success message for unsubscribe from user attempt through OStatus.
+#. TRANS: %1$s is the unsubscriber's name, %2$s is the unsubscribed user's name.
+#: OStatusPlugin.php:623
+#, php-format
+msgid "%1$s stopped following %2$s."
+msgstr ""
+
+#: OStatusPlugin.php:651
msgid "Could not set up remote group membership."
msgstr ""
-#: OStatusPlugin.php:674
+#. TRANS: Exception.
+#: OStatusPlugin.php:679
msgid "Failed joining remote group."
msgstr ""
-#: OStatusPlugin.php:714
+#: OStatusPlugin.php:719
msgid "Leave"
msgstr ""
-#: OStatusPlugin.php:880
+#: OStatusPlugin.php:760
+msgid "Favor"
+msgstr ""
+
+#. TRANS: Success message for adding a favorite notice through OStatus.
+#. TRANS: %1$s is the favoring user's name, %2$s is URI to the favored notice.
+#: OStatusPlugin.php:763
+#, php-format
+msgid "%1$s marked notice %2$s as a favorite."
+msgstr ""
+
+#: OStatusPlugin.php:806
+msgid "Disfavor"
+msgstr ""
+
+#. TRANS: Success message for remove a favorite notice through OStatus.
+#. TRANS: %1$s is the unfavoring user's name, %2$s is URI to the no longer favored notice.
+#: OStatusPlugin.php:809
+#, php-format
+msgid "%1$s marked notice %2$s as no longer a favorite."
+msgstr ""
+
+#. TRANS: Link text for link to remote subscribe.
+#: OStatusPlugin.php:885
msgid "Remote"
msgstr ""
-#: OStatusPlugin.php:919
+#. TRANS: Title for activity.
+#: OStatusPlugin.php:925
msgid "Profile update"
msgstr ""
#. TRANS: Ping text for remote profile update through OStatus.
#. TRANS: %s is user that updated their profile.
-#: OStatusPlugin.php:922
+#: OStatusPlugin.php:928
#, php-format
msgid "%s has updated their profile page."
msgstr ""
-#: OStatusPlugin.php:966
+#. TRANS: Plugin description.
+#: OStatusPlugin.php:973
msgid ""
"Follow people across social networks that implement <a href=\"http://ostatus."
"org/\">OStatus</a>."
msgstr ""
-#: classes/Ostatus_profile.php:592
+#: classes/FeedSub.php:248
+msgid "Attempting to start PuSH subscription for feed with no hub."
+msgstr ""
+
+#: classes/FeedSub.php:278
+msgid "Attempting to end PuSH subscription for feed with no hub."
+msgstr ""
+
+#. TRANS: Server exception.
+#: classes/Ostatus_profile.php:188
+#, php-format
+msgid "Invalid ostatus_profile state: both group and profile IDs set for %s."
+msgstr ""
+
+#. TRANS: Server exception.
+#: classes/Ostatus_profile.php:191
+#, php-format
+msgid "Invalid ostatus_profile state: both group and profile IDs empty for %s."
+msgstr ""
+
+#. TRANS: Server exception.
+#. TRANS: %1$s is the method name the exception occured in, %2$s is the actor type.
+#: classes/Ostatus_profile.php:281
+#, php-format
+msgid "Invalid actor passed to %1$s: %2$s."
+msgstr ""
+
+#. TRANS: Server exception.
+#: classes/Ostatus_profile.php:374
+msgid ""
+"Invalid type passed to Ostatus_profile::notify. It must be XML string or "
+"Activity entry."
+msgstr ""
+
+#: classes/Ostatus_profile.php:404
+msgid "Unknown feed format."
+msgstr ""
+
+#: classes/Ostatus_profile.php:427
+msgid "RSS feed without a channel."
+msgstr ""
+
+#. TRANS: Client exception.
+#: classes/Ostatus_profile.php:472
+msgid "Can't handle that kind of post."
+msgstr ""
+
+#. TRANS: Client exception. %s is a source URL.
+#: classes/Ostatus_profile.php:555
+#, php-format
+msgid "No content for notice %s."
+msgstr ""
+
+#. TRANS: Shown when a notice is longer than supported and/or when attachments are present.
+#: classes/Ostatus_profile.php:588
msgid "Show more"
msgstr ""
+#. TRANS: Exception. %s is a profile URL.
+#: classes/Ostatus_profile.php:781
+#, php-format
+msgid "Could not reach profile page %s."
+msgstr ""
+
+#. TRANS: Exception.
+#: classes/Ostatus_profile.php:839
+#, php-format
+msgid "Could not find a feed URL for profile page %s."
+msgstr ""
+
+#: classes/Ostatus_profile.php:976
+msgid "Can't find enough profile information to make a feed."
+msgstr ""
+
#: classes/Ostatus_profile.php:1035
#, php-format
msgid "Invalid avatar URL %s."
msgid "Unable to fetch avatar from %s."
msgstr ""
-#. TRANS: POST is a HTTP command. It should not be translated.
+#. TRANS: Exception.
+#: classes/Ostatus_profile.php:1275
+msgid "Local user can't be referenced as remote."
+msgstr ""
+
+#. TRANS: Exception.
+#: classes/Ostatus_profile.php:1280
+msgid "Local group can't be referenced as remote."
+msgstr ""
+
+#. TRANS: Exception.
+#: classes/Ostatus_profile.php:1332 classes/Ostatus_profile.php:1343
+msgid "Can't save local profile."
+msgstr ""
+
+#. TRANS: Exception.
+#: classes/Ostatus_profile.php:1351
+msgid "Can't save OStatus profile."
+msgstr ""
+
+#. TRANS: Exception.
+#: classes/Ostatus_profile.php:1610 classes/Ostatus_profile.php:1638
+msgid "Not a valid webfinger address."
+msgstr ""
+
+#. TRANS: Exception. %s is a webfinger address.
+#: classes/Ostatus_profile.php:1720
+#, php-format
+msgid "Couldn't save profile for \"%s\"."
+msgstr ""
+
+#. TRANS: Exception. %s is a webfinger address.
+#: classes/Ostatus_profile.php:1739
+#, php-format
+msgid "Couldn't save ostatus_profile for \"%s\"."
+msgstr ""
+
+#. TRANS: Exception. %s is a webfinger address.
+#: classes/Ostatus_profile.php:1747
+#, php-format
+msgid "Couldn't find a valid profile for \"%s\"."
+msgstr ""
+
+#: classes/Ostatus_profile.php:1789
+msgid "Could not store HTML content of long post as file."
+msgstr ""
+
+#. TRANS: Client exception. %s is a HTTP status code.
+#: classes/HubSub.php:208
+#, php-format
+msgid "Hub subscriber verification returned HTTP %s."
+msgstr ""
+
+#. TRANS: Exception. %1$s is a response status code, %2$s is the body of the response.
+#: classes/HubSub.php:355
+#, php-format
+msgid "Callback returned status: %1$s. Body: %2$s"
+msgstr ""
+
+#. TRANS: Client error. POST is a HTTP command. It should not be translated.
#: lib/salmonaction.php:42
msgid "This method requires a POST."
msgstr ""
-#: lib/salmonaction.php:46
+#. TRANS: Client error. Do not translate "application/magic-envelope+xml"
+#: lib/salmonaction.php:47
msgid "Salmon requires \"application/magic-envelope+xml\"."
msgstr ""
-#: lib/salmonaction.php:55
+#. TRANS: Client error.
+#: lib/salmonaction.php:57
msgid "Salmon signature verification failed."
msgstr ""
-#: lib/salmonaction.php:66
+#. TRANS: Client error.
+#: lib/salmonaction.php:69
msgid "Salmon post must be an Atom entry."
msgstr ""
-#: lib/salmonaction.php:114
+#. TRANS: Client exception.
+#: lib/salmonaction.php:118
msgid "Unrecognized activity type."
msgstr ""
-#: lib/salmonaction.php:122
+#. TRANS: Client exception.
+#: lib/salmonaction.php:127
msgid "This target doesn't understand posts."
msgstr ""
-#: lib/salmonaction.php:127
+#. TRANS: Client exception.
+#: lib/salmonaction.php:133
msgid "This target doesn't understand follows."
msgstr ""
-#: lib/salmonaction.php:132
+#. TRANS: Client exception.
+#: lib/salmonaction.php:139
msgid "This target doesn't understand unfollows."
msgstr ""
-#: lib/salmonaction.php:137
+#. TRANS: Client exception.
+#: lib/salmonaction.php:145
msgid "This target doesn't understand favorites."
msgstr ""
-#: lib/salmonaction.php:142
+#. TRANS: Client exception.
+#: lib/salmonaction.php:151
msgid "This target doesn't understand unfavorites."
msgstr ""
-#: lib/salmonaction.php:147
+#. TRANS: Client exception.
+#: lib/salmonaction.php:157
msgid "This target doesn't understand share events."
msgstr ""
-#: lib/salmonaction.php:152
+#. TRANS: Client exception.
+#: lib/salmonaction.php:163
msgid "This target doesn't understand joins."
msgstr ""
-#: lib/salmonaction.php:157
+#. TRANS: Client exception.
+#: lib/salmonaction.php:169
msgid "This target doesn't understand leave events."
msgstr ""
+#. TRANS: Exception.
+#: lib/salmonaction.php:197
+msgid "Received a salmon slap from unidentified actor."
+msgstr ""
+
+#. TRANS: Exception.
+#: lib/discovery.php:110
+#, php-format
+msgid "Unable to find services for %s."
+msgstr ""
+
+#. TRANS: Exception.
+#: lib/xrd.php:64
+msgid "Invalid XML."
+msgstr ""
+
+#. TRANS: Exception.
+#: lib/xrd.php:69
+msgid "Invalid XML, missing XRD root."
+msgstr ""
+
+#. TRANS: Exception.
+#: lib/magicenvelope.php:80
+msgid "Unable to locate signer public key."
+msgstr ""
+
+#. TRANS: Exception.
+#: lib/salmon.php:93
+msgid "Salmon invalid actor for signing."
+msgstr ""
+
#: tests/gettext-speedtest.php:57
msgid "Feeds"
msgstr ""
-#: actions/ostatusgroup.php:75
+#. TRANS: Client exception.
+#: actions/pushhub.php:66
+msgid "Publishing outside feeds not supported."
+msgstr ""
+
+#. TRANS: Client exception. %s is a mode.
+#: actions/pushhub.php:69
+#, php-format
+msgid "Unrecognized mode \"%s\"."
+msgstr ""
+
+#. TRANS: Client exception. %s is a topic.
+#: actions/pushhub.php:89
+#, php-format
+msgid ""
+"Unsupported hub.topic %s this hub only serves local user and group Atom "
+"feeds."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/pushhub.php:95
+#, php-format
+msgid "Invalid hub.verify \"%s\". It must be sync or async."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/pushhub.php:101
+#, php-format
+msgid "Invalid hub.lease \"%s\". It must be empty or positive integer."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/pushhub.php:109
+#, php-format
+msgid "Invalid hub.secret \"%s\". It must be under 200 bytes."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/pushhub.php:161
+#, php-format
+msgid "Invalid hub.topic \"%s\". User doesn't exist."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/pushhub.php:170
+#, php-format
+msgid "Invalid hub.topic \"%s\". Group doesn't exist."
+msgstr ""
+
+#. TRANS: Client exception.
+#. TRANS: %1$s is this argument to the method this exception occurs in, %2$s is a URL.
+#: actions/pushhub.php:195
+#, php-format
+msgid "Invalid URL passed for %1$s: \"%2$s\""
+msgstr ""
+
+#: actions/userxrd.php:47 actions/ownerxrd.php:37 actions/usersalmon.php:43
+msgid "No such user."
+msgstr ""
+
+#. TRANS: Client error.
+#: actions/usersalmon.php:37 actions/groupsalmon.php:40
+msgid "No ID."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/usersalmon.php:81
+msgid "In reply to unknown notice."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/usersalmon.php:86
+msgid "In reply to a notice not by this user and not mentioning this user."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/usersalmon.php:163
+msgid "Could not save new favorite."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/usersalmon.php:195
+msgid "Can't favorite/unfavorite without an object."
+msgstr ""
+
+#. TRANS: Client exception.
+#: actions/usersalmon.php:207
+msgid "Can't handle that kind of object for liking/faving."
+msgstr ""
+
+#. TRANS: Client exception. %s is an object ID.
+#: actions/usersalmon.php:214
+#, php-format
+msgid "Notice with ID %s unknown."
+msgstr ""
+
+#. TRANS: Client exception. %1$s is a notice ID, %2$s is a user ID.
+#: actions/usersalmon.php:219
+#, php-format
+msgid "Notice with ID %1$s not posted by %2$s."
+msgstr ""
+
+#. TRANS: Field label.
+#: actions/ostatusgroup.php:76
msgid "Join group"
msgstr ""
-#: actions/ostatusgroup.php:77
+#. TRANS: Tooltip for field label "Join group".
+#: actions/ostatusgroup.php:79
msgid "OStatus group's address, like http://example.net/group/nickname."
msgstr ""
-#: actions/ostatusgroup.php:81 actions/ostatussub.php:71
+#. TRANS: Button text.
+#: actions/ostatusgroup.php:84 actions/ostatussub.php:73
+msgctxt "BUTTON"
msgid "Continue"
msgstr ""
-#: actions/ostatusgroup.php:100
+#: actions/ostatusgroup.php:103
msgid "You are already a member of this group."
msgstr ""
#. TRANS: OStatus remote group subscription dialog error.
-#: actions/ostatusgroup.php:135
+#: actions/ostatusgroup.php:138
msgid "Already a member!"
msgstr ""
#. TRANS: OStatus remote group subscription dialog error.
-#: actions/ostatusgroup.php:146
+#: actions/ostatusgroup.php:149
msgid "Remote group join failed!"
msgstr ""
#. TRANS: OStatus remote group subscription dialog error.
-#: actions/ostatusgroup.php:150
+#: actions/ostatusgroup.php:153
msgid "Remote group join aborted!"
msgstr ""
#. TRANS: Page title for OStatus remote group join form
-#: actions/ostatusgroup.php:163
+#: actions/ostatusgroup.php:165
msgid "Confirm joining remote group"
msgstr ""
-#: actions/ostatusgroup.php:174
+#. TRANS: Instructions.
+#: actions/ostatusgroup.php:176
msgid ""
"You can subscribe to groups from other supported sites. Paste the group's "
"profile URI below:"
msgstr ""
-#: actions/groupsalmon.php:51
+#. TRANS: Client error.
+#: actions/groupsalmon.php:47
+msgid "No such group."
+msgstr ""
+
+#. TRANS: Client error.
+#: actions/groupsalmon.php:53
msgid "Can't accept remote posts for a remote group."
msgstr ""
-#: actions/groupsalmon.php:124
+#. TRANS: Client error.
+#: actions/groupsalmon.php:127
msgid "Can't read profile to set up group membership."
msgstr ""
-#: actions/groupsalmon.php:127 actions/groupsalmon.php:170
+#. TRANS: Client error.
+#: actions/groupsalmon.php:131 actions/groupsalmon.php:174
msgid "Groups can't join groups."
msgstr ""
-#: actions/groupsalmon.php:154
+#: actions/groupsalmon.php:144
+msgid "You have been blocked from that group by the admin."
+msgstr ""
+
+#. TRANS: Server error. %1$s is a profile URI, %2$s is a group nickname.
+#: actions/groupsalmon.php:159
#, php-format
msgid "Could not join remote user %1$s to group %2$s."
msgstr ""
-#: actions/groupsalmon.php:167
+#: actions/groupsalmon.php:171
msgid "Can't read profile to cancel group membership."
msgstr ""
-#: actions/groupsalmon.php:183
+#. TRANS: Server error. %1$s is a profile URI, %2$s is a group nickname.
+#: actions/groupsalmon.php:188
#, php-format
msgid "Could not remove remote user %1$s from group %2$s."
msgstr ""
-#: actions/ostatussub.php:65
+#. TRANS: Field label for a field that takes an OStatus user address.
+#: actions/ostatussub.php:66
msgid "Subscribe to"
msgstr ""
-#: actions/ostatussub.php:67
+#. TRANS: Tooltip for field label "Subscribe to".
+#: actions/ostatussub.php:69
msgid ""
"OStatus user's address, like nickname@example.com or http://example.net/"
"nickname"
msgstr ""
-#: actions/ostatussub.php:106
+#. TRANS: Button text.
+#. TRANS: Tooltip for button "Join".
+#: actions/ostatussub.php:110
+msgctxt "BUTTON"
msgid "Join this group"
msgstr ""
-#. TRANS: Page title for OStatus remote subscription form
-#: actions/ostatussub.php:108 actions/ostatussub.php:400
+#. TRANS: Button text.
+#: actions/ostatussub.php:113
+msgctxt "BUTTON"
msgid "Confirm"
msgstr ""
-#: actions/ostatussub.php:109
+#. TRANS: Tooltip for button "Confirm".
+#: actions/ostatussub.php:115
msgid "Subscribe to this user"
msgstr ""
-#: actions/ostatussub.php:130
+#: actions/ostatussub.php:136
msgid "You are already subscribed to this user."
msgstr ""
-#: actions/ostatussub.php:247 actions/ostatussub.php:253
-#: actions/ostatussub.php:272
+#: actions/ostatussub.php:165
+msgid "Photo"
+msgstr ""
+
+#: actions/ostatussub.php:176
+msgid "Nickname"
+msgstr ""
+
+#: actions/ostatussub.php:197
+msgid "Location"
+msgstr ""
+
+#: actions/ostatussub.php:206
+msgid "URL"
+msgstr ""
+
+#: actions/ostatussub.php:218
+msgid "Note"
+msgstr ""
+
+#. TRANS: Error text.
+#: actions/ostatussub.php:254 actions/ostatussub.php:261
+#: actions/ostatussub.php:286
msgid ""
"Sorry, we could not reach that address. Please make sure that the OStatus "
"address is like nickname@example.com or http://example.net/nickname."
msgstr ""
-#: actions/ostatussub.php:256 actions/ostatussub.php:259
-#: actions/ostatussub.php:262 actions/ostatussub.php:265
-#: actions/ostatussub.php:268
+#. TRANS: Error text.
+#: actions/ostatussub.php:265 actions/ostatussub.php:269
+#: actions/ostatussub.php:273 actions/ostatussub.php:277
+#: actions/ostatussub.php:281
msgid ""
"Sorry, we could not reach that feed. Please try that OStatus address again "
"later."
msgstr ""
#. TRANS: OStatus remote subscription dialog error.
-#: actions/ostatussub.php:301
+#: actions/ostatussub.php:315
msgid "Already subscribed!"
msgstr ""
#. TRANS: OStatus remote subscription dialog error.
-#: actions/ostatussub.php:306
+#: actions/ostatussub.php:320
msgid "Remote subscription failed!"
msgstr ""
-#: actions/ostatussub.php:380 actions/ostatusinit.php:81
+#: actions/ostatussub.php:367 actions/ostatusinit.php:63
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#. TRANS: Form title.
+#: actions/ostatussub.php:395 actions/ostatusinit.php:82
msgid "Subscribe to user"
msgstr ""
-#: actions/ostatussub.php:411
+#. TRANS: Page title for OStatus remote subscription form
+#: actions/ostatussub.php:415
+msgid "Confirm"
+msgstr ""
+
+#. TRANS: Instructions.
+#: actions/ostatussub.php:427
msgid ""
"You can subscribe to users from other supported sites. Paste their address "
"or profile URI below:"
msgstr ""
+#. TRANS: Client error.
#: actions/ostatusinit.php:41
msgid "You can use the local subscription!"
msgstr ""
-#: actions/ostatusinit.php:63
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: actions/ostatusinit.php:95
+#. TRANS: Form legend.
+#: actions/ostatusinit.php:97
#, php-format
msgid "Join group %s"
msgstr ""
-#: actions/ostatusinit.php:98
+#. TRANS: Button text.
+#: actions/ostatusinit.php:99
+msgctxt "BUTTON"
+msgid "Join"
+msgstr ""
+
+#. TRANS: Form legend.
+#: actions/ostatusinit.php:102
#, php-format
msgid "Subscribe to %s"
msgstr ""
-#: actions/ostatusinit.php:111
+#. TRANS: Button text.
+#: actions/ostatusinit.php:104
+msgctxt "BUTTON"
+msgid "Subscribe"
+msgstr ""
+
+#. TRANS: Field label.
+#: actions/ostatusinit.php:117
msgid "User nickname"
msgstr ""
-#: actions/ostatusinit.php:112
+#: actions/ostatusinit.php:118
msgid "Nickname of the user you want to follow."
msgstr ""
-#: actions/ostatusinit.php:116
+#. TRANS: Field label.
+#: actions/ostatusinit.php:123
msgid "Profile Account"
msgstr ""
-#: actions/ostatusinit.php:117
+#. TRANS: Tooltip for field label "Profile Account".
+#: actions/ostatusinit.php:125
msgid "Your account id (e.g. user@identi.ca)."
msgstr ""
-#: actions/ostatusinit.php:138
+#. TRANS: Client error.
+#: actions/ostatusinit.php:147
msgid "Must provide a remote profile."
msgstr ""
-#: actions/ostatusinit.php:149
+#. TRANS: Client error.
+#: actions/ostatusinit.php:159
msgid "Couldn't look up OStatus account profile."
msgstr ""
-#: actions/ostatusinit.php:161
+#. TRANS: Client error.
+#: actions/ostatusinit.php:172
msgid "Couldn't confirm remote profile address."
msgstr ""
-#: actions/ostatusinit.php:202
+#. TRANS: Page title.
+#: actions/ostatusinit.php:217
msgid "OStatus Connect"
msgstr ""
+
+#: actions/pushcallback.php:48
+msgid "Empty or invalid feed id."
+msgstr ""
+
+#. TRANS: Server exception. %s is a feed ID.
+#: actions/pushcallback.php:54
+#, php-format
+msgid "Unknown PuSH feed id %s"
+msgstr ""
+
+#. TRANS: Client exception. %s is an invalid feed name.
+#: actions/pushcallback.php:93
+#, php-format
+msgid "Bad hub.topic feed \"%s\"."
+msgstr ""
+
+#. TRANS: Client exception. %1$s the invalid token, %2$s is the topic for which the invalid token was given.
+#: actions/pushcallback.php:98
+#, php-format
+msgid "Bad hub.verify_token %1$s for %2$s."
+msgstr ""
+
+#. TRANS: Client exception. %s is an invalid topic.
+#: actions/pushcallback.php:105
+#, php-format
+msgid "Unexpected subscribe request for %s."
+msgstr ""
+
+#. TRANS: Client exception. %s is an invalid topic.
+#: actions/pushcallback.php:110
+#, php-format
+msgid "Unexpected unsubscribe request for %s."
+msgstr ""
die('not for web');
}
+define('TIMEOUT', 60); // ssslllloowwwww salmon if queues are off
+
define('INSTALLDIR', dirname(dirname(dirname(dirname(__FILE__)))));
set_include_path(INSTALLDIR . '/extlib' . PATH_SEPARATOR . get_include_path());
{
$url = $this->basepath . '/' . $path;
- $http = new HTTP_Request2($url, 'POST');
+ $http = new HTTP_Request2($url, 'POST', array('timeout' => TIMEOUT));
if ($auth) {
$http->setAuth($this->username, $this->password, HTTP_Request2::AUTH_BASIC);
}
protected function web($path, $form, $params=array())
{
$url = $this->basepath . '/' . $path;
- $http = new HTTP_Request2($url, 'GET');
+ $http = new HTTP_Request2($url, 'GET', array('timeout' => TIMEOUT));
$response = $http->send();
$dom = $this->checkWeb($url, 'GET', $response);
'author' => 'Sarven Capadisli',
'homepage' => 'http://status.net/wiki/Plugin:OpenExternalLinkTarget',
'rawdescription' =>
- _m('Opens external links (i.e., with rel=external) on a new window or tab'));
+ _m('Opens external links (e.g., with rel=external) on a new window or tab.'));
return true;
}
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Transfer-Encoding: 8bit\n"
#: OpenExternalLinkTargetPlugin.php:60
-msgid "Opens external links (i.e., with rel=external) on a new window or tab"
+msgid "Opens external links (e.g., with rel=external) on a new window or tab."
msgstr ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to use Piwik Analytics
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @author Tobias Diekershoff <tobias.diekershoff@gmx.net>
+ * @copyright 2008 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to use Piwik Analytics (based on the Google Analytics plugin by Evan)
+ *
+ * This plugin will spoot out the correct JavaScript spell to invoke
+ * Piwik Analytics on a page.
+ *
+ * To use this plugin add the following to your config.php
+ *
+ * addPlugin('PiwikAnalytics', array('piwikroot' => 'example.com/piwik/',
+ * 'piwikId' => 'id'));
+ *
+ * Replace 'example.com/piwik/' with the URL to your Piwik installation and
+ * make sure you don't forget the final /.
+ * Replace 'id' with the ID your statusnet installation has in your Piwik
+ * analytics setup - for example '8'.
+ *
+ */
+class PiwikAnalyticsPlugin extends Plugin
+{
+ /** the base of your Piwik installation */
+ public $piwikroot = null;
+ /** the Piwik Id of your statusnet installation */
+ public $piwikId = null;
+
+ /**
+ * constructor
+ *
+ * @param string $root Piwik root URL
+ * @param string $id Piwik ID of this app
+ */
+ function __construct($root=null, $id=null)
+ {
+ $this->piwikroot = $root;
+ $this->piwikId = $id;
+ parent::__construct();
+ }
+
+ /**
+ * Called when all scripts have been shown
+ *
+ * @param Action $action Current action
+ *
+ * @return boolean ignored
+ */
+ function onEndShowScripts($action)
+ {
+ $piwikCode1 = <<<ENDOFPIWIK
+var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$this->piwikroot}" : "http://{$this->piwikroot}");
+document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
+ENDOFPIWIK;
+ $piwikCode2 = <<<ENDOFPIWIK
+try {
+ var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$this->piwikId});
+ piwikTracker.trackPageView();
+ piwikTracker.enableLinkTracking();
+} catch( err ) {}
+ENDOFPIWIK;
+
+ $action->inlineScript($piwikCode1);
+ $action->inlineScript($piwikCode2);
+ return true;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'PiwikAnalytics',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Tobias Diekershoff, Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:Piwik',
+ 'rawdescription' =>
+ _m('Use <a href="http://piwik.org/">Piwik</a> Open Source web analytics software.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-19 15:29+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"
+
+#: PiwikAnalyticsPlugin.php:105
+msgid ""
+"Use <a href=\"http://piwik.org/\">Piwik</a> Open Source web analytics "
+"software."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to use Piwik Analytics
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Tobias Diekershoff <tobias.diekershoff@gmx.net>
- * @copyright 2008 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to use Piwik Analytics (based on the Google Analytics plugin by Evan)
- *
- * This plugin will spoot out the correct JavaScript spell to invoke
- * Piwik Analytics on a page.
- *
- * To use this plugin add the following to your config.php
- *
- * addPlugin('PiwikAnalytics', array('piwikroot' => 'example.com/piwik/',
- * 'piwikId' => 'id'));
- *
- * Replace 'example.com/piwik/' with the URL to your Piwik installation and
- * make sure you don't forget the final /.
- * Replace 'id' with the ID your statusnet installation has in your Piwik
- * analytics setup - for example '8'.
- *
- */
-
-class PiwikAnalyticsPlugin extends Plugin
-{
- /** the base of your Piwik installation */
- public $piwikroot = null;
- /** the Piwik Id of your statusnet installation */
- public $piwikId = null;
-
- /**
- * constructor
- *
- * @param string $root Piwik root URL
- * @param string $id Piwik ID of this app
- */
-
- function __construct($root=null, $id=null)
- {
- $this->piwikroot = $root;
- $this->piwikId = $id;
- parent::__construct();
- }
-
- /**
- * Called when all scripts have been shown
- *
- * @param Action $action Current action
- *
- * @return boolean ignored
- */
-
- function onEndShowScripts($action)
- {
- $piwikCode1 = <<<ENDOFPIWIK
-var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$this->piwikroot}" : "http://{$this->piwikroot}");
-document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
-ENDOFPIWIK;
- $piwikCode2 = <<<ENDOFPIWIK
-try {
- var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$this->piwikId});
- piwikTracker.trackPageView();
- piwikTracker.enableLinkTracking();
-} catch( err ) {}
-ENDOFPIWIK;
-
- $action->inlineScript($piwikCode1);
- $action->inlineScript($piwikCode2);
- return true;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'PiwikAnalytics',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Tobias Diekershoff, Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:Piwik',
- 'rawdescription' =>
- _m('Use <a href="http://piwik.org/">Piwik</a> Open Source Web analytics software.'));
- return true;
- }
-
-}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
{
$action->text(' ');
$action->elementStart('span', 'poweredby');
+ // TRANS: %s is a URL to status.net with "StatusNet" (localised) as link text.
$action->raw(sprintf(_m('powered by %s'),
sprintf('<a href="http://status.net/">%s</a>',
_m('StatusNet'))));
'author' => 'Sarven Capadisli',
'homepage' => 'http://status.net/wiki/Plugin:PoweredByStatusNet',
'rawdescription' =>
- _m('Outputs powered by <a href="http://status.net/">StatusNet</a> after site name.'));
+ _m('Outputs "powered by <a href="http://status.net/">StatusNet</a>" after site name.'));
return true;
}
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: PoweredByStatusNetPlugin.php:50
+#. TRANS: %s is a URL to status.net with "StatusNet" (localised) as link text.
+#: PoweredByStatusNetPlugin.php:51
#, php-format
msgid "powered by %s"
msgstr ""
-#: PoweredByStatusNetPlugin.php:52
+#: PoweredByStatusNetPlugin.php:53
msgid "StatusNet"
msgstr ""
-#: PoweredByStatusNetPlugin.php:65
+#: PoweredByStatusNetPlugin.php:66
msgid ""
-"Outputs powered by <a href=\"http://status.net/\">StatusNet</a> after site "
-"name."
+"Outputs \"powered by <a href=\"http://status.net/\">StatusNet</a>\" after "
+"site name."
msgstr ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
**/
class LoggingAggregatorAction extends Action
{
-
var $challenge = null;
var $url = null;
*
* @return boolean false if user doesn't exist
*/
-
function prepare($args)
{
parent::prepare($args);
*
* @return void
*/
-
function handle($args)
{
parent::handle($args);
if (empty($this->url)) {
- $this->showError('Hey, you have to provide a url parameter.');
+ $this->showError(_('A URL parameter is required.'));
return;
}
if (!empty($this->challenge)) {
// must be a GET
-
if ($_SERVER['REQUEST_METHOD'] != 'GET') {
- $this->showError('This resource requires an HTTP GET.');
+ $this->showError(_m('This resource requires an HTTP GET.'));
return;
}
} else {
// must be a POST
-
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
- $this->showError('This resource requires an HTTP POST.');
+ $this->showError(_m('This resource requires an HTTP POST.'));
return;
}
*
* @return void
*/
-
function showError($msg)
{
header('HTTP/1.1 400 Bad Request');
echo "<?xml version='1.0'?>\n";
echo "<notifyResult success='false' msg='$msg' />\n";
}
-
-}
\ No newline at end of file
+}
'rawdescription' =>
_m('The RSSCloud plugin enables your StatusNet instance to publish ' .
'real-time updates for profile RSS feeds using the ' .
- '<a href="http://rsscloud.org/">RSSCloud protocol</a>".'));
+ '<a href="http://rsscloud.org/">RSSCloud protocol</a>.'));
return true;
}
}
-
return $notifier->notify($profile);
}
}
-
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
**/
-
class RSSCloudRequestNotifyAction extends Action
{
/**
*
* @return boolean false if user doesn't exist
*/
-
function prepare($args)
{
parent::prepare($args);
*
* @return void
*/
-
function handle($args)
{
parent::handle($args);
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
- $this->showResult(false, 'Request must be POST.');
+ $this->showResult(false, _m('Request must be POST.'));
return;
}
if (empty($this->protocol)) {
$missing[] = 'protocol';
} else if (strtolower($this->protocol) != 'http-post') {
- $msg = 'Only http-post notifications are supported at this time.';
+ $msg = _m('Only http-post notifications are supported at this time.');
$this->showResult(false, $msg);
return;
}
}
if (!empty($missing)) {
- $msg = 'The following parameters were missing from the request body: ' .
- implode(', ', $missing) . '.';
+ // TRANS: %s is a comma separated list of parameters.
+ $msg = sprintf(_m('The following parameters were missing from the request body: %s.'),implode(', ', $missing));
$this->showResult(false, $msg);
return;
}
if (empty($this->feeds)) {
- $msg = 'You must provide at least one valid profile feed url ' .
- '(url1, url2, url3 ... urlN).';
+ $msg = _m('You must provide at least one valid profile feed url ' .
+ '(url1, url2, url3 ... urlN).');
$this->showResult(false, $msg);
return;
}
// We have to validate everything before saving anything.
// We only return one success or failure no matter how
// many feeds the subscriber is trying to subscribe to
-
foreach ($this->feeds as $feed) {
if (!$this->validateFeed($feed)) {
common_log(LOG_WARNING,
"RSSCloud plugin - $nh tried to subscribe to invalid feed: $feed");
- $msg = 'Feed subscription failed - Not a valid feed.';
+ $msg = _m('Feed subscription failed: Not a valid feed.');
$this->showResult(false, $msg);
return;
}
if (!$this->testNotificationHandler($feed)) {
- $msg = 'Feed subscription failed - ' .
- 'notification handler doesn\'t respond correctly.';
+ $msg = _m('Feed subscription failed - ' .
+ 'notification handler doesn\'t respond correctly.');
$this->showResult(false, $msg);
return;
}
-
}
foreach ($this->feeds as $feed) {
// XXX: What to do about deleting stale subscriptions?
// 25 hours seems harsh. WordPress doesn't ever remove
// subscriptions.
-
- $msg = 'Thanks for the subscription. ' .
- 'When the feed(s) update(s) we\'ll notify you.';
+ $msg = _m('Thanks for the subscription. ' .
+ 'When the feed(s) update(s), you will be notified.');
$this->showResult(true, $msg);
}
*
* @return void
*/
-
function validateFeed($feed)
{
$user = $this->userFromFeed($feed);
*
* @return array $feeds the list of feeds
*/
-
function getFeeds()
{
$feeds = array();
*
* @return boolean success result
*/
-
function testNotificationHandler($feed)
{
$notifyUrl = $this->getNotifyUrl();
$notifier = new RSSCloudNotifier();
if (isset($this->domain)) {
-
// 'domain' param set, so we have to use GET and send a challenge
-
common_log(LOG_INFO,
'RSSCloud plugin - Testing notification handler with challenge: ' .
$notifyUrl);
*
* @return string notification handler url
*/
-
function getNotifyUrl()
{
if (isset($this->domain)) {
*
* @return boolean success
*/
-
function userFromFeed($feed)
{
// We only do canonical RSS2 profile feeds (specified by ID), e.g.:
// http://www.example.com/api/statuses/user_timeline/2.rss
-
$path = common_path('api/statuses/user_timeline/');
$valid = '%^' . $path . '(?<id>.*)\.rss$%';
*
* @return boolean success result
*/
-
function saveSubscription($feed)
{
$user = $this->userFromFeed($feed);
*
* @return boolean success result
*/
-
function showResult($success, $msg)
{
$this->startXML();
'msg' => $msg));
$this->endXML();
}
-
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-19 15:29+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
+#: RSSCloudRequestNotify.php:90
+msgid "Request must be POST."
+msgstr ""
+
+#: RSSCloudRequestNotify.php:107
+msgid "Only http-post notifications are supported at this time."
+msgstr ""
+
+#. TRANS: %s is a comma separated list of parameters.
+#: RSSCloudRequestNotify.php:118
+#, php-format
+msgid "The following parameters were missing from the request body: %s."
+msgstr ""
+
+#: RSSCloudRequestNotify.php:124
+msgid ""
+"You must provide at least one valid profile feed url (url1, url2, url3 ... "
+"urlN)."
+msgstr ""
+
+#: RSSCloudRequestNotify.php:141
+msgid "Feed subscription failed: Not a valid feed."
+msgstr ""
+
+#: RSSCloudRequestNotify.php:147
+msgid ""
+"Feed subscription failed - notification handler doesn't respond correctly."
+msgstr ""
+
+#: RSSCloudRequestNotify.php:161
+msgid ""
+"Thanks for the subscription. When the feed(s) update(s), you will be "
+"notified."
+msgstr ""
+
+#: LoggingAggregator.php:93
+msgid "This resource requires an HTTP GET."
+msgstr ""
+
+#: LoggingAggregator.php:104
+msgid "This resource requires an HTTP POST."
+msgstr ""
+
#: RSSCloudPlugin.php:248
msgid ""
"The RSSCloud plugin enables your StatusNet instance to publish real-time "
"updates for profile RSS feeds using the <a href=\"http://rsscloud.org/"
-"\">RSSCloud protocol</a>\"."
+"\">RSSCloud protocol</a>."
msgstr ""
/**
* StatusNet, the distributed open-source microblogging tool
*
- * Plugin to show reCaptcha when a user registers
+ * Plugin to show reCaptcha when a user registers
*
* PHP version 5
*
function onEndRegistrationFormData($action)
{
$action->elementStart('li');
- $action->raw('<label for="recaptcha">Captcha</label>');
+ $action->raw('<label for="recaptcha">'._m('Captcha').'</label>');
// AJAX API will fill this div out.
// We're calling that instead of the regular one so we stay compatible
// with application/xml+xhtml output as for mobile.
$action->element('div', array('id' => 'recaptcha'));
$action->elementEnd('li');
-
+
$action->recaptchaPluginNeedsOutput = true;
return true;
}
$url = "http://api.recaptcha.net/js/recaptcha_ajax.js";
}
$action->script($url);
-
+
// And when we're ready, fill out the captcha!
$key = json_encode($this->public_key);
$action->inlinescript("\$(function(){Recaptcha.create($key, 'recaptcha');});");
if (!$resp->is_valid) {
if($this->display_errors) {
- $action->showForm ("(reCAPTCHA error: " . $resp->error . ")");
+ $action->showForm(sprintf(_("(reCAPTCHA error: %s)", $resp->error)));
}
- $action->showForm("Captcha does not match!");
+ $action->showForm(_m("Captcha does not match!"));
return false;
}
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
+#: RecaptchaPlugin.php:64
+msgid "Captcha"
+msgstr ""
+
+#: RecaptchaPlugin.php:105
+msgid "Captcha does not match!"
+msgstr ""
+
#: RecaptchaPlugin.php:117
msgid ""
"Uses <a href=\"http://recaptcha.org/\">Recaptcha</a> service to add a "
* @return boolean hook value
*
*/
-
function onStartRegistrationTry($action)
{
$ipaddress = $this->_getIpAddress();
$now = time();
$this->debug("Comparing {$regtime} to {$now}");
if ($now - $regtime < $seconds) {
- throw new Exception(_("Too many registrations. Take a break and try again later."));
+ throw new Exception(_m("Too many registrations. Take a break and try again later."));
}
}
}
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:RegisterThrottle',
'description' =>
- _m('Throttles excessive registration from a single IP.'));
+ _m('Throttles excessive registration from a single IP address.'));
return true;
}
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*/
-
class Registration_ip extends Memcached_DataObject
{
public $__table = 'registration_ip'; // table name
* @return User_greeting_count object found, or null for no hits
*
*/
-
function staticGet($k, $v=null)
{
return Memcached_DataObject::staticGet('Registration_ip', $k, $v);
*
* @return array array of column definitions
*/
-
function table()
{
return array('user_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
*
* @return array key definitions
*/
-
function keys()
{
return array('user_id' => 'K');
*
* @return array key definitions
*/
-
function keyTypes()
{
return $this->keys();
*
* @return array magic three-false array that stops auto-incrementing.
*/
-
function sequenceKey()
{
return array(false, false, false);
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: RegisterThrottlePlugin.php:122 RegisterThrottlePlugin.php:161
+#: RegisterThrottlePlugin.php:121 RegisterThrottlePlugin.php:160
msgid "Cannot find IP address."
msgstr ""
-#: RegisterThrottlePlugin.php:167
+#: RegisterThrottlePlugin.php:136
+msgid "Too many registrations. Take a break and try again later."
+msgstr ""
+
+#: RegisterThrottlePlugin.php:166
msgid "Cannot find user after successful registration."
msgstr ""
-#: RegisterThrottlePlugin.php:200
-msgid "Throttles excessive registration from a single IP."
+#: RegisterThrottlePlugin.php:199
+msgid "Throttles excessive registration from a single IP address."
msgstr ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22: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"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class SamplePlugin extends Plugin
{
/**
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function initialize()
{
return true;
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function cleanup()
{
return true;
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onCheckSchema()
{
$schema = Schema::get();
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onAutoload($cls)
{
$dir = dirname(__FILE__);
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onRouterInitialized($m)
{
$m->connect('main/hello',
*
* @see Action
*/
-
function onEndPrimaryNav($action)
{
// common_local_url() gets the correct URL for the action name
return true;
}
}
-
* @return User_greeting_count object found, or null for no hits
*
*/
-
function staticGet($k, $v=null)
{
return Memcached_DataObject::staticGet('User_greeting_count', $k, $v);
*
* @return array array of column definitions
*/
-
function table()
{
return array('user_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
*
* @return array list of key field names
*/
-
function keys()
{
return array_keys($this->keyTypes());
* 'K' for primary key: for compound keys, add an entry for each component;
* 'U' for unique keys: compound keys are not well supported here.
*/
-
function keyTypes()
{
return array('user_id' => 'K');
*
* @return array magic three-false array that stops auto-incrementing.
*/
-
function sequenceKey()
{
return array(false, false, false);
*
* @return User_greeting_count instance for this user, with count already incremented.
*/
-
static function inc($user_id)
{
$gc = User_greeting_count::staticGet('user_id', $user_id);
$result = $gc->insert();
if (!$result) {
- throw Exception(sprintf(_m("Could not save new greeting count for %d"),
+ // TRANS: Exception thrown when the user greeting count could not be saved in the database.
+ // TRANS: %d is a user ID (number).
+ throw Exception(sprintf(_m("Could not save new greeting count for %d."),
$user_id));
}
-
} else {
-
$orig = clone($gc);
$gc->greeting_count++;
$result = $gc->update($orig);
if (!$result) {
- throw Exception(sprintf(_m("Could not increment greeting count for %d"),
+ // TRANS: Exception thrown when the user greeting count could not be saved in the database.
+ // TRANS: %d is a user ID (number).
+ throw Exception(sprintf(_m("Could not increment greeting count for %d."),
$user_id));
}
}
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*/
-
class HelloAction extends Action
{
var $user = null;
*
* @return boolean success flag
*/
-
function prepare($args)
{
parent::prepare($args);
*
* @return void
*/
-
function handle($args)
{
parent::handle($args);
*
* @return string Title of the page
*/
-
function title()
{
if (empty($this->user)) {
return _m('Hello');
} else {
- return sprintf(_m('Hello, %s'), $this->user->nickname);
+ return sprintf(_m('Hello, %s!'), $this->user->nickname);
}
}
*
* @return void
*/
-
function showContent()
{
if (empty($this->user)) {
*
* @return boolean is read only action?
*/
-
function isReadOnly($args)
{
return false;
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: User_greeting_count.php:168
+#. TRANS: Exception thrown when the user greeting count could not be saved in the database.
+#. TRANS: %d is a user ID (number).
+#: User_greeting_count.php:164
#, php-format
-msgid "Could not save new greeting count for %d"
+msgid "Could not save new greeting count for %d."
msgstr ""
-#: User_greeting_count.php:181
+#. TRANS: Exception thrown when the user greeting count could not be saved in the database.
+#. TRANS: %d is a user ID (number).
+#: User_greeting_count.php:177
#, php-format
-msgid "Could not increment greeting count for %d"
+msgid "Could not increment greeting count for %d."
msgstr ""
-#: SamplePlugin.php:266 hello.php:115
+#: SamplePlugin.php:259 hello.php:111
msgid "Hello"
msgstr ""
-#: SamplePlugin.php:266
+#: SamplePlugin.php:259
msgid "A warm greeting"
msgstr ""
-#: SamplePlugin.php:277
+#: SamplePlugin.php:270
msgid "A sample plugin to show basics of development for new hackers."
msgstr ""
-#: hello.php:117 hello.php:141
+#: hello.php:113
#, php-format
-msgid "Hello, %s"
+msgid "Hello, %s!"
msgstr ""
-#: hello.php:138
+#: hello.php:133
msgid "Hello, stranger!"
msgstr ""
-#: hello.php:143
+#: hello.php:136
+#, php-format
+msgid "Hello, %s"
+msgstr ""
+
+#: hello.php:138
#, php-format
msgid "I have greeted you %d time."
msgid_plural "I have greeted you %d times."
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to create pretty Spotify URLs
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Nick Holliday <n.g.holliday@gmail.com>
+ * @copyright Nick Holliday
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+define('SPOTIFYPLUGIN_VERSION', '0.1');
+
+/**
+ * Plugin to create pretty Spotify URLs
+ *
+ * The Spotify API is called before the notice is saved to gather artist and track information.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Nick Holliday <n.g.holliday@gmail.com>
+ * @copyright Nick Holliday
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+
+class SpotifyPlugin extends Plugin
+{
+
+ function __construct()
+ {
+ parent::__construct();
+ }
+
+ function onStartNoticeSave($notice)
+ {
+ $notice->rendered = preg_replace_callback('/spotify:[a-z]{5,6}:[a-z0-9]{22}/i',
+ "renderSpotifyURILink",
+ $notice->rendered);
+
+ $notice->rendered = preg_replace_callback('/<a href="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" title="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" rel="external">http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}<\/a>/i',
+ "renderSpotifyHTTPLink",
+ $notice->rendered);
+
+ return true;
+ }
+
+ function userAgent()
+ {
+ return 'SpotifyPlugin/'.SPOTIFYPLUGIN_VERSION .
+ ' StatusNet/' . STATUSNET_VERSION;
+ }
+}
+
+function doSpotifyLookup($uri, $isArtist)
+{
+ $request = HTTPClient::start();
+ $response = $request->get('http://ws.spotify.com/lookup/1/?uri=' . $uri);
+ if ($response->isOk()) {
+ $xml = simplexml_load_string($response->getBody());
+
+ if($isArtist)
+ return $xml->name;
+ else
+ return $xml->artist->name . ' - ' . $xml->name;
+ }
+}
+
+function renderSpotifyURILink($match)
+{
+ $isArtist = false;
+ if(preg_match('/artist/', $match[0]) > 0) $isArtist = true;
+
+ $name = doSpotifyLookup($match[0], $isArtist);
+ return "<a href=\"{$match[0]}\">" . $name . "</a>";
+}
+
+function renderSpotifyHTTPLink($match)
+{
+ $match[0] = preg_replace('/<a href="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" title="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" rel="external">http:\/\/open.spotify.com\//i', 'spotify:', $match[0]);
+ $match[0] = preg_replace('/<\/a>/', '', $match[0]);
+ $match[0] = preg_replace('/\//', ':', $match[0]);
+
+ $isArtist = false;
+ if(preg_match('/artist/', $match[0]) > 0) $isArtist = true;
+
+ $name = doSpotifyLookup($match[0], $isArtist);
+ return "<a href=\"{$match[0]}\">" . $name . "</a>";
+}
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to create pretty Spotify URLs
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Nick Holliday <n.g.holliday@gmail.com>
- * @copyright Nick Holliday
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-if (!defined('STATUSNET')) {
- exit(1);
-}
-define('SPOTIFYPLUGIN_VERSION', '0.1');
-
-/**
- * Plugin to create pretty Spotify URLs
- *
- * The Spotify API is called before the notice is saved to gather artist and track information.
- *
- * @category Plugin
- * @package StatusNet
- * @author Nick Holliday <n.g.holliday@gmail.com>
- * @copyright Nick Holliday
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class SpotifyPlugin extends Plugin
-{
-
- function __construct()
- {
- parent::__construct();
- }
-
- function onStartNoticeSave($notice)
- {
- $notice->rendered = preg_replace_callback('/spotify:[a-z]{5,6}:[a-z0-9]{22}/i',
- "renderSpotifyURILink",
- $notice->rendered);
-
- $notice->rendered = preg_replace_callback('/<a href="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" title="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" rel="external">http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}<\/a>/i',
- "renderSpotifyHTTPLink",
- $notice->rendered);
-
- return true;
- }
-
- function userAgent()
- {
- return 'SpotifyPlugin/'.SPOTIFYPLUGIN_VERSION .
- ' StatusNet/' . STATUSNET_VERSION;
- }
-}
-
-function doSpotifyLookup($uri, $isArtist)
-{
- $request = HTTPClient::start();
- $response = $request->get('http://ws.spotify.com/lookup/1/?uri=' . $uri);
- if ($response->isOk()) {
- $xml = simplexml_load_string($response->getBody());
-
- if($isArtist)
- return $xml->name;
- else
- return $xml->artist->name . ' - ' . $xml->name;
- }
-}
-
-function renderSpotifyURILink($match)
-{
- $isArtist = false;
- if(preg_match('/artist/', $match[0]) > 0) $isArtist = true;
-
- $name = doSpotifyLookup($match[0], $isArtist);
- return "<a href=\"{$match[0]}\">" . $name . "</a>";
-}
-
-function renderSpotifyHTTPLink($match)
-{
- $match[0] = preg_replace('/<a href="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" title="http:\/\/open.spotify.com\/[a-z]{5,6}\/[a-z0-9]{22}" rel="external">http:\/\/open.spotify.com\//i', 'spotify:', $match[0]);
- $match[0] = preg_replace('/<\/a>/', '', $match[0]);
- $match[0] = preg_replace('/\//', ':', $match[0]);
-
- $isArtist = false;
- if(preg_match('/artist/', $match[0]) > 0) $isArtist = true;
-
- $name = doSpotifyLookup($match[0], $isArtist);
- return "<a href=\"{$match[0]}\">" . $name . "</a>";
-}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
/**
* @package SubMirrorPlugin
* @maintainer Brion Vibber <brion@status.net>
*/
-
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-
class SubMirrorPlugin extends Plugin
{
/**
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
* @link http://status.net/
*/
-
class AddMirrorAction extends BaseMirrorAction
{
var $feedurl;
*
* @return boolean success flag
*/
-
function prepare($args)
{
parent::prepare($args);
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
* @link http://status.net/
*/
-
abstract class BaseMirrorAction extends Action
{
var $user;
*
* @return boolean success flag
*/
-
function prepare($args)
{
parent::prepare($args);
}
/**
- * @fixme none of this belongs in end classes
+ * @todo FIXME: none of this belongs in end classes
* this stuff belongs in shared code!
*/
function sharedBoilerplate()
{
// Only allow POST requests
-
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
- $this->clientError(_('This action only accepts POST requests.'));
+ $this->clientError(_m('This action only accepts POST requests.'));
return false;
}
// CSRF protection
-
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
- $this->clientError(_('There was a problem with your session token.'.
+ $this->clientError(_m('There was a problem with your session token.'.
' Try again, please.'));
return false;
}
$this->user = common_current_user();
if (empty($this->user)) {
- $this->clientError(_('Not logged in.'));
+ $this->clientError(_m('Not logged in.'));
return false;
}
return true;
*
* @return void
*/
-
function handle($args)
{
// Throws exception on error
if ($this->boolean('ajax')) {
$this->startHTML('text/xml;charset=utf-8');
$this->elementStart('head');
- $this->element('title', null, _('Subscribed'));
+ $this->element('title', null, _m('Subscribed'));
$this->elementEnd('head');
$this->elementStart('body');
$unsubscribe = new EditMirrorForm($this, $this->profile);
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
* @link http://status.net/
*/
-
class EditMirrorAction extends BaseMirrorAction
{
*
* @return boolean success flag
*/
-
function prepare($args)
{
parent::prepare($args);
{
$mirror = SubMirror::getMirror($this->user, $this->profile);
if (!$mirror) {
- $this->clientError(_m('Requested edit of missing mirror'));
+ // TRANS: Client error thrown when a mirror request is made and no result is retrieved.
+ $this->clientError(_m('Requested edit of missing mirror.'));
}
if ($this->delete) {
*
* @return string Page title
*/
-
function title()
{
+ // TRANS: Title.
return _m('Feed mirror settings');
}
function getInstructions()
{
+ // TRANS: Instructions.
return _m('You can mirror updates from many RSS and Atom feeds ' .
'into your StatusNet timeline!');
}
*
* @return void
*/
-
function showContent()
{
$user = common_current_user();
$this->showAddFeedForm();
-
+
$mirror = new SubMirror();
$mirror->subscriber = $user->id;
if ($mirror->find()) {
*
* @return void
*/
-
function handlePost()
{
}
/**
* Temporary hack to set up the compound index, since we can't do
* it yet through regular Schema interface. (Coming for 1.0...)
- *
+ *
* @param Schema $schema
* @return void
*/
$mirror->created = common_sql_now();
$mirror->modified = common_sql_now();
$mirror->insert();
-
+
return $mirror;
}
* This retains attribution within the site, and other nice things,
* but currently ends up looking like 'RT @foobar bla bla' when
* bridged out over OStatus or TwitterBridge.
- *
+ *
* @param Notice $notice
* @return mixed Notice on successful repeat, true if already repeated, false on failure
*/
* Mirror a notice by emitting a new notice with the same contents.
* Kind of dirty, but if pulling an external data feed into an account
* that may be what you want.
- *
+ *
* @param Notice $notice
* @return mixed Notice on successful repeat, true if already repeated, false on failure
*/
/**
* Get the mirroring setting for a pair of profiles, if existing.
- *
+ *
* @param Profile $subscriber
* @param Profile $subscribed
* @return mixed Profile or empty
class AddMirrorForm extends Form
{
-
/**
* Name of the form
*
*
* @return void
*/
-
function formLegend()
{
}
*
* @return void
*/
-
function formData()
{
$this->out->elementStart('fieldset');
$this->unli();
$this->li();
- $this->out->submit('addmirror-save', _m('Add feed'));
+ $this->out->submit('addmirror-save', _m('BUTTON','Add feed'));
$this->unli();
$this->out->elementEnd('ul');
$this->out->elementEnd('fieldset');
*
* @return void
*/
-
function formActions()
{
}
*
* @return string ID of the form
*/
-
function id()
{
return 'add-mirror-form';
*
* @return string URL to post to
*/
-
function action()
{
return common_local_url('addmirror');
*
* @return string the form's class
*/
-
function formClass()
{
return 'form_settings';
}
-
}
*
* @return void
*/
-
function formLegend()
{
}
*
* @return void
*/
-
function formData()
{
$this->out->elementStart('fieldset');
$this->out->elementEnd('div');
$this->out->elementStart('div');
if ($feed) {
+ // XXX: Why the hard coded space?
$this->out->text(_m('LABEL', 'Remote feed:') . ' ');
//$this->out->element('a', array('href' => $feed), $feed);
$this->out->element('input', array('value' => $feed, 'readonly' => 'readonly', 'style' => 'width: 100%'));
}
$this->out->elementEnd('fieldset');
-
+
$this->out->elementStart('div');
$this->out->submit($this->id() . '-save', _m('Save'));
$this->out->element('input', array('type' => 'submit',
*
* @return string ID of the form
*/
-
function id()
{
return 'edit-mirror-form-' . $this->profile->id;
*
* @return string URL to post to
*/
-
function action()
{
return common_local_url('editmirror');
*
* @return string the form's class
*/
-
function formClass()
{
return 'form_settings';
}
-
}
* @package SubMirror
* @author Brion Vibber <brion@status.net>
*/
-
class MirrorQueueHandler extends QueueHandler
{
function transport()
$mirror->subscribed = $notice->profile_id;
if ($mirror->find()) {
while ($mirror->fetch()) {
- $mirror->mirrorNotice($notice);
+ try {
+ $mirror->mirrorNotice($notice);
+ } catch (Exception $e) {
+ common_log(LOG_ERR, "Exception trying to mirror notice $notice->id " .
+ "for subscriber $mirror->subscriber ($mirror->style): " .
+ $e->getMessage());
+ }
}
}
return true;
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: SubMirrorPlugin.php:92
+#: SubMirrorPlugin.php:90
msgid "Pull feeds into your timeline!"
msgstr ""
#. TRANS: SubMirror plugin menu item on user settings page.
-#: SubMirrorPlugin.php:111
+#: SubMirrorPlugin.php:109
msgctxt "MENU"
msgid "Mirroring"
msgstr ""
#. TRANS: SubMirror plugin tooltip for user settings menu item.
-#: SubMirrorPlugin.php:113
+#: SubMirrorPlugin.php:111
msgid "Configure mirroring of posts from other feeds"
msgstr ""
-#: lib/editmirrorform.php:84
+#: lib/editmirrorform.php:83
msgctxt "LABEL"
msgid "Remote feed:"
msgstr ""
-#: lib/editmirrorform.php:88
+#: lib/editmirrorform.php:87
msgctxt "LABEL"
msgid "Local user"
msgstr ""
-#: lib/editmirrorform.php:94
+#: lib/editmirrorform.php:93
msgid "Mirroring style"
msgstr ""
-#: lib/editmirrorform.php:96
+#: lib/editmirrorform.php:95
msgid ""
"Repeat: reference the original user's post (sometimes shows as 'RT @blah')"
msgstr ""
-#: lib/editmirrorform.php:97
+#: lib/editmirrorform.php:96
msgid "Repost the content under my account"
msgstr ""
-#: lib/editmirrorform.php:116
+#: lib/editmirrorform.php:115
msgid "Save"
msgstr ""
-#: lib/editmirrorform.php:118
+#: lib/editmirrorform.php:117
msgid "Stop mirroring"
msgstr ""
-#: lib/addmirrorform.php:62
+#: lib/addmirrorform.php:59
msgid "Web page or feed URL:"
msgstr ""
-#: lib/addmirrorform.php:67
+#: lib/addmirrorform.php:64
+msgctxt "BUTTON"
msgid "Add feed"
msgstr ""
-#: actions/basemirror.php:73
+#: actions/basemirror.php:71
msgid "Invalid feed URL."
msgstr ""
#. TRANS: Error message returned to user when setting up feed mirroring, but we were unable to resolve the given URL to a working feed.
-#: actions/basemirror.php:85
+#: actions/basemirror.php:83
msgid "Invalid profile for mirroring."
msgstr ""
-#: actions/basemirror.php:103
+#: actions/basemirror.php:101
msgid "Can't mirror a StatusNet group at this time."
msgstr ""
-#: actions/editmirror.php:70
+#: actions/basemirror.php:115
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/basemirror.php:123
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: actions/basemirror.php:133
+msgid "Not logged in."
+msgstr ""
+
+#: actions/basemirror.php:156
+msgid "Subscribed"
+msgstr ""
+
+#: actions/editmirror.php:68
msgid "Requested invalid profile to edit."
msgstr ""
-#: actions/editmirror.php:88
+#: actions/editmirror.php:86
msgid "Bad form data."
msgstr ""
-#: actions/editmirror.php:96
-msgid "Requested edit of missing mirror"
+#. TRANS: Client error thrown when a mirror request is made and no result is retrieved.
+#: actions/editmirror.php:95
+msgid "Requested edit of missing mirror."
msgstr ""
-#: actions/addmirror.php:74
+#: actions/addmirror.php:72
msgid "Could not subscribe to feed."
msgstr ""
+#. TRANS: Title.
#: actions/mirrorsettings.php:42
msgid "Feed mirror settings"
msgstr ""
-#: actions/mirrorsettings.php:53
+#. TRANS: Instructions.
+#: actions/mirrorsettings.php:54
msgid ""
"You can mirror updates from many RSS and Atom feeds into your StatusNet "
"timeline!"
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * Plugin to throttle subscriptions by a user
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Throttle
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * Subscription throttle
+ *
+ * @category Throttle
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class SubscriptionThrottlePlugin extends Plugin
+{
+ public $subLimits = array(86400 => 100,
+ 3600 => 50);
+
+ public $groupLimits = array(86400 => 50,
+ 3600 => 25);
+
+ /**
+ * Filter subscriptions to see if they're coming too fast.
+ *
+ * @param User $user The user subscribing
+ * @param User $other The user being subscribed to
+ *
+ * @return boolean hook value
+ */
+
+ function onStartSubscribe($user, $other)
+ {
+ foreach ($this->subLimits as $seconds => $limit) {
+ $sub = $this->_getNthSub($user, $limit);
+
+ if (!empty($sub)) {
+ $subtime = strtotime($sub->created);
+ $now = time();
+ if ($now - $subtime < $seconds) {
+ throw new Exception(_("Too many subscriptions. Take a break and try again later."));
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Filter group joins to see if they're coming too fast.
+ *
+ * @param Group $group The group being joined
+ * @param User $user The user joining
+ *
+ * @return boolean hook value
+ */
+
+ function onStartJoinGroup($group, $user)
+ {
+ foreach ($this->groupLimits as $seconds => $limit) {
+ $mem = $this->_getNthMem($user, $limit);
+ if (!empty($mem)) {
+
+ $jointime = strtotime($mem->created);
+ $now = time();
+ if ($now - $jointime < $seconds) {
+ throw new Exception(_("Too many memberships. Take a break and try again later."));
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Get the Nth most recent subscription for this user
+ *
+ * @param User $user The user to get subscriptions for
+ * @param integer $n How far to count back
+ *
+ * @return Subscription a subscription or null
+ */
+
+ private function _getNthSub($user, $n)
+ {
+ $sub = new Subscription();
+
+ $sub->subscriber = $user->id;
+ $sub->orderBy('created DESC');
+ $sub->limit($n - 1, 1);
+
+ if ($sub->find(true)) {
+ return $sub;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Get the Nth most recent group membership for this user
+ *
+ * @param User $user The user to get memberships for
+ * @param integer $n How far to count back
+ *
+ * @return Group_member a membership or null
+ */
+
+ private function _getNthMem($user, $n)
+ {
+ $mem = new Group_member();
+
+ $mem->profile_id = $user->id;
+ $mem->orderBy('created DESC');
+ $mem->limit($n - 1, 1);
+
+ if ($mem->find(true)) {
+ return $mem;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Return plugin version data for display
+ *
+ * @param array &$versions Array of version arrays
+ *
+ * @return boolean hook value
+ */
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'SubscriptionThrottle',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:SubscriptionThrottle',
+ 'rawdescription' =>
+ _m('Configurable limits for subscriptions and group memberships.'));
+ return true;
+ }
+}
+
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: SubscriptionThrottlePlugin.php:171
+msgid "Configurable limits for subscriptions and group memberships."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2010, StatusNet, Inc.
- *
- * Plugin to throttle subscriptions by a user
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Throttle
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2010 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * Subscription throttle
- *
- * @category Throttle
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2010 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
- * @link http://status.net/
- */
-
-class SubscriptionThrottlePlugin extends Plugin
-{
- public $subLimits = array(86400 => 100,
- 3600 => 50);
-
- public $groupLimits = array(86400 => 50,
- 3600 => 25);
-
- /**
- * Filter subscriptions to see if they're coming too fast.
- *
- * @param User $user The user subscribing
- * @param User $other The user being subscribed to
- *
- * @return boolean hook value
- */
-
- function onStartSubscribe($user, $other)
- {
- foreach ($this->subLimits as $seconds => $limit) {
- $sub = $this->_getNthSub($user, $limit);
-
- if (!empty($sub)) {
- $subtime = strtotime($sub->created);
- $now = time();
- if ($now - $subtime < $seconds) {
- throw new Exception(_("Too many subscriptions. Take a break and try again later."));
- }
- }
- }
-
- return true;
- }
-
- /**
- * Filter group joins to see if they're coming too fast.
- *
- * @param Group $group The group being joined
- * @param User $user The user joining
- *
- * @return boolean hook value
- */
-
- function onStartJoinGroup($group, $user)
- {
- foreach ($this->groupLimits as $seconds => $limit) {
- $mem = $this->_getNthMem($user, $limit);
- if (!empty($mem)) {
-
- $jointime = strtotime($mem->created);
- $now = time();
- if ($now - $jointime < $seconds) {
- throw new Exception(_("Too many memberships. Take a break and try again later."));
- }
- }
- }
-
- return true;
- }
-
- /**
- * Get the Nth most recent subscription for this user
- *
- * @param User $user The user to get subscriptions for
- * @param integer $n How far to count back
- *
- * @return Subscription a subscription or null
- */
-
- private function _getNthSub($user, $n)
- {
- $sub = new Subscription();
-
- $sub->subscriber = $user->id;
- $sub->orderBy('created DESC');
- $sub->limit($n - 1, 1);
-
- if ($sub->find(true)) {
- return $sub;
- } else {
- return null;
- }
- }
-
- /**
- * Get the Nth most recent group membership for this user
- *
- * @param User $user The user to get memberships for
- * @param integer $n How far to count back
- *
- * @return Group_member a membership or null
- */
-
- private function _getNthMem($user, $n)
- {
- $mem = new Group_member();
-
- $mem->profile_id = $user->id;
- $mem->orderBy('created DESC');
- $mem->limit($n - 1, 1);
-
- if ($mem->find(true)) {
- return $mem;
- } else {
- return null;
- }
- }
-
- /**
- * Return plugin version data for display
- *
- * @param array &$versions Array of version arrays
- *
- * @return boolean hook value
- */
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'SubscriptionThrottle',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:SubscriptionThrottle',
- 'rawdescription' =>
- _m('Configurable limits for subscriptions and group memberships.'));
- return true;
- }
-}
-
'author' => 'Craig Andrews and Paul Irish',
'homepage' => 'http://status.net/wiki/Plugin:TabFocus',
'rawdescription' =>
- _m('TabFocus changes the notice form behavior so that, while in the text area, pressing the tab key focuses the "Send" button, matching the behavor of Twitter.'));
+ _m('TabFocus changes the notice form behavior so that, while in the text area, pressing the tab key focuses the "Send" button, matching the behavior of Twitter.'));
return true;
}
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
#: TabFocusPlugin.php:54
msgid ""
"TabFocus changes the notice form behavior so that, while in the text area, "
-"pressing the tab key focuses the \"Send\" button, matching the behavor of "
+"pressing the tab key focuses the \"Send\" button, matching the behavior of "
"Twitter."
msgstr ""
--- /dev/null
+<?php
+/**
+ * Plugin to render old skool templates
+ *
+ * Captures rendered parts from the output buffer, passes them through a template file: tpl/index.html
+ * Adds an API method at index.php/template/update which lets you overwrite the template file
+ * Requires username/password and a single POST parameter called "template"
+ * The method is disabled unless the user is #1, the first user of the system
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brian Hendrickson <brian@megapump.com>
+ * @copyright 2009 Megapump, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://megapump.com/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+define('TEMPLATEPLUGIN_VERSION', '0.1');
+
+class TemplatePlugin extends Plugin {
+
+ var $blocks = array();
+
+ function __construct() {
+ parent::__construct();
+ }
+
+ // capture the RouterInitialized event
+ // and connect a new API method
+ // for updating the template
+ function onRouterInitialized( $m ) {
+ $m->connect( 'template/update', array(
+ 'action' => 'template',
+ ));
+ }
+
+ // <%styles%>
+ // <%scripts%>
+ // <%search%>
+ // <%feeds%>
+ // <%description%>
+ // <%head%>
+ function onStartShowHead( &$act ) {
+ $this->clear_xmlWriter($act);
+ $act->extraHead();
+ $this->blocks['head'] = $act->xw->flush();
+ $act->showStylesheets();
+ $this->blocks['styles'] = $act->xw->flush();
+ $act->showScripts();
+ $this->blocks['scripts'] = $act->xw->flush();
+ $act->showFeeds();
+ $this->blocks['feeds'] = $act->xw->flush();
+ $act->showOpenSearch();
+ $this->blocks['search'] = $act->xw->flush();
+ $act->showDescription();
+ $this->blocks['description'] = $act->xw->flush();
+ return false;
+ }
+
+ // <%bodytext%>
+ function onStartShowContentBlock( &$act ) {
+ $this->clear_xmlWriter($act);
+ return true;
+ }
+ function onEndShowContentBlock( &$act ) {
+ $this->blocks['bodytext'] = $act->xw->flush();
+ }
+
+ // <%localnav%>
+ function onStartShowLocalNavBlock( &$act ) {
+ $this->clear_xmlWriter($act);
+ return true;
+ }
+ function onEndShowLocalNavBlock( &$act ) {
+ $this->blocks['localnav'] = $act->xw->flush();
+ }
+
+ // <%export%>
+ function onStartShowExportData( &$act ) {
+ $this->clear_xmlWriter($act);
+ return true;
+ }
+ function onEndShowExportData( &$act ) {
+ $this->blocks['export'] = $act->xw->flush();
+ }
+
+ // <%subscriptions%>
+ // <%subscribers%>
+ // <%groups%>
+ // <%statistics%>
+ // <%cloud%>
+ // <%groupmembers%>
+ // <%groupstatistics%>
+ // <%groupcloud%>
+ // <%popular%>
+ // <%groupsbyposts%>
+ // <%featuredusers%>
+ // <%groupsbymembers%>
+ function onStartShowSections( &$act ) {
+ global $action;
+ $this->clear_xmlWriter($act);
+ switch ($action) {
+ case "showstream":
+ $act->showSubscriptions();
+ $this->blocks['subscriptions'] = $act->xw->flush();
+ $act->showSubscribers();
+ $this->blocks['subscribers'] = $act->xw->flush();
+ $act->showGroups();
+ $this->blocks['groups'] = $act->xw->flush();
+ $act->showStatistics();
+ $this->blocks['statistics'] = $act->xw->flush();
+ $cloud = new PersonalTagCloudSection($act, $act->user);
+ $cloud->show();
+ $this->blocks['cloud'] = $act->xw->flush();
+ break;
+ case "showgroup":
+ $act->showMembers();
+ $this->blocks['groupmembers'] = $act->xw->flush();
+ $act->showStatistics();
+ $this->blocks['groupstatistics'] = $act->xw->flush();
+ $cloud = new GroupTagCloudSection($act, $act->group);
+ $cloud->show();
+ $this->blocks['groupcloud'] = $act->xw->flush();
+ break;
+ case "public":
+ $pop = new PopularNoticeSection($act);
+ $pop->show();
+ $this->blocks['popular'] = $act->xw->flush();
+ $gbp = new GroupsByPostsSection($act);
+ $gbp->show();
+ $this->blocks['groupsbyposts'] = $act->xw->flush();
+ $feat = new FeaturedUsersSection($act);
+ $feat->show();
+ $this->blocks['featuredusers'] = $act->xw->flush();
+ break;
+ case "groups":
+ $gbp = new GroupsByPostsSection($act);
+ $gbp->show();
+ $this->blocks['groupsbyposts'] = $act->xw->flush();
+ $gbm = new GroupsByMembersSection($act);
+ $gbm->show();
+ $this->blocks['groupsbymembers'] = $act->xw->flush();
+ break;
+ }
+ return false;
+ }
+
+ // <%logo%>
+ // <%nav%>
+ // <%notice%>
+ // <%noticeform%>
+ function onStartShowHeader( &$act ) {
+ $this->clear_xmlWriter($act);
+ $act->showLogo();
+ $this->blocks['logo'] = $act->xw->flush();
+ $act->showPrimaryNav();
+ $this->blocks['nav'] = $act->xw->flush();
+ $act->showSiteNotice();
+ $this->blocks['notice'] = $act->xw->flush();
+ if (common_logged_in()) {
+ $act->showNoticeForm();
+ } else {
+ $act->showAnonymousMessage();
+ }
+ $this->blocks['noticeform'] = $act->xw->flush();
+ return false;
+ }
+
+ // <%secondarynav%>
+ // <%licenses%>
+ function onStartShowFooter( &$act ) {
+ $this->clear_xmlWriter($act);
+ $act->showSecondaryNav();
+ $this->blocks['secondarynav'] = $act->xw->flush();
+ $act->showLicenses();
+ $this->blocks['licenses'] = $act->xw->flush();
+ return false;
+ }
+
+ // capture the EndHTML event
+ // and include the template
+ function onEndEndHTML($act) {
+
+ global $action, $tags;
+
+ // set the action and title values
+ $vars = array(
+ 'action'=>$action,
+ 'title'=>$act->title(). " - ". common_config('site', 'name')
+ );
+
+ // use the PHP template
+ // unless statusnet config:
+ // $config['template']['mode'] = 'html';
+ if (!(common_config('template', 'mode') == 'html')) {
+ $tpl_file = $this->templateFolder() . '/index.php';
+ $tags = array_merge($vars,$this->blocks);
+ include $tpl_file;
+ return;
+ }
+
+ $tpl_file = $this->templateFolder() . '/index.html';
+
+ // read the static template
+ $output = file_get_contents( $tpl_file );
+
+ $tags = array();
+
+ // get a list of the <%tags%> in the template
+ $pattern='/<%([a-z]+)%>/';
+
+ if ( 1 <= preg_match_all( $pattern, $output, $found ))
+ $tags[] = $found;
+
+ // for each found tag, set its value from the rendered blocks
+ foreach( $tags[0][1] as $pos=>$tag ) {
+ if (isset($this->blocks[$tag]))
+ $vars[$tag] = $this->blocks[$tag];
+
+ // didn't find a block for the tag
+ elseif (!isset($vars[$tag]))
+ $vars[$tag] = '';
+ }
+
+ // replace the tags in the template
+ foreach( $vars as $key=>$val )
+ $output = str_replace( '<%'.$key.'%>', $val, $output );
+
+ echo $output;
+
+ return true;
+
+ }
+ function templateFolder() {
+ return 'tpl';
+ }
+
+ // catching the StartShowHTML event to halt the rendering
+ function onStartShowHTML( &$act ) {
+ $this->clear_xmlWriter($act);
+ return true;
+ }
+
+ // clear the xmlWriter
+ function clear_xmlWriter( &$act ) {
+ $act->xw->openMemory();
+ $act->xw->setIndent(true);
+ }
+
+}
+
+/**
+ * Action for updating the template remotely
+ *
+ * "template/update" -- a POST method that requires a single
+ * parameter "template", containing the new template code
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brian Hendrickson <brian@megapump.com>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://megapump.com/
+ *
+ */
+
+class TemplateAction extends Action
+{
+
+ function prepare($args) {
+ parent::prepare($args);
+ return true;
+ }
+
+ function handle($args) {
+
+ parent::handle($args);
+
+ if (!isset($_SERVER['PHP_AUTH_USER'])) {
+
+ // not authenticated, show login form
+ header('WWW-Authenticate: Basic realm="StatusNet API"');
+
+ // cancelled the browser login form
+ $this->clientError(_('Authentication error!'), $code = 401);
+
+ } else {
+
+ $nick = $_SERVER['PHP_AUTH_USER'];
+ $pass = $_SERVER['PHP_AUTH_PW'];
+
+ // check username and password
+ $user = common_check_user($nick,$pass);
+
+ if ($user) {
+
+ // verify that user is admin
+ if (!($user->id == 1))
+ $this->clientError(_('Only User #1 can update the template.'), $code = 401);
+
+ // open the old template
+ $tpl_file = $this->templateFolder() . '/index.html';
+ $fp = fopen( $tpl_file, 'w+' );
+
+ // overwrite with the new template
+ fwrite($fp, $this->arg('template'));
+ fclose($fp);
+
+ header('HTTP/1.1 200 OK');
+ header('Content-type: text/plain');
+ print "Template Updated!";
+
+ } else {
+
+ // bad username and password
+ $this->clientError(_('Authentication error!'), $code = 401);
+
+ }
+
+ }
+ }
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'Template',
+ 'version' => TEMPLATEPLUGIN_VERSION,
+ 'author' => 'Brian Hendrickson',
+ 'homepage' => 'http://status.net/wiki/Plugin:Template',
+ 'rawdescription' =>
+ _m('Use an HTML template for Web output.'));
+ return true;
+ }
+
+}
+
+/**
+ * Function for retrieving a statusnet display section
+ *
+ * requires one parameter, the name of the section
+ * section names are listed in the comments of the TemplatePlugin class
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brian Hendrickson <brian@megapump.com>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://megapump.com/
+ *
+ */
+
+function section($tagname) {
+ global $tags;
+ if (isset($tags[$tagname]))
+ return $tags[$tagname];
+}
+
+++ /dev/null
-<?php
-/**
- * Plugin to render old skool templates
- *
- * Captures rendered parts from the output buffer, passes them through a template file: tpl/index.html
- * Adds an API method at index.php/template/update which lets you overwrite the template file
- * Requires username/password and a single POST parameter called "template"
- * The method is disabled unless the user is #1, the first user of the system
- *
- * @category Plugin
- * @package StatusNet
- * @author Brian Hendrickson <brian@megapump.com>
- * @copyright 2009 Megapump, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://megapump.com/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-define('TEMPLATEPLUGIN_VERSION', '0.1');
-
-class TemplatePlugin extends Plugin {
-
- var $blocks = array();
-
- function __construct() {
- parent::__construct();
- }
-
- // capture the RouterInitialized event
- // and connect a new API method
- // for updating the template
- function onRouterInitialized( $m ) {
- $m->connect( 'template/update', array(
- 'action' => 'template',
- ));
- }
-
- // <%styles%>
- // <%scripts%>
- // <%search%>
- // <%feeds%>
- // <%description%>
- // <%head%>
- function onStartShowHead( &$act ) {
- $this->clear_xmlWriter($act);
- $act->extraHead();
- $this->blocks['head'] = $act->xw->flush();
- $act->showStylesheets();
- $this->blocks['styles'] = $act->xw->flush();
- $act->showScripts();
- $this->blocks['scripts'] = $act->xw->flush();
- $act->showFeeds();
- $this->blocks['feeds'] = $act->xw->flush();
- $act->showOpenSearch();
- $this->blocks['search'] = $act->xw->flush();
- $act->showDescription();
- $this->blocks['description'] = $act->xw->flush();
- return false;
- }
-
- // <%bodytext%>
- function onStartShowContentBlock( &$act ) {
- $this->clear_xmlWriter($act);
- return true;
- }
- function onEndShowContentBlock( &$act ) {
- $this->blocks['bodytext'] = $act->xw->flush();
- }
-
- // <%localnav%>
- function onStartShowLocalNavBlock( &$act ) {
- $this->clear_xmlWriter($act);
- return true;
- }
- function onEndShowLocalNavBlock( &$act ) {
- $this->blocks['localnav'] = $act->xw->flush();
- }
-
- // <%export%>
- function onStartShowExportData( &$act ) {
- $this->clear_xmlWriter($act);
- return true;
- }
- function onEndShowExportData( &$act ) {
- $this->blocks['export'] = $act->xw->flush();
- }
-
- // <%subscriptions%>
- // <%subscribers%>
- // <%groups%>
- // <%statistics%>
- // <%cloud%>
- // <%groupmembers%>
- // <%groupstatistics%>
- // <%groupcloud%>
- // <%popular%>
- // <%groupsbyposts%>
- // <%featuredusers%>
- // <%groupsbymembers%>
- function onStartShowSections( &$act ) {
- global $action;
- $this->clear_xmlWriter($act);
- switch ($action) {
- case "showstream":
- $act->showSubscriptions();
- $this->blocks['subscriptions'] = $act->xw->flush();
- $act->showSubscribers();
- $this->blocks['subscribers'] = $act->xw->flush();
- $act->showGroups();
- $this->blocks['groups'] = $act->xw->flush();
- $act->showStatistics();
- $this->blocks['statistics'] = $act->xw->flush();
- $cloud = new PersonalTagCloudSection($act, $act->user);
- $cloud->show();
- $this->blocks['cloud'] = $act->xw->flush();
- break;
- case "showgroup":
- $act->showMembers();
- $this->blocks['groupmembers'] = $act->xw->flush();
- $act->showStatistics();
- $this->blocks['groupstatistics'] = $act->xw->flush();
- $cloud = new GroupTagCloudSection($act, $act->group);
- $cloud->show();
- $this->blocks['groupcloud'] = $act->xw->flush();
- break;
- case "public":
- $pop = new PopularNoticeSection($act);
- $pop->show();
- $this->blocks['popular'] = $act->xw->flush();
- $gbp = new GroupsByPostsSection($act);
- $gbp->show();
- $this->blocks['groupsbyposts'] = $act->xw->flush();
- $feat = new FeaturedUsersSection($act);
- $feat->show();
- $this->blocks['featuredusers'] = $act->xw->flush();
- break;
- case "groups":
- $gbp = new GroupsByPostsSection($act);
- $gbp->show();
- $this->blocks['groupsbyposts'] = $act->xw->flush();
- $gbm = new GroupsByMembersSection($act);
- $gbm->show();
- $this->blocks['groupsbymembers'] = $act->xw->flush();
- break;
- }
- return false;
- }
-
- // <%logo%>
- // <%nav%>
- // <%notice%>
- // <%noticeform%>
- function onStartShowHeader( &$act ) {
- $this->clear_xmlWriter($act);
- $act->showLogo();
- $this->blocks['logo'] = $act->xw->flush();
- $act->showPrimaryNav();
- $this->blocks['nav'] = $act->xw->flush();
- $act->showSiteNotice();
- $this->blocks['notice'] = $act->xw->flush();
- if (common_logged_in()) {
- $act->showNoticeForm();
- } else {
- $act->showAnonymousMessage();
- }
- $this->blocks['noticeform'] = $act->xw->flush();
- return false;
- }
-
- // <%secondarynav%>
- // <%licenses%>
- function onStartShowFooter( &$act ) {
- $this->clear_xmlWriter($act);
- $act->showSecondaryNav();
- $this->blocks['secondarynav'] = $act->xw->flush();
- $act->showLicenses();
- $this->blocks['licenses'] = $act->xw->flush();
- return false;
- }
-
- // capture the EndHTML event
- // and include the template
- function onEndEndHTML($act) {
-
- global $action, $tags;
-
- // set the action and title values
- $vars = array(
- 'action'=>$action,
- 'title'=>$act->title(). " - ". common_config('site', 'name')
- );
-
- // use the PHP template
- // unless statusnet config:
- // $config['template']['mode'] = 'html';
- if (!(common_config('template', 'mode') == 'html')) {
- $tpl_file = $this->templateFolder() . '/index.php';
- $tags = array_merge($vars,$this->blocks);
- include $tpl_file;
- return;
- }
-
- $tpl_file = $this->templateFolder() . '/index.html';
-
- // read the static template
- $output = file_get_contents( $tpl_file );
-
- $tags = array();
-
- // get a list of the <%tags%> in the template
- $pattern='/<%([a-z]+)%>/';
-
- if ( 1 <= preg_match_all( $pattern, $output, $found ))
- $tags[] = $found;
-
- // for each found tag, set its value from the rendered blocks
- foreach( $tags[0][1] as $pos=>$tag ) {
- if (isset($this->blocks[$tag]))
- $vars[$tag] = $this->blocks[$tag];
-
- // didn't find a block for the tag
- elseif (!isset($vars[$tag]))
- $vars[$tag] = '';
- }
-
- // replace the tags in the template
- foreach( $vars as $key=>$val )
- $output = str_replace( '<%'.$key.'%>', $val, $output );
-
- echo $output;
-
- return true;
-
- }
- function templateFolder() {
- return 'tpl';
- }
-
- // catching the StartShowHTML event to halt the rendering
- function onStartShowHTML( &$act ) {
- $this->clear_xmlWriter($act);
- return true;
- }
-
- // clear the xmlWriter
- function clear_xmlWriter( &$act ) {
- $act->xw->openMemory();
- $act->xw->setIndent(true);
- }
-
-}
-
-/**
- * Action for updating the template remotely
- *
- * "template/update" -- a POST method that requires a single
- * parameter "template", containing the new template code
- *
- * @category Plugin
- * @package StatusNet
- * @author Brian Hendrickson <brian@megapump.com>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://megapump.com/
- *
- */
-
-class TemplateAction extends Action
-{
-
- function prepare($args) {
- parent::prepare($args);
- return true;
- }
-
- function handle($args) {
-
- parent::handle($args);
-
- if (!isset($_SERVER['PHP_AUTH_USER'])) {
-
- // not authenticated, show login form
- header('WWW-Authenticate: Basic realm="StatusNet API"');
-
- // cancelled the browser login form
- $this->clientError(_('Authentication error!'), $code = 401);
-
- } else {
-
- $nick = $_SERVER['PHP_AUTH_USER'];
- $pass = $_SERVER['PHP_AUTH_PW'];
-
- // check username and password
- $user = common_check_user($nick,$pass);
-
- if ($user) {
-
- // verify that user is admin
- if (!($user->id == 1))
- $this->clientError(_('Only User #1 can update the template.'), $code = 401);
-
- // open the old template
- $tpl_file = $this->templateFolder() . '/index.html';
- $fp = fopen( $tpl_file, 'w+' );
-
- // overwrite with the new template
- fwrite($fp, $this->arg('template'));
- fclose($fp);
-
- header('HTTP/1.1 200 OK');
- header('Content-type: text/plain');
- print "Template Updated!";
-
- } else {
-
- // bad username and password
- $this->clientError(_('Authentication error!'), $code = 401);
-
- }
-
- }
- }
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'Template',
- 'version' => TEMPLATEPLUGIN_VERSION,
- 'author' => 'Brian Hendrickson',
- 'homepage' => 'http://status.net/wiki/Plugin:Template',
- 'rawdescription' =>
- _m('Use an HTML template for Web output.'));
- return true;
- }
-
-}
-
-/**
- * Function for retrieving a statusnet display section
- *
- * requires one parameter, the name of the section
- * section names are listed in the comments of the TemplatePlugin class
- *
- * @category Plugin
- * @package StatusNet
- * @author Brian Hendrickson <brian@megapump.com>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://megapump.com/
- *
- */
-
-function section($tagname) {
- global $tags;
- if (isset($tags[$tagname]))
- return $tags[$tagname];
-}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
*/
class TinyMCEPlugin extends Plugin
{
-
var $html;
function onEndShowScripts($action)
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:TinyMCE',
'rawdescription' =>
- _m('Use TinyMCE library to allow rich text editing in the browser'));
+ _m('Use TinyMCE library to allow rich text editing in the browser.'));
return true;
}
/**
* Hook for new-notice form processing to take our HTML goodies;
* won't affect API posting etc.
- *
+ *
* @param NewNoticeAction $action
* @param User $user
* @param string $content
/**
* Format the attachment placeholder img with the final version.
- *
+ *
* @param DOMElement $img
- * @param MediaFile $media
+ * @param MediaFile $media
*/
private function formatAttachment($img, $media)
{
return $scr;
}
-
}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: TinyMCEPlugin.php:77
-msgid "Use TinyMCE library to allow rich text editing in the browser"
+#: TinyMCEPlugin.php:76
+msgid "Use TinyMCE library to allow rich text editing in the browser."
msgstr ""
* @link http://status.net/
* @link http://twitter.com/
*/
-
class TwitterBridgePlugin extends Plugin
{
-
const VERSION = STATUSNET_VERSION;
public $adminImportControl = false; // Should the 'import' checkbox be exposed in the admin panel?
/**
* Initializer for the plugin.
*/
-
function initialize()
{
// Allow the key and secret to be passed in
*
* @return boolean result
*/
-
static function hasKeys()
{
$ckey = common_config('twitter', 'consumer_key');
*
* @return boolean hook return
*/
-
function onRouterInitialized($m)
{
$m->connect('admin/twitter', array('action' => 'twitteradminpanel'));
*
* @return boolean hook value
*/
-
function onPluginVersion(&$versions)
{
$versions[] = array(
'author' => 'Zach Copley, Julien C',
'homepage' => 'http://status.net/wiki/Plugin:TwitterBridge',
'rawdescription' => _m(
- 'The Twitter "bridge" plugin allows you to integrate ' .
- 'your StatusNet instance with ' .
+ 'The Twitter "bridge" plugin allows integration ' .
+ 'of a StatusNet instance with ' .
'<a href="http://twitter.com/">Twitter</a>.'
)
);
*
* @return boolean hook value; true means continue processing, false means stop.
*/
-
function onCheckSchema()
{
$schema = Schema::get();
*
* @return boolean hook value
*/
-
function onStartDeleteOwnNotice(User $user, Notice $notice)
{
$n2s = Notice_to_status::staticGet('notice_id', $notice->id);
* @param Notice $notice being favored
* @return hook return value
*/
-
function onEndFavorNotice(Profile $profile, Notice $notice)
{
$flink = Foreign_link::getByUserID($profile->id,
*
* @return hook return value
*/
-
function onEndDisfavorNotice(Profile $profile, Notice $notice)
{
$flink = Foreign_link::getByUserID($profile->id,
*
* @see DB_DataObject
*/
-
class Twitter_synch_status extends Memcached_DataObject
{
public $__table = 'twitter_synch_status'; // table name
* @return Twitter_synch_status object found, or null for no hits
*
*/
-
function staticGet($k, $v=null)
{
throw new Exception("Use pkeyGet() for this class.");
* @return Twitter_synch_status object found, or null for no hits
*
*/
-
function pkeyGet($kv)
{
return Memcached_DataObject::pkeyGet('Twitter_synch_status', $kv);
*
* @return array array of column definitions
*/
-
function table()
{
return array('foreign_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
*
* @return array list of key field names
*/
-
function keys()
{
return array_keys($this->keyTypes());
* 'K' for primary key: for compound keys, add an entry for each component;
* 'U' for unique keys: compound keys are not well supported here.
*/
-
function keyTypes()
{
return array('foreign_id' => 'K',
*
* @return array magic three-false array that stops auto-incrementing.
*/
-
function sequenceKey()
{
return array(false, false, false);
'timeline' => $timeline));
if (empty($tss)) {
-
$tss = new Twitter_synch_status();
$tss->foreign_id = $foreign_id;
$tss->insert();
return true;
-
} else {
-
$orig = clone($tss);
$tss->last_id = $last_id;
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class SyncTwitterFriendsDaemon extends ParallelizingDaemon
{
/**
* @return void
*
**/
-
function __construct($id = null, $interval = 60,
$max_children = 2, $debug = null)
{
*
* @return string Name of the daemon.
*/
-
function name()
{
return ('synctwitterfriends.' . $this->_id);
}
function childTask($flink) {
-
// Each child ps needs its own DB connection
// Note: DataObject::getDatabaseConnection() creates
// a new connection if there isn't one already
-
$conn = &$flink->getDatabaseConnection();
$this->subscribeTwitterFriends($flink);
// XXX: Couldn't find a less brutal way to blow
// away a cached connection
-
global $_DB_DATAOBJECT;
unset($_DB_DATAOBJECT['CONNECTIONS']);
}
$syncer = new SyncTwitterFriendsDaemon($id, 60, 2, $debug);
$syncer->runOnce();
-
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class TwitterStatusFetcher extends ParallelizingDaemon
{
/**
*
* @return string Name of the daemon.
*/
-
function name()
{
return ('twitterstatusfetcher.'.$this->_id);
*
* @return array flinks an array of Foreign_link objects
*/
-
function getObjects()
{
global $_DB_DATAOBJECT;
}
function childTask($flink) {
-
// Each child ps needs its own DB connection
// Note: DataObject::getDatabaseConnection() creates
// a new connection if there isn't one already
-
$conn = &$flink->getDatabaseConnection();
$this->getTimeline($flink);
// XXX: Couldn't find a less brutal way to blow
// away a cached connection
-
global $_DB_DATAOBJECT;
unset($_DB_DATAOBJECT['CONNECTIONS']);
}
// Reverse to preserve order
foreach (array_reverse($timeline) as $status) {
-
// Hacktastic: filter out stuff coming from this StatusNet
-
$source = mb_strtolower(common_config('integration', 'source'));
if (preg_match("/$source/", mb_strtolower($status->source))) {
// Don't save it if the user is protected
// FIXME: save it but treat it as private
-
if ($status->user->protected) {
continue;
}
}
// Okay, record the time we synced with Twitter for posterity
-
$flink->last_noticesync = common_sql_now();
$flink->update();
}
$statusUri = $this->makeStatusURI($status->user->screen_name, $status->id);
// check to see if we've already imported the status
-
$n2s = Notice_to_status::staticGet('status_id', $status->id);
if (!empty($n2s)) {
}
// If it's a retweet, save it as a repeat!
-
if (!empty($status->retweeted_status)) {
common_log(LOG_INFO, "Status {$status->id} is a retweet of {$status->retweeted_status->id}.");
$original = $this->saveStatus($status->retweeted_status);
$author = $original->getProfile();
// TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
// TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
- $content = sprintf(_('RT @%1$s %2$s'),
+ $content = sprintf(_m('RT @%1$s %2$s'),
$author->nickname,
$original->content);
*
* @return string URI
*/
-
function makeStatusURI($username, $id)
{
return 'http://twitter.com/'
*
* @return mixed value the first Profile with that url, or null
*/
-
function getProfileByUrl($nickname, $profileurl)
{
$profile = new Profile();
*
* @return mixed value a matching Notice or null
*/
-
function checkDupe($profile, $statusUri)
{
$notice = new Notice();
function ensureProfile($user)
{
// check to see if there's already a profile for this user
-
$profileurl = 'http://twitter.com/' . $user->screen_name;
$profile = $this->getProfileByUrl($user->screen_name, $profileurl);
return $profile;
} else {
-
common_debug($this->name() . ' - Adding profile and remote profile ' .
"for Twitter user: $profileurl.");
$remote_pro = Remote_profile::staticGet('uri', $profileurl);
if (empty($remote_pro)) {
-
$remote_pro = new Remote_profile();
$remote_pro->id = $id;
$avatar = $profile->getAvatar($sizes[$size]);
// Delete the avatar, if present
-
if ($avatar) {
$avatar->delete();
}
$avatar->height = 48;
break;
default:
-
// Note: Twitter's big avatars are a different size than
// StatusNet's (StatusNet's = 96)
-
$avatar->width = 73;
$avatar->height = 73;
}
$fetcher = new TwitterStatusFetcher($id, 60, 2, $debug);
$fetcher->runOnce();
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-19 15:29+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: twitter.php:363
+#: twitter.php:350
msgid "Your Twitter bridge has been disabled."
msgstr ""
-#: twitter.php:367
+#: twitter.php:354
#, php-format
msgid ""
"Hi, %1$s. We're sorry to inform you that your link to Twitter has been "
"disabled. We no longer seem to have permission to update your Twitter "
-"status. (Did you revoke %3$s's access?)\n"
+"status. Did you maybe revoke %3$s's access?\n"
"\n"
"You can re-enable your Twitter bridge by visiting your Twitter settings "
"page:\n"
"\t%2$s\n"
"\n"
"Regards,\n"
-"%3$s\n"
+"%3$s"
msgstr ""
-#: TwitterBridgePlugin.php:156 TwitterBridgePlugin.php:179
-#: TwitterBridgePlugin.php:296 twitteradminpanel.php:54
+#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
+#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
msgid "Twitter"
msgstr ""
-#: TwitterBridgePlugin.php:157
+#: TwitterBridgePlugin.php:152
msgid "Login or register using Twitter"
msgstr ""
-#: TwitterBridgePlugin.php:180
+#: TwitterBridgePlugin.php:175
msgid "Twitter integration options"
msgstr ""
-#: TwitterBridgePlugin.php:297
+#: TwitterBridgePlugin.php:292
msgid "Twitter bridge configuration"
msgstr ""
-#: TwitterBridgePlugin.php:322
+#: TwitterBridgePlugin.php:316
msgid ""
-"The Twitter \"bridge\" plugin allows you to integrate your StatusNet "
-"instance with <a href=\"http://twitter.com/\">Twitter</a>."
+"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
+"with <a href=\"http://twitter.com/\">Twitter</a>."
msgstr ""
-#: twitteradminpanel.php:65
+#: twitteradminpanel.php:62
msgid "Twitter bridge settings"
msgstr ""
-#: twitteradminpanel.php:150
+#: twitteradminpanel.php:145
msgid "Invalid consumer key. Max length is 255 characters."
msgstr ""
-#: twitteradminpanel.php:156
+#: twitteradminpanel.php:151
msgid "Invalid consumer secret. Max length is 255 characters."
msgstr ""
-#: twitteradminpanel.php:216
+#: twitteradminpanel.php:207
msgid "Twitter application settings"
msgstr ""
-#: twitteradminpanel.php:222
+#: twitteradminpanel.php:213
msgid "Consumer key"
msgstr ""
-#: twitteradminpanel.php:223
+#: twitteradminpanel.php:214
msgid "Consumer key assigned by Twitter"
msgstr ""
-#: twitteradminpanel.php:231
+#: twitteradminpanel.php:222
msgid "Consumer secret"
msgstr ""
-#: twitteradminpanel.php:232
+#: twitteradminpanel.php:223
msgid "Consumer secret assigned by Twitter"
msgstr ""
-#: twitteradminpanel.php:249
+#: twitteradminpanel.php:233
+msgid "Note: a global consumer key and secret are set."
+msgstr ""
+
+#: twitteradminpanel.php:240
msgid "Integration source"
msgstr ""
-#: twitteradminpanel.php:250
+#: twitteradminpanel.php:241
msgid "Name of your Twitter application"
msgstr ""
-#: twitteradminpanel.php:262
+#: twitteradminpanel.php:253
msgid "Options"
msgstr ""
-#: twitteradminpanel.php:269
+#: twitteradminpanel.php:260
msgid "Enable \"Sign-in with Twitter\""
msgstr ""
-#: twitteradminpanel.php:271
+#: twitteradminpanel.php:262
msgid "Allow users to login with their Twitter credentials"
msgstr ""
-#: twitteradminpanel.php:278
+#: twitteradminpanel.php:269
msgid "Enable Twitter import"
msgstr ""
-#: twitteradminpanel.php:280
+#: twitteradminpanel.php:271
msgid ""
"Allow users to import their Twitter friends' timelines. Requires daemons to "
"be manually configured."
msgstr ""
+#: twitteradminpanel.php:288 twittersettings.php:200
+msgid "Save"
+msgstr ""
+
+#: twitteradminpanel.php:288
+msgid "Save Twitter settings"
+msgstr ""
+
+#: twitterlogin.php:56
+msgid "Already logged in."
+msgstr ""
+
+#: twitterlogin.php:64
+msgid "Twitter Login"
+msgstr ""
+
+#: twitterlogin.php:69
+msgid "Login with your Twitter account"
+msgstr ""
+
+#: twitterlogin.php:87
+msgid "Sign in with Twitter"
+msgstr ""
+
+#: twitterauthorization.php:120 twittersettings.php:226
+msgid "There was a problem with your session token. Try again, please."
+msgstr ""
+
+#: twitterauthorization.php:126
+msgid "You can't register if you don't agree to the license."
+msgstr ""
+
+#: twitterauthorization.php:135
+msgid "Something weird happened."
+msgstr ""
+
#: twitterauthorization.php:181 twitterauthorization.php:229
+#: twitterauthorization.php:300
msgid "Couldn't link your Twitter account."
msgstr ""
msgid "Couldn't link your Twitter account: oauth_token mismatch."
msgstr ""
-#: twittersettings.php:59
+#: twitterauthorization.php:312
+#, php-format
+msgid ""
+"This is the first time you've logged into %s so we must connect your Twitter "
+"account to a local account. You can either create a new account, or connect "
+"with your existing account, if you have one."
+msgstr ""
+
+#: twitterauthorization.php:318
+msgid "Twitter Account Setup"
+msgstr ""
+
+#: twitterauthorization.php:351
+msgid "Connection options"
+msgstr ""
+
+#: twitterauthorization.php:360
+#, php-format
+msgid ""
+"My text and files are available under %s except this private data: password, "
+"email address, IM address, and phone number."
+msgstr ""
+
+#: twitterauthorization.php:381
+msgid "Create new account"
+msgstr ""
+
+#: twitterauthorization.php:383
+msgid "Create a new user with this nickname."
+msgstr ""
+
+#: twitterauthorization.php:386
+msgid "New nickname"
+msgstr ""
+
+#: twitterauthorization.php:388
+msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
+msgstr ""
+
+#: twitterauthorization.php:391
+msgid "Create"
+msgstr ""
+
+#: twitterauthorization.php:396
+msgid "Connect existing account"
+msgstr ""
+
+#: twitterauthorization.php:398
+msgid ""
+"If you already have an account, login with your username and password to "
+"connect it to your Twitter account."
+msgstr ""
+
+#: twitterauthorization.php:401
+msgid "Existing nickname"
+msgstr ""
+
+#: twitterauthorization.php:404
+msgid "Password"
+msgstr ""
+
+#: twitterauthorization.php:407
+msgid "Connect"
+msgstr ""
+
+#: twitterauthorization.php:423 twitterauthorization.php:432
+msgid "Registration not allowed."
+msgstr ""
+
+#: twitterauthorization.php:439
+msgid "Not a valid invitation code."
+msgstr ""
+
+#: twitterauthorization.php:449
+msgid "Nickname must have only lowercase letters and numbers and no spaces."
+msgstr ""
+
+#: twitterauthorization.php:454
+msgid "Nickname not allowed."
+msgstr ""
+
+#: twitterauthorization.php:459
+msgid "Nickname already in use. Try another one."
+msgstr ""
+
+#: twitterauthorization.php:474
+msgid "Error registering user."
+msgstr ""
+
+#: twitterauthorization.php:485 twitterauthorization.php:523
+#: twitterauthorization.php:543
+msgid "Error connecting user to Twitter."
+msgstr ""
+
+#: twitterauthorization.php:505
+msgid "Invalid username or password."
+msgstr ""
+
+#: twittersettings.php:58
msgid "Twitter settings"
msgstr ""
-#: twittersettings.php:70
+#: twittersettings.php:69
msgid ""
"Connect your Twitter account to share your updates with your Twitter friends "
"and vice-versa."
msgstr ""
-#: twittersettings.php:118
+#: twittersettings.php:116
msgid "Twitter account"
msgstr ""
-#: twittersettings.php:123
+#: twittersettings.php:121
msgid "Connected Twitter account"
msgstr ""
-#: twittersettings.php:128
+#: twittersettings.php:126
msgid "Disconnect my account from Twitter"
msgstr ""
-#: twittersettings.php:133
+#: twittersettings.php:132
msgid "Disconnecting your Twitter could make it impossible to log in! Please "
msgstr ""
-#: twittersettings.php:137
+#: twittersettings.php:136
msgid "set a password"
msgstr ""
-#: twittersettings.php:139
+#: twittersettings.php:138
msgid " first."
msgstr ""
-#: twittersettings.php:143
+#. TRANS: %1$s is the current website name.
+#: twittersettings.php:142
#, php-format
msgid ""
"Keep your %1$s account but disconnect from Twitter. You can use your %1$s "
"password to log in."
msgstr ""
-#: twittersettings.php:151
+#: twittersettings.php:150
msgid "Disconnect"
msgstr ""
-#: twittersettings.php:158
+#: twittersettings.php:157
msgid "Preferences"
msgstr ""
-#: twittersettings.php:162
+#: twittersettings.php:161
msgid "Automatically send my notices to Twitter."
msgstr ""
-#: twittersettings.php:169
+#: twittersettings.php:168
msgid "Send local \"@\" replies to Twitter."
msgstr ""
-#: twittersettings.php:176
+#: twittersettings.php:175
msgid "Subscribe to my Twitter friends here."
msgstr ""
-#: twittersettings.php:185
-msgid "Import my Friends Timeline."
-msgstr ""
-
-#: twittersettings.php:201
-msgid "Save"
+#: twittersettings.php:184
+msgid "Import my friends timeline."
msgstr ""
-#: twittersettings.php:203
+#: twittersettings.php:202
msgid "Add"
msgstr ""
-#: twittersettings.php:228
-msgid "There was a problem with your session token. Try again, please."
-msgstr ""
-
-#: twittersettings.php:238
+#: twittersettings.php:236
msgid "Unexpected form submission."
msgstr ""
-#: twittersettings.php:257
+#: twittersettings.php:254
msgid "Couldn't remove Twitter user."
msgstr ""
-#: twittersettings.php:261
+#: twittersettings.php:258
msgid "Twitter account disconnected."
msgstr ""
-#: twittersettings.php:282 twittersettings.php:292
+#: twittersettings.php:278 twittersettings.php:288
msgid "Couldn't save Twitter preferences."
msgstr ""
-#: twittersettings.php:296
+#: twittersettings.php:292
msgid "Twitter preferences saved."
msgstr ""
+
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: daemons/twitterstatusfetcher.php:264
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr ""
// Clear out any bad old foreign_users with the new user's legit URL
// This can happen when users move around or fakester accounts get
// repoed, and things like that.
-
$luser = Foreign_user::getForeignUser($twitter_id, TWITTER_SERVICE);
if (!empty($luser)) {
{
// Check to see whether the Twitter user is already in the system,
// and update its screen name and uri if so.
-
$fuser = Foreign_user::getForeignUser($twitter_id, TWITTER_SERVICE);
if (!empty($fuser)) {
}
} else {
-
// Kill any old, invalid records for this screen name
-
$fuser = Foreign_user::getByNickname($screen_name, TWITTER_SERVICE);
if (!empty($fuser)) {
}
function is_twitter_bound($notice, $flink) {
-
// Check to see if notice should go to Twitter
if (!empty($flink) && ($flink->noticesync & FOREIGN_NOTICE_SEND)) {
// If it's not a Twitter-style reply, or if the user WANTS to send replies,
// or if it's in reply to a twitter notice
-
if (!preg_match('/^@[a-zA-Z0-9_]{1,15}\b/u', $notice->content) ||
($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) ||
is_twitter_notice($notice->reply_to)) {
TWITTER_SERVICE);
// Don't bother with basic auth, since it's no longer allowed
-
if (!empty($flink) && TwitterOAuthClient::isPackedToken($flink->credentials)) {
if (!empty($notice->repeat_of) && is_twitter_notice($notice->repeat_of)) {
$retweet = retweet_notice($flink, Notice::staticGet('id', $notice->repeat_of));
// This could represent a failure posting,
// or the Twitter API might just be behaving flakey.
-
$errmsg = sprintf('Twitter bridge - No data returned by Twitter API when ' .
'trying to post notice %d for User %s (user id %d).',
$notice->id,
}
// Notice crossed the great divide
-
$msg = sprintf('Twitter bridge - posted notice %d to Twitter using ' .
'OAuth for User %s (user id %d).',
$notice->id,
// Notify the user that her Twitter bridge is down
if (isset($user->email)) {
-
$result = mail_twitter_bridge_removed($user);
if (!$result) {
-
$msg = 'Unable to send email to notify ' .
"$user->nickname (user id: $user->id) " .
'that their Twitter bridge link was ' .
common_log(LOG_WARNING, $msg);
}
}
-
}
/**
*
* @return boolean success flag
*/
-
function mail_twitter_bridge_removed($user)
{
$profile = $user->getProfile();
$body = sprintf(_m('Hi, %1$s. We\'re sorry to inform you that your ' .
'link to Twitter has been disabled. We no longer seem to have ' .
- 'permission to update your Twitter status. (Did you revoke ' .
- '%3$s\'s access?)' . "\n\n" .
+ 'permission to update your Twitter status. Did you maybe revoke ' .
+ '%3$s\'s access?' . "\n\n" .
'You can re-enable your Twitter bridge by visiting your ' .
"Twitter settings page:\n\n\t%2\$s\n\n" .
- "Regards,\n%3\$s\n"),
+ "Regards,\n%3\$s"),
$profile->getBestName(),
common_local_url('twittersettings'),
common_config('site', 'name'));
common_switch_locale();
return mail_to_user($user, $subject, $body);
}
-
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-
class TwitteradminpanelAction extends AdminPanelAction
{
/**
*
* @return string page title
*/
-
function title()
{
return _m('Twitter');
*
* @return string instructions
*/
-
function getInstructions()
{
return _m('Twitter bridge settings');
*
* @return void
*/
-
function showForm()
{
$form = new TwitterAdminPanelForm($this);
*
* @return void
*/
-
function saveSettings()
{
static $settings = array(
*
* @return int ID of the form
*/
-
function id()
{
return 'twitteradminpanel';
*
* @return string class of the form
*/
-
function formClass()
{
return 'form_settings';
*
* @return string URL of the action
*/
-
function action()
{
return common_local_url('twitteradminpanel');
*
* @return void
*/
-
function formData()
{
$this->out->elementStart(
if (!empty($globalConsumerKey) && !empty($globalConsumerSec)) {
$this->li();
- $this->out->element('p', 'form_guide', _('Note: a global consumer key and secret are set.'));
+ $this->out->element('p', 'form_guide', _m('Note: a global consumer key and secret are set.'));
$this->unli();
}
*
* @return void
*/
-
function formActions()
{
- $this->out->submit('submit', _('Save'), 'submit', null, _('Save Twitter settings'));
+ $this->out->submit('submit', _m('Save'), 'submit', null, _m('Save Twitter settings'));
}
}
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
- $this->showForm(_('There was a problem with your session token. Try again, please.'));
+ $this->showForm(_m('There was a problem with your session token. Try again, please.'));
return;
}
if ($this->arg('create')) {
if (!$this->boolean('license')) {
- $this->showForm(_('You can\'t register if you don\'t agree to the license.'),
+ $this->showForm(_m('You can\'t register if you don\'t agree to the license.'),
$this->trimmed('newname'));
return;
}
$this->connectNewUser();
} else {
common_debug('Twitter bridge - ' . print_r($this->args, true));
- $this->showForm(_('Something weird happened.'),
+ $this->showForm(_m('Something weird happened.'),
$this->trimmed('newname'));
}
} else {
}
if (common_logged_in()) {
-
// Save the access token and Twitter user info
$user = common_current_user();
if (empty($flink_id)) {
common_log_db_error($flink, 'INSERT', __FILE__);
- $this->serverError(_('Couldn\'t link your Twitter account.'));
+ $this->serverError(_m('Couldn\'t link your Twitter account.'));
}
return $flink_id;
$this->element('div', array('class' => 'error'), $this->error);
} else {
$this->element('div', 'instructions',
- sprintf(_('This is the first time you\'ve logged into %s so we must connect your Twitter account to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
+ sprintf(_m('This is the first time you\'ve logged into %s so we must connect your Twitter account to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name')));
}
}
function title()
{
- return _('Twitter Account Setup');
+ return _m('Twitter Account Setup');
}
function showForm($error=null, $username=null)
'class' => 'form_settings',
'action' => common_local_url('twitterauthorization')));
$this->elementStart('fieldset', array('id' => 'settings_twitter_connect_options'));
- $this->element('legend', null, _('Connection options'));
+ $this->element('legend', null, _m('Connection options'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
$this->element('input', array('type' => 'checkbox',
'name' => 'license',
'value' => 'true'));
$this->elementStart('label', array('class' => 'checkbox', 'for' => 'license'));
- $message = _('My text and files are available under %s ' .
+ $message = _m('My text and files are available under %s ' .
'except this private data: password, ' .
'email address, IM address, and phone number.');
$link = '<a href="' .
$this->elementStart('fieldset');
$this->hidden('token', common_session_token());
$this->element('legend', null,
- _('Create new account'));
+ _m('Create new account'));
$this->element('p', null,
- _('Create a new user with this nickname.'));
+ _m('Create a new user with this nickname.'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
- $this->input('newname', _('New nickname'),
+ $this->input('newname', _m('New nickname'),
($this->username) ? $this->username : '',
- _('1-64 lowercase letters or numbers, no punctuation or spaces'));
+ _m('1-64 lowercase letters or numbers, no punctuation or spaces'));
$this->elementEnd('li');
$this->elementEnd('ul');
- $this->submit('create', _('Create'));
+ $this->submit('create', _m('Create'));
$this->elementEnd('fieldset');
$this->elementStart('fieldset');
$this->element('legend', null,
- _('Connect existing account'));
+ _m('Connect existing account'));
$this->element('p', null,
- _('If you already have an account, login with your username and password to connect it to your Twitter account.'));
+ _m('If you already have an account, login with your username and password to connect it to your Twitter account.'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
- $this->input('nickname', _('Existing nickname'));
+ $this->input('nickname', _m('Existing nickname'));
$this->elementEnd('li');
$this->elementStart('li');
- $this->password('password', _('Password'));
+ $this->password('password', _m('Password'));
$this->elementEnd('li');
$this->elementEnd('ul');
- $this->submit('connect', _('Connect'));
+ $this->submit('connect', _m('Connect'));
$this->elementEnd('fieldset');
$this->elementEnd('fieldset');
function createNewUser()
{
if (common_config('site', 'closed')) {
- $this->clientError(_('Registration not allowed.'));
+ $this->clientError(_m('Registration not allowed.'));
return;
}
if (common_config('site', 'inviteonly')) {
$code = $_SESSION['invitecode'];
if (empty($code)) {
- $this->clientError(_('Registration not allowed.'));
+ $this->clientError(_m('Registration not allowed.'));
return;
}
$invite = Invitation::staticGet($code);
if (empty($invite)) {
- $this->clientError(_('Not a valid invitation code.'));
+ $this->clientError(_m('Not a valid invitation code.'));
return;
}
}
if (!Validate::string($nickname, array('min_length' => 1,
'max_length' => 64,
'format' => NICKNAME_FMT))) {
- $this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.'));
+ $this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.'));
return;
}
if (!User::allowed_nickname($nickname)) {
- $this->showForm(_('Nickname not allowed.'));
+ $this->showForm(_m('Nickname not allowed.'));
return;
}
if (User::staticGet('nickname', $nickname)) {
- $this->showForm(_('Nickname already in use. Try another one.'));
+ $this->showForm(_m('Nickname already in use. Try another one.'));
return;
}
$user = User::register($args);
if (empty($user)) {
- $this->serverError(_('Error registering user.'));
+ $this->serverError(_m('Error registering user.'));
return;
}
save_twitter_user($this->twuid, $this->tw_fields['screen_name']);
if (!$result) {
- $this->serverError(_('Error connecting user to Twitter.'));
+ $this->serverError(_m('Error connecting user to Twitter.'));
return;
}
$password = $this->trimmed('password');
if (!common_check_user($nickname, $password)) {
- $this->showForm(_('Invalid username or password.'));
+ $this->showForm(_m('Invalid username or password.'));
return;
}
save_twitter_user($this->twuid, $this->tw_fields['screen_name']);
if (!$result) {
- $this->serverError(_('Error connecting user to Twitter.'));
+ $this->serverError(_m('Error connecting user to Twitter.'));
return;
}
$result = $this->flinkUser($user->id, $this->twuid);
if (empty($result)) {
- $this->serverError(_('Error connecting user to Twitter.'));
+ $this->serverError(_m('Error connecting user to Twitter.'));
return;
}
*
* @see SettingsAction
*/
-
class TwitterloginAction extends Action
{
function handle($args)
parent::handle($args);
if (common_is_real_login()) {
- $this->clientError(_('Already logged in.'));
+ $this->clientError(_m('Already logged in.'));
}
$this->showPage();
function title()
{
- return _('Twitter Login');
+ return _m('Twitter Login');
}
function getInstructions()
{
- return _('Login with your Twitter account');
+ return _m('Login with your Twitter account');
}
function showPageNotice()
null,
array('signin' => true))));
$this->element('img', array('src' => common_path('plugins/TwitterBridge/Sign-in-with-Twitter-lighter.png'),
- 'alt' => 'Sign in with Twitter'));
+ 'alt' => _m('Sign in with Twitter')));
$this->elementEnd('a');
}
function statusesHomeTimeline($since_id = null, $max_id = null,
$cnt = null, $page = null)
{
-
$url = 'https://twitter.com/statuses/home_timeline.json';
$params = array('include_entities' => 'true');
*
* @see SettingsAction
*/
-
class TwittersettingsAction extends ConnectSettingsAction
{
/**
*
* @return void
*/
-
function showContent()
{
if (!$user->password) {
$this->elementStart('p', array('class' => 'form_guide'));
+ // @todo FIXME: Bad i18n (patchwork in three parts).
$this->text(_m('Disconnecting your Twitter ' .
'could make it impossible to log in! Please '));
$this->element('a',
$this->text(_m(' first.'));
$this->elementEnd('p');
} else {
-
+ // TRANS: %1$s is the current website name.
$note = _m('Keep your %1$s account but disconnect from Twitter. ' .
'You can use your %1$s password to log in.');
if (common_config('twitterimport','enabled')) {
$this->elementStart('li');
$this->checkbox('noticerecv',
- _m('Import my Friends Timeline.'),
+ _m('Import my friends timeline.'),
($flink) ?
($flink->noticesync & FOREIGN_NOTICE_RECV) :
false);
*
* @return void
*/
-
function handlePost()
{
// CSRF protection
*
* @return void
*/
-
function removeTwitterAccount()
{
$user = common_current_user();
*
* @return void
*/
-
function savePreferences()
{
$noticesend = $this->boolean('noticesend');
$this->showForm(_m('Twitter preferences saved.'), true);
}
-
}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to limit number of users that can register (best for cloud providers)
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to limit number of users that can register (best for cloud providers)
+ *
+ * For cloud providers whose freemium model is based on how many
+ * users can register. We use it on the StatusNet Cloud.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @seeAlso Location
+ */
+
+class UserLimitPlugin extends Plugin
+{
+ public $maxUsers = null;
+
+ function onStartUserRegister(&$user, &$profile)
+ {
+ $this->_checkMaxUsers();
+ return true;
+ }
+
+ function onStartRegistrationTry($action)
+ {
+ $this->_checkMaxUsers();
+ return true;
+ }
+
+ function _checkMaxUsers()
+ {
+ if (!is_null($this->maxUsers)) {
+
+ $cls = new User();
+
+ $cnt = $cls->count();
+
+ if ($cnt >= $this->maxUsers) {
+ $msg = sprintf(_('Cannot register; maximum number of users (%d) reached.'),
+ $this->maxUsers);
+
+ throw new ClientException($msg);
+ }
+ }
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'UserLimit',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:UserLimit',
+ 'description' =>
+ _m('Limit the number of users who can register.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: UserLimitPlugin.php:89
+msgid "Limit the number of users who can register."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to limit number of users that can register (best for cloud providers)
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Action
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to limit number of users that can register (best for cloud providers)
- *
- * For cloud providers whose freemium model is based on how many
- * users can register. We use it on the StatusNet Cloud.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @seeAlso Location
- */
-
-class UserLimitPlugin extends Plugin
-{
- public $maxUsers = null;
-
- function onStartUserRegister(&$user, &$profile)
- {
- $this->_checkMaxUsers();
- return true;
- }
-
- function onStartRegistrationTry($action)
- {
- $this->_checkMaxUsers();
- return true;
- }
-
- function _checkMaxUsers()
- {
- if (!is_null($this->maxUsers)) {
-
- $cls = new User();
-
- $cnt = $cls->count();
-
- if ($cnt >= $this->maxUsers) {
- $msg = sprintf(_('Cannot register; maximum number of users (%d) reached.'),
- $this->maxUsers);
-
- throw new ClientException($msg);
- }
- }
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'UserLimit',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:UserLimit',
- 'description' =>
- _m('Limit the number of users who can register.'));
- return true;
- }
-}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to show WikiHashtags content in the sidebar
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2008 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to use WikiHashtags
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @see Event
+ */
+
+class WikiHashtagsPlugin extends Plugin
+{
+ const VERSION = '0.1';
+
+ function __construct($code=null)
+ {
+ parent::__construct();
+ }
+
+ function onStartShowSections($action)
+ {
+ $name = $action->trimmed('action');
+
+ if ($name == 'tag') {
+
+ $taginput = $action->trimmed('tag');
+ $tag = common_canonical_tag($taginput);
+
+ if (!empty($tag)) {
+
+ $url = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=render',
+ urlencode($tag));
+ $editurl = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=edit',
+ urlencode($tag));
+
+ $request = HTTPClient::start();
+ $response = $request->get($url);
+ $html = $response->getBody();
+
+ $action->elementStart('div', array('id' => 'wikihashtags', 'class' => 'section'));
+
+ if ($response->isOk() && !empty($html)) {
+ $action->element('style', null,
+ "span.editsection { display: none }\n".
+ "table.toc { display: none }");
+ $action->raw($html);
+ $action->elementStart('p');
+ $action->element('a', array('href' => $editurl,
+ 'title' => sprintf(_('Edit the article for #%s on WikiHashtags'), $tag)),
+ _('Edit'));
+ $action->element('a', array('href' => 'http://www.gnu.org/copyleft/fdl.html',
+ 'title' => _('Shared under the terms of the GNU Free Documentation License'),
+ 'rel' => 'license'),
+ 'GNU FDL');
+ $action->elementEnd('p');
+ } else {
+ $action->element('a', array('href' => $editurl),
+ sprintf(_('Start the article for #%s on WikiHashtags'), $tag));
+ }
+
+ $action->elementEnd('div');
+ }
+ }
+
+ return true;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'WikiHashtags',
+ 'version' => self::VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:WikiHashtags',
+ 'rawdescription' =>
+ _m('Gets hashtag descriptions from <a href="http://hashtags.wikia.com/">WikiHashtags</a>.'));
+ return true;
+ }
+}
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: WikiHashtagsPlugin.php:110
+msgid ""
+"Gets hashtag descriptions from <a href=\"http://hashtags.wikia.com/"
+"\">WikiHashtags</a>."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Plugin to show WikiHashtags content in the sidebar
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2008 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Plugin to use WikiHashtags
- *
- * @category Plugin
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- *
- * @see Event
- */
-
-class WikiHashtagsPlugin extends Plugin
-{
- const VERSION = '0.1';
-
- function __construct($code=null)
- {
- parent::__construct();
- }
-
- function onStartShowSections($action)
- {
- $name = $action->trimmed('action');
-
- if ($name == 'tag') {
-
- $taginput = $action->trimmed('tag');
- $tag = common_canonical_tag($taginput);
-
- if (!empty($tag)) {
-
- $url = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=render',
- urlencode($tag));
- $editurl = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=edit',
- urlencode($tag));
-
- $request = HTTPClient::start();
- $response = $request->get($url);
- $html = $response->getBody();
-
- $action->elementStart('div', array('id' => 'wikihashtags', 'class' => 'section'));
-
- if ($response->isOk() && !empty($html)) {
- $action->element('style', null,
- "span.editsection { display: none }\n".
- "table.toc { display: none }");
- $action->raw($html);
- $action->elementStart('p');
- $action->element('a', array('href' => $editurl,
- 'title' => sprintf(_('Edit the article for #%s on WikiHashtags'), $tag)),
- _('Edit'));
- $action->element('a', array('href' => 'http://www.gnu.org/copyleft/fdl.html',
- 'title' => _('Shared under the terms of the GNU Free Documentation License'),
- 'rel' => 'license'),
- 'GNU FDL');
- $action->elementEnd('p');
- } else {
- $action->element('a', array('href' => $editurl),
- sprintf(_('Start the article for #%s on WikiHashtags'), $tag));
- }
-
- $action->elementEnd('div');
- }
- }
-
- return true;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'WikiHashtags',
- 'version' => self::VERSION,
- 'author' => 'Evan Prodromou',
- 'homepage' => 'http://status.net/wiki/Plugin:WikiHashtags',
- 'rawdescription' =>
- _m('Gets hashtag descriptions from <a href="http://hashtags.wikia.com/">WikiHashtags</a>.'));
- return true;
- }
-}
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class WikiHowProfilePlugin extends Plugin
{
function onPluginVersion(&$versions)
'author' => 'Brion Vibber',
'homepage' => 'http://status.net/wiki/Plugin:Sample',
'rawdescription' =>
- _m('Fetches avatar and other profile info for WikiHow users when setting up an account via OpenID.'));
+ _m('Fetches avatar and other profile information for WikiHow users when setting up an account via OpenID.'));
return true;
}
/**
* Given a user's WikiHow profile URL, find their avatar.
- *
+ *
* @param string $profileUrl user page on the wiki
- *
+ *
* @return array of data; possible members:
* 'avatar' => full URL to avatar image
- *
+ *
* @throws Exception on various low-level failures
- *
+ *
* @todo pull location, web site, and about sections -- they aren't currently marked up cleanly.
*/
private function fetchProfile($profileUrl)
private function saveAvatar($user, $url)
{
if (!common_valid_http_url($url)) {
- throw new ServerException(sprintf(_m("Invalid avatar URL %s"), $url));
+ throw new ServerException(sprintf(_m("Invalid avatar URL %s."), $url));
}
// @fixme this should be better encapsulated
// ripped from OStatus via oauthstore.php (for old OMB client)
$temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
if (!copy($url, $temp_filename)) {
- throw new ServerException(sprintf(_m("Unable to fetch avatar from %s"), $url));
+ throw new ServerException(sprintf(_m("Unable to fetch avatar from %s."), $url));
}
$profile = $user->getProfile();
rename($temp_filename, Avatar::path($filename));
$profile->setOriginal($filename);
}
-
}
-
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-14 22:56+0000\n"
+"POT-Creation-Date: 2010-09-18 22:06+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"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: WikiHowProfilePlugin.php:60
+#: WikiHowProfilePlugin.php:59
msgid ""
-"Fetches avatar and other profile info for WikiHow users when setting up an "
-"account via OpenID."
+"Fetches avatar and other profile information for WikiHow users when setting "
+"up an account via OpenID."
msgstr ""
-#: WikiHowProfilePlugin.php:172
+#: WikiHowProfilePlugin.php:171
#, php-format
-msgid "Invalid avatar URL %s"
+msgid "Invalid avatar URL %s."
msgstr ""
-#: WikiHowProfilePlugin.php:179
+#: WikiHowProfilePlugin.php:178
#, php-format
-msgid "Unable to fetch avatar from %s"
+msgid "Unable to fetch avatar from %s."
msgstr ""
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * Plugin to implement cache interface for XCache variable cache
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * A plugin to use XCache's variable cache for the cache interface
+ *
+ * New plugin interface lets us use alternative cache systems
+ * for caching. This one uses XCache's variable cache.
+ *
+ * @category Cache
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class XCachePlugin extends Plugin
+{
+ /**
+ * Get a value associated with a key
+ *
+ * The value should have been set previously.
+ *
+ * @param string &$key in; Lookup key
+ * @param mixed &$value out; value associated with key
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheGet(&$key, &$value)
+ {
+ if (!xcache_isset($key)) {
+ $value = false;
+ } else {
+ $value = xcache_get($key);
+ $value = unserialize($value);
+ }
+ Event::handle('EndCacheGet', array($key, &$value));
+ return false;
+ }
+
+ /**
+ * Associate a value with a key
+ *
+ * @param string &$key in; Key to use for lookups
+ * @param mixed &$value in; Value to associate
+ * @param integer &$flag in; Flag (passed through to Memcache)
+ * @param integer &$expiry in; Expiry (passed through to Memcache)
+ * @param boolean &$success out; Whether the set was successful
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
+ {
+ $success = xcache_set($key, serialize($value));
+
+ Event::handle('EndCacheSet', array($key, $value, $flag,
+ $expiry));
+ return false;
+ }
+
+ /**
+ * Delete a value associated with a key
+ *
+ * @param string &$key in; Key to lookup
+ * @param boolean &$success out; whether it worked
+ *
+ * @return boolean hook success
+ */
+
+ function onStartCacheDelete(&$key, &$success)
+ {
+ $success = xcache_unset($key);
+ Event::handle('EndCacheDelete', array($key));
+ return false;
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'XCache',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Craig Andrews',
+ 'homepage' => 'http://status.net/wiki/Plugin:XCache',
+ 'rawdescription' =>
+ _m('Use the <a href="http://xcache.lighttpd.net/">XCache</a> variable cache to cache query results.'));
+ return true;
+ }
+}
+
--- /dev/null
+# 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: 2010-09-18 22:06+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"
+
+#: XCachePlugin.php:120
+msgid ""
+"Use the <a href=\"http://xcache.lighttpd.net/\">XCache</a> variable cache to "
+"cache query results."
+msgstr ""
+++ /dev/null
-<?php
-/**
- * StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2009, StatusNet, Inc.
- *
- * Plugin to implement cache interface for XCache variable cache
- *
- * PHP version 5
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
-
-/**
- * A plugin to use XCache's variable cache for the cache interface
- *
- * New plugin interface lets us use alternative cache systems
- * for caching. This one uses XCache's variable cache.
- *
- * @category Cache
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-class XCachePlugin extends Plugin
-{
- /**
- * Get a value associated with a key
- *
- * The value should have been set previously.
- *
- * @param string &$key in; Lookup key
- * @param mixed &$value out; value associated with key
- *
- * @return boolean hook success
- */
-
- function onStartCacheGet(&$key, &$value)
- {
- if (!xcache_isset($key)) {
- $value = false;
- } else {
- $value = xcache_get($key);
- $value = unserialize($value);
- }
- Event::handle('EndCacheGet', array($key, &$value));
- return false;
- }
-
- /**
- * Associate a value with a key
- *
- * @param string &$key in; Key to use for lookups
- * @param mixed &$value in; Value to associate
- * @param integer &$flag in; Flag (passed through to Memcache)
- * @param integer &$expiry in; Expiry (passed through to Memcache)
- * @param boolean &$success out; Whether the set was successful
- *
- * @return boolean hook success
- */
-
- function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
- {
- $success = xcache_set($key, serialize($value));
-
- Event::handle('EndCacheSet', array($key, $value, $flag,
- $expiry));
- return false;
- }
-
- /**
- * Delete a value associated with a key
- *
- * @param string &$key in; Key to lookup
- * @param boolean &$success out; whether it worked
- *
- * @return boolean hook success
- */
-
- function onStartCacheDelete(&$key, &$success)
- {
- $success = xcache_unset($key);
- Event::handle('EndCacheDelete', array($key));
- return false;
- }
-
- function onPluginVersion(&$versions)
- {
- $versions[] = array('name' => 'XCache',
- 'version' => STATUSNET_VERSION,
- 'author' => 'Craig Andrews',
- 'homepage' => 'http://status.net/wiki/Plugin:XCache',
- 'rawdescription' =>
- _m('Use the <a href="http://xcache.lighttpd.net/">XCache</a> variable cache to cache query results.'));
- return true;
- }
-}
-
chdir($old);
}
-function do_translatewiki_plugin($basedir, $plugin)
-{
- $yamldir = "$basedir/locale/TranslateWiki";
- if (!file_exists($yamldir)) {
- mkdir($yamldir);
- }
- $outfile = "$yamldir/StatusNet-{$plugin}.yml";
- $pluginlc = strtolower( $plugin );
- $data = <<<END
----
-BASIC:
- id: out-statusnet-{$pluginlc}
- label: StatusNet - {$plugin}
- namespace: NS_STATUSNET
- description: "{{int:bw-desc-statusnet-plugin}}"
- class: FileBasedMessageGroup
- display: out/statusnet/{$pluginlc}
-
-FILES:
- class: GettextFFS
- sourcePattern: %GROUPROOT%/statusnet/plugins/{$plugin}/locale/{$plugin}.pot
- targetPattern: statusnet/plugins/{$plugin}/locale/%CODE%/LC_MESSAGES/{$plugin}.po
- codeMap:
- en-gb: en_GB
- no: nb
- pt-br: pt_BR
- zh-hans: zh_CN
- zh-hant: zh_TW
-
-MANGLER
- class: StringMatcher
- prefix: {$pluginlc}-
- patterns:
- - "*"
-
-END;
- file_put_contents($outfile, $data);
-}
-
function get_plugins($dir)
{
$plugins = array();
$dir = "$basedir/plugins/$name";
if (plugin_using_gettext($dir)) {
do_update_plugin($dir, $name);
- do_translatewiki_plugin($basedir, $name);
return true;
} else {
return false;
}
}
-
-
if ($all || $core) {
echo "core...";
update_core(INSTALLDIR, 'statusnet');
http_build_query(array(
'title' => 'Special:Translate',
'task' => 'export-to-file',
- 'group' => 'out-statusnet',
+ 'group' => 'out-statusnet-core',
'language' => $twnCode));
$lcdir = INSTALLDIR . '/locale/' . $code;