diff options
author | Ian Denhardt <ian@zenhack.net> | 2010-08-09 15:06:26 -0400 |
---|---|---|
committer | Ian Denhardt <ian@zenhack.net> | 2010-08-09 15:06:26 -0400 |
commit | e0da39380024c3d4e7eb9a3ae0c5808ca7dcfb74 (patch) | |
tree | 6d1e4f88990203797a405fe673143d660f49cb90 | |
parent | d933ee7bad47aeb3267dd9c23633d3943478cfe1 (diff) | |
parent | edb62db613478d50def223ec1d60ef5863fa3a4b (diff) |
Merge branch '1.0.x' of git://gitorious.org/statusnet/mainline
175 files changed, 25020 insertions, 6888 deletions
diff --git a/EVENTS.txt b/EVENTS.txt index cf9c6123f..68752ef3f 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -716,6 +716,24 @@ StartShowContentLicense: Showing the default license for content EndShowContentLicense: Showing the default license for content - $action: the current action +GetImTransports: Get IM transports that are available +- &$transports: append your transport to this array like so: $transports[transportName]=array('display'=>display) + +NormalizeImScreenname: Normalize an IM screenname +- $transport: transport the screenname is on +- &$screenname: screenname to be normalized + +ValidateImScreenname: Validate an IM screenname +- $transport: transport the screenname is on +- $screenname: screenname to be validated +- $valid: is the screenname valid? + +SendImConfirmationCode: Send a confirmation code to confirm a user owns an IM screenname +- $transport: transport the screenname exists on +- $screenname: screenname being confirmed +- $code: confirmation code for confirmation URL +- $user: user requesting the confirmation + StartUserRegister: When a new user is being registered - &$profile: new profile data (no ID) - &$user: new user account (no ID or URI) @@ -818,3 +836,230 @@ EndDeleteUser: handling the post for deleting a user - $action: action being shown - $user: user being deleted +StartActivityStart: starting the output for a notice activity <event> +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$attrs: <entry> attributes (mostly namespace declarations, if any) + +EndActivityStart: end the opening tag for an activity <event> +- &$notice: notice being output +- &$xs: XMLStringer for output +- $attrs: <entry> attributes (mostly namespace declarations, if any) + +StartActivitySource: before outputting the <source> element for a notice activity +- &$notice: notice being output +- &$xs: XMLStringer for output + +EndActivitySource: after outputting the <source> element for a notice activity +- &$notice: notice being output +- &$xs: XMLStringer for output + +StartActivityTitle: before outputting notice activity title +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$title: title of the notice, mutable + +EndActivityTitle: after outputting notice activity title +- $notice: notice being output +- &$xs: XMLStringer for output +- $title: title of the notice + +StartActivityAuthor: before outputting atom author +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$atomAuthor: string for XML representing atom author + +EndActivityAuthor: after outputting atom author +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$atomAuthor: string for XML representing atom author + +StartActivityActor: before outputting activity actor element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$actor: string for XML representing activity actor + +EndActivityActor: after outputting activity actor element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$actor: string for XML representing activity actor + +StartActivityLink: before outputting activity HTML link element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$url: URL for activity HTML link element for a notice activity entry + +EndActivityLink: before outputting activity HTML link element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $url: URL for activity HTML link element for a notice activity entry + +StartActivityId: before outputting atom:id element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$id: atom:id (notice URI by default) + +EndActivityId: after outputting atom:id element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $id: atom:id (notice URI by default) + +StartActivityPublished: before outputting atom:published element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$published: atom:published value (notice created by default) + +EndActivityPublished: before outputting atom:published element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $published: atom:published value (notice created by default) + +StartActivityUpdated: before outputting atom:updated element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$updated: atom:updated value (same as atom:published by default) + +EndActivityUpdated: after outputting atom:updated element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $updated: atom:updated value (same as atom:published by default) + +StartActivityContent: before outputting atom:content element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$content: atom:content value (notice rendered HTML by default) + +EndActivityContent: after outputting atom:content element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $content: atom:content value (notice rendered HTML by default) + +StartActivityVerb: before outputting activity:verb element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$verb: activity:verb URI ('http://activitystrea.ms/schema/1.0/post' by default) + +EndActivityVerb: after outputting activity:verb element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $verb: activity:verb URI ('http://activitystrea.ms/schema/1.0/post' by default) + +StartActivityDefaultObjectType: before outputting activity:object-type element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$type: activity:object-type URI for default object ('http://activitystrea.ms/schema/1.0/note' by default) + +EndActivityDefaultObjectType: after outputting activity:verb element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $type: activity:object-type URI for default object ('http://activitystrea.ms/schema/1.0/note' by default) + +StartActivityObjects: before outputting activity:object elements for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$objects: array of ActivityObject objects to output (empty by default) + +EndActivityObjects: after outputting activity:object elements for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $objects: array of ActivityObject objects to output (empty by default) + +StartActivityNoticeInfo: before outputting statusnet:notice-info element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$noticeInfoAttr: array of attributes for notice info element + +EndActivityNoticeInfo: after outputting statusnet:notice-info element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $noticeInfoAttr: array of attributes for notice info element + +StartActivityInReplyTo: before outputting thr:in-reply-to element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$replyNotice: Notice object the main notice is in-reply-to + +EndActivityInReplyTo: after outputting thr:in-reply-to element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $replyNotice: Notice object the main notice is in-reply-to + +StartActivityConversation: before outputting ostatus:conversation link element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$conv: Conversation object + +EndActivityConversation: after outputting ostatus:conversation link element for a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $conv: Conversation object + +StartActivityAttentionProfiles: before outputting ostatus:attention link element for people in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$replyProfiles: array of profiles of people being replied to + +EndActivityAttentionProfiles: after outputting ostatus:attention link element for people in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $replyProfiles: array of Profile object of people being replied to + +StartActivityAttentionGroups: before outputting ostatus:attention link element for groups in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$groups: array of Group objects of groups being addressed + +EndActivityAttentionGroups: after outputting ostatus:attention link element for groups in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $groups: array of Group objects of groups being addressed + +StartActivityForward: before outputting ostatus:forward link element in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$repeat: Notice that was repeated + +EndActivityForward: after outputting ostatus:forward link element in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $repeat: Notice that was repeated + +StartActivityCategories: before outputting atom:category elements in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$tags: array of strings for tags on the notice (used for categories) + +EndActivityCategories: after outputting atom:category elements in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $tags: array of strings for tags on the notice (used for categories) + +StartActivityEnclosures: before outputting enclosure link elements in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$enclosures: array of enclosure objects (see File::getEnclosure() for details) + +EndActivityEnclosures: after outputting enclosure link elements in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $enclosures: array of enclosure objects (see File::getEnclosure() for details) + +StartActivityGeo: before outputting geo:rss element in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$lat: latitude +- &$lon: longitude + +EndActivityGeo: after outputting geo:rss element in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output +- $lat: latitude +- $lon: longitude + +StartActivityEnd: before the closing </entry> in a notice activity entry (last chance for data!) +- &$notice: notice being output +- &$xs: XMLStringer for output + +EndActivityEnd: after the closing </entry> in a notice activity entry +- &$notice: notice being output +- &$xs: XMLStringer for output @@ -836,9 +836,7 @@ sslserver: use an alternate server name for SSL URLs, like parameters correctly so that both the SSL server and the "normal" server can access the session cookie and preferably other cookies as well. -shorturllength: Length of URL at which URLs in a message exceeding 140 - characters will be sent to the user's chosen - shortening service. +shorturllength: ignored. See 'url' section below. dupelimit: minimum time allowed for one person to say the same thing twice. Default 60s. Anything lower is considered a user or UI error. @@ -1461,6 +1459,22 @@ disallow: Array of (virtual) directories to disallow. Default is 'main', 'search', 'message', 'settings', 'admin'. Ignored when site is private, in which case the entire site ('/') is disallowed. +url +--- + +Everybody loves URL shorteners. These are some options for fine-tuning +how and when the server shortens URLs. + +shortener: URL shortening service to use by default. Users can override + individually. 'ur1.ca' by default. +maxlength: If an URL is strictly longer than this limit, it will be + shortened. Note that the URL shortener service may return an + URL longer than this limit. Defaults to 25. Users can + override. If set to 0, all URLs will be shortened. +maxnoticelength: If a notice is strictly longer than this limit, all + URLs in the notice will be shortened. Users can override. + -1 means the text limit for notices. + Plugins ======= diff --git a/actions/all.php b/actions/all.php index ac4e321d0..6c14d2f13 100644 --- a/actions/all.php +++ b/actions/all.php @@ -143,10 +143,10 @@ class AllAction extends ProfileAction $message .= _('Try subscribing to more people, [join a group](%%action.groups%%) or post something yourself.'); } else { // TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" - $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) from their profile or [post something to their attention](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname); + $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) from their profile or [post something to them](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname); } } else { - $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to their attention.'), $this->user->nickname); + $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname); } $this->elementStart('div', 'guide'); diff --git a/actions/apiaccountupdatedeliverydevice.php b/actions/apiaccountupdatedeliverydevice.php index 295378aa6..e25b9a954 100644 --- a/actions/apiaccountupdatedeliverydevice.php +++ b/actions/apiaccountupdatedeliverydevice.php @@ -120,10 +120,16 @@ class ApiAccountUpdateDeliveryDeviceAction extends ApiAuthAction if (strtolower($this->device) == 'sms') { $this->user->smsnotify = true; } elseif (strtolower($this->device) == 'im') { - $this->user->jabbernotify = true; + //TODO IM is pluginized now, so what should we do? + //Enable notifications for all IM plugins? + //For now, don't do anything + //$this->user->jabbernotify = true; } elseif (strtolower($this->device == 'none')) { $this->user->smsnotify = false; - $this->user->jabbernotify = false; + //TODO IM is pluginized now, so what should we do? + //Disable notifications for all IM plugins? + //For now, don't do anything + //$this->user->jabbernotify = false; } $result = $this->user->update($original); diff --git a/actions/apigroupprofileupdate.php b/actions/apigroupprofileupdate.php new file mode 100644 index 000000000..6ac4b5a4b --- /dev/null +++ b/actions/apigroupprofileupdate.php @@ -0,0 +1,367 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Update a group's profile + * + * 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 API + * @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); +} + +require_once INSTALLDIR . '/lib/apiauth.php'; + +/** + * API analog to the group edit page + * + * @category API + * @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 ApiGroupProfileUpdateAction extends ApiAuthAction +{ + + /** + * Take arguments for running + * + * @param array $args $_REQUEST args + * + * @return boolean success flag + * + */ + + function prepare($args) + { + parent::prepare($args); + + $this->nickname = common_canonical_nickname($this->trimmed('nickname')); + + $this->fullname = $this->trimmed('fullname'); + $this->homepage = $this->trimmed('homepage'); + $this->description = $this->trimmed('description'); + $this->location = $this->trimmed('location'); + $this->aliasstring = $this->trimmed('aliases'); + + $this->user = $this->auth_user; + $this->group = $this->getTargetGroup($this->arg('id')); + + return true; + } + + /** + * Handle the request + * + * See which request params have been set, and update the profile + * + * @param array $args $_REQUEST data (unused) + * + * @return void + */ + + function handle($args) + { + parent::handle($args); + + if ($_SERVER['REQUEST_METHOD'] != 'POST') { + $this->clientError( + _('This method requires a POST.'), + 400, $this->format + ); + return; + } + + if (!in_array($this->format, array('xml', 'json'))) { + $this->clientError( + _('API method not found.'), + 404, + $this->format + ); + return; + } + + if (empty($this->user)) { + $this->clientError(_('No such user.'), 404, $this->format); + return; + } + + if (empty($this->group)) { + $this->clientError(_('Group not found.'), 404, $this->format); + return false; + } + + if (!$this->user->isAdmin($this->group)) { + $this->clientError(_('You must be an admin to edit the group.'), 403); + return false; + } + + $this->group->query('BEGIN'); + + $orig = clone($this->group); + + try { + + if (!empty($this->nickname)) { + if ($this->validateNickname()) { + $this->group->nickname = $this->nickname; + $this->group->mainpage = common_local_url( + 'showgroup', + array('nickname' => $this->nickname) + ); + } + } + + if (!empty($this->fullname)) { + $this->validateFullname(); + $this->group->fullname = $this->fullname; + } + + if (!empty($this->homepage)) { + $this->validateHomepage(); + $this->group->homepage = $this->hompage; + } + + if (!empty($this->description)) { + $this->validateDescription(); + $this->group->description = $this->decription; + } + + if (!empty($this->location)) { + $this->validateLocation(); + $this->group->location = $this->location; + } + + } catch (ApiValidationException $ave) { + $this->clientError( + $ave->getMessage(), + 403, + $this->format + ); + return; + } + + $result = $this->group->update($orig); + + if (!$result) { + common_log_db_error($this->group, 'UPDATE', __FILE__); + $this->serverError(_('Could not update group.')); + } + + $aliases = array(); + + try { + + if (!empty($this->aliasstring)) { + $aliases = $this->validateAliases(); + } + + } catch (ApiValidationException $ave) { + $this->clientError( + $ave->getMessage(), + 403, + $this->format + ); + return; + } + + $result = $this->group->setAliases($aliases); + + if (!$result) { + $this->serverError(_('Could not create aliases.')); + } + + if (!empty($this->nickname) && ($this->nickname != $orig->nickname)) { + common_log(LOG_INFO, "Saving local group info."); + $local = Local_group::staticGet('group_id', $this->group->id); + $local->setNickname($this->nickname); + } + + $this->group->query('COMMIT'); + + switch($this->format) { + case 'xml': + $this->showSingleXmlGroup($this->group); + break; + case 'json': + $this->showSingleJsonGroup($this->group); + break; + default: + $this->clientError(_('API method not found.'), 404, $this->format); + break; + } + } + + function nicknameExists($nickname) + { + $group = Local_group::staticGet('nickname', $nickname); + + if (!empty($group) && + $group->group_id != $this->group->id) { + return true; + } + + $alias = Group_alias::staticGet('alias', $nickname); + + if (!empty($alias) && + $alias->group_id != $this->group->id) { + return true; + } + + return false; + } + + function validateNickname() + { + if (!Validate::string( + $this->nickname, array( + 'min_length' => 1, + 'max_length' => 64, + 'format' => NICKNAME_FMT + ) + ) + ) { + throw new ApiValidationException( + _( + 'Nickname must have only lowercase letters ' . + 'and numbers and no spaces.' + ) + ); + } else if ($this->nicknameExists($this->nickname)) { + throw new ApiValidationException( + _('Nickname already in use. Try another one.') + ); + } else if (!User_group::allowedNickname($this->nickname)) { + throw new ApiValidationException( + _('Not a valid nickname.') + ); + } + + return true; + } + + function validateHomepage() + { + if (!is_null($this->homepage) + && (strlen($this->homepage) > 0) + && !Validate::uri( + $this->homepage, + array('allowed_schemes' => array('http', 'https') + ) + ) + ) { + throw new ApiValidationException( + _('Homepage is not a valid URL.') + ); + } + } + + function validateFullname() + { + if (!is_null($this->fullname) && mb_strlen($this->fullname) > 255) { + throw new ApiValidationException( + _('Full name is too long (max 255 chars).') + ); + } + } + + function validateDescription() + { + if (User_group::descriptionTooLong($this->description)) { + throw new ApiValidationException( + sprintf( + _('description is too long (max %d chars).'), + User_group::maxDescription() + ) + ); + } + } + + function validateLocation() + { + if (!is_null($this->location) && mb_strlen($this->location) > 255) { + throw new ApiValidationException( + _('Location is too long (max 255 chars).') + ); + } + } + + function validateAliases() + { + $aliases = array_map( + 'common_canonical_nickname', + array_unique( + preg_split('/[\s,]+/', + $this->aliasstring + ) + ) + ); + + if (count($aliases) > common_config('group', 'maxaliases')) { + throw new ApiValidationException( + sprintf( + _('Too many aliases! Maximum %d.'), + common_config('group', 'maxaliases') + ) + ); + } + + foreach ($aliases as $alias) { + if (!Validate::string( + $alias, array( + 'min_length' => 1, + 'max_length' => 64, + 'format' => NICKNAME_FMT) + ) + ) { + throw new ApiValidationException( + sprintf( + _('Invalid alias: "%s"'), + $alias + ) + ); + } + + if ($this->nicknameExists($alias)) { + throw new ApiValidationException( + sprintf( + _('Alias "%s" already in use. Try another one.'), + $alias) + ); + } + + // XXX assumes alphanum nicknames + if (strcmp($alias, $this->nickname) == 0) { + throw new ApiValidationException( + _('Alias can\'t be the same as nickname.') + ); + } + } + + return $aliases; + } + +}
\ No newline at end of file diff --git a/actions/confirmaddress.php b/actions/confirmaddress.php index 8bf8c8c4d..f92db3ec4 100644 --- a/actions/confirmaddress.php +++ b/actions/confirmaddress.php @@ -49,7 +49,7 @@ class ConfirmaddressAction extends Action { /** type of confirmation. */ - var $type = null; + var $address; /** * Accept a confirmation code @@ -86,39 +86,76 @@ class ConfirmaddressAction extends Action return; } $type = $confirm->address_type; - if (!in_array($type, array('email', 'jabber', 'sms'))) { - // TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. - $this->serverError(sprintf(_('Unrecognized address type %s.'), $type)); + $transports = array(); + Event::handle('GetImTransports', array(&$transports)); + if (!in_array($type, array('email', 'sms')) && !in_array($type, array_keys($transports))) { + // TRANS: Server error for an unknown address type, which can be 'email', 'sms', or the name of an IM network (such as 'xmpp' or 'aim') + $this->serverError(sprintf(_('Unrecognized address type %s'), $type)); return; } - if ($cur->$type == $confirm->address) { - // TRANS: Client error for an already confirmed email/jabbel/sms address. - $this->clientError(_('That address has already been confirmed.')); - return; - } - + $this->address = $confirm->address; $cur->query('BEGIN'); + if (in_array($type, array('email', 'sms'))) + { + if ($cur->$type == $confirm->address) { + $this->clientError(_('That address has already been confirmed.')); + return; + } + + $orig_user = clone($cur); + + $cur->$type = $confirm->address; + + if ($type == 'sms') { + $cur->carrier = ($confirm->address_extra)+0; + $carrier = Sms_carrier::staticGet($cur->carrier); + $cur->smsemail = $carrier->toEmailAddress($cur->sms); + } + + $result = $cur->updateKeys($orig_user); + + if (!$result) { + common_log_db_error($cur, 'UPDATE', __FILE__); + $this->serverError(_('Couldn\'t update user.')); + return; + } + + if ($type == 'email') { + $cur->emailChanged(); + } + + } else { + + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->transport = $confirm->address_type; + $user_im_prefs->user_id = $cur->id; + if ($user_im_prefs->find() && $user_im_prefs->fetch()) { + if($user_im_prefs->screenname == $confirm->address){ + $this->clientError(_('That address has already been confirmed.')); + return; + } + $user_im_prefs->screenname = $confirm->address; + $result = $user_im_prefs->update(); + + if (!$result) { + common_log_db_error($user_im_prefs, 'UPDATE', __FILE__); + $this->serverError(_('Couldn\'t update user im preferences.')); + return; + } + }else{ + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->screenname = $confirm->address; + $user_im_prefs->transport = $confirm->address_type; + $user_im_prefs->user_id = $cur->id; + $result = $user_im_prefs->insert(); + + if (!$result) { + common_log_db_error($user_im_prefs, 'INSERT', __FILE__); + $this->serverError(_('Couldn\'t insert user im preferences.')); + return; + } + } - $orig_user = clone($cur); - - $cur->$type = $confirm->address; - - if ($type == 'sms') { - $cur->carrier = ($confirm->address_extra)+0; - $carrier = Sms_carrier::staticGet($cur->carrier); - $cur->smsemail = $carrier->toEmailAddress($cur->sms); - } - - $result = $cur->updateKeys($orig_user); - - if (!$result) { - common_log_db_error($cur, 'UPDATE', __FILE__); - $this->serverError(_('Couldn\'t update user.')); - return; - } - - if ($type == 'email') { - $cur->emailChanged(); } $result = $confirm->delete(); @@ -130,8 +167,6 @@ class ConfirmaddressAction extends Action } $cur->query('COMMIT'); - - $this->type = $type; $this->showPage(); } @@ -155,11 +190,10 @@ class ConfirmaddressAction extends Action function showContent() { $cur = common_current_user(); - $type = $this->type; $this->element('p', null, sprintf(_('The address "%s" has been '. 'confirmed for your account.'), - $cur->$type)); + $this->address)); } } diff --git a/actions/imsettings.php b/actions/imsettings.php index 6691c8dad..662b1063e 100644 --- a/actions/imsettings.php +++ b/actions/imsettings.php @@ -31,9 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } -require_once INSTALLDIR.'/lib/connectsettingsaction.php'; -require_once INSTALLDIR.'/lib/jabber.php'; - /** * Settings for Jabber/XMPP integration * @@ -72,8 +69,8 @@ class ImsettingsAction extends ConnectSettingsAction // TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. // TRANS: the order and formatting of link text and link should remain unchanged. return _('You can send and receive notices through '. - 'Jabber/GTalk [instant messages](%%doc.im%%). '. - 'Configure your address and settings below.'); + 'instant messaging [instant messages](%%doc.im%%). '. + 'Configure your addresses and settings below.'); } /** @@ -88,102 +85,124 @@ class ImsettingsAction extends ConnectSettingsAction function showContent() { - if (!common_config('xmpp', 'enabled')) { + $transports = array(); + Event::handle('GetImTransports', array(&$transports)); + if (! $transports) { $this->element('div', array('class' => 'error'), - // TRANS: Message given in the IM settings if XMPP is not enabled on the site. + // TRANS: Message given in the IM settings if IM is not enabled on the site. _('IM is not available.')); return; } $user = common_current_user(); - $this->elementStart('form', array('method' => 'post', - 'id' => 'form_settings_im', - 'class' => 'form_settings', - 'action' => - common_local_url('imsettings'))); - $this->elementStart('fieldset', array('id' => 'settings_im_address')); - // TRANS: Form legend for IM settings form. - $this->element('legend', null, _('IM address')); - $this->hidden('token', common_session_token()); - - if ($user->jabber) { - $this->element('p', 'form_confirmed', $user->jabber); - // TRANS: Form note in IM settings form. - $this->element('p', 'form_note', - _('Current confirmed Jabber/GTalk address.')); - $this->hidden('jabber', $user->jabber); - // TRANS: Button label to remove a confirmed IM address. - $this->submit('remove', _m('BUTTON','Remove')); - } else { - $confirm = $this->getConfirmation(); - if ($confirm) { - $this->element('p', 'form_unconfirmed', $confirm->address); + + $user_im_prefs_by_transport = array(); + + foreach($transports as $transport=>$transport_info) + { + $this->elementStart('form', array('method' => 'post', + 'id' => 'form_settings_im', + 'class' => 'form_settings', + 'action' => + common_local_url('imsettings'))); + $this->elementStart('fieldset', array('id' => 'settings_im_address')); + // TRANS: Form legend for IM settings form. + $this->element('legend', null, $transport_info['display']); + $this->hidden('token', common_session_token()); + $this->hidden('transport', $transport); + + if ($user_im_prefs = User_im_prefs::pkeyGet( array('transport' => $transport, 'user_id' => $user->id) )) { + $user_im_prefs_by_transport[$transport] = $user_im_prefs; + $this->element('p', 'form_confirmed', $user_im_prefs->screenname); + // TRANS: Form note in IM settings form. $this->element('p', 'form_note', - // TRANS: Form note in IM settings form. - // TRANS: %s is the IM address set for the site. - sprintf(_('Awaiting confirmation on this address. '. - 'Check your Jabber/GTalk account for a '. - 'message with further instructions. '. - '(Did you add %s to your buddy list?)'), - jabber_daemon_address())); - $this->hidden('jabber', $confirm->address); - // TRANS: Button label to cancel an IM address confirmation procedure. - $this->submit('cancel', _m('BUTTON','Cancel')); + sprintf(_('Current confirmed %s address.'),$transport_info['display'])); + $this->hidden('screenname', $user_im_prefs->screenname); + // TRANS: Button label to remove a confirmed IM address. + $this->submit('remove', _m('BUTTON','Remove')); } else { - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - // TRANS: Field label for IM address input in IM settings form. - $this->input('jabber', _('IM address'), - ($this->arg('jabber')) ? $this->arg('jabber') : null, - // TRANS: IM address input field instructions in IM settings form. - // TRANS: %s is the IM address set for the site. - sprintf(_('Jabber or GTalk address, '. - 'like "UserName@example.org". '. - 'First, make sure to add %s to your '. - 'buddy list in your IM client or on GTalk.'), - jabber_daemon_address())); - $this->elementEnd('li'); - $this->elementEnd('ul'); - // TRANS: Button label for adding an IM address in IM settings form. - $this->submit('add', _m('BUTTON','Add')); + $confirm = $this->getConfirmation($transport); + if ($confirm) { + $this->element('p', 'form_unconfirmed', $confirm->address); + // TRANS: Form note in IM settings form. + $this->element('p', 'form_note', + // TRANS: Form note in IM settings form. + // TRANS: %s is the IM address set for the site. + sprintf(_('Awaiting confirmation on this address. '. + 'Check your %s account for a '. + 'message with further instructions. '. + '(Did you add %s to your buddy list?)'), + $transport_info['display'], + $transport_info['daemon_screenname'])); + $this->hidden('screenname', $confirm->address); + // TRANS: Button label to cancel an IM address confirmation procedure. + $this->submit('cancel', _m('BUTTON','Cancel')); + } else { + $this->elementStart('ul', 'form_data'); + $this->elementStart('li'); + $this->input('screenname', _('IM address'), + ($this->arg('screenname')) ? $this->arg('screenname') : null, + sprintf(_('%s screenname.'), + $transport_info['display'])); + $this->elementEnd('li'); + $this->elementEnd('ul'); + // TRANS: Button label for adding an IM address in IM settings form. + $this->submit('add', _m('BUTTON','Add')); + } } + $this->elementEnd('fieldset'); + $this->elementEnd('form'); + } + + if($user_im_prefs_by_transport) + { + $this->elementStart('form', array('method' => 'post', + 'id' => 'form_settings_im', + 'class' => 'form_settings', + 'action' => + common_local_url('imsettings'))); + $this->elementStart('fieldset', array('id' => 'settings_im_preferences')); + // TRANS: Header for IM preferences form. + $this->element('legend', null, _('IM Preferences')); + $this->hidden('token', common_session_token()); + $this->elementStart('table'); + $this->elementStart('tr'); + foreach($user_im_prefs_by_transport as $transport=>$user_im_prefs) + { + $this->element('th', null, $transports[$transport]['display']); + } + $this->elementEnd('tr'); + $preferences = array( + // TRANS: Checkbox label in IM preferences form. + array('name'=>'notify', 'description'=>_('Send me notices')), + // TRANS: Checkbox label in IM preferences form. + array('name'=>'updatefrompresence', 'description'=>_('Post a notice when my status changes.')), + // TRANS: Checkbox label in IM preferences form. + array('name'=>'replies', 'description'=>_('Send me replies '. + 'from people I\'m not subscribed to.')), + // TRANS: Checkbox label in IM preferences form. + array('name'=>'microid', 'description'=>_('Publish a MicroID')) + ); + foreach($preferences as $preference) + { + $this->elementStart('tr'); + foreach($user_im_prefs_by_transport as $transport=>$user_im_prefs) + { + $preference_name = $preference['name']; + $this->elementStart('td'); + $this->checkbox($transport . '_' . $preference['name'], + $preference['description'], + $user_im_prefs->$preference_name); + $this->elementEnd('td'); + } + $this->elementEnd('tr'); + } + $this->elementEnd('table'); + // TRANS: Button label to save IM preferences. + $this->submit('save', _m('BUTTON','Save')); + $this->elementEnd('fieldset'); + $this->elementEnd('form'); } - $this->elementEnd('fieldset'); - - $this->elementStart('fieldset', array('id' => 'settings_im_preferences')); - // TRANS: Form legend for IM preferences form. - $this->element('legend', null, _('IM preferences')); - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - $this->checkbox('jabbernotify', - // TRANS: Checkbox label in IM preferences form. - _('Send me notices through Jabber/GTalk.'), - $user->jabbernotify); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('updatefrompresence', - // TRANS: Checkbox label in IM preferences form. - _('Post a notice when my Jabber/GTalk status changes.'), - $user->updatefrompresence); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('jabberreplies', - // TRANS: Checkbox label in IM preferences form. - _('Send me replies through Jabber/GTalk '. - 'from people I\'m not subscribed to.'), - $user->jabberreplies); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('jabbermicroid', - // TRANS: Checkbox label in IM preferences form. - _('Publish a MicroID for my Jabber/GTalk address.'), - $user->jabbermicroid); - $this->elementEnd('li'); - $this->elementEnd('ul'); - // TRANS: Button label to save IM preferences. - $this->submit('save', _m('BUTTON','Save')); - $this->elementEnd('fieldset'); - $this->elementEnd('form'); } /** @@ -192,14 +211,14 @@ class ImsettingsAction extends ConnectSettingsAction * @return Confirm_address address object for this user */ - function getConfirmation() + function getConfirmation($transport) { $user = common_current_user(); $confirm = new Confirm_address(); $confirm->user_id = $user->id; - $confirm->address_type = 'jabber'; + $confirm->address_type = $transport; if ($confirm->find(true)) { return $confirm; @@ -254,35 +273,33 @@ class ImsettingsAction extends ConnectSettingsAction function savePreferences() { - $jabbernotify = $this->boolean('jabbernotify'); - $updatefrompresence = $this->boolean('updatefrompresence'); - $jabberreplies = $this->boolean('jabberreplies'); - $jabbermicroid = $this->boolean('jabbermicroid'); - $user = common_current_user(); - assert(!is_null($user)); // should already be checked - - $user->query('BEGIN'); - - $original = clone($user); - - $user->jabbernotify = $jabbernotify; - $user->updatefrompresence = $updatefrompresence; - $user->jabberreplies = $jabberreplies; - $user->jabbermicroid = $jabbermicroid; - - $result = $user->update($original); - - if ($result === false) { - common_log_db_error($user, 'UPDATE', __FILE__); - // TRANS: Server error thrown on database error updating IM preferences. - $this->serverError(_('Couldn\'t update user.')); - return; + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->query('BEGIN'); + $user_im_prefs->user_id = $user->id; + if($user_im_prefs->find() && $user_im_prefs->fetch()) + { + $preferences = array('notify', 'updatefrompresence', 'replies', 'microid'); + do + { + $original = clone($user_im_prefs); + $new = clone($user_im_prefs); + foreach($preferences as $preference) + { + $new->$preference = $this->boolean($new->transport . '_' . $preference); + } + $result = $new->update($original); + + if ($result === false) { + common_log_db_error($user, 'UPDATE', __FILE__); + // TRANS: Server error thrown on database error updating IM preferences. + $this->serverError(_('Couldn\'t update IM preferences.')); + return; + } + }while($user_im_prefs->fetch()); } - - $user->query('COMMIT'); - + $user_im_prefs->query('COMMIT'); // TRANS: Confirmation message for successful IM preferences save. $this->showForm(_('Preferences saved.'), true); } @@ -291,7 +308,7 @@ class ImsettingsAction extends ConnectSettingsAction * Sends a confirmation to the address given * * Stores a confirmation record and sends out a - * Jabber message with the confirmation info. + * message with the confirmation info. * * @return void */ @@ -300,41 +317,45 @@ class ImsettingsAction extends ConnectSettingsAction { $user = common_current_user(); - $jabber = $this->trimmed('jabber'); + $screenname = $this->trimmed('screenname'); + $transport = $this->trimmed('transport'); // Some validation - if (!$jabber) { + if (!$screenname) { // TRANS: Message given saving IM address without having provided one. - $this->showForm(_('No Jabber ID.')); + $this->showForm(_('No screenname.')); return; } - $jabber = jabber_normalize_jid($jabber); + if (!$transport) { + $this->showForm(_('No transport.')); + return; + } - if (!$jabber) { + Event::handle('NormalizeImScreenname', array($transport, &$screenname)); + + if (!$screenname) { // TRANS: Message given saving IM address that cannot be normalised. - $this->showForm(_('Cannot normalize that Jabber ID')); + $this->showForm(_('Cannot normalize that screenname')); return; } - if (!jabber_valid_base_jid($jabber, common_config('email', 'domain_check'))) { + $valid = false; + Event::handle('ValidateImScreenname', array($transport, $screenname, &$valid)); + if (!$valid) { // TRANS: Message given saving IM address that not valid. - $this->showForm(_('Not a valid Jabber ID')); - return; - } else if ($user->jabber == $jabber) { - // TRANS: Message given saving IM address that is already set. - $this->showForm(_('That is already your Jabber ID.')); + $this->showForm(_('Not a valid screenname')); return; - } else if ($this->jabberExists($jabber)) { + } else if ($this->screennameExists($transport, $screenname)) { // TRANS: Message given saving IM address that is already set for another user. - $this->showForm(_('Jabber ID already belongs to another user.')); + $this->showForm(_('Screenname already belongs to another user.')); return; } $confirm = new Confirm_address(); - $confirm->address = $jabber; - $confirm->address_type = 'jabber'; + $confirm->address = $screenname; + $confirm->address_type = $transport; $confirm->user_id = $user->id; $confirm->code = common_confirmation_code(64); $confirm->sent = common_sql_now(); @@ -349,17 +370,11 @@ class ImsettingsAction extends ConnectSettingsAction return; } - jabber_confirm_address($confirm->code, - $user->nickname, - $jabber); + Event::handle('SendImConfirmationCode', array($transport, $screenname, $confirm->code, $user)); // TRANS: Message given saving valid IM address that is to be confirmed. - // TRANS: %s is the IM address set for the site. - $msg = sprintf(_('A confirmation code was sent '. - 'to the IM address you added. '. - 'You must approve %s for '. - 'sending messages to you.'), - jabber_daemon_address()); + $msg = _('A confirmation code was sent '. + 'to the IM address you added.'); $this->showForm($msg, true); } @@ -374,16 +389,17 @@ class ImsettingsAction extends ConnectSettingsAction function cancelConfirmation() { - $jabber = $this->arg('jabber'); + $screenname = $this->trimmed('screenname'); + $transport = $this->trimmed('transport'); - $confirm = $this->getConfirmation(); + $confirm = $this->getConfirmation($transport); if (!$confirm) { // TRANS: Message given canceling IM address confirmation that is not pending. $this->showForm(_('No pending confirmation to cancel.')); return; } - if ($confirm->address != $jabber) { + if ($confirm->address != $screenname) { // TRANS: Message given canceling IM address confirmation for the wrong IM address. $this->showForm(_('That is the wrong IM address.')); return; @@ -394,7 +410,7 @@ class ImsettingsAction extends ConnectSettingsAction if (!$result) { common_log_db_error($confirm, 'DELETE', __FILE__); // TRANS: Server error thrown on database error canceling IM address confirmation. - $this->serverError(_('Couldn\'t delete IM confirmation.')); + $this->serverError(_('Couldn\'t delete confirmation.')); return; } @@ -414,32 +430,29 @@ class ImsettingsAction extends ConnectSettingsAction { $user = common_current_user(); - $jabber = $this->arg('jabber'); + $screenname = $this->trimmed('screenname'); + $transport = $this->trimmed('transport'); // Maybe an old tab open...? - if ($user->jabber != $jabber) { + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->user_id = $user->id; + if(! ($user_im_prefs->find() && $user_im_prefs->fetch())) { // TRANS: Message given trying to remove an IM address that is not // TRANS: registered for the active user. - $this->showForm(_('That is not your Jabber ID.')); + $this->showForm(_('That is not your screenname.')); return; } - $user->query('BEGIN'); - - $original = clone($user); - - $user->jabber = null; - - $result = $user->updateKeys($original); + $result = $user_im_prefs->delete(); if (!$result) { common_log_db_error($user, 'UPDATE', __FILE__); // TRANS: Server error thrown on database error removing a registered IM address. + $this->serverError(_('Couldn\'t update user im prefs.')); $this->serverError(_('Couldn\'t update user.')); return; } - $user->query('COMMIT'); // XXX: unsubscribe to the old address @@ -448,25 +461,27 @@ class ImsettingsAction extends ConnectSettingsAction } /** - * Does this Jabber ID exist? + * Does this screenname exist? * * Checks if we already have another user with this address. * - * @param string $jabber Address to check + * @param string $transport Transport to check + * @param string $screenname Screenname to check * - * @return boolean whether the Jabber ID exists + * @return boolean whether the screenname exists */ - function jabberExists($jabber) + function screennameExists($transport, $screenname) { $user = common_current_user(); - $other = User::staticGet('jabber', $jabber); - - if (!$other) { + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->transport = $transport; + $user_im_prefs->screenname = $screenname; + if($user_im_prefs->find() && $user_im_prefs->fetch()){ + return true; + }else{ return false; - } else { - return $other->id != $user->id; } } } diff --git a/actions/othersettings.php b/actions/othersettings.php index 10e9873b3..8d6e00404 100644 --- a/actions/othersettings.php +++ b/actions/othersettings.php @@ -98,8 +98,10 @@ class OthersettingsAction extends AccountSettingsAction $this->hidden('token', common_session_token()); $this->elementStart('ul', 'form_data'); - $shorteners = array(); + $shorteners = array(_('[none]') => array('freeService' => false)); + Event::handle('GetUrlShorteners', array(&$shorteners)); + $services = array(); foreach($shorteners as $name=>$value) { @@ -119,8 +121,22 @@ class OthersettingsAction extends AccountSettingsAction $this->elementEnd('li'); } $this->elementStart('li'); + $this->input('maxurllength', + _('URL longer than'), + (!is_null($this->arg('maxurllength'))) ? + $this->arg('maxurllength') : User_urlshortener_prefs::maxUrlLength($user), + _('URLs longer than this will be shortened.')); + $this->elementEnd('li'); + $this->elementStart('li'); + $this->input('maxnoticelength', + _('Text longer than'), + (!is_null($this->arg('maxnoticelength'))) ? + $this->arg('maxnoticelength') : User_urlshortener_prefs::maxNoticeLength($user), + _('URLs in notices longer than this will be shortened.')); + $this->elementEnd('li'); + $this->elementStart('li'); $this->checkbox('viewdesigns', _('View profile designs'), - $user->viewdesigns, _('Show or hide profile designs.')); + - $user->viewdesigns, _('Show or hide profile designs.')); $this->elementEnd('li'); $this->elementEnd('ul'); $this->submit('save', _('Save')); @@ -156,6 +172,18 @@ class OthersettingsAction extends AccountSettingsAction $viewdesigns = $this->boolean('viewdesigns'); + $maxurllength = $this->trimmed('maxurllength'); + + if (!Validate::number($maxurllength, array('min' => 0))) { + throw new ClientException(_('Invalid number for max url length.')); + } + + $maxnoticelength = $this->trimmed('maxnoticelength'); + + if (!Validate::number($maxnoticelength, array('min' => 0))) { + throw new ClientException(_('Invalid number for max notice length.')); + } + $user = common_current_user(); assert(!is_null($user)); // should already be checked @@ -175,6 +203,32 @@ class OthersettingsAction extends AccountSettingsAction return; } + $prefs = User_urlshortener_prefs::getPrefs($user); + $orig = null; + + if (empty($prefs)) { + $prefs = new User_urlshortener_prefs(); + + $prefs->user_id = $user->id; + $prefs->created = common_sql_now(); + } else { + $orig = clone($prefs); + } + + $prefs->urlshorteningservice = $urlshorteningservice; + $prefs->maxurllength = $maxurllength; + $prefs->maxnoticelength = $maxnoticelength; + + if (!empty($orig)) { + $result = $prefs->update($orig); + } else { + $result = $prefs->insert(); + } + + if (!$result) { + throw new ServerException(_('Error saving user URL shortening preferences.')); + } + $user->query('COMMIT'); $this->showForm(_('Preferences saved.'), true); diff --git a/actions/plugindisable.php b/actions/plugindisable.php new file mode 100644 index 000000000..7f107b333 --- /dev/null +++ b/actions/plugindisable.php @@ -0,0 +1,78 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * Plugin enable action. + * + * 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/>. + * + * PHP version 5 + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Plugin enable action. + * + * (Re)-enables a plugin from the default plugins list. + * + * Takes parameters: + * + * - plugin: plugin name + * - token: session token to prevent CSRF attacks + * - ajax: boolean; whether to return Ajax or full-browser results + * + * Only works if the current user is logged in. + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +class PluginDisableAction extends PluginEnableAction +{ + /** + * Value to save into $config['plugins']['disable-<name>'] + */ + protected function overrideValue() + { + return 1; + } + + protected function successShortTitle() + { + // TRANS: Page title for AJAX form return when a disabling a plugin. + return _m('plugin', 'Disabled'); + } + + protected function successNextForm() + { + return new EnablePluginForm($this, $this->plugin); + } +} + + diff --git a/actions/pluginenable.php b/actions/pluginenable.php new file mode 100644 index 000000000..2dbb3e395 --- /dev/null +++ b/actions/pluginenable.php @@ -0,0 +1,166 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * Plugin enable action. + * + * 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/>. + * + * PHP version 5 + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Plugin enable action. + * + * (Re)-enables a plugin from the default plugins list. + * + * Takes parameters: + * + * - plugin: plugin name + * - token: session token to prevent CSRF attacks + * - ajax: boolean; whether to return Ajax or full-browser results + * + * Only works if the current user is logged in. + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +class PluginEnableAction extends Action +{ + var $user; + var $plugin; + + /** + * Check pre-requisites and instantiate attributes + * + * @param Array $args array of arguments (URL, GET, POST) + * + * @return boolean success flag + */ + + function prepare($args) + { + parent::prepare($args); + + // @fixme these are pretty common, should a parent class factor these out? + + // Only allow POST requests + + if ($_SERVER['REQUEST_METHOD'] != 'POST') { + $this->clientError(_('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.'. + ' Try again, please.')); + return false; + } + + // Only for logged-in users + + $this->user = common_current_user(); + + if (empty($this->user)) { + $this->clientError(_('Not logged in.')); + return false; + } + + if (!AdminPanelAction::canAdmin('plugins')) { + $this->clientError(_('You cannot administer plugins.')); + return false; + } + + $this->plugin = $this->arg('plugin'); + $defaultPlugins = common_config('plugins', 'default'); + if (!array_key_exists($this->plugin, $defaultPlugins)) { + $this->clientError(_('No such plugin.')); + return false; + } + + return true; + } + + /** + * Handle request + * + * Does the subscription and returns results. + * + * @param Array $args unused. + * + * @return void + */ + + function handle($args) + { + $key = 'disable-' . $this->plugin; + Config::save('plugins', $key, $this->overrideValue()); + + // @fixme this is a pretty common pattern and should be refactored down + if ($this->boolean('ajax')) { + $this->startHTML('text/xml;charset=utf-8'); + $this->elementStart('head'); + $this->element('title', null, $this->successShortTitle()); + $this->elementEnd('head'); + $this->elementStart('body'); + $form = $this->successNextForm(); + $form->show(); + $this->elementEnd('body'); + $this->elementEnd('html'); + } else { + $url = common_local_url('pluginsadminpanel'); + common_redirect($url, 303); + } + } + + /** + * Value to save into $config['plugins']['disable-<name>'] + */ + protected function overrideValue() + { + return 0; + } + + protected function successShortTitle() + { + // TRANS: Page title for AJAX form return when enabling a plugin. + return _m('plugin', 'Enabled'); + } + + protected function successNextForm() + { + return new DisablePluginForm($this, $this->plugin); + } +} diff --git a/actions/pluginsadminpanel.php b/actions/pluginsadminpanel.php new file mode 100644 index 000000000..bc400bd51 --- /dev/null +++ b/actions/pluginsadminpanel.php @@ -0,0 +1,110 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugins 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 Brion Vibber <brion@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); +} + +/** + * Plugins settings + * + * @category Admin + * @package StatusNet + * @author Brion Vibber <brion@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 PluginsadminpanelAction extends AdminPanelAction +{ + + /** + * Returns the page title + * + * @return string page title + */ + + function title() + { + // TRANS: Tab and title for plugins admin panel. + return _('Plugins'); + } + + /** + * Instructions for using this form. + * + * @return string instructions + */ + + function getInstructions() + { + // TRANS: Instructions at top of plugin admin page. + return _('Additional plugins can be enabled and configured manually. ' . + 'See the <a href="http://status.net/wiki/Plugins">online plugin ' . + 'documentation</a> for more details.'); + } + + /** + * Show the plugins admin panel form + * + * @return void + */ + + function showForm() + { + $this->elementStart('fieldset', array('id' => 'settings_plugins_default')); + + // TRANS: Admin form section header + $this->element('legend', null, _('Default plugins'), 'default'); + + $this->showDefaultPlugins(); + + $this->elementEnd('fieldset'); + } + + /** + * Until we have a general plugin metadata infrastructure, for now + * we'll just list up the ones we know from the global default + * plugins list. + */ + protected function showDefaultPlugins() + { + $plugins = array_keys(common_config('plugins', 'default')); + natsort($plugins); + + if ($plugins) { + $list = new PluginList($plugins, $this); + $list->show(); + } else { + $this->element('p', null, + _('All default plugins have been disabled from the ' . + 'site\'s configuration file.')); + } + } +} diff --git a/actions/replies.php b/actions/replies.php index 0474a6de0..8f2fc6c7f 100644 --- a/actions/replies.php +++ b/actions/replies.php @@ -196,18 +196,18 @@ class RepliesAction extends OwnerDesignAction function showEmptyListMessage() { - $message = sprintf(_('This is the timeline showing replies to %1$s but %2$s hasn\'t received a notice to their attention yet.'), $this->user->nickname, $this->user->nickname) . ' '; + $message = sprintf(_('This is the timeline showing replies to %1$s but %2$s hasn\'t received a notice to them yet.'), $this->user->nickname, $this->user->nickname) . ' '; if (common_logged_in()) { $current_user = common_current_user(); if ($this->user->id === $current_user->id) { $message .= _('You can engage other users in a conversation, subscribe to more people or [join groups](%%action.groups%%).'); } else { - $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) or [post something to their attention](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname); + $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname); } } else { - $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to their attention.'), $this->user->nickname); + $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname); } $this->elementStart('div', 'guide'); diff --git a/actions/shownotice.php b/actions/shownotice.php index 9c5d83441..77ba2ce9f 100644 --- a/actions/shownotice.php +++ b/actions/shownotice.php @@ -277,12 +277,6 @@ class ShownoticeAction extends OwnerDesignAction 'content' => $id->toString())); } - if ($user->jabbermicroid && $user->jabber && $this->notice->uri) { - $id = new Microid('xmpp:', $user->jabber, - $this->notice->uri); - $this->element('meta', array('name' => 'microid', - 'content' => $id->toString())); - } $this->element('link',array('rel'=>'alternate', 'type'=>'application/json+oembed', 'href'=>common_local_url( diff --git a/actions/showstream.php b/actions/showstream.php index 956c05741..744b6906e 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -166,12 +166,6 @@ class ShowstreamAction extends ProfileAction $this->element('meta', array('name' => 'microid', 'content' => $id->toString())); } - if ($this->user->jabbermicroid && $this->user->jabber && $this->profile->profileurl) { - $id = new Microid('xmpp:'.$this->user->jabber, - $this->selfUrl()); - $this->element('meta', array('name' => 'microid', - 'content' => $id->toString())); - } // See https://wiki.mozilla.org/Microsummaries @@ -204,11 +198,11 @@ class ShowstreamAction extends ProfileAction if ($this->user->id === $current_user->id) { $message .= _('Seen anything interesting recently? You haven\'t posted any notices yet, now would be a good time to start :)'); } else { - $message .= sprintf(_('You can try to nudge %1$s or [post something to their attention](%%%%action.newnotice%%%%?status_textarea=%2$s).'), $this->user->nickname, '@' . $this->user->nickname); + $message .= sprintf(_('You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%%?status_textarea=%2$s).'), $this->user->nickname, '@' . $this->user->nickname); } } else { - $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to their attention.'), $this->user->nickname); + $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname); } $this->elementStart('div', 'guide'); diff --git a/actions/subscriptions.php b/actions/subscriptions.php index 7b10b3425..da563a218 100644 --- a/actions/subscriptions.php +++ b/actions/subscriptions.php @@ -185,7 +185,9 @@ class SubscriptionsListItem extends SubscriptionListItem return; } - if (!common_config('xmpp', 'enabled') && !common_config('sms', 'enabled')) { + $transports = array(); + Event::handle('GetImTransports', array(&$transports)); + if (!$transports && !common_config('sms', 'enabled')) { return; } @@ -195,7 +197,7 @@ class SubscriptionsListItem extends SubscriptionListItem 'action' => common_local_url('subedit'))); $this->out->hidden('token', common_session_token()); $this->out->hidden('profile', $this->profile->id); - if (common_config('xmpp', 'enabled')) { + if ($transports) { $attrs = array('name' => 'jabber', 'type' => 'checkbox', 'class' => 'checkbox', @@ -205,7 +207,7 @@ class SubscriptionsListItem extends SubscriptionListItem } $this->out->element('input', $attrs); - $this->out->element('label', array('for' => 'jabber-'.$this->profile->id), _('Jabber')); + $this->out->element('label', array('for' => 'jabber-'.$this->profile->id), _('IM')); } else { $this->out->hidden('jabber', $sub->jabber); } diff --git a/classes/File.php b/classes/File.php index 0f230a6ee..407fd3211 100644 --- a/classes/File.php +++ b/classes/File.php @@ -139,7 +139,8 @@ class File extends Memcached_DataObject $redir_url = $redir_data; $redir_data = array(); } else { - throw new ServerException("Can't process url '$given_url'"); + // TRANS: Server exception thrown when a URL cannot be processed. + throw new ServerException(sprintf(_("Cannot process URL '%s'"), $given_url)); } // TODO: max field length if ($redir_url === $given_url || strlen($redir_url) > 255 || !$followRedirects) { @@ -169,7 +170,9 @@ class File extends Memcached_DataObject if (empty($x)) { $x = File::staticGet($file_id); if (empty($x)) { - throw new ServerException("Robin thinks something is impossible."); + // FIXME: This could possibly be a clearer message :) + // TRANS: Server exception thrown when... Robin thinks something is impossible! + throw new ServerException(_("Robin thinks something is impossible.")); } } @@ -182,8 +185,10 @@ class File extends Memcached_DataObject function isRespectsQuota($user,$fileSize) { if ($fileSize > common_config('attachments', 'file_quota')) { - return sprintf(_('No file may be larger than %d bytes ' . - 'and the file you sent was %d bytes. Try to upload a smaller version.'), + // TRANS: Message given if an upload is larger than the configured maximum. + // TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. + return sprintf(_('No file may be larger than %1$d bytes ' . + 'and the file you sent was %2$d bytes. Try to upload a smaller version.'), common_config('attachments', 'file_quota'), $fileSize); } @@ -192,6 +197,8 @@ class File extends Memcached_DataObject $this->fetch(); $total = $this->total + $fileSize; if ($total > common_config('attachments', 'user_quota')) { + // TRANS: Message given if an upload would exceed user quota. + // TRANS: %d (number) is the user quota in bytes. return sprintf(_('A file this large would exceed your user quota of %d bytes.'), common_config('attachments', 'user_quota')); } $query .= ' AND EXTRACT(month FROM file.modified) = EXTRACT(month FROM now()) and EXTRACT(year FROM file.modified) = EXTRACT(year FROM now())'; @@ -199,6 +206,8 @@ class File extends Memcached_DataObject $this->fetch(); $total = $this->total + $fileSize; if ($total > common_config('attachments', 'monthly_quota')) { + // TRANS: Message given id an upload would exceed a user's monthly quota. + // TRANS: $d (number) is the monthly user quota in bytes. return sprintf(_('A file this large would exceed your monthly quota of %d bytes.'), common_config('attachments', 'monthly_quota')); } return true; @@ -235,7 +244,8 @@ class File extends Memcached_DataObject static function path($filename) { if (!self::validFilename($filename)) { - throw new ClientException("Invalid filename"); + // TRANS: Client exception thrown if a file upload does not have a valid name. + throw new ClientException(_("Invalid filename.")); } $dir = common_config('attachments', 'dir'); @@ -249,7 +259,8 @@ class File extends Memcached_DataObject static function url($filename) { if (!self::validFilename($filename)) { - throw new ClientException("Invalid filename"); + // TRANS: Client exception thrown if a file upload does not have a valid name. + throw new ClientException(_("Invalid filename.")); } if(common_config('site','private')) { @@ -342,4 +353,3 @@ class File extends Memcached_DataObject return !empty($enclosure); } } - diff --git a/classes/File_redirection.php b/classes/File_redirection.php index f128b3e07..00ec75309 100644 --- a/classes/File_redirection.php +++ b/classes/File_redirection.php @@ -176,22 +176,52 @@ class File_redirection extends Memcached_DataObject * @param string $long_url * @return string */ - function makeShort($long_url) { + function makeShort($long_url) + { $canon = File_redirection::_canonUrl($long_url); $short_url = File_redirection::_userMakeShort($canon); // Did we get one? Is it shorter? - if (!empty($short_url) && mb_strlen($short_url) < mb_strlen($long_url)) { + + if (!empty($short_url)) { + return $short_url; + } else { + return $long_url; + } + } + + /** + * Shorten a URL with the current user's configured shortening + * options, if applicable. + * + * If it cannot be shortened or the "short" URL is longer than the + * original, the original is returned. + * + * If the referenced item has not been seen before, embedding data + * may be saved. + * + * @param string $long_url + * @return string + */ + + function forceShort($long_url) + { + $canon = File_redirection::_canonUrl($long_url); + + $short_url = File_redirection::_userMakeShort($canon, true); + + // Did we get one? Is it shorter? + if (!empty($short_url)) { return $short_url; } else { return $long_url; } } - function _userMakeShort($long_url) { - $short_url = common_shorten_url($long_url); + function _userMakeShort($long_url, $force = false) { + $short_url = common_shorten_url($long_url, $force); if (!empty($short_url) && $short_url != $long_url) { $short_url = (string)$short_url; // store it diff --git a/classes/Group_member.php b/classes/Group_member.php index 7b1760f76..2239461be 100644 --- a/classes/Group_member.php +++ b/classes/Group_member.php @@ -38,6 +38,7 @@ class Group_member extends Memcached_DataObject if (!$result) { common_log_db_error($member, 'INSERT', __FILE__); + // TRANS: Exception thrown when joining a group fails. throw new Exception(_("Group join failed.")); } @@ -50,6 +51,7 @@ class Group_member extends Memcached_DataObject 'profile_id' => $profile_id)); if (empty($member)) { + // TRANS: Exception thrown when trying to leave a group the user is not a member of. throw new Exception(_("Not part of group.")); } @@ -57,6 +59,7 @@ class Group_member extends Memcached_DataObject if (!$result) { common_log_db_error($member, 'INSERT', __FILE__); + // TRANS: Exception thrown when trying to leave a group fails. throw new Exception(_("Group leave failed.")); } diff --git a/classes/Local_group.php b/classes/Local_group.php index 42312ec63..ccd0125cf 100644 --- a/classes/Local_group.php +++ b/classes/Local_group.php @@ -38,6 +38,7 @@ class Local_group extends Memcached_DataObject $this->encache(); } else { common_log_db_error($local, 'UPDATE', __FILE__); + // TRANS: Server exception thrown when updating a local group fails. throw new ServerException(_('Could not update local group.')); } diff --git a/classes/Login_token.php b/classes/Login_token.php index 51dc61262..20d5d9dbc 100644 --- a/classes/Login_token.php +++ b/classes/Login_token.php @@ -73,6 +73,8 @@ class Login_token extends Memcached_DataObject if (!$result) { common_log_db_error($login_token, 'INSERT', __FILE__); + // TRANS: Exception thrown when trying creating a login token failed. + // TRANS: %s is the user nickname for which token creation failed. throw new Exception(sprintf(_('Could not create login token for %s'), $user->nickname)); } diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php index a7fec365e..0f1ed0489 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -235,6 +235,7 @@ class Memcached_DataObject extends Safe_DataObject $pkey[] = $key; $pval[] = self::valueString($this->$key); } else { + // Low level exception. No need for i18n as discussed with Brion. throw new Exception("Unknown key type $key => $type for " . $this->tableName()); } } @@ -282,6 +283,7 @@ class Memcached_DataObject extends Safe_DataObject } else if ($type == 'fulltext') { $search_engine = new MySQLSearch($this, $table); } else { + // Low level exception. No need for i18n as discussed with Brion. throw new ServerException('Unknown search type: ' . $type); } } else { @@ -527,7 +529,8 @@ class Memcached_DataObject extends Safe_DataObject } if (!$dsn) { - throw new Exception("No database name / dsn found anywhere"); + // TRANS: Exception thrown when database name or Data Source Name could not be found. + throw new Exception(_("No database name or DSN found anywhere.")); } return $dsn; @@ -571,12 +574,13 @@ class Memcached_DataObject extends Safe_DataObject function raiseError($message, $type = null, $behaviour = null) { $id = get_class($this); - if ($this->id) { + if (!empty($this->id)) { $id .= ':' . $this->id; } if ($message instanceof PEAR_Error) { $message = $message->getMessage(); } + // Low level exception. No need for i18n as discussed with Brion. throw new ServerException("[$id] DB_DataObject error [$type]: $message"); } @@ -619,9 +623,11 @@ class Memcached_DataObject extends Safe_DataObject case 'sql': case 'datetime': case 'time': + // Low level exception. No need for i18n as discussed with Brion. throw new ServerException("Unhandled DB_DataObject_Cast type passed as cacheKey value: '$v->type'"); break; default: + // Low level exception. No need for i18n as discussed with Brion. throw new ServerException("Unknown DB_DataObject_Cast type passed as cacheKey value: '$v->type'"); break; } diff --git a/classes/Message.php b/classes/Message.php index 16d0c60b3..fa0c5b318 100644 --- a/classes/Message.php +++ b/classes/Message.php @@ -42,6 +42,7 @@ class Message extends Memcached_DataObject $sender = Profile::staticGet('id', $from); if (!$sender->hasRight(Right::NEWMESSAGE)) { + // TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. throw new ClientException(_('You are banned from sending direct messages.')); } @@ -58,6 +59,7 @@ class Message extends Memcached_DataObject if (!$result) { common_log_db_error($msg, 'INSERT', __FILE__); + // TRANS: Message given when a message could not be stored on the server. return _('Could not insert message.'); } @@ -68,6 +70,7 @@ class Message extends Memcached_DataObject if (!$result) { common_log_db_error($msg, 'UPDATE', __FILE__); + // TRANS: Message given when a message could not be updated on the server. return _('Could not update message with new URI.'); } diff --git a/classes/Notice.php b/classes/Notice.php index 36943be84..4646fc6ab 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -93,7 +93,9 @@ class Notice extends Memcached_DataObject $profile = Profile::staticGet('id', $this->profile_id); if (empty($profile)) { - throw new ServerException(sprintf(_('No such profile (%d) for notice (%d)'), $this->profile_id, $this->id)); + // 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). + throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id)); } return $profile; @@ -254,27 +256,33 @@ class Notice extends Memcached_DataObject $final = common_shorten_links($content); if (Notice::contentTooLong($final)) { + // TRANS: Client exception thrown if a notice contains too many characters. throw new ClientException(_('Problem saving notice. Too long.')); } if (empty($profile)) { + // TRANS: Client exception thrown when trying to save a notice for an unknown user. throw new ClientException(_('Problem saving notice. Unknown user.')); } if (common_config('throttle', 'enabled') && !Notice::checkEditThrottle($profile_id)) { common_log(LOG_WARNING, 'Excessive posting by profile #' . $profile_id . '; throttled.'); + // TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. throw new ClientException(_('Too many notices too fast; take a breather '. 'and post again in a few minutes.')); } if (common_config('site', 'dupelimit') > 0 && !Notice::checkDupes($profile_id, $final)) { common_log(LOG_WARNING, 'Dupe posting by profile #' . $profile_id . '; throttled.'); + // TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. throw new ClientException(_('Too many duplicate messages too quickly;'. ' take a breather and post again in a few minutes.')); } if (!$profile->hasRight(Right::NEWNOTICE)) { common_log(LOG_WARNING, "Attempted post from user disallowed to post: " . $profile->nickname); + + // TRANS: Client exception thrown when a user tries to post while being banned. throw new ClientException(_('You are banned from posting notices on this site.'), 403); } @@ -341,6 +349,7 @@ class Notice extends Memcached_DataObject if (!$id) { common_log_db_error($notice, 'INSERT', __FILE__); + // TRANS: Server exception thrown when a notice cannot be saved. throw new ServerException(_('Problem saving notice.')); } @@ -367,6 +376,7 @@ class Notice extends Memcached_DataObject if ($changed) { if (!$notice->update($orig)) { common_log_db_error($notice, 'UPDATE', __FILE__); + // TRANS: Server exception thrown when a notice cannot be updated. throw new ServerException(_('Problem saving notice.')); } } @@ -878,7 +888,8 @@ class Notice extends Memcached_DataObject function saveKnownGroups($group_ids) { if (!is_array($group_ids)) { - throw new ServerException("Bad type provided to saveKnownGroups"); + // TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). + throw new ServerException(_("Bad type provided to saveKnownGroups")); } $groups = array(); @@ -976,6 +987,7 @@ class Notice extends Memcached_DataObject if (!$result) { common_log_db_error($gi, 'INSERT', __FILE__); + // TRANS: Server exception thrown when an update for a group inbox fails. throw new ServerException(_('Problem saving group inbox.')); } @@ -1081,7 +1093,9 @@ class Notice extends Memcached_DataObject if (!$id) { common_log_db_error($reply, 'INSERT', __FILE__); - throw new ServerException("Couldn't save reply for {$this->id}, {$mentioned->id}"); + // TRANS: Server exception thrown when a reply cannot be saved. + // TRANS: %1$d is a notice ID, %2$d is the ID of the mentioned user. + throw new ServerException(sprintf(_("Could not save reply for %1$d, %2$d."), $this->id, $mentioned->id)); } else { $replied[$mentioned->id] = 1; self::blow('reply:stream:%d', $mentioned->id); @@ -1184,6 +1198,9 @@ class Notice extends Memcached_DataObject return $groups; } + // This has gotten way too long. Needs to be sliced up into functional bits + // or ideally exported to a utility class. + function asAtomEntry($namespace=false, $source=false, $author=true, $cur=null) { $profile = $this->getProfile(); @@ -1203,74 +1220,176 @@ class Notice extends Memcached_DataObject $attrs = array(); } - $xs->elementStart('entry', $attrs); + if (Event::handle('StartActivityStart', array(&$this, &$xs, &$attrs))) { + $xs->elementStart('entry', $attrs); + Event::handle('EndActivityStart', array(&$this, &$xs, &$attrs)); + } - if ($source) { - $xs->elementStart('source'); - $xs->element('id', null, $profile->profileurl); - $xs->element('title', null, $profile->nickname . " - " . common_config('site', 'name')); - $xs->element('link', array('href' => $profile->profileurl)); - $user = User::staticGet('id', $profile->id); - if (!empty($user)) { - $atom_feed = common_local_url('ApiTimelineUser', - array('format' => 'atom', - 'id' => $profile->nickname)); - $xs->element('link', array('rel' => 'self', - 'type' => 'application/atom+xml', - 'href' => $profile->profileurl)); - $xs->element('link', array('rel' => 'license', - 'href' => common_config('license', 'url'))); + if (Event::handle('StartActivitySource', array(&$this, &$xs))) { + + if ($source) { + + $atom_feed = $profile->getAtomFeed(); + + if (!empty($atom_feed)) { + + $xs->elementStart('source'); + + // XXX: we should store the actual feed ID + + $xs->element('id', null, $atom_feed); + + // XXX: we should store the actual feed title + + $xs->element('title', null, $profile->getBestName()); + + $xs->element('link', array('rel' => 'alternate', + 'type' => 'text/html', + 'href' => $profile->profileurl)); + + $xs->element('link', array('rel' => 'self', + 'type' => 'application/atom+xml', + 'href' => $atom_feed)); + + $xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE)); + + $notice = $profile->getCurrentNotice(); + + if (!empty($notice)) { + $xs->element('updated', null, self::utcDate($notice->created)); + } + + $user = User::staticGet('id', $profile->id); + + if (!empty($user)) { + $xs->element('link', array('rel' => 'license', + 'href' => common_config('license', 'url'))); + } + + $xs->elementEnd('source'); + } } + Event::handle('EndActivitySource', array(&$this, &$xs)); + } - $xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE)); - $xs->element('updated', null, common_date_w3dtf($this->created)); + $title = common_xml_safe_str($this->content); + + if (Event::handle('StartActivityTitle', array(&$this, &$xs, &$title))) { + $xs->element('title', null, $title); + Event::handle('EndActivityTitle', array($this, &$xs, $title)); } - if ($source) { - $xs->elementEnd('source'); + $atomAuthor = ''; + + if ($author) { + $atomAuthor = $profile->asAtomAuthor($cur); } - $xs->element('title', null, common_xml_safe_str($this->content)); + if (Event::handle('StartActivityAuthor', array(&$this, &$xs, &$atomAuthor))) { + if (!empty($atomAuthor)) { + $xs->raw($atomAuthor); + Event::handle('EndActivityAuthor', array(&$this, &$xs, &$atomAuthor)); + } + } + + $actor = ''; if ($author) { - $xs->raw($profile->asAtomAuthor($cur)); - $xs->raw($profile->asActivityActor()); + $actor = $profile->asActivityActor(); } - $xs->element('link', array('rel' => 'alternate', - 'type' => 'text/html', - 'href' => $this->bestUrl())); + if (Event::handle('StartActivityActor', array(&$this, &$xs, &$actor))) { + if (!empty($actor)) { + $xs->raw($actor); + Event::handle('EndActivityActor', array(&$this, &$xs, &$actor)); + } + } - $xs->element('id', null, $this->uri); + $url = $this->bestUrl(); - $xs->element('published', null, common_date_w3dtf($this->created)); - $xs->element('updated', null, common_date_w3dtf($this->created)); + if (Event::handle('StartActivityLink', array(&$this, &$xs, &$url))) { + $xs->element('link', array('rel' => 'alternate', + 'type' => 'text/html', + 'href' => $url)); + Event::handle('EndActivityLink', array(&$this, &$xs, $url)); + } - $source = null; + $id = $this->uri; - $ns = $this->getSource(); + if (Event::handle('StartActivityId', array(&$this, &$xs, &$id))) { + $xs->element('id', null, $id); + Event::handle('EndActivityId', array(&$this, &$xs, $id)); + } - if ($ns) { - if (!empty($ns->name) && !empty($ns->url)) { - $source = '<a href="' - . htmlspecialchars($ns->url) - . '" rel="nofollow">' - . htmlspecialchars($ns->name) - . '</a>'; - } else { - $source = $ns->code; + $published = self::utcDate($this->created); + + if (Event::handle('StartActivityPublished', array(&$this, &$xs, &$published))) { + $xs->element('published', null, $published); + Event::handle('EndActivityPublished', array(&$this, &$xs, $published)); + } + + $updated = $published; // XXX: notices are usually immutable + + if (Event::handle('StartActivityUpdated', array(&$this, &$xs, &$updated))) { + $xs->element('updated', null, $updated); + Event::handle('EndActivityUpdated', array(&$this, &$xs, $updated)); + } + + $content = common_xml_safe_str($this->rendered); + + if (Event::handle('StartActivityContent', array(&$this, &$xs, &$content))) { + $xs->element('content', array('type' => 'html'), $content); + Event::handle('EndActivityContent', array(&$this, &$xs, $content)); + } + + // Most of our notices represent POSTing a NOTE. This is the default verb + // for activity streams, so we normally just leave it out. + + $verb = ActivityVerb::POST; + + if (Event::handle('StartActivityVerb', array(&$this, &$xs, &$verb))) { + $xs->element('activity:verb', null, $verb); + Event::handle('EndActivityVerb', array(&$this, &$xs, $verb)); + } + + // We use the default behavior for activity streams: if there's no activity:object, + // then treat the entry itself as the object. Here, you can set the type of that object, + // which is normally a NOTE. + + $type = ActivityObject::NOTE; + + if (Event::handle('StartActivityDefaultObjectType', array(&$this, &$xs, &$type))) { + $xs->element('activity:object-type', null, $type); + Event::handle('EndActivityDefaultObjectType', array(&$this, &$xs, $type)); + } + + // Since we usually use the entry itself as an object, we don't have an explicit + // object. Some extensions may want to add them (for photo, event, music, etc.). + + $objects = array(); + + if (Event::handle('StartActivityObjects', array(&$this, &$xs, &$objects))) { + foreach ($objects as $object) { + $xs->raw($object->asString()); } + Event::handle('EndActivityObjects', array(&$this, &$xs, $objects)); } - $noticeInfoAttr = array( - 'local_id' => $this->id, // local notice ID (useful to clients for ordering) - 'source' => $source, // the client name (source attribution) - ); + $noticeInfoAttr = array('local_id' => $this->id); // local notice ID (useful to clients for ordering) $ns = $this->getSource(); - if ($ns) { + + if (!empty($ns)) { + $noticeInfoAttr['source'] = $ns->code; if (!empty($ns->url)) { $noticeInfoAttr['source_link'] = $ns->url; + if (!empty($ns->name)) { + $noticeInfoAttr['source'] = '<a href="' + . htmlspecialchars($ns->url) + . '" rel="nofollow">' + . htmlspecialchars($ns->name) + . '</a>'; + } } } @@ -1284,103 +1403,143 @@ class Notice extends Memcached_DataObject $noticeInfoAttr['repeat_of'] = $this->repeat_of; } - $xs->element('statusnet:notice_info', $noticeInfoAttr, null); + if (Event::handle('StartActivityNoticeInfo', array(&$this, &$xs, &$noticeInfoAttr))) { + $xs->element('statusnet:notice_info', $noticeInfoAttr, null); + Event::handle('EndActivityNoticeInfo', array(&$this, &$xs, $noticeInfoAttr)); + } + + $replyNotice = null; if ($this->reply_to) { - $reply_notice = Notice::staticGet('id', $this->reply_to); - if (!empty($reply_notice)) { + $replyNotice = Notice::staticGet('id', $this->reply_to); + } + + if (Event::handle('StartActivityInReplyTo', array(&$this, &$xs, &$replyNotice))) { + if (!empty($replyNotice)) { $xs->element('link', array('rel' => 'related', - 'href' => $reply_notice->bestUrl())); + 'href' => $replyNotice->bestUrl())); $xs->element('thr:in-reply-to', - array('ref' => $reply_notice->uri, - 'href' => $reply_notice->bestUrl())); + array('ref' => $replyNotice->uri, + 'href' => $replyNotice->bestUrl())); + Event::handle('EndActivityInReplyTo', array(&$this, &$xs, $replyNotice)); } } - if (!empty($this->conversation)) { + $conv = null; + if (!empty($this->conversation)) { $conv = Conversation::staticGet('id', $this->conversation); + } + if (Event::handle('StartActivityConversation', array(&$this, &$xs, &$conv))) { if (!empty($conv)) { - $xs->element( - 'link', array( - 'rel' => 'ostatus:conversation', - 'href' => $conv->uri - ) - ); + $xs->element('link', array('rel' => 'ostatus:conversation', + 'href' => $conv->uri)); } + Event::handle('EndActivityConversation', array(&$this, &$xs, $conv)); } + $replyProfiles = array(); + $reply_ids = $this->getReplies(); foreach ($reply_ids as $id) { $profile = Profile::staticGet('id', $id); - if (!empty($profile)) { - $xs->element( - 'link', array( - 'rel' => 'ostatus:attention', - 'href' => $profile->getUri() - ) - ); + if (!empty($profile)) { + $replyProfiles[] = $profile; } } + if (Event::handle('StartActivityAttentionProfiles', array(&$this, &$xs, &$replyProfiles))) { + foreach ($replyProfiles as $profile) { + $xs->element('link', array('rel' => 'ostatus:attention', + 'href' => $profile->getUri())); + $xs->element('link', array('rel' => 'mentioned', + 'href' => $profile->getUri())); + } + Event::handle('EndActivityAttentionProfiles', array(&$this, &$xs, $replyProfiles)); + } + $groups = $this->getGroups(); - foreach ($groups as $group) { - $xs->element( - 'link', array( - 'rel' => 'ostatus:attention', - 'href' => $group->permalink() - ) - ); + if (Event::handle('StartActivityAttentionGroups', array(&$this, &$xs, &$groups))) { + foreach ($groups as $group) { + $xs->element('link', array('rel' => 'ostatus:attention', + 'href' => $group->permalink())); + $xs->element('link', array('rel' => 'mentioned', + 'href' => $group->permalink())); + } + Event::handle('EndActivityAttentionGroups', array(&$this, &$xs, $groups)); } + $repeat = null; + if (!empty($this->repeat_of)) { $repeat = Notice::staticGet('id', $this->repeat_of); + } + + if (Event::handle('StartActivityForward', array(&$this, &$xs, &$repeat))) { if (!empty($repeat)) { - $xs->element( - 'ostatus:forward', - array('ref' => $repeat->uri, 'href' => $repeat->bestUrl()) - ); + $xs->element('ostatus:forward', + array('ref' => $repeat->uri, + 'href' => $repeat->bestUrl())); } + + Event::handle('EndActivityForward', array(&$this, &$xs, $repeat)); } - $xs->element( - 'content', - array('type' => 'html'), - common_xml_safe_str($this->rendered) - ); + $tags = $this->getTags(); - $tag = new Notice_tag(); - $tag->notice_id = $this->id; - if ($tag->find()) { - while ($tag->fetch()) { - $xs->element('category', array('term' => $tag->tag)); + if (Event::handle('StartActivityCategories', array(&$this, &$xs, &$tags))) { + foreach ($tags as $tag) { + $xs->element('category', array('term' => $tag)); } + Event::handle('EndActivityCategories', array(&$this, &$xs, $tags)); } - $tag->free(); - # Enclosures + // Enclosures + + $enclosures = array(); + $attachments = $this->attachments(); - if($attachments){ - foreach($attachments as $attachment){ - $enclosure=$attachment->getEnclosure(); - if ($enclosure) { - $attributes = array('rel'=>'enclosure','href'=>$enclosure->url,'type'=>$enclosure->mimetype,'length'=>$enclosure->size); - if($enclosure->title){ - $attributes['title']=$enclosure->title; - } - $xs->element('link', $attributes, null); + + foreach ($attachments as $attachment) { + $enclosure = $attachment->getEnclosure(); + if ($enclosure) { + $enclosures[] = $enclosure; + } + } + + if (Event::handle('StartActivityEnclosures', array(&$this, &$xs, &$enclosures))) { + foreach ($enclosures as $enclosure) { + $attributes = array('rel' => 'enclosure', + 'href' => $enclosure->url, + 'type' => $enclosure->mimetype, + 'length' => $enclosure->size); + + if ($enclosure->title) { + $attributes['title'] = $enclosure->title; } + + $xs->element('link', $attributes, null); } + Event::handle('EndActivityEnclosures', array(&$this, &$xs, $enclosures)); } - if (!empty($this->lat) && !empty($this->lon)) { - $xs->element('georss:point', null, $this->lat . ' ' . $this->lon); + $lat = $this->lat; + $lon = $this->lon; + + if (Event::handle('StartActivityGeo', array(&$this, &$xs, &$lat, &$lon))) { + if (!empty($lat) && !empty($lon)) { + $xs->element('georss:point', null, $lat . ' ' . $lon); + } + Event::handle('EndActivityGeo', array(&$this, &$xs, $lat, $lon)); } - $xs->elementEnd('entry'); + if (Event::handle('StartActivityEnd', array(&$this, &$xs))) { + $xs->elementEnd('entry'); + Event::handle('EndActivityEnd', array(&$this, &$xs)); + } return $xs->getString(); } @@ -1901,4 +2060,24 @@ class Notice extends Memcached_DataObject $this->is_local == Notice::LOCAL_NONPUBLIC); } + public function getTags() + { + $tags = array(); + $tag = new Notice_tag(); + $tag->notice_id = $this->id; + if ($tag->find()) { + while ($tag->fetch()) { + $tags[] = $tag->tag; + } + } + $tag->free(); + return $tags; + } + + static private function utcDate($dt) + { + $dateStr = date('d F Y H:i:s', strtotime($dt)); + $d = new DateTime($dateStr, new DateTimeZone('UTC')); + return $d->format(DATE_W3C); + } } diff --git a/classes/Profile.php b/classes/Profile.php index a303469e9..0d0463b73 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -152,17 +152,16 @@ class Profile extends Memcached_DataObject * * @return mixed Notice or null */ + function getCurrentNotice() { - $notice = new Notice(); - $notice->profile_id = $this->id; - // @fixme change this to sort on notice.id only when indexes are updated - $notice->orderBy('created DESC, notice.id DESC'); - $notice->limit(1); - if ($notice->find(true)) { + $notice = $this->getNotices(0, 1); + + if ($notice->fetch()) { return $notice; + } else { + return null; } - return null; } function getTaggedNotices($tag, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0) @@ -735,14 +734,18 @@ class Profile extends Memcached_DataObject 'role' => $name)); if (empty($role)) { - throw new Exception('Cannot revoke role "'.$name.'" for user #'.$this->id.'; does not exist.'); + // TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. + // TRANS: %1$s is the role name, %2$s is the user ID (number). + throw new Exception(sprintf(_('Cannot revoke role "%1$s" for user #%2$d; does not exist.'),$name, $this->id)); } $result = $role->delete(); if (!$result) { common_log_db_error($role, 'DELETE', __FILE__); - throw new Exception('Cannot revoke role "'.$name.'" for user #'.$this->id.'; database error.'); + // TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. + // TRANS: %1$s is the role name, %2$s is the user ID (number). + throw new Exception(sprintf(_('Cannot revoke role "%1$s" for user #%2$d; database error.'),$name, $this->id)); } return true; @@ -943,4 +946,20 @@ class Profile extends Memcached_DataObject return $result; } + + function getAtomFeed() + { + $feed = null; + + if (Event::handle('StartProfileGetAtomFeed', array($this, &$feed))) { + $user = User::staticGet('id', $this->id); + if (!empty($user)) { + $feed = common_local_url('ApiTimelineUser', array('id' => $user->id, + 'format' => 'atom')); + } + Event::handle('EndProfileGetAtomFeed', array($this, $feed)); + } + + return $feed; + } } diff --git a/classes/Remote_profile.php b/classes/Remote_profile.php index 0a1676a6a..77bfbcd99 100644 --- a/classes/Remote_profile.php +++ b/classes/Remote_profile.php @@ -50,7 +50,8 @@ class Remote_profile extends Memcached_DataObject if ($profile) { return $profile->hasright($right); } else { - throw new Exception("Missing profile"); + // TRANS: Exception thrown when a right for a non-existing user profile is checked. + throw new Exception(_("Missing profile.")); } } } diff --git a/classes/Safe_DataObject.php b/classes/Safe_DataObject.php index e926cb0d5..f0ea6b136 100644 --- a/classes/Safe_DataObject.php +++ b/classes/Safe_DataObject.php @@ -116,6 +116,7 @@ class Safe_DataObject extends DB_DataObject if ($this->_call($method, $params, $return)) { return $return; } else { + // Low level exception. No need for i18n as discussed with Brion. throw new Exception('Call to undefined method ' . get_class($this) . '::' . $method); } @@ -125,7 +126,7 @@ class Safe_DataObject extends DB_DataObject * Work around memory-leak bugs... * Had to copy-paste the whole function in order to patch a couple lines of it. * Would be nice if this code was better factored. - * + * * @param optional string name of database to assign / read * @param optional array structure of database, and keys * @param optional array table links @@ -136,108 +137,103 @@ class Safe_DataObject extends DB_DataObject */ function databaseStructure() { - global $_DB_DATAOBJECT; - - // Assignment code - + + // Assignment code + if ($args = func_get_args()) { - + if (count($args) == 1) { - + // this returns all the tables and their structure.. if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loading Generator as databaseStructure called with args",1); } - + $x = new DB_DataObject; $x->_database = $args[0]; $this->_connect(); $DB = &$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]; - + $tables = $DB->getListOf('tables'); - class_exists('DB_DataObject_Generator') ? '' : + class_exists('DB_DataObject_Generator') ? '' : require_once 'DB/DataObject/Generator.php'; - + foreach($tables as $table) { $y = new DB_DataObject_Generator; $y->fillTableSchema($x->_database,$table); } - return $_DB_DATAOBJECT['INI'][$x->_database]; + return $_DB_DATAOBJECT['INI'][$x->_database]; } else { - + $_DB_DATAOBJECT['INI'][$args[0]] = isset($_DB_DATAOBJECT['INI'][$args[0]]) ? $_DB_DATAOBJECT['INI'][$args[0]] + $args[1] : $args[1]; - + if (isset($args[1])) { $_DB_DATAOBJECT['LINKS'][$args[0]] = isset($_DB_DATAOBJECT['LINKS'][$args[0]]) ? $_DB_DATAOBJECT['LINKS'][$args[0]] + $args[2] : $args[2]; } return true; } - + } - - - + if (!$this->_database) { $this->_connect(); } - + // loaded already? if (!empty($_DB_DATAOBJECT['INI'][$this->_database])) { - + // database loaded - but this is table is not available.. if ( - empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table]) + empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table]) && !empty($_DB_DATAOBJECT['CONFIG']['proxy']) ) { if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loading Generator to fetch Schema",1); } - class_exists('DB_DataObject_Generator') ? '' : + class_exists('DB_DataObject_Generator') ? '' : require_once 'DB/DataObject/Generator.php'; - - + + $x = new DB_DataObject_Generator; $x->fillTableSchema($this->_database,$this->__table); } return true; } - - + if (empty($_DB_DATAOBJECT['CONFIG'])) { DB_DataObject::_loadConfig(); } - + // if you supply this with arguments, then it will take those // as the database and links array... - + $schemas = isset($_DB_DATAOBJECT['CONFIG']['schema_location']) ? array("{$_DB_DATAOBJECT['CONFIG']['schema_location']}/{$this->_database}.ini") : array() ; - + if (isset($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"])) { $schemas = is_array($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]) ? $_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"] : explode(PATH_SEPARATOR,$_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]); } - - + /* BEGIN CHANGED FROM UPSTREAM */ $_DB_DATAOBJECT['INI'][$this->_database] = $this->parseIniFiles($schemas); /* END CHANGED FROM UPSTREAM */ - // now have we loaded the structure.. - + // now have we loaded the structure.. + if (!empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])) { return true; } // - if not try building it.. if (!empty($_DB_DATAOBJECT['CONFIG']['proxy'])) { - class_exists('DB_DataObject_Generator') ? '' : + class_exists('DB_DataObject_Generator') ? '' : require_once 'DB/DataObject/Generator.php'; - + $x = new DB_DataObject_Generator; $x->fillTableSchema($this->_database,$this->__table); // should this fail!!!??? @@ -245,7 +241,8 @@ class Safe_DataObject extends DB_DataObject } $this->debug("Cant find database schema: {$this->_database}/{$this->__table} \n". "in links file data: " . print_r($_DB_DATAOBJECT['INI'],true),"databaseStructure",5); - // we have to die here!! - it causes chaos if we dont (including looping forever!) + // we have to die here!! - it causes chaos if we don't (including looping forever!) + // Low level exception. No need for i18n as discussed with Brion. $this->raiseError( "Unable to load schema for database and table (turn debugging up to 5 for full error message)", DB_DATAOBJECT_ERROR_INVALIDARGS, PEAR_ERROR_DIE); return false; } @@ -271,7 +268,7 @@ class Safe_DataObject extends DB_DataObject if (file_exists($ini) && is_file($ini)) { $data = array_merge($data, parse_ini_file($ini, true)); - if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { + if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { if (!is_readable ($ini)) { $this->debug("ini file is not readable: $ini","databaseStructure",1); } else { diff --git a/classes/Status_network.php b/classes/Status_network.php index 64016dd79..5680c1458 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -27,7 +27,8 @@ class Status_network extends Safe_DataObject /* the code below is auto generated do not remove the above tag */ public $__table = 'status_network'; // table name - public $nickname; // varchar(64) primary_key not_null + public $site_id; // int(4) primary_key not_null + public $nickname; // varchar(64) unique_key not_null public $hostname; // varchar(255) unique_key public $pathname; // varchar(255) unique_key public $dbhost; // varchar(255) @@ -39,7 +40,6 @@ class Status_network extends Safe_DataObject public $logo; // varchar(255) public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - public $tags; // text /* Static get */ function staticGet($k,$v=NULL) { @@ -308,10 +308,64 @@ class Status_network extends Safe_DataObject */ function getTags() { - return array_filter(explode("|", strval($this->tags))); + $result = array(); + + $tags = new Status_network_tag(); + $tags->site_id = $this->site_id; + if ($tags->find()) { + while ($tags->fetch()) { + $result[] = $tags->tag; + } + } + + // XXX : for backwards compatibility + if (empty($result)) { + return explode('|', $this->tags); + } + + return $result; } /** + * Save a given set of tags + * @param array tags + */ + function setTags($tags) + { + $this->clearTags(); + foreach ($tags as $tag) { + if (!empty($tag)) { + $snt = new Status_network_tag(); + $snt->site_id = $this->site_id; + $snt->tag = $tag; + $snt->created = common_sql_now(); + + $id = $snt->insert(); + if (!$id) { + // TRANS: Exception thrown when a tag cannot be saved. + throw new Exception(_("Unable to save tag.")); + } + } + } + + return true; + } + + function clearTags() + { + $tag = new Status_network_tag(); + $tag->site_id = $this->site_id; + + if ($tag->find()) { + while($tag->fetch()) { + $tag->delete(); + } + } + + $tag->free(); + } + + /** * Check if this site record has a particular meta-info tag attached. * @param string $tag * @return bool diff --git a/classes/Status_network_tag.php b/classes/Status_network_tag.php new file mode 100644 index 000000000..18c508bc8 --- /dev/null +++ b/classes/Status_network_tag.php @@ -0,0 +1,69 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, 2010 StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET')) { exit(1); } + +class Status_network_tag extends Safe_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'status_network_tag'; // table name + public $site_id; // int(4) primary_key not_null + public $tag; // varchar(64) primary_key not_null + public $created; // datetime() not_null + + + function __construct() + { + global $config; + global $_DB_DATAOBJECT; + + $sn = new Status_network(); + $sn->_connect(); + + $config['db']['table_'. $this->__table] = $sn->_database; + + $this->_connect(); + } + + + /* Static get */ + function staticGet($k,$v=null) + { + $i = DB_DataObject::staticGet('Status_network_tag',$k,$v); + + // Don't use local process cache; if we're fetching multiple + // times it's because we're reloading it in a long-running + // process; we need a fresh copy! + global $_DB_DATAOBJECT; + unset($_DB_DATAOBJECT['CACHE']['status_network_tag']); + return $i; + } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE + + + + function pkeyGet($kv) + { + return Memcached_DataObject::pkeyGet('Status_network_tag', $kv); + } +} diff --git a/classes/Subscription.php b/classes/Subscription.php index 0679c0925..0225ed4df 100644 --- a/classes/Subscription.php +++ b/classes/Subscription.php @@ -71,14 +71,17 @@ class Subscription extends Memcached_DataObject } if (!$subscriber->hasRight(Right::SUBSCRIBE)) { + // TRANS: Exception thrown when trying to subscribe while being banned from subscribing. throw new Exception(_('You have been banned from subscribing.')); } if (self::exists($subscriber, $other)) { + // TRANS: Exception thrown when trying to subscribe while already subscribed. throw new Exception(_('Already subscribed!')); } if ($other->hasBlocked($subscriber)) { + // TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. throw new Exception(_('User has blocked you.')); } @@ -129,6 +132,7 @@ class Subscription extends Memcached_DataObject if (!$result) { common_log_db_error($sub, 'INSERT', __FILE__); + // TRANS: Exception thrown when a subscription could not be stored on the server. throw new Exception(_('Could not save subscription.')); } @@ -160,17 +164,18 @@ class Subscription extends Memcached_DataObject * Cancel a subscription * */ - function cancel($subscriber, $other) { if (!self::exists($subscriber, $other)) { + // TRANS: Exception thrown when trying to unsibscribe without a subscription. throw new Exception(_('Not subscribed!')); } // Don't allow deleting self subs if ($subscriber->id == $other->id) { - throw new Exception(_('Couldn\'t delete self-subscription.')); + // TRANS: Exception thrown when trying to unsubscribe a user from themselves. + throw new Exception(_('Could not delete self-subscription.')); } if (Event::handle('StartUnsubscribe', array($subscriber, $other))) { @@ -197,7 +202,8 @@ class Subscription extends Memcached_DataObject if (!$result) { common_log_db_error($token, 'DELETE', __FILE__); - throw new Exception(_('Couldn\'t delete subscription OMB token.')); + // TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. + throw new Exception(_('Could not delete subscription OMB token.')); } } else { common_log(LOG_ERR, "Couldn't find credentials with token {$token->tok}"); @@ -208,7 +214,8 @@ class Subscription extends Memcached_DataObject if (!$result) { common_log_db_error($sub, 'DELETE', __FILE__); - throw new Exception(_('Couldn\'t delete subscription.')); + // TRANS: Exception thrown when a subscription could not be deleted on the server. + throw new Exception(_('Could not delete subscription.')); } self::blow('user:notices_with_friends:%d', $subscriber->id); diff --git a/classes/User.php b/classes/User.php index cf8d4527b..70e09c1dc 100644 --- a/classes/User.php +++ b/classes/User.php @@ -48,11 +48,6 @@ class User extends Memcached_DataObject public $language; // varchar(50) public $timezone; // varchar(50) public $emailpost; // tinyint(1) default_1 - public $jabber; // varchar(255) unique_key - public $jabbernotify; // tinyint(1) - public $jabberreplies; // tinyint(1) - public $jabbermicroid; // tinyint(1) default_1 - public $updatefrompresence; // tinyint(1) public $sms; // varchar(64) unique_key public $carrier; // int(4) public $smsnotify; // tinyint(1) @@ -93,7 +88,7 @@ class User extends Memcached_DataObject { $this->_connect(); $parts = array(); - foreach (array('nickname', 'email', 'jabber', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) { + foreach (array('nickname', 'email', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) { if (strcmp($this->$k, $orig->$k) != 0) { $parts[] = $k . ' = ' . $this->_quote($this->$k); } @@ -360,11 +355,12 @@ class User extends Memcached_DataObject __FILE__); } else { $notice = Notice::saveNew($welcomeuser->id, + // TRANS: Notice given on user registration. + // TRANS: %1$s is the sitename, $2$s is the registering user's nickname. sprintf(_('Welcome to %1$s, @%2$s!'), common_config('site', 'name'), $user->nickname), 'system'); - } } @@ -375,7 +371,6 @@ class User extends Memcached_DataObject } // Things we do when the email changes - function emailChanged() { diff --git a/classes/User_group.php b/classes/User_group.php index e04c46626..0b83cfd47 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -492,6 +492,7 @@ class User_group extends Memcached_DataObject if (!$result) { common_log_db_error($group, 'INSERT', __FILE__); + // TRANS: Server exception thrown when creating a group failed. throw new ServerException(_('Could not create group.')); } @@ -501,6 +502,7 @@ class User_group extends Memcached_DataObject $result = $group->update($orig); if (!$result) { common_log_db_error($group, 'UPDATE', __FILE__); + // TRANS: Server exception thrown when updating a group URI failed. throw new ServerException(_('Could not set group URI.')); } } @@ -508,6 +510,7 @@ class User_group extends Memcached_DataObject $result = $group->setAliases($aliases); if (!$result) { + // TRANS: Server exception thrown when creating group aliases failed. throw new ServerException(_('Could not create aliases.')); } @@ -522,6 +525,7 @@ class User_group extends Memcached_DataObject if (!$result) { common_log_db_error($member, 'INSERT', __FILE__); + // TRANS: Server exception thrown when setting group membership failed. throw new ServerException(_('Could not set group membership.')); } @@ -536,6 +540,7 @@ class User_group extends Memcached_DataObject if (!$result) { common_log_db_error($local_group, 'INSERT', __FILE__); + // TRANS: Server exception thrown when saving local group information failed. throw new ServerException(_('Could not save local group info.')); } } diff --git a/classes/User_im_prefs.php b/classes/User_im_prefs.php new file mode 100644 index 000000000..75be8969e --- /dev/null +++ b/classes/User_im_prefs.php @@ -0,0 +1,94 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Data class for user IM preferences + * + * 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 Data + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @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/ + */ + +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class User_im_prefs extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'user_im_prefs'; // table name + public $user_id; // int(4) primary_key not_null + public $screenname; // varchar(255) not_null + public $transport; // varchar(255) not_null + public $notify; // tinyint(1) + public $replies; // tinyint(1) + public $microid; // tinyint(1) + public $updatefrompresence; // tinyint(1) + public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00 + public $modified; // timestamp not_null default_CURRENT_TIMESTAMP + + /* Static get */ + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_im_prefs',$k,$v); } + + function pkeyGet($kv) + { + return Memcached_DataObject::pkeyGet('User_im_prefs', $kv); + } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE + + /* + DB_DataObject calculates the sequence key(s) by taking the first key returned by the keys() function. + In this case, the keys() function returns user_id as the first key. user_id is not a sequence, but + DB_DataObject's sequenceKey() will incorrectly think it is. Then, since the sequenceKey() is a numeric + type, but is not set to autoincrement in the database, DB_DataObject will create a _seq table and + manage the sequence itself. This is not the correct behavior for the user_id in this class. + So we override that incorrect behavior, and simply say there is no sequence key. + */ + function sequenceKey() + { + return array(false,false); + } + + /** + * We have two compound keys with unique constraints: + * (transport, user_id) which is our primary key, and + * (transport, screenname) which is an additional constraint. + * + * Currently there's not a way to represent that second key + * in the general keys list, so we're adding it here to the + * list of keys to use for caching, ensuring that it gets + * cleared as well when we change. + * + * @return array of cache keys + */ + function _allCacheKeys() + { + $ukeys = 'transport,screenname'; + $uvals = $this->transport . ',' . $this->screenname; + + $ckeys = parent::_allCacheKeys(); + $ckeys[] = $this->cacheKey($this->tableName(), $ukeys, $uvals); + return $ckeys; + } + +} diff --git a/classes/User_urlshortener_prefs.php b/classes/User_urlshortener_prefs.php new file mode 100755 index 000000000..e0f85af01 --- /dev/null +++ b/classes/User_urlshortener_prefs.php @@ -0,0 +1,105 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +class User_urlshortener_prefs extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'user_urlshortener_prefs'; // table name + public $user_id; // int(4) primary_key not_null + public $urlshorteningservice; // varchar(50) default_ur1.ca + public $maxurllength; // int(4) not_null + public $maxnoticelength; // int(4) not_null + public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00 + public $modified; // timestamp not_null default_CURRENT_TIMESTAMP + + /* Static get */ + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_urlshortener_prefs',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE + + function sequenceKey() + { + return array(false, false, false); + } + + static function maxUrlLength($user) + { + $def = common_config('url', 'maxlength'); + + $prefs = self::getPrefs($user); + + if (empty($prefs)) { + return $def; + } else { + return $prefs->maxurllength; + } + } + + static function maxNoticeLength($user) + { + $def = common_config('url', 'maxnoticelength'); + + if ($def == -1) { + $def = Notice::maxContent(); + } + + $prefs = self::getPrefs($user); + + if (empty($prefs)) { + return $def; + } else { + return $prefs->maxnoticelength; + } + } + + static function urlShorteningService($user) + { + $def = common_config('url', 'shortener'); + + $prefs = self::getPrefs($user); + + if (empty($prefs)) { + if (!empty($user)) { + return $user->urlshorteningservice; + } else { + return $def; + } + } else { + return $prefs->urlshorteningservice; + } + } + + static function getPrefs($user) + { + if (empty($user)) { + return null; + } + + $prefs = User_urlshortener_prefs::staticGet('user_id', $user->id); + + return $prefs; + } +} diff --git a/classes/status_network.ini b/classes/status_network.ini index adb71cba7..b298daae4 100644 --- a/classes/status_network.ini +++ b/classes/status_network.ini @@ -1,4 +1,5 @@ [status_network] +site_id = 129 nickname = 130 hostname = 2 pathname = 2 @@ -11,9 +12,19 @@ theme = 2 logo = 2 created = 142 modified = 384 -tags = 34 [status_network__keys] -nickname = K +site_id = K +nickname = U hostname = U pathname = U + +[status_network_tag] +site_id = 129 +tag = 130 +created = 142 + +[status_network_tag__keys] +site_id = K +tag = K + diff --git a/classes/statusnet.ini b/classes/statusnet.ini index 3fb8ee208..b57d86226 100644 --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -561,11 +561,6 @@ emailmicroid = 17 language = 2 timezone = 2 emailpost = 17 -jabber = 2 -jabbernotify = 17 -jabberreplies = 17 -jabbermicroid = 17 -updatefrompresence = 17 sms = 2 carrier = 1 smsnotify = 17 @@ -585,7 +580,6 @@ id = K nickname = U email = U incomingemail = U -jabber = U sms = U uri = U @@ -638,3 +632,33 @@ modified = 384 [user_location_prefs__keys] user_id = K + +[user_im_prefs] +user_id = 129 +screenname = 130 +transport = 130 +notify = 17 +replies = 17 +microid = 17 +updatefrompresence = 17 +created = 142 +modified = 384 + +[user_im_prefs__keys] +user_id = K +transport = K +; There's another unique index on (transport, screenname) +; but we have no way to represent a compound index other than +; the primary key in here. To ensure proper cache purging, +; we need to tweak the class. + +[user_urlshortener_prefs] +user_id = 129 +urlshorteningservice = 2 +maxurllength = 129 +maxnoticelength = 129 +created = 142 +modified = 384 + +[user_urlshortener_prefs__keys] +user_id = K diff --git a/db/site.sql b/db/site.sql index 791303bd5..f87995b94 100644 --- a/db/site.sql +++ b/db/site.sql @@ -1,8 +1,9 @@ /* For managing multiple sites */ create table status_network ( - - nickname varchar(64) primary key comment 'nickname', + + site_id integer auto_increment primary key comment 'unique id', + nickname varchar(64) unique key comment 'nickname', hostname varchar(255) unique key comment 'alternate hostname if any', pathname varchar(255) unique key comment 'alternate pathname if any', @@ -21,3 +22,12 @@ create table status_network ( modified timestamp comment 'date this record was modified' ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci; + +create table status_network_tag ( + site_id integer comment 'unique id', + tag varchar(64) comment 'tag name', + created datetime not null comment 'date the record was created', + + constraint primary key (site_id, tag) +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci; + diff --git a/db/site_093to094.sql b/db/site_093to094.sql new file mode 100644 index 000000000..30cea31df --- /dev/null +++ b/db/site_093to094.sql @@ -0,0 +1,13 @@ +alter table status_network + drop primary key, + add column site_id integer auto_increment primary key first, + add unique key (nickname); + +create table status_network_tag ( + site_id integer comment 'unique id', + tag varchar(64) comment 'tag name', + created datetime not null comment 'date the record was created', + + constraint primary key (site_id, tag) +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci; + diff --git a/db/statusnet.sql b/db/statusnet.sql index 3f95948e1..a0c497fff 100644 --- a/db/statusnet.sql +++ b/db/statusnet.sql @@ -62,11 +62,6 @@ create table user ( language varchar(50) comment 'preferred language', timezone varchar(50) comment 'timezone', emailpost tinyint default 1 comment 'Post by email', - jabber varchar(255) unique key comment 'jabber ID for notices', - jabbernotify tinyint default 0 comment 'whether to send notices to jabber', - jabberreplies tinyint default 0 comment 'whether to send notices to jabber on replies', - jabbermicroid tinyint default 1 comment 'whether to publish xmpp microid', - updatefrompresence tinyint default 0 comment 'whether to record updates from Jabber presence notices', sms varchar(64) unique key comment 'sms phone number', carrier integer comment 'foreign key to sms_carrier' references sms_carrier (id), smsnotify tinyint default 0 comment 'whether to send notices to SMS', @@ -259,9 +254,9 @@ create table oid_nonces ( create table confirm_address ( code varchar(32) not null primary key comment 'good random code', user_id integer not null comment 'user who requested confirmation' references user (id), - address varchar(255) not null comment 'address (email, Jabber, SMS, etc.)', + address varchar(255) not null comment 'address (email, xmpp, SMS, etc.)', address_extra varchar(255) not null comment 'carrier ID, for SMS', - address_type varchar(8) not null comment 'address type ("email", "jabber", "sms")', + address_type varchar(8) not null comment 'address type ("email", "xmpp", "sms")', claimed datetime comment 'date this was claimed for queueing', sent datetime comment 'date this was sent for queueing', modified timestamp comment 'date this record was modified' @@ -276,7 +271,7 @@ create table remember_me ( create table queue_item ( id integer auto_increment primary key comment 'unique identifier', frame blob not null comment 'data: object reference or opaque string', - transport varchar(8) not null comment 'queue for what? "email", "jabber", "sms", "irc", ...', + transport varchar(8) not null comment 'queue for what? "email", "xmpp", "sms", "irc", ...', created datetime not null comment 'date this record was created', claimed datetime comment 'date this item was claimed', @@ -348,7 +343,7 @@ create table invitation ( code varchar(32) not null primary key comment 'random code for an invitation', user_id int not null comment 'who sent the invitation' references user (id), address varchar(255) not null comment 'invitation sent to', - address_type varchar(8) not null comment 'address type ("email", "jabber", "sms")', + address_type varchar(8) not null comment 'address type ("email", "xmpp", "sms")', created datetime not null comment 'date this record was created', index invitation_address_idx (address, address_type), @@ -639,6 +634,21 @@ create table inbox ( ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; +create table user_im_prefs ( + user_id integer not null comment 'user' references user (id), + screenname varchar(255) not null comment 'screenname on this service', + transport varchar(255) not null comment 'transport (ex xmpp, aim)', + notify tinyint(1) not null default 0 comment 'Notify when a new notice is sent', + replies tinyint(1) not null default 0 comment 'Send replies from people not subscribed to', + microid tinyint(1) not null default 1 comment 'Publish a MicroID', + updatefrompresence tinyint(1) not null default 0 comment 'Send replies from people not subscribed to.', + created timestamp not null DEFAULT CURRENT_TIMESTAMP comment 'date this record was created', + modified timestamp comment 'date this record was modified', + + constraint primary key (user_id, transport), + constraint unique key `transport_screenname_key` ( `transport` , `screenname` ) +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + create table conversation ( id integer auto_increment primary key comment 'unique identifier', uri varchar(225) unique comment 'URI of the conversation', @@ -656,3 +666,15 @@ create table local_group ( ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; +create table user_urlshortener_prefs ( + + user_id integer not null comment 'user' references user (id), + urlshorteningservice varchar(50) default 'ur1.ca' comment 'service to use for auto-shortening URLs', + maxurllength integer not null comment 'urls greater than this length will be shortened, 0 = always, null = never', + maxnoticelength integer not null comment 'notices with content greater than this value will have all urls shortened, 0 = always, null = never', + + created datetime not null comment 'date this record was created', + modified timestamp comment 'date this record was modified', + + constraint primary key (user_id) +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; diff --git a/extlib/Mail.php b/extlib/Mail.php index 3a0c1a9cb..75132ac2a 100644..100755 --- a/extlib/Mail.php +++ b/extlib/Mail.php @@ -1,22 +1,47 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: Mail.php,v 1.17 2006/09/15 03:41:18 jon Exp $ +/** + * PEAR's Mail:: interface. + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2002-2007, Richard Heyes + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category Mail + * @package Mail + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 1997-2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: Mail.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ require_once 'PEAR.php'; @@ -26,7 +51,7 @@ require_once 'PEAR.php'; * useful in multiple mailer backends. * * @access public - * @version $Revision: 1.17 $ + * @version $Revision: 294747 $ * @package Mail */ class Mail @@ -82,12 +107,20 @@ class Mail * @return mixed Returns true on success, or a PEAR_Error * containing a descriptive error message on * failure. + * * @access public * @deprecated use Mail_mail::send instead */ function send($recipients, $headers, $body) { - $this->_sanitizeHeaders($headers); + if (!is_array($headers)) { + return PEAR::raiseError('$headers must be an array'); + } + + $result = $this->_sanitizeHeaders($headers); + if (is_a($result, 'PEAR_Error')) { + return $result; + } // if we're passed an array of recipients, implode it. if (is_array($recipients)) { @@ -103,10 +136,9 @@ class Mail } // flatten the headers out. - list(,$text_headers) = Mail::prepareHeaders($headers); + list(, $text_headers) = Mail::prepareHeaders($headers); return mail($recipients, $subject, $body, $text_headers); - } /** @@ -151,9 +183,9 @@ class Mail foreach ($headers as $key => $value) { if (strcasecmp($key, 'From') === 0) { include_once 'Mail/RFC822.php'; - $parser = &new Mail_RFC822(); + $parser = new Mail_RFC822(); $addresses = $parser->parseAddressList($value, 'localhost', false); - if (PEAR::isError($addresses)) { + if (is_a($addresses, 'PEAR_Error')) { return $addresses; } @@ -221,7 +253,7 @@ class Mail $addresses = Mail_RFC822::parseAddressList($recipients, 'localhost', false); // If parseAddressList() returned a PEAR_Error object, just return it. - if (PEAR::isError($addresses)) { + if (is_a($addresses, 'PEAR_Error')) { return $addresses; } diff --git a/extlib/Mail/RFC822.php b/extlib/Mail/RFC822.php index 8714df2e2..58d36465c 100644..100755 --- a/extlib/Mail/RFC822.php +++ b/extlib/Mail/RFC822.php @@ -1,37 +1,48 @@ <?php -// +-----------------------------------------------------------------------+ -// | Copyright (c) 2001-2002, Richard Heyes | -// | All rights reserved. | -// | | -// | Redistribution and use in source and binary forms, with or without | -// | modification, are permitted provided that the following conditions | -// | are met: | -// | | -// | o Redistributions of source code must retain the above copyright | -// | notice, this list of conditions and the following disclaimer. | -// | o Redistributions in binary form must reproduce the above copyright | -// | notice, this list of conditions and the following disclaimer in the | -// | documentation and/or other materials provided with the distribution.| -// | o The names of the authors may not be used to endorse or promote | -// | products derived from this software without specific prior written | -// | permission. | -// | | -// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | -// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | -// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | -// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | -// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | -// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | -// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | -// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | -// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | -// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | -// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | -// | | -// +-----------------------------------------------------------------------+ -// | Authors: Richard Heyes <richard@phpguru.org> | -// | Chuck Hagenbuch <chuck@horde.org> | -// +-----------------------------------------------------------------------+ +/** + * RFC 822 Email address list validation Utility + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2001-2010, Richard Heyes + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category Mail + * @package Mail + * @author Richard Heyes <richard@phpguru.org> + * @author Chuck Hagenbuch <chuck@horde.org + * @copyright 2001-2010 Richard Heyes + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: RFC822.php 294749 2010-02-08 08:22:25Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * RFC 822 Email address list validation Utility @@ -52,7 +63,7 @@ * * @author Richard Heyes <richard@phpguru.org> * @author Chuck Hagenbuch <chuck@horde.org> - * @version $Revision: 1.24 $ + * @version $Revision: 294749 $ * @license BSD * @package Mail */ @@ -635,8 +646,8 @@ class Mail_RFC822 { $comment = $this->_splitCheck($parts, ')'); $comments[] = $comment; - // +1 is for the trailing ) - $_mailbox = substr($_mailbox, strpos($_mailbox, $comment)+strlen($comment)+1); + // +2 is for the brackets + $_mailbox = substr($_mailbox, strpos($_mailbox, '('.$comment)+strlen($comment)+2); } else { break; } diff --git a/extlib/Mail/mail.php b/extlib/Mail/mail.php index b13d69565..a8b4b5dbe 100644..100755 --- a/extlib/Mail/mail.php +++ b/extlib/Mail/mail.php @@ -1,27 +1,52 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: mail.php,v 1.20 2007/10/06 17:00:00 chagenbu Exp $ +/** + * internal PHP-mail() implementation of the PEAR Mail:: interface. + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010 Chuck Hagenbuch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category Mail + * @package Mail + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: mail.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * internal PHP-mail() implementation of the PEAR Mail:: interface. * @package Mail - * @version $Revision: 1.20 $ + * @version $Revision: 294747 $ */ class Mail_mail extends Mail { diff --git a/extlib/Mail/mock.php b/extlib/Mail/mock.php index 971dae6a0..61570ba40 100644..100755 --- a/extlib/Mail/mock.php +++ b/extlib/Mail/mock.php @@ -1,29 +1,53 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: mock.php,v 1.1 2007/12/08 17:57:54 chagenbu Exp $ -// +/** + * Mock implementation + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010 Chuck Hagenbuch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category Mail + * @package Mail + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: mock.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * Mock implementation of the PEAR Mail:: interface for testing. * @access public * @package Mail - * @version $Revision: 1.1 $ + * @version $Revision: 294747 $ */ class Mail_mock extends Mail { diff --git a/extlib/Mail/null.php b/extlib/Mail/null.php index 982bfa45b..f8d58272e 100644..100755 --- a/extlib/Mail/null.php +++ b/extlib/Mail/null.php @@ -1,29 +1,53 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Phil Kernick <philk@rotfl.com.au> | -// +----------------------------------------------------------------------+ -// -// $Id: null.php,v 1.2 2004/04/06 05:19:03 jon Exp $ -// +/** + * Null implementation of the PEAR Mail interface + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010 Phil Kernick + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category Mail + * @package Mail + * @author Phil Kernick <philk@rotfl.com.au> + * @copyright 2010 Phil Kernick + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: null.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * Null implementation of the PEAR Mail:: interface. * @access public * @package Mail - * @version $Revision: 1.2 $ + * @version $Revision: 294747 $ */ class Mail_null extends Mail { diff --git a/extlib/Mail/sendmail.php b/extlib/Mail/sendmail.php index cd248e61d..b056575e9 100644..100755 --- a/extlib/Mail/sendmail.php +++ b/extlib/Mail/sendmail.php @@ -20,7 +20,7 @@ * Sendmail implementation of the PEAR Mail:: interface. * @access public * @package Mail - * @version $Revision: 1.19 $ + * @version $Revision: 294744 $ */ class Mail_sendmail extends Mail { @@ -117,7 +117,7 @@ class Mail_sendmail extends Mail { if (is_a($recipients, 'PEAR_Error')) { return $recipients; } - $recipients = escapeShellCmd(implode(' ', $recipients)); + $recipients = implode(' ', array_map('escapeshellarg', $recipients)); $headerElements = $this->prepareHeaders($headers); if (is_a($headerElements, 'PEAR_Error')) { @@ -141,7 +141,8 @@ class Mail_sendmail extends Mail { return PEAR::raiseError('From address specified with dangerous characters.'); } - $from = escapeShellCmd($from); + $from = escapeshellarg($from); // Security bug #16200 + $mail = @popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w'); if (!$mail) { return PEAR::raiseError('Failed to open sendmail [' . $this->sendmail_path . '] for execution.'); diff --git a/extlib/Mail/smtp.php b/extlib/Mail/smtp.php index baf3a962b..52ea60208 100644..100755 --- a/extlib/Mail/smtp.php +++ b/extlib/Mail/smtp.php @@ -1,21 +1,48 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Chuck Hagenbuch <chuck@horde.org> | -// | Jon Parise <jon@php.net> | -// +----------------------------------------------------------------------+ +/** + * SMTP implementation of the PEAR Mail interface. Requires the Net_SMTP class. + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010, Chuck Hagenbuch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category HTTP + * @package HTTP_Request + * @author Jon Parise <jon@php.net> + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: smtp.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** Error: Failed to create a Net_SMTP object */ define('PEAR_MAIL_SMTP_ERROR_CREATE', 10000); @@ -42,7 +69,7 @@ define('PEAR_MAIL_SMTP_ERROR_DATA', 10006); * SMTP implementation of the PEAR Mail interface. Requires the Net_SMTP class. * @access public * @package Mail - * @version $Revision: 1.33 $ + * @version $Revision: 294747 $ */ class Mail_smtp extends Mail { @@ -278,6 +305,16 @@ class Mail_smtp extends Mail { /* Send the message's headers and the body as SMTP data. */ $res = $this->_smtp->data($textHeaders . "\r\n\r\n" . $body); + list(,$args) = $this->_smtp->getResponse(); + + if (preg_match("/Ok: queued as (.*)/", $args, $queued)) { + $this->queued_as = $queued[1]; + } + + /* we need the greeting; from it we can extract the authorative name of the mail server we've really connected to. + * ideal if we're connecting to a round-robin of relay servers and need to track which exact one took the email */ + $this->greeting = $this->_smtp->getGreeting(); + if (is_a($res, 'PEAR_Error')) { $error = $this->_error('Failed to send data', $res); $this->_smtp->rset(); diff --git a/extlib/Mail/smtpmx.php b/extlib/Mail/smtpmx.php index 9d2dccfb1..f0b694086 100644..100755 --- a/extlib/Mail/smtpmx.php +++ b/extlib/Mail/smtpmx.php @@ -8,19 +8,43 @@ * * PHP versions 4 and 5 * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. + * LICENSE: + * + * Copyright (c) 2010, gERD Schaufelberger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * o The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @category Mail * @package Mail_smtpmx * @author gERD Schaufelberger <gerd@php-tools.net> - * @copyright 1997-2005 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: smtpmx.php,v 1.2 2007/10/06 17:00:00 chagenbu Exp $ - * @see Mail + * @copyright 2010 gERD Schaufelberger + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: smtpmx.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ */ require_once 'Net/SMTP.php'; @@ -32,7 +56,7 @@ require_once 'Net/SMTP.php'; * @access public * @author gERD Schaufelberger <gerd@php-tools.net> * @package Mail - * @version $Revision: 1.2 $ + * @version $Revision: 294747 $ */ class Mail_smtpmx extends Mail { diff --git a/extlib/Net/SMTP.php b/extlib/Net/SMTP.php index d632258d6..ea4b55e8d 100644 --- a/extlib/Net/SMTP.php +++ b/extlib/Net/SMTP.php @@ -18,7 +18,7 @@ // | Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar> | // +----------------------------------------------------------------------+ // -// $Id: SMTP.php,v 1.63 2008/06/10 05:39:12 jon Exp $ +// $Id: SMTP.php 293948 2010-01-24 21:46:00Z jon $ require_once 'PEAR.php'; require_once 'Net/Socket.php'; @@ -92,6 +92,13 @@ class Net_SMTP var $_debug = false; /** + * Debug output handler. + * @var callback + * @access private + */ + var $_debug_handler = null; + + /** * The socket resource being used to connect to the SMTP server. * @var resource * @access private @@ -113,6 +120,13 @@ class Net_SMTP var $_arguments = array(); /** + * Stores the SMTP server's greeting string. + * @var string + * @access private + */ + var $_greeting = null; + + /** * Stores detected features of the SMTP server. * @var array * @access private @@ -172,9 +186,30 @@ class Net_SMTP * @access public * @since 1.1.0 */ - function setDebug($debug) + function setDebug($debug, $handler = null) { $this->_debug = $debug; + $this->_debug_handler = $handler; + } + + /** + * Write the given debug text to the current debug output handler. + * + * @param string $message Debug mesage text. + * + * @access private + * @since 1.3.3 + */ + function _debug($message) + { + if ($this->_debug) { + if ($this->_debug_handler) { + call_user_func_array($this->_debug_handler, + array(&$this, $message)); + } else { + echo "DEBUG: $message\n"; + } + } } /** @@ -189,13 +224,12 @@ class Net_SMTP */ function _send($data) { - if ($this->_debug) { - echo "DEBUG: Send: $data\n"; - } + $this->_debug("Send: $data"); - if (PEAR::isError($error = $this->_socket->write($data))) { - return PEAR::raiseError('Failed to write to socket: ' . - $error->getMessage()); + $error = $this->_socket->write($data); + if ($error === false || PEAR::isError($error)) { + $msg = ($error) ? $error->getMessage() : "unknown error"; + return PEAR::raiseError("Failed to write to socket: $msg"); } return true; @@ -262,9 +296,7 @@ class Net_SMTP for ($i = 0; $i <= $this->_pipelined_commands; $i++) { while ($line = $this->_socket->readLine()) { - if ($this->_debug) { - echo "DEBUG: Recv: $line\n"; - } + $this->_debug("Recv: $line"); /* If we receive an empty line, the connection has been closed. */ if (empty($line)) { @@ -320,6 +352,20 @@ class Net_SMTP } /** + * Return the SMTP server's greeting string. + * + * @return string A string containing the greeting string, or null if a + * greeting has not been received. + * + * @access public + * @since 1.3.3 + */ + function getGreeting() + { + return $this->_greeting; + } + + /** * Attempt to connect to the SMTP server. * * @param int $timeout The timeout value (in seconds) for the @@ -334,6 +380,7 @@ class Net_SMTP */ function connect($timeout = null, $persistent = false) { + $this->_greeting = null; $result = $this->_socket->connect($this->host, $this->port, $persistent, $timeout); if (PEAR::isError($result)) { @@ -344,6 +391,10 @@ class Net_SMTP if (PEAR::isError($error = $this->_parseResponse(220))) { return $error; } + + /* Extract and store a copy of the server's greeting string. */ + list(, $this->_greeting) = $this->getResponse(); + if (PEAR::isError($error = $this->_negotiate())) { return $error; } @@ -452,40 +503,43 @@ class Net_SMTP * @param string The password to authenticate with. * @param string The requested authentication method. If none is * specified, the best supported method will be used. + * @param bool Flag indicating whether or not TLS should be attempted. * * @return mixed Returns a PEAR_Error with an error message on any * kind of failure, or true on success. * @access public * @since 1.0 */ - function auth($uid, $pwd , $method = '') + function auth($uid, $pwd , $method = '', $tls = true) { - if (empty($this->_esmtp['AUTH'])) { - if (version_compare(PHP_VERSION, '5.1.0', '>=')) { - if (!isset($this->_esmtp['STARTTLS'])) { - return PEAR::raiseError('SMTP server does not support authentication'); - } - if (PEAR::isError($result = $this->_put('STARTTLS'))) { - return $result; - } - if (PEAR::isError($result = $this->_parseResponse(220))) { - return $result; - } - if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) { - return $result; - } elseif ($result !== true) { - return PEAR::raiseError('STARTTLS failed'); - } - - /* Send EHLO again to recieve the AUTH string from the - * SMTP server. */ - $this->_negotiate(); - if (empty($this->_esmtp['AUTH'])) { - return PEAR::raiseError('SMTP server does not support authentication'); - } - } else { - return PEAR::raiseError('SMTP server does not support authentication'); + /* We can only attempt a TLS connection if one has been requested, + * we're running PHP 5.1.0 or later, have access to the OpenSSL + * extension, are connected to an SMTP server which supports the + * STARTTLS extension, and aren't already connected over a secure + * (SSL) socket connection. */ + if ($tls && version_compare(PHP_VERSION, '5.1.0', '>=') && + extension_loaded('openssl') && isset($this->_esmtp['STARTTLS']) && + strncasecmp($this->host, 'ssl://', 6) !== 0) { + /* Start the TLS connection attempt. */ + if (PEAR::isError($result = $this->_put('STARTTLS'))) { + return $result; + } + if (PEAR::isError($result = $this->_parseResponse(220))) { + return $result; + } + if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) { + return $result; + } elseif ($result !== true) { + return PEAR::raiseError('STARTTLS failed'); } + + /* Send EHLO again to recieve the AUTH string from the + * SMTP server. */ + $this->_negotiate(); + } + + if (empty($this->_esmtp['AUTH'])) { + return PEAR::raiseError('SMTP server does not support authentication'); } /* If no method has been specified, get the name of the best @@ -844,30 +898,51 @@ class Net_SMTP /** * Send the DATA command. * - * @param string $data The message body to send. + * @param mixed $data The message data, either as a string or an open + * file resource. + * @param string $headers The message headers. If $headers is provided, + * $data is assumed to contain only body data. * * @return mixed Returns a PEAR_Error with an error message on any * kind of failure, or true on success. * @access public * @since 1.0 */ - function data($data) + function data($data, $headers = null) { + /* Verify that $data is a supported type. */ + if (!is_string($data) && !is_resource($data)) { + return PEAR::raiseError('Expected a string or file resource'); + } + /* RFC 1870, section 3, subsection 3 states "a value of zero * indicates that no fixed maximum message size is in force". * Furthermore, it says that if "the parameter is omitted no * information is conveyed about the server's fixed maximum * message size". */ if (isset($this->_esmtp['SIZE']) && ($this->_esmtp['SIZE'] > 0)) { - if (strlen($data) >= $this->_esmtp['SIZE']) { + /* Start by considering the size of the optional headers string. + * We also account for the addition 4 character "\r\n\r\n" + * separator sequence. */ + $size = (is_null($headers)) ? 0 : strlen($headers) + 4; + + if (is_resource($data)) { + $stat = fstat($data); + if ($stat === false) { + return PEAR::raiseError('Failed to get file size'); + } + $size += $stat['size']; + } else { + $size += strlen($data); + } + + if ($size >= $this->_esmtp['SIZE']) { $this->disconnect(); - return PEAR::raiseError('Message size excedes the server limit'); + return PEAR::raiseError('Message size exceeds server limit'); } } - /* Quote the data based on the SMTP standards. */ - $this->quotedata($data); - + /* Initiate the DATA command. */ if (PEAR::isError($error = $this->_put('DATA'))) { return $error; } @@ -875,9 +950,40 @@ class Net_SMTP return $error; } - if (PEAR::isError($result = $this->_send($data . "\r\n.\r\n"))) { - return $result; + /* If we have a separate headers string, send it first. */ + if (!is_null($headers)) { + $this->quotedata($headers); + if (PEAR::isError($result = $this->_send($headers . "\r\n\r\n"))) { + return $result; + } } + + /* Now we can send the message body data. */ + if (is_resource($data)) { + /* Stream the contents of the file resource out over our socket + * connection, line by line. Each line must be run through the + * quoting routine. */ + while ($line = fgets($data, 1024)) { + $this->quotedata($line); + if (PEAR::isError($result = $this->_send($line))) { + return $result; + } + } + + /* Finally, send the DATA terminator sequence. */ + if (PEAR::isError($result = $this->_send("\r\n.\r\n"))) { + return $result; + } + } else { + /* Just send the entire quoted string followed by the DATA + * terminator. */ + $this->quotedata($data); + if (PEAR::isError($result = $this->_send($data . "\r\n.\r\n"))) { + return $result; + } + } + + /* Verify that the data was successfully received by the server. */ if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { return $error; } @@ -41,8 +41,6 @@ define('INSTALLDIR', dirname(__FILE__)); define('STATUSNET', true); define('LACONICA', true); // compatibility -require_once INSTALLDIR . '/lib/common.php'; - $user = null; $action = null; @@ -72,52 +70,69 @@ function getPath($req) */ function handleError($error) { - if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) { - return; - } + try { - $logmsg = "PEAR error: " . $error->getMessage(); - if (common_config('site', 'logdebug')) { - $logmsg .= " : ". $error->getDebugInfo(); - } - // DB queries often end up with a lot of newlines; merge to a single line - // for easier grepability... - $logmsg = str_replace("\n", " ", $logmsg); - common_log(LOG_ERR, $logmsg); - - // @fixme backtrace output should be consistent with exception handling - if (common_config('site', 'logdebug')) { - $bt = $error->getBacktrace(); - foreach ($bt as $n => $line) { - common_log(LOG_ERR, formatBacktraceLine($n, $line)); + if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) { + return; } - } - if ($error instanceof DB_DataObject_Error - || $error instanceof DB_Error - ) { - $msg = sprintf( - _( - 'The database for %s isn\'t responding correctly, '. - 'so the site won\'t work properly. '. - 'The site admins probably know about the problem, '. - 'but you can contact them at %s to make sure. '. - 'Otherwise, wait a few minutes and try again.' - ), - common_config('site', 'name'), - common_config('site', 'email') - ); - } else { - $msg = _( - 'An important error occured, probably related to email setup. '. - 'Check logfiles for more info..' - ); - } - $dac = new DBErrorAction($msg, 500); - $dac->showPage(); + $logmsg = "PEAR error: " . $error->getMessage(); + if ($error instanceof PEAR_Exception && common_config('site', 'logdebug')) { + $logmsg .= " : ". $error->toText(); + } + // DB queries often end up with a lot of newlines; merge to a single line + // for easier grepability... + $logmsg = str_replace("\n", " ", $logmsg); + common_log(LOG_ERR, $logmsg); + + // @fixme backtrace output should be consistent with exception handling + if (common_config('site', 'logdebug')) { + $bt = $error->getTrace(); + foreach ($bt as $n => $line) { + common_log(LOG_ERR, formatBacktraceLine($n, $line)); + } + } + if ($error instanceof DB_DataObject_Error + || $error instanceof DB_Error + || ($error instanceof PEAR_Exception && $error->getCode() == -24) + ) { + //If we run into a DB error, assume we can't connect to the DB at all + //so set the current user to null, so we don't try to access the DB + //while rendering the error page. + global $_cur; + $_cur = null; + + $msg = sprintf( + _( + 'The database for %s isn\'t responding correctly, '. + 'so the site won\'t work properly. '. + 'The site admins probably know about the problem, '. + 'but you can contact them at %s to make sure. '. + 'Otherwise, wait a few minutes and try again.' + ), + common_config('site', 'name'), + common_config('site', 'email') + ); + } else { + $msg = _( + 'An important error occured, probably related to email setup. '. + 'Check logfiles for more info..' + ); + } + + $dac = new DBErrorAction($msg, 500); + $dac->showPage(); + + } catch (Exception $e) { + echo _('An error occurred.'); + } exit(-1); } +set_exception_handler('handleError'); + +require_once INSTALLDIR . '/lib/common.php'; + /** * Format a backtrace line for debug output roughly like debug_print_backtrace() does. * Exceptions already have this built in, but PEAR error objects just give us the array. @@ -242,10 +257,6 @@ function main() return; } - // For database errors - - PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handleError'); - // Make sure RW database is setup setupRW(); diff --git a/js/util.js b/js/util.js index 29b33097b..6a67da4bc 100644 --- a/js/util.js +++ b/js/util.js @@ -258,9 +258,10 @@ var SN = { // StatusNet form.append('<p class="form_response success">'+result+'</p>'); } else { + // New notice post was successful. If on our timeline, show it! + var notice = document._importNode($('li', data)[0], true); var notices = $('#notices_primary .notices'); - if (notices.length > 0) { - var notice = document._importNode($('li', data)[0], true); + if (notices.length > 0 && SN.U.belongsOnTimeline(notice)) { if ($('#'+notice.id).length === 0) { var notice_irt_value = $('#'+SN.C.S.NoticeInReplyTo).val(); var notice_irt = '#notices_primary #notice-'+notice_irt_value; @@ -281,6 +282,8 @@ var SN = { // StatusNet } } else { + // Not on a timeline that this belongs on? + // Just show a success message. result = document._importNode($('title', data)[0], true); result_title = result.textContent || result.innerHTML; form.append('<p class="form_response success">'+result_title+'</p>'); @@ -707,6 +710,38 @@ var SN = { // StatusNet Delete: function() { $.cookie(SN.C.S.StatusNetInstance, null); } + }, + + /** + * Check if the current page is a timeline where the current user's + * posts should be displayed immediately on success. + * + * @fixme this should be done in a saner way, with machine-readable + * info about what page we're looking at. + */ + belongsOnTimeline: function(notice) { + var action = $("body").attr('id'); + if (action == 'public') { + return true; + } + + var profileLink = $('#nav_profile a').attr('href'); + if (profileLink) { + var authorUrl = $(notice).find('.entry-title .author a.url').attr('href'); + if (authorUrl == profileLink) { + if (action == 'all' || action == 'showstream') { + // Posts always show on your own friends and profile streams. + return true; + } + } + } + + // @fixme tag, group, reply timelines should be feasible as well. + // Mismatch between id-based and name-based user/group links currently complicates + // the lookup, since all our inline mentions contain the absolute links but the + // UI links currently on the page use malleable names. + + return false; } }, diff --git a/lib/activitycontext.php b/lib/activitycontext.php index 2df7613f7..5afbb7fd2 100644 --- a/lib/activitycontext.php +++ b/lib/activitycontext.php @@ -51,6 +51,7 @@ class ActivityContext const POINT = 'point'; const ATTENTION = 'ostatus:attention'; + const MENTIONED = 'mentioned'; const CONVERSATION = 'ostatus:conversation'; function __construct($element) @@ -76,8 +77,12 @@ class ActivityContext $linkRel = $link->getAttribute(ActivityUtils::REL); + // XXX: Deprecate this in favour of "mentioned" from Salmon spec + // http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-salmon-00.html#SALR if ($linkRel == self::ATTENTION) { $this->attention[] = $link->getAttribute(self::HREF); + } elseif ($linkRel == self::MENTIONED) { + $this->attention[] = $link->getAttribute(self::HREF); } } } diff --git a/lib/adminpanelaction.php b/lib/adminpanelaction.php index 41cfe5851..9e0b2d041 100644 --- a/lib/adminpanelaction.php +++ b/lib/adminpanelaction.php @@ -409,6 +409,14 @@ class AdminPanelNav extends Widget $menu_title, $action_name == 'snapshotadminpanel', 'nav_snapshot_admin_panel'); } + if (AdminPanelAction::canAdmin('plugins')) { + // TRANS: Menu item title/tooltip + $menu_title = _('Plugins configuration'); + // TRANS: Menu item for site administration + $this->out->menuItem(common_local_url('pluginsadminpanel'), _('Plugins'), + $menu_title, $action_name == 'pluginsadminpanel', 'nav_design_admin_panel'); + } + Event::handle('EndAdminPanelNav', array($this)); } $this->action->elementEnd('ul'); diff --git a/lib/apiaction.php b/lib/apiaction.php index 479a86ad8..432b32453 100644 --- a/lib/apiaction.php +++ b/lib/apiaction.php @@ -98,6 +98,8 @@ if (!defined('STATUSNET')) { exit(1); } +class ApiValidationException extends Exception { } + /** * Contains most of the Twitter-compatible API output functions. * diff --git a/lib/channel.php b/lib/channel.php index 689bca0be..e83960ac5 100644 --- a/lib/channel.php +++ b/lib/channel.php @@ -66,63 +66,6 @@ class CLIChannel extends Channel } } -class XMPPChannel extends Channel -{ - - var $conn = null; - - function source() - { - return 'xmpp'; - } - - function __construct($conn) - { - $this->conn = $conn; - } - - function on($user) - { - return $this->set_notify($user, 1); - } - - function off($user) - { - return $this->set_notify($user, 0); - } - - function output($user, $text) - { - $text = '['.common_config('site', 'name') . '] ' . $text; - jabber_send_message($user->jabber, $text); - } - - function error($user, $text) - { - $text = '['.common_config('site', 'name') . '] ' . $text; - jabber_send_message($user->jabber, $text); - } - - function set_notify(&$user, $notify) - { - $orig = clone($user); - $user->jabbernotify = $notify; - $result = $user->update($orig); - if (!$result) { - $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); - common_log(LOG_ERR, - 'Could not set notify flag to ' . $notify . - ' for user ' . common_log_objstring($user) . - ': ' . $last_error->message); - return false; - } else { - common_log(LOG_INFO, - 'User ' . $user->nickname . ' set notify flag to ' . $notify); - return true; - } - } -} - class WebChannel extends Channel { var $out = null; diff --git a/lib/command.php b/lib/command.php index a769dc1fc..30db9d069 100644 --- a/lib/command.php +++ b/lib/command.php @@ -678,7 +678,7 @@ class OffCommand extends Command } function handle($channel) { - if ($other) { + if ($this->other) { $channel->error($this->user, _("Command not yet implemented.")); } else { if ($channel->off($this->user)) { @@ -701,7 +701,7 @@ class OnCommand extends Command function handle($channel) { - if ($other) { + if ($this->other) { $channel->error($this->user, _("Command not yet implemented.")); } else { if ($channel->on($this->user)) { diff --git a/lib/common.php b/lib/common.php index 817434b97..f04bd64b7 100644 --- a/lib/common.php +++ b/lib/common.php @@ -71,6 +71,7 @@ if (!function_exists('dl')) { # global configuration object require_once('PEAR.php'); +require_once('PEAR/Exception.php'); require_once('DB/DataObject.php'); require_once('DB/DataObject/Cast.php'); # for dates @@ -127,6 +128,23 @@ require_once INSTALLDIR.'/lib/subs.php'; require_once INSTALLDIR.'/lib/clientexception.php'; require_once INSTALLDIR.'/lib/serverexception.php'; + +//set PEAR error handling to use regular PHP exceptions +function PEAR_ErrorToPEAR_Exception($err) +{ + //DB_DataObject throws error when an empty set would be returned + //That behavior is weird, and not how the rest of StatusNet works. + //So just ignore those errors. + if ($err->getCode() == DB_DATAOBJECT_ERROR_NODATA) { + return; + } + if ($err->getCode()) { + throw new PEAR_Exception($err->getMessage(), $err->getCode()); + } + throw new PEAR_Exception($err->getMessage()); +} +PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'PEAR_ErrorToPEAR_Exception'); + try { StatusNet::init(@$server, @$path, @$conffile); } catch (NoConfigException $e) { diff --git a/lib/connectsettingsaction.php b/lib/connectsettingsaction.php index b9c14799e..5d62fc56b 100644 --- a/lib/connectsettingsaction.php +++ b/lib/connectsettingsaction.php @@ -105,7 +105,9 @@ class ConnectSettingsNav extends Widget # action => array('prompt', 'title') $menu = array(); - if (common_config('xmpp', 'enabled')) { + $transports = array(); + Event::handle('GetImTransports', array(&$transports)); + if ($transports) { $menu['imsettings'] = array(_('IM'), _('Updates by instant messenger (IM)')); diff --git a/lib/default.php b/lib/default.php index dcf225d1f..e0081f316 100644 --- a/lib/default.php +++ b/lib/default.php @@ -297,10 +297,12 @@ $default = 'OStatus' => null, 'WikiHashtags' => null, 'RSSCloud' => null, + 'ClientSideShorten' => null, 'OpenID' => null), ), + 'pluginlist' => array(), 'admin' => - array('panels' => array('design', 'site', 'user', 'paths', 'access', 'sessions', 'sitenotice')), + array('panels' => array('design', 'site', 'user', 'paths', 'access', 'sessions', 'sitenotice', 'plugins')), 'singleuser' => array('enabled' => false, 'nickname' => null), @@ -314,6 +316,10 @@ $default = array('subscribers' => true, 'members' => true, 'peopletag' => true), + 'url' => + array('shortener' => 'ur1.ca', + 'maxlength' => 25, + 'maxnoticelength' => -1), 'http' => // HTTP client settings when contacting other sites array('ssl_cafile' => false // To enable SSL cert validation, point to a CA bundle (eg '/usr/lib/ssl/certs/ca-certificates.crt') ), diff --git a/lib/designform.php b/lib/designform.php new file mode 100644 index 000000000..b22d77f31 --- /dev/null +++ b/lib/designform.php @@ -0,0 +1,293 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Form for choosing a design + * + * 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 Form + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @author Sarven Capadisli <csarven@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') && !defined('LACONICA')) { + exit(1); +} + +/** + * Form for choosing a design + * + * Used for choosing a site design, user design, or group design. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @author Sarven Capadisli <csarven@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 DesignForm extends Form +{ + /** + * Return-to args + */ + + var $design = null; + var $actionurl = null; + + /** + * Constructor + * + * @param HTMLOutputter $out output channel + * @param Design $design initial design + * @param Design $actionurl url of action (for form posting) + */ + + function __construct($out, $design, $actionurl) + { + parent::__construct($out); + + $this->design = $design; + $this->actionurl = $actionurl; + } + + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'design'; + } + + /** + * class of the form + * + * @return string class of the form + */ + + function formClass() + { + return 'form_design'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return $this->actionurl; + } + + /** + * Legend of the Form + * + * @return void + */ + function formLegend() + { + $this->out->element('legend', null, _('Change design')); + } + + /** + * Data elements of the form + * + * @return void + */ + + function formData() + { + $this->out->elementStart('ul', 'form_data'); + $this->out->elementStart('li'); + $this->out->element('label', array('for' => 'design_background-image_file'), + _('Upload file')); + $this->out->element('input', array('name' => 'design_background-image_file', + 'type' => 'file', + 'id' => 'design_background-image_file')); + $this->out->element('p', 'form_guide', _('You can upload your personal ' . + 'background image. The maximum file size is 2Mb.')); + $this->out->element('input', array('name' => 'MAX_FILE_SIZE', + 'type' => 'hidden', + 'id' => 'MAX_FILE_SIZE', + 'value' => ImageFile::maxFileSizeInt())); + $this->out->elementEnd('li'); + + if (!empty($design->backgroundimage)) { + + $this->out->elementStart('li', array('id' => + 'design_background-image_onoff')); + + $this->out->element('img', array('src' => + Design::url($design->backgroundimage))); + + $attrs = array('name' => 'design_background-image_onoff', + 'type' => 'radio', + 'id' => 'design_background-image_on', + 'class' => 'radio', + 'value' => 'on'); + + if ($design->disposition & BACKGROUND_ON) { + $attrs['checked'] = 'checked'; + } + + $this->out->element('input', $attrs); + + $this->out->element('label', array('for' => 'design_background-image_on', + 'class' => 'radio'), + _('On')); + + $attrs = array('name' => 'design_background-image_onoff', + 'type' => 'radio', + 'id' => 'design_background-image_off', + 'class' => 'radio', + 'value' => 'off'); + + if ($design->disposition & BACKGROUND_OFF) { + $attrs['checked'] = 'checked'; + } + + $this->out->element('input', $attrs); + + $this->out->element('label', array('for' => 'design_background-image_off', + 'class' => 'radio'), + _('Off')); + $this->out->element('p', 'form_guide', _('Turn background image on or off.')); + $this->out->elementEnd('li'); + + $this->out->elementStart('li'); + $this->out->checkbox('design_background-image_repeat', + _('Tile background image'), + ($design->disposition & BACKGROUND_TILE) ? true : false); + $this->out->elementEnd('li'); + } + + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset', array('id' => 'settings_design_color')); + $this->out->element('legend', null, _('Change colours')); + $this->out->elementStart('ul', 'form_data'); + + try { + + $bgcolor = new WebColor($design->backgroundcolor); + + $this->out->elementStart('li'); + $this->out->element('label', array('for' => 'swatch-1'), _('Background')); + $this->out->element('input', array('name' => 'design_background', + 'type' => 'text', + 'id' => 'swatch-1', + 'class' => 'swatch', + 'maxlength' => '7', + 'size' => '7', + 'value' => '')); + $this->out->elementEnd('li'); + + $ccolor = new WebColor($design->contentcolor); + + $this->out->elementStart('li'); + $this->out->element('label', array('for' => 'swatch-2'), _('Content')); + $this->out->element('input', array('name' => 'design_content', + 'type' => 'text', + 'id' => 'swatch-2', + 'class' => 'swatch', + 'maxlength' => '7', + 'size' => '7', + 'value' => '')); + $this->out->elementEnd('li'); + + $sbcolor = new WebColor($design->sidebarcolor); + + $this->out->elementStart('li'); + $this->out->element('label', array('for' => 'swatch-3'), _('Sidebar')); + $this->out->element('input', array('name' => 'design_sidebar', + 'type' => 'text', + 'id' => 'swatch-3', + 'class' => 'swatch', + 'maxlength' => '7', + 'size' => '7', + 'value' => '')); + $this->out->elementEnd('li'); + + $tcolor = new WebColor($design->textcolor); + + $this->out->elementStart('li'); + $this->out->element('label', array('for' => 'swatch-4'), _('Text')); + $this->out->element('input', array('name' => 'design_text', + 'type' => 'text', + 'id' => 'swatch-4', + 'class' => 'swatch', + 'maxlength' => '7', + 'size' => '7', + 'value' => '')); + $this->out->elementEnd('li'); + + $lcolor = new WebColor($design->linkcolor); + + $this->out->elementStart('li'); + $this->out->element('label', array('for' => 'swatch-5'), _('Links')); + $this->out->element('input', array('name' => 'design_links', + 'type' => 'text', + 'id' => 'swatch-5', + 'class' => 'swatch', + 'maxlength' => '7', + 'size' => '7', + 'value' => '')); + $this->out->elementEnd('li'); + + } catch (WebColorException $e) { + common_log(LOG_ERR, 'Bad color values in design ID: ' .$design->id); + } + + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart('fieldset'); + + $this->out->submit('defaults', _('Use defaults'), 'submit form_action-default', + 'defaults', _('Restore default designs')); + + $this->out->element('input', array('id' => 'settings_design_reset', + 'type' => 'reset', + 'value' => 'Reset', + 'class' => 'submit form_action-primary', + 'title' => _('Reset back to default'))); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit('save', _('Save'), 'submit form_action-secondary', + 'save', _('Save design')); + } +} diff --git a/lib/designsettings.php b/lib/designsettings.php index 4955e9219..98ef8256c 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -87,177 +87,8 @@ class DesignSettingsAction extends AccountSettingsAction function showDesignForm($design) { - - $this->elementStart('form', array('method' => 'post', - 'enctype' => 'multipart/form-data', - 'id' => 'form_settings_design', - 'class' => 'form_settings', - 'action' => $this->submitaction)); - $this->elementStart('fieldset'); - $this->hidden('token', common_session_token()); - - $this->elementStart('fieldset', array('id' => - 'settings_design_background-image')); - $this->element('legend', null, _('Change background image')); - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - $this->element('label', array('for' => 'design_background-image_file'), - _('Upload file')); - $this->element('input', array('name' => 'design_background-image_file', - 'type' => 'file', - 'id' => 'design_background-image_file')); - $this->element('p', 'form_guide', _('You can upload your personal ' . - 'background image. The maximum file size is 2MB.')); - $this->element('input', array('name' => 'MAX_FILE_SIZE', - 'type' => 'hidden', - 'id' => 'MAX_FILE_SIZE', - 'value' => ImageFile::maxFileSizeInt())); - $this->elementEnd('li'); - - if (!empty($design->backgroundimage)) { - - $this->elementStart('li', array('id' => - 'design_background-image_onoff')); - - $this->element('img', array('src' => - Design::url($design->backgroundimage))); - - $attrs = array('name' => 'design_background-image_onoff', - 'type' => 'radio', - 'id' => 'design_background-image_on', - 'class' => 'radio', - 'value' => 'on'); - - if ($design->disposition & BACKGROUND_ON) { - $attrs['checked'] = 'checked'; - } - - $this->element('input', $attrs); - - $this->element('label', array('for' => 'design_background-image_on', - 'class' => 'radio'), - _('On')); - - $attrs = array('name' => 'design_background-image_onoff', - 'type' => 'radio', - 'id' => 'design_background-image_off', - 'class' => 'radio', - 'value' => 'off'); - - if ($design->disposition & BACKGROUND_OFF) { - $attrs['checked'] = 'checked'; - } - - $this->element('input', $attrs); - - $this->element('label', array('for' => 'design_background-image_off', - 'class' => 'radio'), - _('Off')); - $this->element('p', 'form_guide', _('Turn background image on or off.')); - $this->elementEnd('li'); - - $this->elementStart('li'); - $this->checkbox('design_background-image_repeat', - _('Tile background image'), - ($design->disposition & BACKGROUND_TILE) ? true : false); - $this->elementEnd('li'); - } - - $this->elementEnd('ul'); - $this->elementEnd('fieldset'); - - $this->elementStart('fieldset', array('id' => 'settings_design_color')); - $this->element('legend', null, _('Change colours')); - $this->elementStart('ul', 'form_data'); - - try { - - $bgcolor = new WebColor($design->backgroundcolor); - - $this->elementStart('li'); - $this->element('label', array('for' => 'swatch-1'), _('Background')); - $this->element('input', array('name' => 'design_background', - 'type' => 'text', - 'id' => 'swatch-1', - 'class' => 'swatch', - 'maxlength' => '7', - 'size' => '7', - 'value' => '')); - $this->elementEnd('li'); - - $ccolor = new WebColor($design->contentcolor); - - $this->elementStart('li'); - $this->element('label', array('for' => 'swatch-2'), _('Content')); - $this->element('input', array('name' => 'design_content', - 'type' => 'text', - 'id' => 'swatch-2', - 'class' => 'swatch', - 'maxlength' => '7', - 'size' => '7', - 'value' => '')); - $this->elementEnd('li'); - - $sbcolor = new WebColor($design->sidebarcolor); - - $this->elementStart('li'); - $this->element('label', array('for' => 'swatch-3'), _('Sidebar')); - $this->element('input', array('name' => 'design_sidebar', - 'type' => 'text', - 'id' => 'swatch-3', - 'class' => 'swatch', - 'maxlength' => '7', - 'size' => '7', - 'value' => '')); - $this->elementEnd('li'); - - $tcolor = new WebColor($design->textcolor); - - $this->elementStart('li'); - $this->element('label', array('for' => 'swatch-4'), _('Text')); - $this->element('input', array('name' => 'design_text', - 'type' => 'text', - 'id' => 'swatch-4', - 'class' => 'swatch', - 'maxlength' => '7', - 'size' => '7', - 'value' => '')); - $this->elementEnd('li'); - - $lcolor = new WebColor($design->linkcolor); - - $this->elementStart('li'); - $this->element('label', array('for' => 'swatch-5'), _('Links')); - $this->element('input', array('name' => 'design_links', - 'type' => 'text', - 'id' => 'swatch-5', - 'class' => 'swatch', - 'maxlength' => '7', - 'size' => '7', - 'value' => '')); - $this->elementEnd('li'); - - } catch (WebColorException $e) { - common_log(LOG_ERR, 'Bad color values in design ID: ' .$design->id); - } - - $this->elementEnd('ul'); - $this->elementEnd('fieldset'); - - $this->submit('defaults', _('Use defaults'), 'submit form_action-default', - 'defaults', _('Restore default designs')); - - $this->element('input', array('id' => 'settings_design_reset', - 'type' => 'reset', - 'value' => 'Reset', - 'class' => 'submit form_action-primary', - 'title' => _('Reset back to default'))); - - $this->submit('save', _('Save'), 'submit form_action-secondary', - 'save', _('Save design')); - - $this->elementEnd('fieldset'); - $this->elementEnd('form'); + $form = new DesignForm($this, $design, $this->selfUrl()); + $form->show(); } /** diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index 5dc2b38da..7eccd6cc0 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -177,7 +177,7 @@ class HTMLOutputter extends XMLOutputter $attrs = array('name' => $id, 'type' => 'text', 'id' => $id); - if ($value) { + if (!is_null($value)) { // value can be 0 or '' $attrs['value'] = $value; } $this->element('input', $attrs); diff --git a/lib/imchannel.php b/lib/imchannel.php new file mode 100644 index 000000000..12354ce4b --- /dev/null +++ b/lib/imchannel.php @@ -0,0 +1,104 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +class IMChannel extends Channel +{ + + var $imPlugin; + + function source() + { + return $imPlugin->transport; + } + + function __construct($imPlugin) + { + $this->imPlugin = $imPlugin; + } + + function on($user) + { + return $this->set_notify($user, 1); + } + + function off($user) + { + return $this->set_notify($user, 0); + } + + function output($user, $text) + { + $text = '['.common_config('site', 'name') . '] ' . $text; + $this->imPlugin->send_message($this->imPlugin->get_screenname($user), $text); + } + + function error($user, $text) + { + $text = '['.common_config('site', 'name') . '] ' . $text; + + $screenname = $this->imPlugin->get_screenname($user); + if($screenname){ + $this->imPlugin->send_message($screenname, $text); + return true; + }else{ + common_log(LOG_ERR, + 'Could not send error message to user ' . common_log_objstring($user) . + ' on transport ' . $this->imPlugin->transport .' : user preference does not exist'); + return false; + } + } + + function set_notify($user, $notify) + { + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->transport = $this->imPlugin->transport; + $user_im_prefs->user_id = $user->id; + if($user_im_prefs->find() && $user_im_prefs->fetch()){ + if($user_im_prefs->notify == $notify){ + //notify is already set the way they want + return true; + }else{ + $original = clone($user_im_prefs); + $user_im_prefs->notify = $notify; + $result = $user_im_prefs->update($original); + + if (!$result) { + $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); + common_log(LOG_ERR, + 'Could not set notify flag to ' . $notify . + ' for user ' . common_log_objstring($user) . + ' on transport ' . $this->imPlugin->transport .' : ' . $last_error->message); + return false; + } else { + common_log(LOG_INFO, + 'User ' . $user->nickname . ' set notify flag to ' . $notify); + return true; + } + } + }else{ + common_log(LOG_ERR, + 'Could not set notify flag to ' . $notify . + ' for user ' . common_log_objstring($user) . + ' on transport ' . $this->imPlugin->transport .' : user preference does not exist'); + return false; + } + } +} diff --git a/lib/immanager.php b/lib/immanager.php new file mode 100644 index 000000000..da80b74b7 --- /dev/null +++ b/lib/immanager.php @@ -0,0 +1,56 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * IKM background connection manager for IM-using queue handlers, + * allowing them to send outgoing messages on the right connection. + * + * In a multi-site queuedaemon.php run, one connection will be instantiated + * for each site being handled by the current process that has IM enabled. + * + * Implementations that extend this class will likely want to: + * 1) override start() with their connection process. + * 2) override handleInput() with what to do when data is waiting on + * one of the sockets + * 3) override idle($timeout) to do keepalives (if necessary) + * 4) implement send_raw_message() to send raw data that ImPlugin::enqueue_outgoing_raw + * enqueued + */ + +abstract class ImManager extends IoManager +{ + abstract function send_raw_message($data); + + function __construct($imPlugin) + { + $this->plugin = $imPlugin; + $this->plugin->imManager = $this; + } + + /** + * Fetch the singleton manager for the current site. + * @return mixed ImManager, or false if unneeded + */ + public static function get() + { + throw new Exception('ImManager should be created using it\'s constructor, not the static get method'); + } +} diff --git a/lib/implugin.php b/lib/implugin.php new file mode 100644 index 000000000..dafb8a416 --- /dev/null +++ b/lib/implugin.php @@ -0,0 +1,631 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Superclass for plugins that do instant messaging + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +/** + * Superclass for plugins that do authentication + * + * Implementations will likely want to override onStartIoManagerClasses() so that their + * IO manager is used + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +abstract class ImPlugin extends Plugin +{ + //name of this IM transport + public $transport = null; + //list of screennames that should get all public notices + public $public = array(); + + /** + * normalize a screenname for comparison + * + * @param string $screenname screenname to normalize + * + * @return string an equivalent screenname in normalized form + */ + abstract function normalize($screenname); + + + /** + * validate (ensure the validity of) a screenname + * + * @param string $screenname screenname to validate + * + * @return boolean + */ + abstract function validate($screenname); + + /** + * get the internationalized/translated display name of this IM service + * + * @return string + */ + abstract function getDisplayName(); + + /** + * send a single notice to a given screenname + * The implementation should put raw data, ready to send, into the outgoing + * queue using enqueue_outgoing_raw() + * + * @param string $screenname screenname to send to + * @param Notice $notice notice to send + * + * @return boolean success value + */ + function send_notice($screenname, $notice) + { + return $this->send_message($screenname, $this->format_notice($notice)); + } + + /** + * send a message (text) to a given screenname + * The implementation should put raw data, ready to send, into the outgoing + * queue using enqueue_outgoing_raw() + * + * @param string $screenname screenname to send to + * @param Notice $body text to send + * + * @return boolean success value + */ + abstract function send_message($screenname, $body); + + /** + * receive a raw message + * Raw IM data is taken from the incoming queue, and passed to this function. + * It should parse the raw message and call handle_incoming() + * + * Returning false may CAUSE REPROCESSING OF THE QUEUE ITEM, and should + * be used for temporary failures only. For permanent failures such as + * unrecognized addresses, return true to indicate your processing has + * completed. + * + * @param object $data raw IM data + * + * @return boolean true if processing completed, false for temporary failures + */ + abstract function receive_raw_message($data); + + /** + * get the screenname of the daemon that sends and receives message for this service + * + * @return string screenname of this plugin + */ + abstract function daemon_screenname(); + + /** + * get the microid uri of a given screenname + * + * @param string $screenname screenname + * + * @return string microid uri + */ + function microiduri($screenname) + { + return $this->transport . ':' . $screenname; + } + //========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - MISC ========================\ + + /** + * Put raw message data (ready to send) into the outgoing queue + * + * @param object $data + */ + function enqueue_outgoing_raw($data) + { + $qm = QueueManager::get(); + $qm->enqueue($data, $this->transport . '-out'); + } + + /** + * Put raw message data (received, ready to be processed) into the incoming queue + * + * @param object $data + */ + function enqueue_incoming_raw($data) + { + $qm = QueueManager::get(); + $qm->enqueue($data, $this->transport . '-in'); + } + + /** + * given a screenname, get the corresponding user + * + * @param string $screenname + * + * @return User user + */ + function get_user($screenname) + { + $user_im_prefs = $this->get_user_im_prefs_from_screenname($screenname); + if($user_im_prefs){ + $user = User::staticGet('id', $user_im_prefs->user_id); + $user_im_prefs->free(); + return $user; + }else{ + return false; + } + } + + + /** + * given a screenname, get the User_im_prefs object for this transport + * + * @param string $screenname + * + * @return User_im_prefs user_im_prefs + */ + function get_user_im_prefs_from_screenname($screenname) + { + $user_im_prefs = User_im_prefs::pkeyGet( + array('transport' => $this->transport, + 'screenname' => $this->normalize($screenname))); + if ($user_im_prefs) { + return $user_im_prefs; + } else { + return false; + } + } + + + /** + * given a User, get their screenname + * + * @param User $user + * + * @return string screenname of that user + */ + function get_screenname($user) + { + $user_im_prefs = $this->get_user_im_prefs_from_user($user); + if ($user_im_prefs) { + return $user_im_prefs->screenname; + } else { + return false; + } + } + + + /** + * given a User, get their User_im_prefs + * + * @param User $user + * + * @return User_im_prefs user_im_prefs of that user + */ + function get_user_im_prefs_from_user($user) + { + $user_im_prefs = User_im_prefs::pkeyGet( + array('transport' => $this->transport, + 'user_id' => $user->id)); + if ($user_im_prefs){ + return $user_im_prefs; + } else { + return false; + } + } + //========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - SENDING ========================\ + /** + * Send a message to a given screenname from the site + * + * @param string $screenname screenname to send the message to + * @param string $msg message contents to send + * + * @param boolean success + */ + protected function send_from_site($screenname, $msg) + { + $text = '['.common_config('site', 'name') . '] ' . $msg; + $this->send_message($screenname, $text); + } + + /** + * send a confirmation code to a user + * + * @param string $screenname screenname sending to + * @param string $code the confirmation code + * @param User $user user sending to + * + * @return boolean success value + */ + function send_confirmation_code($screenname, $code, $user) + { + $body = sprintf(_('User "%s" on %s has said that your %s screenname belongs to them. ' . + 'If that\'s true, you can confirm by clicking on this URL: ' . + '%s' . + ' . (If you cannot click it, copy-and-paste it into the ' . + 'address bar of your browser). If that user isn\'t you, ' . + 'or if you didn\'t request this confirmation, just ignore this message.'), + $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', array('code' => $code))); + + return $this->send_message($screenname, $body); + } + + /** + * send a notice to all public listeners + * + * For notices that are generated on the local system (by users), we can optionally + * forward them to remote listeners by XMPP. + * + * @param Notice $notice notice to broadcast + * + * @return boolean success flag + */ + + function public_notice($notice) + { + // Now, users who want everything + + // FIXME PRIV don't send out private messages here + // XXX: should we send out non-local messages if public,localonly + // = false? I think not + + foreach ($this->public as $screenname) { + common_log(LOG_INFO, + 'Sending notice ' . $notice->id . + ' to public listener ' . $screenname, + __FILE__); + $this->send_notice($screenname, $notice); + } + + return true; + } + + /** + * broadcast a notice to all subscribers and reply recipients + * + * This function will send a notice to all subscribers on the local server + * who have IM addresses, and have IM notification enabled, and + * have this subscription enabled for IM. It also sends the notice to + * all recipients of @-replies who have IM addresses and IM notification + * enabled. This is really the heart of IM distribution in StatusNet. + * + * @param Notice $notice The notice to broadcast + * + * @return boolean success flag + */ + + function broadcast_notice($notice) + { + + $ni = $notice->whoGets(); + + foreach ($ni as $user_id => $reason) { + $user = User::staticGet($user_id); + if (empty($user)) { + // either not a local user, or just not found + continue; + } + $user_im_prefs = $this->get_user_im_prefs_from_user($user); + if(!$user_im_prefs || !$user_im_prefs->notify){ + continue; + } + + switch ($reason) { + case NOTICE_INBOX_SOURCE_REPLY: + if (!$user_im_prefs->replies) { + continue 2; + } + break; + case NOTICE_INBOX_SOURCE_SUB: + $sub = Subscription::pkeyGet(array('subscriber' => $user->id, + 'subscribed' => $notice->profile_id)); + if (empty($sub) || !$sub->jabber) { + continue 2; + } + break; + case NOTICE_INBOX_SOURCE_GROUP: + break; + default: + throw new Exception(sprintf(_("Unknown inbox source %d."), $reason)); + } + + common_log(LOG_INFO, + 'Sending notice ' . $notice->id . ' to ' . $user_im_prefs->screenname, + __FILE__); + $this->send_notice($user_im_prefs->screenname, $notice); + $user_im_prefs->free(); + } + + return true; + } + + /** + * makes a plain-text formatted version of a notice, suitable for IM distribution + * + * @param Notice $notice notice being sent + * + * @return string plain-text version of the notice, with user nickname prefixed + */ + + function format_notice($notice) + { + $profile = $notice->getProfile(); + return $profile->nickname . ': ' . $notice->content . ' [' . $notice->id . ']'; + } + //========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - RECEIVING ========================\ + + /** + * Attempt to handle a message as a command + * @param User $user user the message is from + * @param string $body message text + * @return boolean true if the message was a command and was executed, false if it was not a command + */ + protected function handle_command($user, $body) + { + $inter = new CommandInterpreter(); + $cmd = $inter->handle_command($user, $body); + if ($cmd) { + $chan = new IMChannel($this); + $cmd->execute($chan); + return true; + } else { + return false; + } + } + + /** + * Is some text an autoreply message? + * @param string $txt message text + * @return boolean true if autoreply + */ + protected function is_autoreply($txt) + { + if (preg_match('/[\[\(]?[Aa]uto[-\s]?[Rr]e(ply|sponse)[\]\)]/', $txt)) { + return true; + } else if (preg_match('/^System: Message wasn\'t delivered. Offline storage size was exceeded.$/', $txt)) { + return true; + } else { + return false; + } + } + + /** + * Is some text an OTR message? + * @param string $txt message text + * @return boolean true if OTR + */ + protected function is_otr($txt) + { + if (preg_match('/^\?OTR/', $txt)) { + return true; + } else { + return false; + } + } + + /** + * Helper for handling incoming messages + * Your incoming message handler will probably want to call this function + * + * @param string $from screenname the message was sent from + * @param string $message message contents + * + * @param boolean success + */ + protected function handle_incoming($from, $notice_text) + { + $user = $this->get_user($from); + // For common_current_user to work + global $_cur; + $_cur = $user; + + if (!$user) { + $this->send_from_site($from, 'Unknown user; go to ' . + common_local_url('imsettings') . + ' to add your address to your account'); + common_log(LOG_WARNING, 'Message from unknown user ' . $from); + return; + } + if ($this->handle_command($user, $notice_text)) { + common_log(LOG_INFO, "Command message by $from handled."); + return; + } else if ($this->is_autoreply($notice_text)) { + common_log(LOG_INFO, 'Ignoring auto reply from ' . $from); + return; + } else if ($this->is_otr($notice_text)) { + common_log(LOG_INFO, 'Ignoring OTR from ' . $from); + return; + } else { + + common_log(LOG_INFO, 'Posting a notice from ' . $user->nickname); + + $this->add_notice($from, $user, $notice_text); + } + + $user->free(); + unset($user); + unset($_cur); + unset($message); + } + + /** + * Helper for handling incoming messages + * Your incoming message handler will probably want to call this function + * + * @param string $from screenname the message was sent from + * @param string $message message contents + * + * @param boolean success + */ + protected function add_notice($screenname, $user, $body) + { + $body = trim(strip_tags($body)); + $content_shortened = common_shorten_links($body); + if (Notice::contentTooLong($content_shortened)) { + $this->send_from_site($screenname, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'), + Notice::maxContent(), + mb_strlen($content_shortened))); + return; + } + + try { + $notice = Notice::saveNew($user->id, $content_shortened, $this->transport); + } catch (Exception $e) { + common_log(LOG_ERR, $e->getMessage()); + $this->send_from_site($from, $e->getMessage()); + return; + } + + common_broadcast_notice($notice); + common_log(LOG_INFO, + 'Added notice ' . $notice->id . ' from user ' . $user->nickname); + $notice->free(); + unset($notice); + } + + //========================EVENT HANDLERS========================\ + + /** + * Register notice queue handler + * + * @param QueueManager $manager + * + * @return boolean hook return + */ + function onEndInitializeQueueManager($manager) + { + $manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im'); + $manager->connect($this->transport, new ImQueueHandler($this)); + $manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im'); + return true; + } + + function onStartImDaemonIoManagers(&$classes) + { + //$classes[] = new ImManager($this); // handles sending/receiving/pings/reconnects + return true; + } + + function onStartEnqueueNotice($notice, &$transports) + { + $profile = Profile::staticGet($notice->profile_id); + + if (!$profile) { + common_log(LOG_WARNING, 'Refusing to broadcast notice with ' . + 'unknown profile ' . common_log_objstring($notice), + __FILE__); + }else{ + $transports[] = $this->transport; + } + + return true; + } + + function onEndShowHeadElements($action) + { + $aname = $action->trimmed('action'); + + if ($aname == 'shownotice') { + + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->user_id = $action->profile->id; + $user_im_prefs->transport = $this->transport; + + if ($user_im_prefs->find() && $user_im_prefs->fetch() && $user_im_prefs->microid && $action->notice->uri) { + $id = new Microid($this->microiduri($user_im_prefs->screenname), + $action->notice->uri); + $action->element('meta', array('name' => 'microid', + 'content' => $id->toString())); + } + + } else if ($aname == 'showstream') { + + $user_im_prefs = new User_im_prefs(); + $user_im_prefs->user_id = $action->user->id; + $user_im_prefs->transport = $this->transport; + + if ($user_im_prefs->find() && $user_im_prefs->fetch() && $user_im_prefs->microid && $action->profile->profileurl) { + $id = new Microid($this->microiduri($user_im_prefs->screenname), + $action->selfUrl()); + $action->element('meta', array('name' => 'microid', + 'content' => $id->toString())); + } + } + } + + function onNormalizeImScreenname($transport, &$screenname) + { + if($transport == $this->transport) + { + $screenname = $this->normalize($screenname); + return false; + } + } + + function onValidateImScreenname($transport, $screenname, &$valid) + { + if($transport == $this->transport) + { + $valid = $this->validate($screenname); + return false; + } + } + + function onGetImTransports(&$transports) + { + $transports[$this->transport] = array( + 'display' => $this->getDisplayName(), + 'daemon_screenname' => $this->daemon_screenname()); + } + + function onSendImConfirmationCode($transport, $screenname, $code, $user) + { + if($transport == $this->transport) + { + $this->send_confirmation_code($screenname, $code, $user); + return false; + } + } + + function onUserDeleteRelated($user, &$tables) + { + $tables[] = 'User_im_prefs'; + return true; + } + + function initialize() + { + if( ! common_config('queue', 'enabled')) + { + throw new ServerException("Queueing must be enabled to use IM plugins"); + } + + if(is_null($this->transport)){ + throw new ServerException('transport cannot be null'); + } + } +} diff --git a/lib/jabberqueuehandler.php b/lib/imqueuehandler.php index d6b4b7416..b42d8e7c0 100644 --- a/lib/jabberqueuehandler.php +++ b/lib/imqueuehandler.php @@ -17,31 +17,32 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } /** - * Queue handler for pushing new notices to Jabber users. - * @fixme this exception handling doesn't look very good. + * Common superclass for all IM sending queue handlers. */ -class JabberQueueHandler extends QueueHandler -{ - var $conn = null; - function transport() +class ImQueueHandler extends QueueHandler +{ + function __construct($plugin) { - return 'jabber'; + $this->plugin = $plugin; } + /** + * Handle a notice + * @param Notice $notice + * @return boolean success + */ function handle($notice) { - require_once(INSTALLDIR.'/lib/jabber.php'); - try { - return jabber_broadcast_notice($notice); - } catch (XMPPHP_Exception $e) { - common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); - return false; + $this->plugin->broadcast_notice($notice); + if ($notice->is_local == Notice::LOCAL_PUBLIC || + $notice->is_local == Notice::LOCAL_NONPUBLIC) { + $this->plugin->public_notice($notice); } + return true; } + } diff --git a/lib/publicqueuehandler.php b/lib/imreceiverqueuehandler.php index a497d1385..269c7db91 100644 --- a/lib/publicqueuehandler.php +++ b/lib/imreceiverqueuehandler.php @@ -17,29 +17,26 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } /** - * Queue handler for pushing new notices to public XMPP subscribers. + * Common superclass for all IM receiving queue handlers. */ -class PublicQueueHandler extends QueueHandler -{ - function transport() +class ImReceiverQueueHandler extends QueueHandler +{ + function __construct($plugin) { - return 'public'; + $this->plugin = $plugin; } - function handle($notice) + /** + * Handle incoming IM data sent by a user to the IM bot + * @param object $data + * @return boolean success + */ + function handle($data) { - require_once(INSTALLDIR.'/lib/jabber.php'); - try { - return jabber_public_notice($notice); - } catch (XMPPHP_Exception $e) { - common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); - return false; - } + return $this->plugin->receive_raw_message($data); } } diff --git a/lib/imsenderqueuehandler.php b/lib/imsenderqueuehandler.php new file mode 100644 index 000000000..790dd7b10 --- /dev/null +++ b/lib/imsenderqueuehandler.php @@ -0,0 +1,43 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * Common superclass for all IM sending queue handlers. + */ + +class ImSenderQueueHandler extends QueueHandler +{ + function __construct($plugin) + { + $this->plugin = $plugin; + } + + /** + * Handle outgoing IM data to be sent from the bot to a user + * @param object $data + * @return boolean success + */ + function handle($data) + { + return $this->plugin->imManager->send_raw_message($data); + } +} + diff --git a/lib/installer.php b/lib/installer.php index bd9d69cd4..ff2bed140 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -91,7 +91,7 @@ abstract class Installer } if (version_compare(PHP_VERSION, '5.2.3', '<')) { - $errors[] = 'Require PHP version 5.2.3 or greater.'; + $this->warning('Require PHP version 5.2.3 or greater.'); $pass = false; } diff --git a/lib/jabber.php b/lib/jabber.php deleted file mode 100644 index cdcfc4423..000000000 --- a/lib/jabber.php +++ /dev/null @@ -1,640 +0,0 @@ -<?php -/** - * StatusNet, the distributed open-source microblogging tool - * - * utility functions for Jabber/GTalk/XMPP messages - * - * 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 Network - * @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') && !defined('LACONICA')) { - exit(1); -} - -require_once 'XMPPHP/XMPP.php'; - -/** - * Splits a Jabber ID (JID) into node, domain, and resource portions. - * - * Based on validation routine submitted by: - * @copyright 2009 Patrick Georgi <patrick@georgi-clan.de> - * @license Licensed under ISC-L, which is compatible with everything else that keeps the copyright notice intact. - * - * @param string $jid string to check - * - * @return array with "node", "domain", and "resource" indices - * @throws Exception if input is not valid - */ - -function jabber_split_jid($jid) -{ - $chars = ''; - /* the following definitions come from stringprep, Appendix C, - which is used in its entirety by nodeprop, Chapter 5, "Prohibited Output" */ - /* C1.1 ASCII space characters */ - $chars .= "\x{20}"; - /* C1.2 Non-ASCII space characters */ - $chars .= "\x{a0}\x{1680}\x{2000}-\x{200b}\x{202f}\x{205f}\x{3000a}"; - /* C2.1 ASCII control characters */ - $chars .= "\x{00}-\x{1f}\x{7f}"; - /* C2.2 Non-ASCII control characters */ - $chars .= "\x{80}-\x{9f}\x{6dd}\x{70f}\x{180e}\x{200c}\x{200d}\x{2028}\x{2029}\x{2060}-\x{2063}\x{206a}-\x{206f}\x{feff}\x{fff9}-\x{fffc}\x{1d173}-\x{1d17a}"; - /* C3 - Private Use */ - $chars .= "\x{e000}-\x{f8ff}\x{f0000}-\x{ffffd}\x{100000}-\x{10fffd}"; - /* C4 - Non-character code points */ - $chars .= "\x{fdd0}-\x{fdef}\x{fffe}\x{ffff}\x{1fffe}\x{1ffff}\x{2fffe}\x{2ffff}\x{3fffe}\x{3ffff}\x{4fffe}\x{4ffff}\x{5fffe}\x{5ffff}\x{6fffe}\x{6ffff}\x{7fffe}\x{7ffff}\x{8fffe}\x{8ffff}\x{9fffe}\x{9ffff}\x{afffe}\x{affff}\x{bfffe}\x{bffff}\x{cfffe}\x{cffff}\x{dfffe}\x{dffff}\x{efffe}\x{effff}\x{ffffe}\x{fffff}\x{10fffe}\x{10ffff}"; - /* C5 - Surrogate codes */ - $chars .= "\x{d800}-\x{dfff}"; - /* C6 - Inappropriate for plain text */ - $chars .= "\x{fff9}-\x{fffd}"; - /* C7 - Inappropriate for canonical representation */ - $chars .= "\x{2ff0}-\x{2ffb}"; - /* C8 - Change display properties or are deprecated */ - $chars .= "\x{340}\x{341}\x{200e}\x{200f}\x{202a}-\x{202e}\x{206a}-\x{206f}"; - /* C9 - Tagging characters */ - $chars .= "\x{e0001}\x{e0020}-\x{e007f}"; - - /* Nodeprep forbids some more characters */ - $nodeprepchars = $chars; - $nodeprepchars .= "\x{22}\x{26}\x{27}\x{2f}\x{3a}\x{3c}\x{3e}\x{40}"; - - $parts = explode("/", $jid, 2); - if (count($parts) > 1) { - $resource = $parts[1]; - if ($resource == '') { - // Warning: empty resource isn't legit. - // But if we're normalizing, we may as well take it... - } - } else { - $resource = null; - } - - $node = explode("@", $parts[0]); - if ((count($node) > 2) || (count($node) == 0)) { - throw new Exception("Invalid JID: too many @s"); - } else if (count($node) == 1) { - $domain = $node[0]; - $node = null; - } else { - $domain = $node[1]; - $node = $node[0]; - if ($node == '') { - throw new Exception("Invalid JID: @ but no node"); - } - } - - // Length limits per http://xmpp.org/rfcs/rfc3920.html#addressing - if ($node !== null) { - if (strlen($node) > 1023) { - throw new Exception("Invalid JID: node too long."); - } - if (preg_match("/[".$nodeprepchars."]/u", $node)) { - throw new Exception("Invalid JID node '$node'"); - } - } - - if (strlen($domain) > 1023) { - throw new Exception("Invalid JID: domain too long."); - } - if (!common_valid_domain($domain)) { - throw new Exception("Invalid JID domain name '$domain'"); - } - - if ($resource !== null) { - if (strlen($resource) > 1023) { - throw new Exception("Invalid JID: resource too long."); - } - if (preg_match("/[".$chars."]/u", $resource)) { - throw new Exception("Invalid JID resource '$resource'"); - } - } - - return array('node' => is_null($node) ? null : mb_strtolower($node), - 'domain' => is_null($domain) ? null : mb_strtolower($domain), - 'resource' => $resource); -} - -/** - * Checks whether a string is a syntactically valid Jabber ID (JID), - * either with or without a resource. - * - * Note that a bare domain can be a valid JID. - * - * @param string $jid string to check - * @param bool $check_domain whether we should validate that domain... - * - * @return boolean whether the string is a valid JID - */ -function jabber_valid_full_jid($jid, $check_domain=false) -{ - try { - $parts = jabber_split_jid($jid); - if ($check_domain) { - if (!jabber_check_domain($parts['domain'])) { - return false; - } - } - return $parts['resource'] !== ''; // missing or present; empty ain't kosher - } catch (Exception $e) { - return false; - } -} - -/** - * Checks whether a string is a syntactically valid base Jabber ID (JID). - * A base JID won't include a resource specifier on the end; since we - * take it off when reading input we can't really use them reliably - * to direct outgoing messages yet (sorry guys!) - * - * Note that a bare domain can be a valid JID. - * - * @param string $jid string to check - * @param bool $check_domain whether we should validate that domain... - * - * @return boolean whether the string is a valid JID - */ -function jabber_valid_base_jid($jid, $check_domain=false) -{ - try { - $parts = jabber_split_jid($jid); - if ($check_domain) { - if (!jabber_check_domain($parts['domain'])) { - return false; - } - } - return ($parts['resource'] === null); // missing; empty ain't kosher - } catch (Exception $e) { - return false; - } -} - -/** - * Normalizes a Jabber ID for comparison, dropping the resource component if any. - * - * @param string $jid JID to check - * @param bool $check_domain if true, reject if the domain isn't findable - * - * @return string an equivalent JID in normalized (lowercase) form - */ - -function jabber_normalize_jid($jid) -{ - try { - $parts = jabber_split_jid($jid); - if ($parts['node'] !== null) { - return $parts['node'] . '@' . $parts['domain']; - } else { - return $parts['domain']; - } - } catch (Exception $e) { - return null; - } -} - -/** - * Check if this domain's got some legit DNS record - */ -function jabber_check_domain($domain) -{ - if (checkdnsrr("_xmpp-server._tcp." . $domain, "SRV")) { - return true; - } - if (checkdnsrr($domain, "ANY")) { - return true; - } - return false; -} - -/** - * the JID of the Jabber daemon for this StatusNet instance - * - * @return string JID of the Jabber daemon - */ - -function jabber_daemon_address() -{ - return common_config('xmpp', 'user') . '@' . common_config('xmpp', 'server'); -} - -class Sharing_XMPP extends XMPPHP_XMPP -{ - function getSocket() - { - return $this->socket; - } -} - -/** - * Build an XMPP proxy connection that'll save outgoing messages - * to the 'xmppout' queue to be picked up by xmppdaemon later. - * - * If queueing is disabled, we'll grab a live connection. - * - * @return XMPPHP - */ -function jabber_proxy() -{ - if (common_config('queue', 'enabled')) { - $proxy = new Queued_XMPP(common_config('xmpp', 'host') ? - common_config('xmpp', 'host') : - common_config('xmpp', 'server'), - common_config('xmpp', 'port'), - common_config('xmpp', 'user'), - common_config('xmpp', 'password'), - common_config('xmpp', 'resource') . 'daemon', - common_config('xmpp', 'server'), - common_config('xmpp', 'debug') ? - true : false, - common_config('xmpp', 'debug') ? - XMPPHP_Log::LEVEL_VERBOSE : null); - return $proxy; - } else { - return jabber_connect(); - } -} - -/** - * Lazy-connect the configured Jabber account to the configured server; - * if already opened, the same connection will be returned. - * - * In a multi-site background process, each site configuration - * will get its own connection. - * - * @param string $resource Resource to connect (defaults to configured resource) - * - * @return XMPPHP connection to the configured server - */ - -function jabber_connect($resource=null) -{ - static $connections = array(); - $site = common_config('site', 'server'); - if (empty($connections[$site])) { - if (empty($resource)) { - $resource = common_config('xmpp', 'resource'); - } - $conn = new Sharing_XMPP(common_config('xmpp', 'host') ? - common_config('xmpp', 'host') : - common_config('xmpp', 'server'), - common_config('xmpp', 'port'), - common_config('xmpp', 'user'), - common_config('xmpp', 'password'), - $resource, - common_config('xmpp', 'server'), - common_config('xmpp', 'debug') ? - true : false, - common_config('xmpp', 'debug') ? - XMPPHP_Log::LEVEL_VERBOSE : null - ); - - if (!$conn) { - return false; - } - $connections[$site] = $conn; - - $conn->autoSubscribe(); - $conn->useEncryption(common_config('xmpp', 'encryption')); - - try { - common_log(LOG_INFO, __METHOD__ . ": connecting " . - common_config('xmpp', 'user') . '/' . $resource); - //$conn->connect(true); // true = persistent connection - $conn->connect(); // persistent connections break multisite - } catch (XMPPHP_Exception $e) { - common_log(LOG_ERR, $e->getMessage()); - return false; - } - - $conn->processUntil('session_start'); - } - return $connections[$site]; -} - -/** - * Queue send for a single notice to a given Jabber address - * - * @param string $to JID to send the notice to - * @param Notice $notice notice to send - * - * @return boolean success value - */ - -function jabber_send_notice($to, $notice) -{ - $conn = jabber_proxy(); - $profile = Profile::staticGet($notice->profile_id); - if (!$profile) { - common_log(LOG_WARNING, 'Refusing to send notice with ' . - 'unknown profile ' . common_log_objstring($notice), - __FILE__); - return false; - } - $msg = jabber_format_notice($profile, $notice); - $entry = jabber_format_entry($profile, $notice); - $conn->message($to, $msg, 'chat', null, $entry); - $profile->free(); - return true; -} - -/** - * extra information for XMPP messages, as defined by Twitter - * - * @param Profile $profile Profile of the sending user - * @param Notice $notice Notice being sent - * - * @return string Extra information (Atom, HTML, addresses) in string format - */ - -function jabber_format_entry($profile, $notice) -{ - $entry = $notice->asAtomEntry(true, true); - - $xs = new XMLStringer(); - $xs->elementStart('html', array('xmlns' => 'http://jabber.org/protocol/xhtml-im')); - $xs->elementStart('body', array('xmlns' => 'http://www.w3.org/1999/xhtml')); - $xs->element('a', array('href' => $profile->profileurl), - $profile->nickname); - $xs->text(": "); - if (!empty($notice->rendered)) { - $xs->raw($notice->rendered); - } else { - $xs->raw(common_render_content($notice->content, $notice)); - } - $xs->text(" "); - $xs->element('a', array( - 'href'=>common_local_url('conversation', - array('id' => $notice->conversation)).'#notice-'.$notice->id - ),sprintf(_('[%s]'),$notice->id)); - $xs->elementEnd('body'); - $xs->elementEnd('html'); - - $html = $xs->getString(); - - return $html . ' ' . $entry; -} - -/** - * sends a single text message to a given JID - * - * @param string $to JID to send the message to - * @param string $body body of the message - * @param string $type type of the message - * @param string $subject subject of the message - * - * @return boolean success flag - */ - -function jabber_send_message($to, $body, $type='chat', $subject=null) -{ - $conn = jabber_proxy(); - $conn->message($to, $body, $type, $subject); - return true; -} - -/** - * sends a presence stanza on the Jabber network - * - * @param string $status current status, free-form string - * @param string $show structured status value - * @param string $to recipient of presence, null for general - * @param string $type type of status message, related to $show - * @param int $priority priority of the presence - * - * @return boolean success value - */ - -function jabber_send_presence($status, $show='available', $to=null, - $type = 'available', $priority=null) -{ - $conn = jabber_connect(); - if (!$conn) { - return false; - } - $conn->presence($status, $show, $to, $type, $priority); - return true; -} - -/** - * sends a confirmation request to a JID - * - * @param string $code confirmation code for confirmation URL - * @param string $nickname nickname of confirming user - * @param string $address JID to send confirmation to - * - * @return boolean success flag - */ - -function jabber_confirm_address($code, $nickname, $address) -{ - $body = 'User "' . $nickname . '" on ' . common_config('site', 'name') . ' ' . - 'has said that your Jabber ID belongs to them. ' . - 'If that\'s true, you can confirm by clicking on this URL: ' . - common_local_url('confirmaddress', array('code' => $code)) . - ' . (If you cannot click it, copy-and-paste it into the ' . - 'address bar of your browser). If that user isn\'t you, ' . - 'or if you didn\'t request this confirmation, just ignore this message.'; - - return jabber_send_message($address, $body); -} - -/** - * sends a "special" presence stanza on the Jabber network - * - * @param string $type Type of presence - * @param string $to JID to send presence to - * @param string $show show value for presence - * @param string $status status value for presence - * - * @return boolean success flag - * - * @see jabber_send_presence() - */ - -function jabber_special_presence($type, $to=null, $show=null, $status=null) -{ - // FIXME: why use this instead of jabber_send_presence()? - $conn = jabber_connect(); - - $to = htmlspecialchars($to); - $status = htmlspecialchars($status); - - $out = "<presence"; - if ($to) { - $out .= " to='$to'"; - } - if ($type) { - $out .= " type='$type'"; - } - if ($show == 'available' and !$status) { - $out .= "/>"; - } else { - $out .= ">"; - if ($show && ($show != 'available')) { - $out .= "<show>$show</show>"; - } - if ($status) { - $out .= "<status>$status</status>"; - } - $out .= "</presence>"; - } - $conn->send($out); -} - -/** - * Queue broadcast of a notice to all subscribers and reply recipients - * - * This function will send a notice to all subscribers on the local server - * who have Jabber addresses, and have Jabber notification enabled, and - * have this subscription enabled for Jabber. It also sends the notice to - * all recipients of @-replies who have Jabber addresses and Jabber notification - * enabled. This is really the heart of Jabber distribution in StatusNet. - * - * @param Notice $notice The notice to broadcast - * - * @return boolean success flag - */ - -function jabber_broadcast_notice($notice) -{ - if (!common_config('xmpp', 'enabled')) { - return true; - } - $profile = Profile::staticGet($notice->profile_id); - - if (!$profile) { - common_log(LOG_WARNING, 'Refusing to broadcast notice with ' . - 'unknown profile ' . common_log_objstring($notice), - __FILE__); - return true; // not recoverable; discard. - } - - $msg = jabber_format_notice($profile, $notice); - $entry = jabber_format_entry($profile, $notice); - - $profile->free(); - unset($profile); - - $sent_to = array(); - - $conn = jabber_proxy(); - - $ni = $notice->whoGets(); - - foreach ($ni as $user_id => $reason) { - $user = User::staticGet($user_id); - if (empty($user) || - empty($user->jabber) || - !$user->jabbernotify) { - // either not a local user, or just not found - continue; - } - switch ($reason) { - case NOTICE_INBOX_SOURCE_REPLY: - if (!$user->jabberreplies) { - continue 2; - } - break; - case NOTICE_INBOX_SOURCE_SUB: - $sub = Subscription::pkeyGet(array('subscriber' => $user->id, - 'subscribed' => $notice->profile_id)); - if (empty($sub) || !$sub->jabber) { - continue 2; - } - break; - case NOTICE_INBOX_SOURCE_GROUP: - break; - default: - throw new Exception(sprintf(_("Unknown inbox source %d."), $reason)); - } - - common_log(LOG_INFO, - 'Sending notice ' . $notice->id . ' to ' . $user->jabber, - __FILE__); - $conn->message($user->jabber, $msg, 'chat', null, $entry); - } - - return true; -} - -/** - * Queue send of a notice to all public listeners - * - * For notices that are generated on the local system (by users), we can optionally - * forward them to remote listeners by XMPP. - * - * @param Notice $notice notice to broadcast - * - * @return boolean success flag - */ - -function jabber_public_notice($notice) -{ - // Now, users who want everything - - $public = common_config('xmpp', 'public'); - - // FIXME PRIV don't send out private messages here - // XXX: should we send out non-local messages if public,localonly - // = false? I think not - - if ($public && $notice->is_local == Notice::LOCAL_PUBLIC) { - $profile = Profile::staticGet($notice->profile_id); - - if (!$profile) { - common_log(LOG_WARNING, 'Refusing to broadcast notice with ' . - 'unknown profile ' . common_log_objstring($notice), - __FILE__); - return true; // not recoverable; discard. - } - - $msg = jabber_format_notice($profile, $notice); - $entry = jabber_format_entry($profile, $notice); - - $conn = jabber_proxy(); - - foreach ($public as $address) { - common_log(LOG_INFO, - 'Sending notice ' . $notice->id . - ' to public listener ' . $address, - __FILE__); - $conn->message($address, $msg, 'chat', null, $entry); - } - $profile->free(); - } - - return true; -} - -/** - * makes a plain-text formatted version of a notice, suitable for Jabber distribution - * - * @param Profile &$profile profile of the sending user - * @param Notice &$notice notice being sent - * - * @return string plain-text version of the notice, with user nickname prefixed - */ - -function jabber_format_notice(&$profile, &$notice) -{ - return $profile->nickname . ': ' . $notice->content . ' [' . $notice->id . ']'; -} diff --git a/lib/language.php b/lib/language.php index 1805707ad..d93e4e0ad 100644 --- a/lib/language.php +++ b/lib/language.php @@ -213,16 +213,16 @@ function _mdomain($backtrace) $plug = strpos($path, '/plugins/'); if ($plug === false) { // We're not in a plugin; return default domain. - return 'statusnet'; + $final = 'statusnet'; } else { $cut = $plug + 9; $cut2 = strpos($path, '/', $cut); if ($cut2) { - $cached[$path] = substr($path, $cut, $cut2 - $cut); + $final = substr($path, $cut, $cut2 - $cut); } else { // We might be running directly from the plugins dir? // If so, there's no place to store locale info. - return 'statusnet'; + $final = 'statusnet'; } } $cached[$path] = $final; @@ -307,6 +307,7 @@ function get_all_languages() { 'br' => array('q' => 0.8, 'lang' => 'br', 'name' => 'Breton', 'direction' => 'ltr'), 'ca' => array('q' => 0.5, 'lang' => 'ca', 'name' => 'Catalan', 'direction' => 'ltr'), 'cs' => array('q' => 0.5, 'lang' => 'cs', 'name' => 'Czech', 'direction' => 'ltr'), + 'da' => array('q' => 0.8, 'lang' => 'da', 'name' => 'Danish', 'direction' => 'ltr'), 'de' => array('q' => 0.8, 'lang' => 'de', 'name' => 'German', 'direction' => 'ltr'), 'el' => array('q' => 0.1, 'lang' => 'el', 'name' => 'Greek', 'direction' => 'ltr'), 'en-us' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'), diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php index 455695366..464c718f9 100644 --- a/lib/mysqlschema.php +++ b/lib/mysqlschema.php @@ -50,21 +50,6 @@ class MysqlSchema extends Schema static $_single = null; protected $conn = null; - /** - * Constructor. Only run once for singleton object. - */ - - protected function __construct() - { - // XXX: there should be an easier way to do this. - $user = new User(); - - $this->conn = $user->getDatabaseConnection(); - - $user->free(); - - unset($user); - } /** * Main public entry point. Use this to get diff --git a/lib/plugindisableform.php b/lib/plugindisableform.php new file mode 100644 index 000000000..3cbabdb2c --- /dev/null +++ b/lib/plugindisableform.php @@ -0,0 +1,93 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Form for enabling/disabling plugins + * + * 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 Form + * @package StatusNet + * @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') && !defined('LACONICA')) { + exit(1); +} + +/** + * Form for joining a group + * + * @category Form + * @package StatusNet + * @author Brion Vibber <brion@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 PluginEnableForm + */ + +class PluginDisableForm extends PluginEnableForm +{ + /** + * ID of the form + * + * @return string ID of the form + */ + + function id() + { + return 'plugin-disable-' . $this->plugin; + } + + /** + * class of the form + * + * @return string of the form class + */ + + function formClass() + { + return 'form_plugin_disable'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('plugindisable', + array('plugin' => $this->plugin)); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + // TRANS: Plugin admin panel controls + $this->out->submit('submit', _m('plugin', 'Disable')); + } + +} diff --git a/lib/pluginenableform.php b/lib/pluginenableform.php new file mode 100644 index 000000000..8683ffd0b --- /dev/null +++ b/lib/pluginenableform.php @@ -0,0 +1,114 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Form for enabling/disabling plugins + * + * 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 Form + * @package StatusNet + * @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') && !defined('LACONICA')) { + exit(1); +} + +require_once INSTALLDIR.'/lib/form.php'; + +/** + * Form for joining a group + * + * @category Form + * @package StatusNet + * @author Brion Vibber <brion@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 PluginDisableForm + */ + +class PluginEnableForm extends Form +{ + /** + * Plugin to enable/disable + */ + + var $plugin = null; + + /** + * Constructor + * + * @param HTMLOutputter $out output channel + * @param string $plugin plugin to enable/disable + */ + + function __construct($out=null, $plugin=null) + { + parent::__construct($out); + + $this->plugin = $plugin; + } + + /** + * ID of the form + * + * @return string ID of the form + */ + + function id() + { + return 'plugin-enable-' . $this->plugin; + } + + /** + * class of the form + * + * @return string of the form class + */ + + function formClass() + { + return 'form_plugin_enable'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('pluginenable', + array('plugin' => $this->plugin)); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + // TRANS: Plugin admin panel controls + $this->out->submit('submit', _m('plugin', 'Enable')); + } +} diff --git a/lib/pluginlist.php b/lib/pluginlist.php new file mode 100644 index 000000000..07a17ba39 --- /dev/null +++ b/lib/pluginlist.php @@ -0,0 +1,213 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugins 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 Brion Vibber <brion@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); +} + +require INSTALLDIR . "/lib/pluginenableform.php"; +require INSTALLDIR . "/lib/plugindisableform.php"; + +/** + * Plugin list + * + * @category Admin + * @package StatusNet + * @author Brion Vibber <brion@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 PluginList extends Widget +{ + var $plugins = array(); + + function __construct($plugins, $out) + { + parent::__construct($out); + $this->plugins = $plugins; + } + + function show() + { + $this->startList(); + $this->showPlugins(); + $this->endList(); + } + + function startList() + { + $this->out->elementStart('table', 'plugin_list'); + } + + function endList() + { + $this->out->elementEnd('table'); + } + + function showPlugins() + { + foreach ($this->plugins as $plugin) { + $pli = $this->newListItem($plugin); + $pli->show(); + } + } + + function newListItem($plugin) + { + return new PluginListItem($plugin, $this->out); + } +} + +class PluginListItem extends Widget +{ + /** Current plugin. */ + var $plugin = null; + + /** Local cache for plugin version info */ + protected static $versions = false; + + function __construct($plugin, $out) + { + parent::__construct($out); + $this->plugin = $plugin; + } + + function show() + { + $meta = $this->metaInfo(); + + $this->out->elementStart('tr', array('id' => 'plugin-' . $this->plugin)); + + // Name and controls + $this->out->elementStart('td'); + $this->out->elementStart('div'); + if (!empty($meta['homepage'])) { + $this->out->elementStart('a', array('href' => $meta['homepage'])); + } + $this->out->text($this->plugin); + if (!empty($meta['homepage'])) { + $this->out->elementEnd('a'); + } + $this->out->elementEnd('div'); + + $form = $this->getControlForm(); + $form->show(); + + $this->out->elementEnd('td'); + + // Version and authors + $this->out->elementStart('td'); + if (!empty($meta['version'])) { + $this->out->elementStart('div'); + $this->out->text($meta['version']); + $this->out->elementEnd('div'); + } + if (!empty($meta['author'])) { + $this->out->elementStart('div'); + $this->out->text($meta['author']); + $this->out->elementEnd('div'); + } + $this->out->elementEnd('td'); + + // Description + $this->out->elementStart('td'); + if (!empty($meta['rawdescription'])) { + $this->out->raw($meta['rawdescription']); + } + $this->out->elementEnd('td'); + + $this->out->elementEnd('tr'); + } + + /** + * Pull up the appropriate control form for this plugin, depending + * on its current state. + * + * @return Form + */ + protected function getControlForm() + { + $key = 'disable-' . $this->plugin; + if (common_config('plugins', $key)) { + return new PluginEnableForm($this->out, $this->plugin); + } else { + return new PluginDisableForm($this->out, $this->plugin); + } + } + + /** + * Grab metadata about this plugin... + * Warning: horribly inefficient and may explode! + * Doesn't work for disabled plugins either. + * + * @fixme pull structured data from plugin source + */ + function metaInfo() + { + $versions = self::getPluginVersions(); + $found = false; + + foreach ($versions as $info) { + // hack for URL shorteners... "LilUrl (ur1.ca)" etc + list($name, ) = explode(' ', $info['name']); + + if ($name == $this->plugin) { + if ($found) { + // hack for URL shorteners... + $found['rawdescription'] .= "<br />\n" . $info['rawdescription']; + } else { + $found = $info; + } + } + } + + if ($found) { + return $found; + } else { + return array('name' => $this->plugin, + 'rawdescription' => _m('plugin-description', + '(Plugin descriptions unavailable when disabled.)')); + } + } + + /** + * Lazy-load the set of active plugin version info + * @return array + */ + protected static function getPluginVersions() + { + if (!is_array(self::$versions)) { + $versions = array(); + Event::handle('PluginVersion', array(&$versions)); + self::$versions = $versions; + } + return self::$versions; + } +} diff --git a/lib/queuehandler.php b/lib/queuehandler.php index 2909cd83b..2194dd161 100644 --- a/lib/queuehandler.php +++ b/lib/queuehandler.php @@ -37,20 +37,6 @@ class QueueHandler { /** - * Return transport keyword which identifies items this queue handler - * services; must be defined for all subclasses. - * - * Must be 8 characters or less to fit in the queue_item database. - * ex "email", "jabber", "sms", "irc", ... - * - * @return string - */ - function transport() - { - return null; - } - - /** * Here's the meat of your queue handler -- you're handed a Notice * or other object, which you may do as you will with. * diff --git a/lib/queuemanager.php b/lib/queuemanager.php index 0829c8a8b..6666a6cb5 100644 --- a/lib/queuemanager.php +++ b/lib/queuemanager.php @@ -156,21 +156,14 @@ abstract class QueueManager extends IoManager } /** - * Encode an object or variable for queued storage. - * Notice objects are currently stored as an id reference; - * other items are serialized. + * Encode an object for queued storage. * * @param mixed $item * @return string */ protected function encode($item) { - if ($item instanceof Notice) { - // Backwards compat - return $item->id; - } else { - return serialize($item); - } + return serialize($item); } /** @@ -182,25 +175,7 @@ abstract class QueueManager extends IoManager */ protected function decode($frame) { - if (is_numeric($frame)) { - // Back-compat for notices... - return Notice::staticGet(intval($frame)); - } elseif (substr($frame, 0, 1) == '<') { - // Back-compat for XML source - return $frame; - } else { - // Deserialize! - #$old = error_reporting(); - #error_reporting($old & ~E_NOTICE); - $out = unserialize($frame); - #error_reporting($old); - - if ($out === false && $frame !== 'b:0;') { - common_log(LOG_ERR, "Couldn't unserialize queued frame: $frame"); - return false; - } - return $out; - } + return unserialize($frame); } /** @@ -270,16 +245,6 @@ abstract class QueueManager extends IoManager // Broadcasting profile updates to OMB remote subscribers $this->connect('profile', 'ProfileQueueHandler'); - // XMPP output handlers... - if (common_config('xmpp', 'enabled')) { - // Delivery prep, read by queuedaemon.php: - $this->connect('jabber', 'JabberQueueHandler'); - $this->connect('public', 'PublicQueueHandler'); - - // Raw output, read by xmppdaemon.php: - $this->connect('xmppout', 'XmppOutQueueHandler', 'xmpp'); - } - // For compat with old plugins not registering their own handlers. $this->connect('plugin', 'PluginQueueHandler'); } diff --git a/lib/queuemonitor.php b/lib/queuemonitor.php index 1c306a629..3dc0ea65a 100644 --- a/lib/queuemonitor.php +++ b/lib/queuemonitor.php @@ -36,7 +36,7 @@ class QueueMonitor * Only explicitly listed thread/site/queue owners will be incremented. * * @param string $key counter name - * @param array $owners list of owner keys like 'queue:jabber' or 'site:stat01' + * @param array $owners list of owner keys like 'queue:xmpp' or 'site:stat01' */ public function stats($key, $owners=array()) { diff --git a/lib/router.php b/lib/router.php index 7e1e6a2a4..ca3c2e880 100644 --- a/lib/router.php +++ b/lib/router.php @@ -655,6 +655,12 @@ class Router $m->connect('api/statusnet/groups/create.:format', array('action' => 'ApiGroupCreate', 'format' => '(xml|json)')); + + $m->connect('api/statusnet/groups/update/:id.:format', + array('action' => 'ApiGroupProfileUpdate', + 'id' => '[a-zA-Z0-9]+', + 'format' => '(xml|json)')); + // Tags $m->connect('api/statusnet/tags/timeline/:tag.:format', array('action' => 'ApiTimelineTag', @@ -690,6 +696,13 @@ class Router $m->connect('admin/sessions', array('action' => 'sessionsadminpanel')); $m->connect('admin/sitenotice', array('action' => 'sitenoticeadminpanel')); $m->connect('admin/snapshot', array('action' => 'snapshotadminpanel')); + $m->connect('admin/plugins', array('action' => 'pluginsadminpanel')); + $m->connect('admin/plugins/enable/:plugin', + array('action' => 'pluginenable'), + array('plugin' => '[A-Za-z0-9_]+')); + $m->connect('admin/plugins/disable/:plugin', + array('action' => 'plugindisable'), + array('plugin' => '[A-Za-z0-9_]+')); $m->connect('getfile/:filename', array('action' => 'getfile'), diff --git a/lib/schema.php b/lib/schema.php index 1503c96d4..e5def514e 100644 --- a/lib/schema.php +++ b/lib/schema.php @@ -47,40 +47,47 @@ if (!defined('STATUSNET')) { class Schema { - static $_single = null; + static $_static = null; protected $conn = null; /** * Constructor. Only run once for singleton object. */ - protected function __construct() + protected function __construct($conn = null) { - // XXX: there should be an easier way to do this. - $user = new User(); - - $this->conn = $user->getDatabaseConnection(); - - $user->free(); + if (is_null($conn)) { + // XXX: there should be an easier way to do this. + $user = new User(); + $conn = $user->getDatabaseConnection(); + $user->free(); + unset($user); + } - unset($user); + $this->conn = $conn; } /** * Main public entry point. Use this to get - * the singleton object. + * the schema object. * - * @return Schema the (single) Schema object + * @return Schema the Schema object for the connection */ - static function get() + static function get($conn = null) { + if (is_null($conn)) { + $key = 'default'; + } else { + $key = md5(serialize($conn->dsn)); + } + $type = common_config('db', 'type'); - if (empty(self::$_single)) { + if (empty(self::$_static[$key])) { $schemaClass = ucfirst($type).'Schema'; - self::$_single = new $schemaClass(); + self::$_static[$key] = new $schemaClass($conn); } - return self::$_single; + return self::$_static[$key]; } /** diff --git a/lib/statusnet.php b/lib/statusnet.php index 2aa73486e..ac5d10134 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -177,6 +177,11 @@ class StatusNet { // Load default plugins foreach (common_config('plugins', 'default') as $name => $params) { + $key = 'disable-' . $name; + if (common_config('plugins', $key)) { + continue; + } + if (is_null($params)) { addPlugin($name); } else if (is_array($params)) { @@ -354,7 +359,6 @@ class StatusNet } // Backwards compatibility - if (array_key_exists('memcached', $config)) { if ($config['memcached']['enabled']) { addPlugin('Memcache', array('servers' => $config['memcached']['server'])); @@ -364,6 +368,21 @@ class StatusNet $config['cache']['base'] = $config['memcached']['base']; } } + if (array_key_exists('xmpp', $config)) { + if ($config['xmpp']['enabled']) { + addPlugin('xmpp', array( + 'server' => $config['xmpp']['server'], + 'port' => $config['xmpp']['port'], + 'user' => $config['xmpp']['user'], + 'resource' => $config['xmpp']['resource'], + 'encryption' => $config['xmpp']['encryption'], + 'password' => $config['xmpp']['password'], + 'host' => $config['xmpp']['host'], + 'debug' => $config['xmpp']['debug'], + 'public' => $config['xmpp']['public'] + )); + } + } } } diff --git a/lib/urlshortenerplugin.php b/lib/urlshortenerplugin.php new file mode 100644 index 000000000..8acfac26f --- /dev/null +++ b/lib/urlshortenerplugin.php @@ -0,0 +1,155 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Superclass for plugins that do URL shortening + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +/** + * Superclass for plugins that do URL shortening + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +abstract class UrlShortenerPlugin extends Plugin +{ + public $shortenerName; + public $freeService = false; + + // Url Shortener plugins should implement some (or all) + // of these methods + + /** + * Make an URL shorter. + * + * @param string $url URL to shorten + * + * @return string shortened version of the url, or null on failure + */ + + protected abstract function shorten($url); + + /** + * Utility to get the data at an URL + * + * @param string $url URL to fetch + * + * @return string response body + * + * @todo rename to code-standard camelCase httpGet() + */ + + protected function http_get($url) + { + $request = HTTPClient::start(); + $response = $request->get($url); + return $response->getBody(); + } + + /** + * Utility to post a request and get a response URL + * + * @param string $url URL to fetch + * @param array $data post parameters + * + * @return string response body + * + * @todo rename to code-standard httpPost() + */ + + protected function http_post($url, $data) + { + $request = HTTPClient::start(); + $response = $request->post($url, null, $data); + return $response->getBody(); + } + + // Hook handlers + + /** + * Called when all plugins have been initialized + * + * @return boolean hook value + */ + + function onInitializePlugin() + { + if (!isset($this->shortenerName)) { + throw new Exception("must specify a shortenerName"); + } + return true; + } + + /** + * Called when a showing the URL shortener drop-down box + * + * Properties of the shortening service currently only + * include whether it's a free service. + * + * @param array &$shorteners array mapping shortener name to properties + * + * @return boolean hook value + */ + + function onGetUrlShorteners(&$shorteners) + { + $shorteners[$this->shortenerName] = + array('freeService' => $this->freeService); + return true; + } + + /** + * Called to shorten an URL + * + * @param string $url URL to shorten + * @param string $shortenerName Shortening service. Don't handle if it's + * not you! + * @param string &$shortenedUrl URL after shortening; out param. + * + * @return boolean hook value + */ + + function onStartShortenUrl($url, $shortenerName, &$shortenedUrl) + { + if ($shortenerName == $this->shortenerName) { + $result = $this->shorten($url); + if (isset($result) && $result != null && $result !== false) { + $shortenedUrl = $result; + common_log(LOG_INFO, + __CLASS__ . ": $this->shortenerName ". + "shortened $url to $shortenedUrl"); + return false; + } + } + return true; + } +} diff --git a/lib/util.php b/lib/util.php index 2a90b56a9..8eff4e568 100644 --- a/lib/util.php +++ b/lib/util.php @@ -88,8 +88,8 @@ function common_init_language() // don't do the job. en_US.UTF-8 should be there most of the // time, but not guaranteed. $ok = common_init_locale("en_US"); - if (!$ok) { - // Try to find a complete, working locale... + if (!$ok && strtolower(substr(PHP_OS, 0, 3)) != 'win') { + // Try to find a complete, working locale on Unix/Linux... // @fixme shelling out feels awfully inefficient // but I don't think there's a more standard way. $all = `locale -a`; @@ -101,9 +101,9 @@ function common_init_language() } } } - if (!$ok) { - common_log(LOG_ERR, "Unable to find a UTF-8 locale on this system; UI translations may not work."); - } + } + if (!$ok) { + common_log(LOG_ERR, "Unable to find a UTF-8 locale on this system; UI translations may not work."); } $locale_set = common_init_locale($language); } @@ -155,23 +155,38 @@ function common_timezone() return common_config('site', 'timezone'); } +function common_valid_language($lang) +{ + if ($lang) { + // Validate -- we don't want to end up with a bogus code + // left over from some old junk. + foreach (common_config('site', 'languages') as $code => $info) { + if ($info['lang'] == $lang) { + return true; + } + } + } + return false; +} + function common_language() { + // Allow ?uselang=xx override, very useful for debugging + // and helping translators check usage and context. + if (isset($_GET['uselang'])) { + $uselang = strval($_GET['uselang']); + if (common_valid_language($uselang)) { + return $uselang; + } + } // If there is a user logged in and they've set a language preference // then return that one... if (_have_config() && common_logged_in()) { $user = common_current_user(); - $user_language = $user->language; - - if ($user->language) { - // Validate -- we don't want to end up with a bogus code - // left over from some old junk. - foreach (common_config('site', 'languages') as $code => $info) { - if ($info['lang'] == $user_language) { - return $user_language; - } - } + + if (common_valid_language($user->language)) { + return $user->language; } } @@ -874,9 +889,21 @@ function common_linkify($url) { function common_shorten_links($text, $always = false) { - $maxLength = Notice::maxContent(); - if (!$always && ($maxLength == 0 || mb_strlen($text) <= $maxLength)) return $text; - return common_replace_urls_callback($text, array('File_redirection', 'makeShort')); + common_debug("common_shorten_links() called"); + + $user = common_current_user(); + + $maxLength = User_urlshortener_prefs::maxNoticeLength($user); + + common_debug("maxLength = $maxLength"); + + if ($always || mb_strlen($text) > $maxLength) { + common_debug("Forcing shortening"); + return common_replace_urls_callback($text, array('File_redirection', 'forceShort')); + } else { + common_debug("Not forcing shortening"); + return common_replace_urls_callback($text, array('File_redirection', 'makeShort')); + } } function common_xml_safe_str($str) @@ -1243,18 +1270,9 @@ function common_enqueue_notice($notice) $transports[] = 'plugin'; } - $xmpp = common_config('xmpp', 'enabled'); - - if ($xmpp) { - $transports[] = 'jabber'; - } - // We can skip these for gatewayed notices. if ($notice->isLocal()) { $transports = array_merge($transports, $localTransports); - if ($xmpp) { - $transports[] = 'public'; - } } if (Event::handle('StartEnqueueNotice', array($notice, &$transports))) { @@ -1493,7 +1511,7 @@ function common_valid_tag($tag) * Determine if given domain or address literal is valid * eg for use in JIDs and URLs. Does not check if the domain * exists! - * + * * @param string $domain * @return boolean valid or not */ @@ -1835,30 +1853,42 @@ function common_database_tablename($tablename) /** * Shorten a URL with the current user's configured shortening service, * or ur1.ca if configured, or not at all if no shortening is set up. - * Length is not considered. * - * @param string $long_url + * @param string $long_url original URL + * @param boolean $force Force shortening (used when notice is too long) + * * @return string may return the original URL if shortening failed * * @fixme provide a way to specify a particular shortener * @fixme provide a way to specify to use a given user's shortening preferences */ -function common_shorten_url($long_url) + +function common_shorten_url($long_url, $force = false) { + common_debug("Shortening URL '$long_url' (force = $force)"); + $long_url = trim($long_url); + $user = common_current_user(); - if (empty($user)) { - // common current user does not find a user when called from the XMPP daemon - // therefore we'll set one here fix, so that XMPP given URLs may be shortened - $shortenerName = 'ur1.ca'; - } else { - $shortenerName = $user->urlshorteningservice; + + $maxUrlLength = User_urlshortener_prefs::maxUrlLength($user); + common_debug("maxUrlLength = $maxUrlLength"); + + // $force forces shortening even if it's not strictly needed + + if (mb_strlen($long_url) < $maxUrlLength && !$force) { + common_debug("Skipped shortening URL."); + return $long_url; } - if(Event::handle('StartShortenUrl', array($long_url,$shortenerName,&$shortenedUrl))){ + $shortenerName = User_urlshortener_prefs::urlShorteningService($user); + + common_debug("Shortener name = '$shortenerName'"); + + if (Event::handle('StartShortenUrl', array($long_url, $shortenerName, &$shortenedUrl))) { //URL wasn't shortened, so return the long url return $long_url; - }else{ + } else { //URL was shortened, so return the result return trim($shortenedUrl); } diff --git a/lib/xmppmanager.php b/lib/xmppmanager.php deleted file mode 100644 index 829eaa36c..000000000 --- a/lib/xmppmanager.php +++ /dev/null @@ -1,486 +0,0 @@ -<?php -/* - * StatusNet - the distributed open-source microblogging tool - * Copyright (C) 2008, 2009, StatusNet, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -/** - * XMPP background connection manager for XMPP-using queue handlers, - * allowing them to send outgoing messages on the right connection. - * - * Input is handled during socket select loop, keepalive pings during idle. - * Any incoming messages will be forwarded to the main XmppDaemon process, - * which handles direct user interaction. - * - * In a multi-site queuedaemon.php run, one connection will be instantiated - * for each site being handled by the current process that has XMPP enabled. - */ - -class XmppManager extends IoManager -{ - protected $site = null; - protected $pingid = 0; - protected $lastping = null; - protected $conn = null; - - static protected $singletons = array(); - - const PING_INTERVAL = 120; - - /** - * Fetch the singleton XmppManager for the current site. - * @return mixed XmppManager, or false if unneeded - */ - public static function get() - { - if (common_config('xmpp', 'enabled')) { - $site = StatusNet::currentSite(); - if (empty(self::$singletons[$site])) { - self::$singletons[$site] = new XmppManager(); - } - return self::$singletons[$site]; - } else { - return false; - } - } - - /** - * Tell the i/o master we need one instance for each supporting site - * being handled in this process. - */ - public static function multiSite() - { - return IoManager::INSTANCE_PER_SITE; - } - - function __construct() - { - $this->site = StatusNet::currentSite(); - $this->resource = common_config('xmpp', 'resource') . 'daemon'; - } - - /** - * Initialize connection to server. - * @return boolean true on success - */ - public function start($master) - { - parent::start($master); - $this->switchSite(); - - require_once INSTALLDIR . "/lib/jabber.php"; - - # Low priority; we don't want to receive messages - - common_log(LOG_INFO, "INITIALIZE"); - $this->conn = jabber_connect($this->resource); - - if (empty($this->conn)) { - common_log(LOG_ERR, "Couldn't connect to server."); - return false; - } - - $this->log(LOG_DEBUG, "Initializing stanza handlers."); - - $this->conn->addEventHandler('message', 'handle_message', $this); - $this->conn->addEventHandler('presence', 'handle_presence', $this); - $this->conn->addEventHandler('reconnect', 'handle_reconnect', $this); - - $this->conn->setReconnectTimeout(600); - jabber_send_presence("Send me a message to post a notice", 'available', null, 'available', 100); - - return !is_null($this->conn); - } - - /** - * Message pump is triggered on socket input, so we only need an idle() - * call often enough to trigger our outgoing pings. - */ - function timeout() - { - return self::PING_INTERVAL; - } - - /** - * Lists the XMPP connection socket to allow i/o master to wake - * when input comes in here as well as from the queue source. - * - * @return array of resources - */ - public function getSockets() - { - if ($this->conn) { - return array($this->conn->getSocket()); - } else { - return array(); - } - } - - /** - * Process XMPP events that have come in over the wire. - * Side effects: may switch site configuration - * @fixme may kill process on XMPP error - * @param resource $socket - */ - public function handleInput($socket) - { - $this->switchSite(); - - # Process the queue for as long as needed - try { - if ($this->conn) { - assert($socket === $this->conn->getSocket()); - - common_log(LOG_DEBUG, "Servicing the XMPP queue."); - $this->stats('xmpp_process'); - $this->conn->processTime(0); - } - } catch (XMPPHP_Exception $e) { - common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); - die($e->getMessage()); - } - } - - /** - * Idle processing for io manager's execution loop. - * Send keepalive pings to server. - * - * Side effect: kills process on exception from XMPP library. - * - * @fixme non-dying error handling - */ - public function idle($timeout=0) - { - if ($this->conn) { - $now = time(); - if (empty($this->lastping) || $now - $this->lastping > self::PING_INTERVAL) { - $this->switchSite(); - try { - $this->sendPing(); - $this->lastping = $now; - } catch (XMPPHP_Exception $e) { - common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); - die($e->getMessage()); - } - } - } - } - - /** - * For queue handlers to pass us a message to push out, - * if we're active. - * - * @fixme should this be blocking etc? - * - * @param string $msg XML stanza to send - * @return boolean success - */ - public function send($msg) - { - if ($this->conn && !$this->conn->isDisconnected()) { - $bytes = $this->conn->send($msg); - if ($bytes > 0) { - $this->conn->processTime(0); - return true; - } else { - return false; - } - } else { - // Can't send right now... - return false; - } - } - - /** - * Send a keepalive ping to the XMPP server. - */ - protected function sendPing() - { - $jid = jabber_daemon_address().'/'.$this->resource; - $server = common_config('xmpp', 'server'); - - if (!isset($this->pingid)) { - $this->pingid = 0; - } else { - $this->pingid++; - } - - common_log(LOG_DEBUG, "Sending ping #{$this->pingid}"); - - $this->conn->send("<iq from='{$jid}' to='{$server}' id='ping_{$this->pingid}' type='get'><ping xmlns='urn:xmpp:ping'/></iq>"); - } - - /** - * Callback for Jabber reconnect event - * @param $pl - */ - function handle_reconnect(&$pl) - { - common_log(LOG_NOTICE, 'XMPP reconnected'); - - $this->conn->processUntil('session_start'); - $this->conn->presence(null, 'available', null, 'available', 100); - } - - - function get_user($from) - { - $user = User::staticGet('jabber', jabber_normalize_jid($from)); - return $user; - } - - /** - * XMPP callback for handling message input... - * @param array $pl XMPP payload - */ - function handle_message(&$pl) - { - $from = jabber_normalize_jid($pl['from']); - - if ($pl['type'] != 'chat') { - $this->log(LOG_WARNING, "Ignoring message of type ".$pl['type']." from $from: " . $pl['xml']->toString()); - return; - } - - if (mb_strlen($pl['body']) == 0) { - $this->log(LOG_WARNING, "Ignoring message with empty body from $from: " . $pl['xml']->toString()); - return; - } - - // Forwarded from another daemon for us to handle; this shouldn't - // happen any more but we might get some legacy items. - if ($this->is_self($from)) { - $this->log(LOG_INFO, "Got forwarded notice from self ($from)."); - $from = $this->get_ofrom($pl); - $this->log(LOG_INFO, "Originally sent by $from."); - if (is_null($from) || $this->is_self($from)) { - $this->log(LOG_INFO, "Ignoring notice originally sent by $from."); - return; - } - } - - $user = $this->get_user($from); - - // For common_current_user to work - global $_cur; - $_cur = $user; - - if (!$user) { - $this->from_site($from, 'Unknown user; go to ' . - common_local_url('imsettings') . - ' to add your address to your account'); - $this->log(LOG_WARNING, 'Message from unknown user ' . $from); - return; - } - if ($this->handle_command($user, $pl['body'])) { - $this->log(LOG_INFO, "Command message by $from handled."); - return; - } else if ($this->is_autoreply($pl['body'])) { - $this->log(LOG_INFO, 'Ignoring auto reply from ' . $from); - return; - } else if ($this->is_otr($pl['body'])) { - $this->log(LOG_INFO, 'Ignoring OTR from ' . $from); - return; - } else { - - $this->log(LOG_INFO, 'Posting a notice from ' . $user->nickname); - - $this->add_notice($user, $pl); - } - - $user->free(); - unset($user); - unset($_cur); - - unset($pl['xml']); - $pl['xml'] = null; - - $pl = null; - unset($pl); - } - - - function is_self($from) - { - return preg_match('/^'.strtolower(jabber_daemon_address()).'/', strtolower($from)); - } - - function get_ofrom($pl) - { - $xml = $pl['xml']; - $addresses = $xml->sub('addresses'); - if (!$addresses) { - $this->log(LOG_WARNING, 'Forwarded message without addresses'); - return null; - } - $address = $addresses->sub('address'); - if (!$address) { - $this->log(LOG_WARNING, 'Forwarded message without address'); - return null; - } - if (!array_key_exists('type', $address->attrs)) { - $this->log(LOG_WARNING, 'No type for forwarded message'); - return null; - } - $type = $address->attrs['type']; - if ($type != 'ofrom') { - $this->log(LOG_WARNING, 'Type of forwarded message is not ofrom'); - return null; - } - if (!array_key_exists('jid', $address->attrs)) { - $this->log(LOG_WARNING, 'No jid for forwarded message'); - return null; - } - $jid = $address->attrs['jid']; - if (!$jid) { - $this->log(LOG_WARNING, 'Could not get jid from address'); - return null; - } - $this->log(LOG_DEBUG, 'Got message forwarded from jid ' . $jid); - return $jid; - } - - function is_autoreply($txt) - { - if (preg_match('/[\[\(]?[Aa]uto[-\s]?[Rr]e(ply|sponse)[\]\)]/', $txt)) { - return true; - } else if (preg_match('/^System: Message wasn\'t delivered. Offline storage size was exceeded.$/', $txt)) { - return true; - } else { - return false; - } - } - - function is_otr($txt) - { - if (preg_match('/^\?OTR/', $txt)) { - return true; - } else { - return false; - } - } - - function from_site($address, $msg) - { - $text = '['.common_config('site', 'name') . '] ' . $msg; - jabber_send_message($address, $text); - } - - function handle_command($user, $body) - { - $inter = new CommandInterpreter(); - $cmd = $inter->handle_command($user, $body); - if ($cmd) { - $chan = new XMPPChannel($this->conn); - $cmd->execute($chan); - return true; - } else { - return false; - } - } - - function add_notice(&$user, &$pl) - { - $body = trim($pl['body']); - $content_shortened = common_shorten_links($body); - if (Notice::contentTooLong($content_shortened)) { - $from = jabber_normalize_jid($pl['from']); - $this->from_site($from, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'), - Notice::maxContent(), - mb_strlen($content_shortened))); - return; - } - - try { - $notice = Notice::saveNew($user->id, $content_shortened, 'xmpp'); - } catch (Exception $e) { - $this->log(LOG_ERR, $e->getMessage()); - $this->from_site($user->jabber, $e->getMessage()); - return; - } - - common_broadcast_notice($notice); - $this->log(LOG_INFO, - 'Added notice ' . $notice->id . ' from user ' . $user->nickname); - $notice->free(); - unset($notice); - } - - function handle_presence(&$pl) - { - $from = jabber_normalize_jid($pl['from']); - switch ($pl['type']) { - case 'subscribe': - # We let anyone subscribe - $this->subscribed($from); - $this->log(LOG_INFO, - 'Accepted subscription from ' . $from); - break; - case 'subscribed': - case 'unsubscribed': - case 'unsubscribe': - $this->log(LOG_INFO, - 'Ignoring "' . $pl['type'] . '" from ' . $from); - break; - default: - if (!$pl['type']) { - $user = User::staticGet('jabber', $from); - if (!$user) { - $this->log(LOG_WARNING, 'Presence from unknown user ' . $from); - return; - } - if ($user->updatefrompresence) { - $this->log(LOG_INFO, 'Updating ' . $user->nickname . - ' status from presence.'); - $this->add_notice($user, $pl); - } - $user->free(); - unset($user); - } - break; - } - unset($pl['xml']); - $pl['xml'] = null; - - $pl = null; - unset($pl); - } - - function log($level, $msg) - { - $text = 'XMPPDaemon('.$this->resource.'): '.$msg; - common_log($level, $text); - } - - function subscribed($to) - { - jabber_special_presence('subscribed', $to); - } - - /** - * Make sure we're on the right site configuration - */ - protected function switchSite() - { - if ($this->site != StatusNet::currentSite()) { - common_log(LOG_DEBUG, __METHOD__ . ": switching to site $this->site"); - $this->stats('switch'); - StatusNet::switchSite($this->site); - } - } -} diff --git a/lib/xmppoutqueuehandler.php b/lib/xmppoutqueuehandler.php deleted file mode 100644 index 2afa260f1..000000000 --- a/lib/xmppoutqueuehandler.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php -/* - * StatusNet - the distributed open-source microblogging tool - * Copyright (C) 2010, StatusNet, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Queue handler for pre-processed outgoing XMPP messages. - * Formatted XML stanzas will have been pushed into the queue - * via the Queued_XMPP connection proxy, probably from some - * other queue processor. - * - * Here, the XML stanzas are simply pulled out of the queue and - * pushed out over the wire; an XmppManager is needed to set up - * and maintain the actual server connection. - * - * This queue will be run via XmppDaemon rather than QueueDaemon. - * - * @author Brion Vibber <brion@status.net> - */ -class XmppOutQueueHandler extends QueueHandler -{ - function transport() { - return 'xmppout'; - } - - /** - * Take a previously-queued XMPP stanza and send it out ot the server. - * @param string $msg - * @return boolean true on success - */ - function handle($msg) - { - assert(is_string($msg)); - - $xmpp = XmppManager::get(); - $ok = $xmpp->send($msg); - - return $ok; - } -} - diff --git a/locale/af/LC_MESSAGES/statusnet.po b/locale/af/LC_MESSAGES/statusnet.po index aa82c30f6..a1a8a6801 100644 --- a/locale/af/LC_MESSAGES/statusnet.po +++ b/locale/af/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:02:38+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:38+0000\n" "Language-Team: Afrikaans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: af\n" "X-Message-Group: out-statusnet\n" @@ -98,7 +98,7 @@ msgstr "Hierdie bladsy bestaan nie" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -167,15 +167,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -208,7 +208,7 @@ msgstr "Opdaterings van %1$s en vriende op %2$s." #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -256,7 +256,7 @@ msgstr "Kon nie die profiel stoor nie." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -355,7 +355,8 @@ msgstr "" "Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "U kan nie die gebruiker volg nie: die gebruiker bestaan nie." #: actions/apifriendshipscreate.php:118 @@ -373,8 +374,8 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "U kan nie ophou om uself te volg nie." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -505,6 +506,11 @@ msgstr "%s groepe" msgid "groups on %s" msgstr "groepe op %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Die deblokkering van die gebruiker het gefaal." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -643,22 +649,26 @@ msgstr "Die status is verwyder." msgid "No status with that ID found." msgstr "Geen status met die ID gevind nie." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Die kennisgewing is te lank. Gebruik maksimum %d karakters." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nie gevind nie." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Nie-ondersteunde formaat." @@ -712,6 +722,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Die aanhangsel bestaan nie." @@ -764,7 +778,7 @@ msgid "Preview" msgstr "Voorskou" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Skrap" @@ -1039,7 +1053,7 @@ msgid "Do not delete this notice" msgstr "Moenie hierdie kennisgewing verwyder nie" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Verwyder hierdie kennisgewing" @@ -1314,7 +1328,8 @@ msgstr "Ongeldige alias: \"%s\"" msgid "Could not update group." msgstr "Dit was nie moontlik om die groep by te werk nie." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Dit was nie moontlik om die aliasse te skep nie." @@ -2400,7 +2415,7 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2476,8 +2491,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3332,7 +3347,7 @@ msgstr "" msgid "You already repeated that notice." msgstr "" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Herhalend" @@ -3367,11 +3382,13 @@ msgid "Replies feed for %s (Atom)" msgstr "" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" +"Hierdie is die tydslyn vir %s en vriende, maar niemand het nog iets gepos " +"nie." #: actions/replies.php:204 #, php-format @@ -3383,8 +3400,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3473,7 +3490,7 @@ msgstr "Organisasie" msgid "Description" msgstr "Beskrywing" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistieke" @@ -3558,16 +3575,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3626,7 +3643,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "Vriend van 'n vriend vir die groep %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Lede" @@ -3640,11 +3657,11 @@ msgstr "(geen)" msgid "All members" msgstr "Alle lede" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Geskep" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3654,7 +3671,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3663,7 +3680,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administrateurs" @@ -3738,8 +3755,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4112,7 +4129,8 @@ msgstr "" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "" @@ -4276,10 +4294,6 @@ msgstr "" msgid "No such tag." msgstr "Onbekende etiket." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "" @@ -4566,146 +4580,248 @@ msgstr "Weergawe" msgid "Author(s)" msgstr "Outeur(s)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Ongeldige grootte." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "" -#: classes/Group_member.php:53 +#. 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 "Nie lid van die groep nie." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "" -#: classes/Login_token.php:76 +#. 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 "" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Hierdie gebruiker het nie 'n profiel nie." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Dit was nie moontlik om u ontwerp-instellings te stoor nie." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "" -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "" +"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "" +"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "" +"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Welkom by %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Kon nie die groep skep nie." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "" @@ -6015,7 +6131,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "van" @@ -6070,24 +6186,24 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6141,51 +6257,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "O" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "W" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "op" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "in konteks" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Herhaal deur" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Antwoord" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "" @@ -6443,7 +6559,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po index 3f9f58275..c5e7f56b8 100644 --- a/locale/ar/LC_MESSAGES/statusnet.po +++ b/locale/ar/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Arabic # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Meno25 # Author@translatewiki.net: OsamaK # -- @@ -9,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:02:42+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:39+0000\n" "Language-Team: Arabic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ar\n" "X-Message-Group: out-statusnet\n" @@ -99,7 +100,7 @@ msgstr "لا صÙØØ© كهذه." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -166,16 +167,18 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" +"%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل Øسابًا](%%%%action." +"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" #. TRANS: H1 text #: actions/all.php:182 @@ -207,7 +210,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -255,7 +258,7 @@ msgstr "لم يمكن ØÙظ الملÙ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -351,8 +354,9 @@ msgid "Could not delete favorite." msgstr "تعذّر Øذ٠المÙضلة." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "لم يمكن ØÙظ الملÙ." #: actions/apifriendshipscreate.php:118 #, php-format @@ -367,8 +371,8 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "لا يمكنك عدم متابعة Ù†Ùسك." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -429,9 +433,9 @@ msgid "Too many aliases! Maximum %d." msgstr "كنيات كيرة! العدد الأقصى هو %d." #: actions/apigroupcreate.php:267 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "كنية غير صالØØ©: \"%s\"" +msgstr "كنية غير صالØØ©: \"%s\"." #: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 @@ -480,9 +484,9 @@ msgstr "مجموعات %s" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s #: actions/apigrouplist.php:108 -#, fuzzy, php-format +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "المجموعات التي %s عضو Ùيها" +msgstr "مجموعات %1$s التي %2$s عضو Ùيها." #. TRANS: Message is used as a title. %s is a site name. #. TRANS: Message is used as a page title. %s is a nick name. @@ -496,6 +500,11 @@ msgstr "مجموعات %s" msgid "groups on %s" msgstr "مجموعات %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ارÙع ملÙًا" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -528,9 +537,8 @@ msgid "Invalid nickname / password!" msgstr "اسم/كلمة سر غير صØÙŠØØ©!" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "خطأ قاعدة البيانات أثناء Øذ٠المستخدم OAuth app" +msgstr "خطأ ÙÙŠ قاعدة البيانات أثناء Øذ٠مستخدم تطبيق OAuth." #: actions/apioauthauthorize.php:185 #, fuzzy @@ -637,22 +645,26 @@ msgstr "ØÙØ°ÙÙت الØالة." msgid "No status with that ID found." msgstr "لا Øالة ÙˆÙجدت بهذه الهوية." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "" +msgstr "هذه طويلة جدًا. أطول Øجم للإشعار %d ØرÙًا." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "لم يوجد." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "نسق غير مدعوم." @@ -706,6 +718,10 @@ msgstr "الإشعارات الموسومة ب%s" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "لا مرÙÙ‚ كهذا." @@ -758,7 +774,7 @@ msgid "Preview" msgstr "معاينة" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "اØØ°Ù" @@ -1031,7 +1047,7 @@ msgid "Do not delete this notice" msgstr "لا تØذ٠هذا الإشعار" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "اØذ٠هذا الإشعار" @@ -1099,9 +1115,8 @@ msgid "Theme for the site." msgstr "سمة الموقع." #: actions/designadminpanel.php:467 -#, fuzzy msgid "Custom theme" -msgstr "سمة الموقع" +msgstr "سمة مخصصة" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." @@ -1163,11 +1178,11 @@ msgstr "وصلات" #: actions/designadminpanel.php:651 msgid "Advanced" -msgstr "" +msgstr "متقدم" #: actions/designadminpanel.php:655 msgid "Custom CSS" -msgstr "" +msgstr "CSS مخصصة" #: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" @@ -1306,7 +1321,8 @@ msgstr "كنية غير صالØØ©: \"%s\"" msgid "Could not update group." msgstr "تعذر تØديث المجموعة." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "تعذّر إنشاء الكنى." @@ -1650,9 +1666,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "" #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "خطأ أثناء تØديث المل٠الشخصي البعيد" +msgstr "خطأ أثناء تØديث المل٠الشخصي البعيد." #: actions/getfile.php:79 msgid "No such file." @@ -1677,9 +1692,8 @@ msgid "You cannot grant user roles on this site." msgstr "لا يمكنك إسكات المستخدمين على هذا الموقع." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "المستخدم مسكت من قبل." +msgstr "لدى المستخدم هذا الدور من قبل." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 @@ -2390,7 +2404,7 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2466,8 +2480,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "ليس نسق بيانات مدعوم." @@ -3226,7 +3240,7 @@ msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. #: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "جميع الØقوق Ù…ØÙوظة." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. #: actions/register.php:540 @@ -3308,7 +3322,7 @@ msgstr "" #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." -msgstr "" +msgstr "هذا مل٠شخصي Ù…Øلي! Ù„Ùج لتشترك." #: actions/remotesubscribe.php:183 msgid "Couldn’t get a request token." @@ -3330,7 +3344,7 @@ msgstr "لا يمكنك تكرار ملاØظتك الشخصية." msgid "You already repeated that notice." msgstr "أنت كررت هذه الملاØظة بالÙعل." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "مكرر" @@ -3368,7 +3382,7 @@ msgstr "" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3381,8 +3395,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3391,14 +3405,12 @@ msgid "Replies to %1$s on %2$s!" msgstr "" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "لا يمكنك إسكات المستخدمين على هذا الموقع." +msgstr "لا يمكنك سØب أدوار المستخدمين على هذا الموقع." #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "المستخدم بدون مل٠مطابق." +msgstr "ليس للمستخدم هذا الدور." #: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" @@ -3473,7 +3485,7 @@ msgstr "المنظمة" msgid "Description" msgstr "الوصÙ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Ø¥Øصاءات" @@ -3556,20 +3568,20 @@ msgid "" msgstr "" #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. أرسل شيئًا شيقًا ليضيÙÙ‡ إلى " "Ù…Ùضلته. :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل Øسابًا](%%%%action." "register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" @@ -3586,7 +3598,7 @@ msgstr "مجموعة %s" #: actions/showgroup.php:84 #, php-format msgid "%1$s group, page %2$d" -msgstr "مجموعة %1$ØŒ الصÙØØ© %2$d" +msgstr "مجموعة %1$sØŒ الصÙØØ© %2$d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3630,7 +3642,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "الأعضاء" @@ -3644,11 +3656,11 @@ msgstr "(لا شيء)" msgid "All members" msgstr "جميع الأعضاء" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "أنشئت" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3663,7 +3675,7 @@ msgstr "" "[انضم الآن](%%%%action.register%%%%) Ù„ØªØµØ¨Ø Ø¹Ø¶ÙˆÙ‹Ø§ ÙÙŠ هذه المجموعة ومجموعات " "أخرى عديدة! ([اقرأ المزيد](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3675,7 +3687,7 @@ msgstr "" "en.wikipedia.org/wiki/Micro-blogging) المبنية على البرنامج الØر [StatusNet]" "(http://status.net/). يتشارك أعضاؤها رسائل قصيرة عن Øياتهم واهتماماتهم. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "الإداريون" @@ -3750,8 +3762,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4128,7 +4140,8 @@ msgstr "اذ٠إعدادت الموقع" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "تعذّر ØÙظ الاشتراك." @@ -4292,10 +4305,6 @@ msgstr "" msgid "No such tag." msgstr "لا وسم كهذا." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "لم تمنع هذا المستخدم." @@ -4584,149 +4593,247 @@ msgstr "النسخة" msgid "Author(s)" msgstr "المؤلÙ(ون)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Øجم غير صالØ." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "الانضمام للمجموعة Ùشل." -#: classes/Group_member.php:53 +#. 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 "ليس جزءا من المجموعة." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "ترك المجموعة Ùشل." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "تعذر تØديث المجموعة المØلية." -#: classes/Login_token.php:76 +#. 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 "لم يمكن إنشاء توكن الولوج Ù„%s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "أنت ممنوع من إرسال رسائل مباشرة." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "تعذّر إدراج الرسالة." -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "مشكلة ÙÙŠ ØÙظ الإشعار. طويل جدًا." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "مشكلة ÙÙŠ ØÙظ الإشعار. مستخدم غير معروÙ." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "مشكلة أثناء ØÙظ الإشعار." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "آر تي @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "ليس للمستخدم مل٠شخصي." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "تعذّر ØÙظ إشعار الموقع." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Ù…Ùشترك أصلا!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "لقد منعك المستخدم." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "غير مشترك!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "لم يمكن Øذ٠اشتراك ذاتي." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "تعذّر Øذ٠الاشتراك." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "تعذّر Øذ٠الاشتراك." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "أهلا بكم ÙÙŠ %1$s يا @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "تعذّر إنشاء المجموعة." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "تعذّر ضبط عضوية المجموعة." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "تعذّر ضبط عضوية المجموعة." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "تعذّر ØÙظ الاشتراك." @@ -4802,10 +4909,9 @@ msgstr "غير بريدك الإلكتروني وكلمة سرّك وأÙتار٠#. TRANS: Tooltip for main menu option "Services" #: lib/action.php:452 -#, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "اتصالات" +msgstr "اتصل بالخدمات" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services #: lib/action.php:455 @@ -6115,7 +6221,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "من" @@ -6168,26 +6274,26 @@ msgstr "Ùشل ÙÙŠ كتابة المل٠إلى القرص." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +msgstr "أوقÙت إضاÙØ© رÙع الملÙ." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "لم يمكن تØديد نوع MIME للملÙ." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6241,51 +6347,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "Ø´" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "ج" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "ر" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "غ" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "ÙÙŠ" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "ÙÙŠ السياق" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "مكرر بواسطة" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "رÙد على هذا الإشعار" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "رÙد" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "الإشعار مكرر" @@ -6543,7 +6649,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 @@ -6648,9 +6754,8 @@ msgid "Moderate" msgstr "راقب" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "مل٠المستخدم الشخصي" +msgstr "دور المستخدم" #: lib/userprofile.php:366 msgctxt "role" diff --git a/locale/arz/LC_MESSAGES/statusnet.po b/locale/arz/LC_MESSAGES/statusnet.po index 8fc629453..dc0555848 100644 --- a/locale/arz/LC_MESSAGES/statusnet.po +++ b/locale/arz/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:02:48+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:41+0000\n" "Language-Team: Egyptian Spoken Arabic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: arz\n" "X-Message-Group: out-statusnet\n" @@ -106,7 +106,7 @@ msgstr "لا صÙØÙ‡ كهذه" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -173,16 +173,18 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" +"%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل Øسابًا](%%%%action." +"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" #. TRANS: H1 text #: actions/all.php:182 @@ -214,7 +216,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -262,7 +264,7 @@ msgstr "لم يمكن ØÙظ الملÙ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -358,8 +360,9 @@ msgid "Could not delete favorite." msgstr "تعذّر Øذ٠المÙضله." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "لم يمكن ØÙظ الملÙ." #: actions/apifriendshipscreate.php:118 #, php-format @@ -374,8 +377,8 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "ما ينÙعش عدم متابعة Ù†Ùسك." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -504,6 +507,11 @@ msgstr "مجموعات %s" msgid "groups on %s" msgstr "مجموعات %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ارÙع ملÙًا" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -645,22 +653,26 @@ msgstr "ØÙØ°ÙÙت الØاله." msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "لم يوجد." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "نسق غير مدعوم." @@ -714,6 +726,10 @@ msgstr "الإشعارات الموسومه ب%s" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "لا مرÙÙ‚ كهذا." @@ -766,7 +782,7 @@ msgid "Preview" msgstr "عاين" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "اØØ°Ù" @@ -1047,7 +1063,7 @@ msgid "Do not delete this notice" msgstr "لا تØذ٠هذا الإشعار" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "اØذ٠هذا الإشعار" @@ -1323,7 +1339,8 @@ msgstr "كنيه غير صالØØ©: \"%s\"" msgid "Could not update group." msgstr "تعذر تØديث المجموعه." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "تعذّر إنشاء الكنى." @@ -2414,7 +2431,7 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2490,8 +2507,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr " مش نظام بيانات مدعوم." @@ -3352,7 +3369,7 @@ msgstr "ما ينÙعش تكرر الملاØظه بتاعتك." msgid "You already repeated that notice." msgstr "انت عيدت الملاØظه دى Ùعلا." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "مكرر" @@ -3390,7 +3407,7 @@ msgstr "" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3403,8 +3420,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3496,7 +3513,7 @@ msgstr "المنظمه" msgid "Description" msgstr "الوصÙ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Ø¥Øصاءات" @@ -3580,20 +3597,20 @@ msgid "" msgstr "" #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. أرسل شيئًا شيقًا ليضيÙÙ‡ إلى " "Ù…Ùضلته. :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل Øسابًا](%%%%action." "register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" @@ -3654,7 +3671,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "الأعضاء" @@ -3668,11 +3685,11 @@ msgstr "(لا شيء)" msgid "All members" msgstr "جميع الأعضاء" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "أنشئ" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3682,7 +3699,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3691,7 +3708,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "الإداريون" @@ -3766,8 +3783,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4150,7 +4167,8 @@ msgstr "اذ٠إعدادت الموقع" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "تعذّر ØÙظ الاشتراك." @@ -4315,10 +4333,6 @@ msgstr "" msgid "No such tag." msgstr "لا وسم كهذا." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "لم تمنع هذا المستخدم." @@ -4606,150 +4620,248 @@ msgstr "النسخه" msgid "Author(s)" msgstr "المؤلÙ/ين" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Øجم غير صالØ." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "دخول الجروپ Ùشل." -#: classes/Group_member.php:53 +#. 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 "مش جزء من الجروپ." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "الخروج من الجروپ Ùشل." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "تعذر تØديث المجموعه." -#: classes/Login_token.php:76 +#. 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 "ما Ù†Ùعش يتعمل امارة تسجيل دخول لـ %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "أنت ممنوع من إرسال رسائل مباشره." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "تعذّر إدراج الرساله." -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "مشكله ÙÙ‰ ØÙظ الإشعار. طويل جدًا." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "مشكله ÙÙ‰ ØÙظ الإشعار. مستخدم غير معروÙ." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "مشكله أثناء ØÙظ الإشعار." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "آر تى @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "ليس للمستخدم مل٠شخصى." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "مشكله أثناء ØÙظ الإشعار." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Ù…Ùشترك أصلا!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "لقد منعك المستخدم." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "غير مشترك!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "ما Ù†Ùعش ÙŠÙ…Ø³Ø Ø§Ù„Ø§Ø´ØªØ±Ø§Ùƒ الشخصى." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "تعذّر Øذ٠الاشتراك." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "تعذّر Øذ٠الاشتراك." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "أهلا بكم ÙÙ‰ %1$s يا @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "تعذّر إنشاء المجموعه." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "تعذّر ضبط عضويه المجموعه." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "تعذّر ضبط عضويه المجموعه." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "تعذّر ØÙظ الاشتراك." @@ -6100,7 +6212,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "من" @@ -6155,24 +6267,24 @@ msgstr "Ùشل ÙÙ‰ كتابه المل٠إلى القرص." msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "مش ناÙع يتØدد نوع الـMIME بتاع الÙايل." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6227,51 +6339,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "Ø´" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "ج" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "ر" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "غ" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "ÙÙŠ" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "ÙÙ‰ السياق" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "متكرر من" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "رÙد على هذا الإشعار" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "رÙد" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "الإشعار مكرر" @@ -6529,7 +6641,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po index 6f87d49be..4661bc824 100644 --- a/locale/bg/LC_MESSAGES/statusnet.po +++ b/locale/bg/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:02:52+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:42+0000\n" "Language-Team: Bulgarian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: bg\n" "X-Message-Group: out-statusnet\n" @@ -87,7 +87,6 @@ msgstr "Запазване" #. TRANS: Server error when page not found (404) #: actions/all.php:68 actions/public.php:98 actions/replies.php:93 #: actions/showfavorites.php:138 actions/tag.php:52 -#, fuzzy msgid "No such page." msgstr "ÐÑма такака Ñтраница." @@ -100,7 +99,7 @@ msgstr "ÐÑма такака Ñтраница." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -167,15 +166,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -208,7 +207,7 @@ msgstr "Бележки от %1$s и приÑтели в %2$s." #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -256,7 +255,7 @@ msgstr "Грешка при запазване на профила." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -356,7 +355,8 @@ msgid "Could not delete favorite." msgstr "Грешка при изтриване на любима бележка." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Грешка при проÑледÑване — потребителÑÑ‚ не е намерен." #: actions/apifriendshipscreate.php:118 @@ -372,8 +372,9 @@ msgstr "Грешка при Ñпиране на проÑледÑването — msgid "You cannot unfollow yourself." msgstr "Ðе можете да Ñпрете да Ñледите Ñебе Ñи." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "ТрÑбва да Ñе дадат два идентификатора или имена на потребители." #: actions/apifriendshipsshow.php:134 @@ -437,7 +438,7 @@ msgid "Too many aliases! Maximum %d." msgstr "" #: actions/apigroupcreate.php:267 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"." msgstr "Ðеправилен пÑевдоним: \"%s\"" @@ -504,6 +505,11 @@ msgstr "Групи на %s" msgid "groups on %s" msgstr "групи в %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Качване на файл" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -575,7 +581,7 @@ msgstr "" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "Разрешение или забрана на доÑтъпа" #: actions/apioauthauthorize.php:292 #, php-format @@ -606,12 +612,11 @@ msgstr "Парола" #: actions/apioauthauthorize.php:328 msgid "Deny" -msgstr "" +msgstr "Забрана" #: actions/apioauthauthorize.php:334 -#, fuzzy msgid "Allow" -msgstr "Ð’Ñички" +msgstr "Разрешение" #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." @@ -646,22 +651,26 @@ msgstr "Бележката е изтрита." msgid "No status with that ID found." msgstr "Ðе е открита бележка Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Твърде дълга бележка. ТрÑбва да е най-много 140 знака." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе е открито." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Ðеподдържан формат." @@ -715,6 +724,10 @@ msgstr "Бележки Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Бележки от %1$s в %2$s." +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Методът в API вÑе още Ñе разработва." + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -770,7 +783,7 @@ msgid "Preview" msgstr "Преглед" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Изтриване" @@ -1044,7 +1057,7 @@ msgid "Do not delete this notice" msgstr "Да не Ñе изтрива бележката" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Изтриване на бележката" @@ -1330,7 +1343,8 @@ msgstr "Ðеправилен пÑевдоним: \"%s\"" msgid "Could not update group." msgstr "Грешка при обновÑване на групата." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "Грешка при отбелÑзване като любима." @@ -1388,7 +1402,6 @@ msgstr "" #. TRANS: Button label #: actions/emailsettings.php:127 actions/imsettings.php:131 #: actions/smssettings.php:137 lib/applicationeditform.php:357 -#, fuzzy msgctxt "BUTTON" msgid "Cancel" msgstr "Отказ" @@ -1435,9 +1448,8 @@ msgstr "Ðово" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "ÐаÑтройки" +msgstr "ÐаÑтройки на е-поща" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1477,9 +1489,8 @@ msgstr "Публикуване на MicroID за адреÑа на е-пощат #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "ÐаÑтройките Ñа запазени." +msgstr "ÐаÑтройките на е-поща Ñа запазени." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -2496,7 +2507,7 @@ msgstr "Бележки, Ñъдържащи Ñ‚ÑŠÑ€Ñеното \"%1$s\" в %2$s!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2575,8 +2586,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Ðеподдържан формат на данните" @@ -3471,7 +3482,7 @@ msgstr "Ðе можете да повтарÑте ÑобÑтвена бележРmsgid "You already repeated that notice." msgstr "Вече Ñте повторили тази бележка." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Повторено" @@ -3509,7 +3520,7 @@ msgstr "ЕмиÑÐ¸Ñ Ñ Ð¾Ñ‚Ð³Ð¾Ð²Ð¾Ñ€Ð¸ на %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3522,8 +3533,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3617,7 +3628,7 @@ msgstr "ОрганизациÑ" msgid "Description" msgstr "ОпиÑание" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтики" @@ -3704,16 +3715,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3772,7 +3783,7 @@ msgstr "ЕмиÑÐ¸Ñ Ñ Ð±ÐµÐ»ÐµÐ¶ÐºÐ¸ на %s" msgid "FOAF for %s group" msgstr "ИзходÑща ÐºÑƒÑ‚Ð¸Ñ Ð·Ð° %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Членове" @@ -3780,17 +3791,17 @@ msgstr "Членове" #: lib/profileaction.php:152 lib/profileaction.php:255 lib/section.php:95 #: lib/subscriptionlist.php:127 lib/tagcloudsection.php:71 msgid "(None)" -msgstr "" +msgstr "(Без)" #: actions/showgroup.php:404 msgid "All members" msgstr "Ð’Ñички членове" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Създадена на" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3800,7 +3811,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3809,7 +3820,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтратори" @@ -3884,8 +3895,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4278,7 +4289,8 @@ msgstr "Запазване наÑтройките на Ñайта" msgid "You are not subscribed to that profile." msgstr "Ðе Ñте абонирани за този профил" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "Грешка при Ñъздаване на нов абонамент." @@ -4447,10 +4459,6 @@ msgstr "" msgid "No such tag." msgstr "ÐÑма такъв етикет." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Методът в API вÑе още Ñе разработва." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Ðе Ñте блокирали този потребител." @@ -4754,84 +4762,132 @@ msgstr "ВерÑиÑ" msgid "Author(s)" msgstr "Ðвтор(и)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Ðеправилен размер." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Профил на групата" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Грешка при обновÑване на групата." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Профил на групата" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Грешка при обновÑване на групата." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Грешка при отбелÑзване като любима." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "Грешка при изпращане на прÑкото Ñъобщение" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Грешка при вмъкване на Ñъобщението." -#: classes/Message.php:71 +#. 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 "Грешка при обновÑване на бележката Ñ Ð½Ð¾Ð² URL-адреÑ." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Грешка в базата от данни — отговор при вмъкването: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Проблем при запиÑване на бележката." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Грешка при запиÑване на бележката. Ðепознат потребител." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте " "отново Ñлед нÑколко минути." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 #, fuzzy msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " @@ -4840,78 +4896,127 @@ msgstr "" "Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте " "отново Ñлед нÑколко минути." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Забранено ви е да публикувате бележки в този Ñайт." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Проблем при запиÑване на бележката." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "ПотребителÑÑ‚ нÑма профил." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Грешка при запиÑване наÑтройките за Twitter" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "ПотребителÑÑ‚ е забранил да Ñе абонирате за него." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "ПотребителÑÑ‚ ви е блокирал." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Ðе Ñте абонирани!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Грешка при изтриване на абонамента." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Грешка при изтриване на абонамента." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Грешка при изтриване на абонамента." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Добре дошли в %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Грешка при Ñъздаване на групата." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Грешка при Ñъздаване на нов абонамент." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "Грешка при Ñъздаване на нов абонамент." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Грешка при Ñъздаване на нов абонамент." @@ -5067,7 +5172,6 @@ msgid "Help me!" msgstr "Помощ" #: lib/action.php:497 -#, fuzzy msgctxt "MENU" msgid "Help" msgstr "Помощ" @@ -6272,7 +6376,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "от" @@ -6327,25 +6431,25 @@ msgstr "Грешка при запиÑване файла на диÑка." msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Грешка при изтеглÑне на Ð¾Ð±Ñ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ðº" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6400,51 +6504,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "С" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "Ю" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "И" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "З" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "в контекÑÑ‚" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Повторено от" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "ОтговарÑне на тази бележка" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Отговор" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Бележката е повторена." @@ -6519,9 +6623,8 @@ msgid "Tags in %s's notices" msgstr "Етикети в бележките на %s" #: lib/plugin.php:115 -#, fuzzy msgid "Unknown" -msgstr "Ðепознато дейÑтвие" +msgstr "Ðепознато" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6617,9 +6720,8 @@ msgid "Sandbox this user" msgstr "Разблокиране на този потребител" #: lib/searchaction.php:120 -#, fuzzy msgid "Search site" -msgstr "ТърÑене" +msgstr "ТърÑене в Ñайта" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6708,9 +6810,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "СиÑтемна грешка при качване на файл." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/br/LC_MESSAGES/statusnet.po b/locale/br/LC_MESSAGES/statusnet.po index 098967713..676ef5a27 100644 --- a/locale/br/LC_MESSAGES/statusnet.po +++ b/locale/br/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:02:56+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:44+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: br\n" "X-Message-Group: out-statusnet\n" @@ -98,7 +98,7 @@ msgstr "N'eus ket eus ar bajenn-se." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -165,16 +165,18 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #. TRANS: H1 text #: actions/all.php:182 @@ -206,7 +208,7 @@ msgstr "Hizivadennoù %1$s ha mignoned e %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -254,7 +256,7 @@ msgstr "Diposubl eo enrollañ ar profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -352,7 +354,8 @@ msgid "Could not delete favorite." msgstr "Diposupl eo dilemel ar pennroll-mañ." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Diposupl eo heuliañ an implijer : N'eo ket bet kavet an implijer." #: actions/apifriendshipscreate.php:118 @@ -369,8 +372,9 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "Ne c'hallit ket chom hep ho heuliañ hoc'h-unan." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Rankout a reoc'h reiñ daou id pe lesanv." #: actions/apifriendshipsshow.php:134 @@ -498,6 +502,11 @@ msgstr "Strolladoù %s" msgid "groups on %s" msgstr "strolladoù war %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "C'hwitet en deus an urzhiad" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Arventenn oauth_token nann-roet." @@ -636,22 +645,26 @@ msgstr "Statud diverket." msgid "No status with that ID found." msgstr "N'eo ket bet kavet a statud evit an ID-mañ" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Re hir eo ! Ment hirañ an ali a zo a %d arouezenn." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "N'eo ket bet kavet." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Diembreget eo ar furmad-se." @@ -705,6 +718,10 @@ msgstr "Alioù merket gant %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Hizivadennoù merket gant %1$s e %2$s !" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "N'eo ket bet kavet ar restr stag." @@ -757,7 +774,7 @@ msgid "Preview" msgstr "Rakwelet" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Diverkañ" @@ -1031,7 +1048,7 @@ msgid "Do not delete this notice" msgstr "Arabat dilemel an ali-mañ" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Dilemel an ali-mañ" @@ -1099,9 +1116,8 @@ msgid "Theme for the site." msgstr "Dodenn evit al lec'hienn." #: actions/designadminpanel.php:467 -#, fuzzy msgid "Custom theme" -msgstr "Dodenn al lec'hienn" +msgstr "Dodenn personelaet" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." @@ -1163,11 +1179,11 @@ msgstr "Liammoù" #: actions/designadminpanel.php:651 msgid "Advanced" -msgstr "" +msgstr "Araokaet" #: actions/designadminpanel.php:655 msgid "Custom CSS" -msgstr "" +msgstr "CSS personelaet" #: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" @@ -1306,7 +1322,8 @@ msgstr "Alias fall : \"%s\"" msgid "Could not update group." msgstr "Diposubl eo hizivaat ar strollad." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Diposubl eo krouiñ an aliasoù." @@ -2391,7 +2408,7 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2466,8 +2483,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3346,7 +3363,7 @@ msgstr "Ne c'helloc'h ket adkemer ho ali deoc'h." msgid "You already repeated that notice." msgstr "Adkemeret o peus dija an ali-mañ." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Adlavaret" @@ -3384,7 +3401,7 @@ msgstr "Gwazh respontoù evit %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3397,8 +3414,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3488,7 +3505,7 @@ msgstr "Aozadur" msgid "Description" msgstr "Deskrivadur" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Stadegoù" @@ -3574,16 +3591,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3642,7 +3659,7 @@ msgstr "Neudenn alioù ar strollad %s (Atom)" msgid "FOAF for %s group" msgstr "Mignon ur mignon evit ar strollad %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Izili" @@ -3656,11 +3673,11 @@ msgstr "(Hini ebet)" msgid "All members" msgstr "An holl izili" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Krouet" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3670,7 +3687,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3679,7 +3696,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Merourien" @@ -3756,8 +3773,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4129,7 +4146,8 @@ msgstr "Enrollañ an arventennoù moned" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "" @@ -4296,10 +4314,6 @@ msgstr "" msgid "No such tag." msgstr "" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "N'o peus ket stanket an implijer-mañ." @@ -4585,147 +4599,245 @@ msgstr "Stumm" msgid "Author(s)" msgstr "Aozer(ien)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Ment direizh." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "C'hwitet eo bet an enskrivadur d'ar strollad." -#: classes/Group_member.php:53 +#. 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 "N'eo ezel eus strollad ebet." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "C'hwitet eo bet an disenskrivadur d'ar strollad." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "" -#: classes/Login_token.php:76 +#. 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 "" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Diposubl eo ensoc'hañ ur gemenadenn" -#: classes/Message.php:71 +#. 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 "Dibosupl eo hizivaat ar gemennadenn gant un URI nevez." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Ur gudenn 'zo bet pa veze enrollet an ali." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Ur gudenn 'zo bet pa veze enrollet boest degemer ar strollad." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "An implijer-mañ n'eus profil ebet dezhañ." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Diposubl eo enrollañ ali al lec'hienn." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Nac'het ez eus bet deoc'h en em goumanantiñ." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Koumanantet dija !" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "An implijer-mañ en deus stanket ac'hanoc'h." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Nann-koumanantet !" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." -msgstr "" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." +msgstr "Dibosupl eo paouez gant ar c'houmanant." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Diposubl eo dilemel ar postel kadarnadur." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Dibosupl eo paouez gant ar c'houmanant." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Deuet mat da %1$s, @%2$s !" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Dibosupl eo krouiñ ar strollad." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Dibosupl eo termeniñ URI ar strollad." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Dibosupl eo en em enskrivañ d'ar strollad." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Dibosupl eo enrollañ titouroù ar strollad lec'hel." @@ -6043,7 +6155,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "eus" @@ -6098,24 +6210,24 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Klaskit implijout ur furmad %s all." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6169,51 +6281,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "R" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "K" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "e" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "en amdro" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Adkemeret gant" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Respont d'an ali-mañ" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Respont" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Ali adkemeret" @@ -6471,7 +6583,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po index 2b5a2076d..94bca4e7f 100644 --- a/locale/ca/LC_MESSAGES/statusnet.po +++ b/locale/ca/LC_MESSAGES/statusnet.po @@ -1,6 +1,7 @@ # Translation of StatusNet to Catalan # # Author@translatewiki.net: Aleator +# Author@translatewiki.net: McDutchie # Author@translatewiki.net: Paucabot # Author@translatewiki.net: Toniher # -- @@ -10,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:01+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:45+0000\n" "Language-Team: Catalan\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ca\n" "X-Message-Group: out-statusnet\n" @@ -101,7 +102,7 @@ msgstr "No existeix la pà gina." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,20 +171,20 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Podeu provar d'[avisar %1$s](../%2$s) des del seu perfil o [publiqueu " -"quelcom per reclamar-li l'atenció](%%%%action.newnotice%%%%?status_textarea=%" -"3$s)." +"quelcom per cridar-li l'atenció](%%%%action.newnotice%%%%?status_textarea=%3" +"$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Per què no [registreu un compte](%%%%action.register%%%%) i aviseu %s o " "publiqueu un avÃs a la seva atenció." @@ -218,7 +219,7 @@ msgstr "Actualitzacions de %1$s i amics a %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -268,7 +269,7 @@ msgstr "No s'ha pogut desar el perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -368,7 +369,8 @@ msgid "Could not delete favorite." msgstr "No s'ha pogut eliminar el preferit." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "No s'ha pogut seguir l'usuari: l'usuari no existeix." #: actions/apifriendshipscreate.php:118 @@ -384,8 +386,9 @@ msgstr "No es pot deixar de seguir l'usuari: no s'ha trobat l'usuari." msgid "You cannot unfollow yourself." msgstr "No podeu deixar de seguir-vos a un mateix." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Cal proporcionar dos ids d'usuari o screen_names." #: actions/apifriendshipsshow.php:134 @@ -515,6 +518,11 @@ msgstr "%s grups" msgid "groups on %s" msgstr "grups sobre %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Puja un fitxer" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "No s'ha proporcionat cap parà metre oauth_token." @@ -660,22 +668,26 @@ msgstr "S'ha eliminat l'estat." msgid "No status with that ID found." msgstr "No s'ha trobat cap estatus amb la ID trobada." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Massa llarg. La longitud mà xima és de %d carà cters." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "No s'ha trobat." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "La mida mà xima de l'avÃs és %d carà cters, incloent l'URL de l'adjunt." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "El format no està implementat." @@ -722,13 +734,17 @@ msgstr "Repeticions de %s" #: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" -msgstr "Aviso etiquetats amb %s" +msgstr "Avisos etiquetats amb %s" #: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format msgid "Updates tagged with %1$s on %2$s!" msgstr "Actualitzacions etiquetades amb %1$s el %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Mètode API en construcció." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "No existeix l'adjunció." @@ -782,7 +798,7 @@ msgid "Preview" msgstr "Vista prèvia" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Elimina" @@ -1065,7 +1081,7 @@ msgid "Do not delete this notice" msgstr "No eliminis aquest avÃs" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Elimina aquest avÃs" @@ -1226,7 +1242,7 @@ msgstr "Torna a restaurar al valor per defecte" #: actions/useradminpanel.php:294 lib/applicationeditform.php:363 #: lib/designsettings.php:256 lib/groupeditform.php:202 msgid "Save" -msgstr "Guardar" +msgstr "Desa" #: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" @@ -1342,7 +1358,8 @@ msgstr "L'à lies no és và lid «%s»" msgid "Could not update group." msgstr "No s'ha pogut actualitzar el grup." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "No s'han pogut crear els à lies." @@ -1471,7 +1488,8 @@ msgstr "Envia'm un correu electrònic quan algú m'enviï una resposta amb @." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." -msgstr "Permetre que els amics em reclamin i m'enviïn un correu electrònic." +msgstr "" +"Permetre que els amics em cridin l'atenció i m'enviïn un correu electrònic." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:212 @@ -2164,8 +2182,7 @@ msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" "These people are already users and you were automatically subscribed to them:" -msgstr "" -"Aquestes persona ja són usuaris i tu està s subscrit automà ticament a ells:" +msgstr "Aquestes persones ja són usuaris i se us ha subscrit automà ticament:" #: actions/invite.php:144 msgid "Invitation(s) sent to the following people:" @@ -2176,8 +2193,8 @@ msgid "" "You will be notified when your invitees accept the invitation and register " "on the site. Thanks for growing the community!" msgstr "" -"Serà s avisat quan les teves invitacions siguin acceptades i els teus " -"convidats es registrin al lloc. Grà cies per fer créixer la comunitat." +"Se us notificarà quan els vostres convidats acceptin la invitació i es " +"registrin al lloc. Grà cies per fer créixer la comunitat!" #: actions/invite.php:162 msgid "" @@ -2304,7 +2321,7 @@ msgstr "%1$s ha abandonat el grup %2$s" #: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." -msgstr "Ja està s connectat." +msgstr "Ja hi heu iniciat una sessió." #: actions/login.php:148 msgid "Incorrect username or password." @@ -2500,19 +2517,20 @@ msgstr "" "Les actualitzacions que coincideixen amb el terme de cerca «%1$s» el %2$s!" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"Aquest usuari no permet reclamacions o no ha confirmar encara cap correu " -"electrònic." +"Aquest usuari no permet que li cridin l'atenció o no ha confirmat encara cap " +"correu electrònic." #: actions/nudge.php:94 msgid "Nudge sent" -msgstr "Reclamació enviada" +msgstr "S'ha cridat l'atenció" #: actions/nudge.php:97 msgid "Nudge sent!" -msgstr "Reclamació enviada!" +msgstr "S'ha cridat l'atenció!" #: actions/oauthappssettings.php:59 msgid "You must be logged in to list your applications." @@ -2580,8 +2598,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Si us plau, només URL %s sobre HTTP pla." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Format de data no suportat." @@ -2689,7 +2707,7 @@ msgstr "6 o més carà cters" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 #: actions/register.php:440 msgid "Confirm" -msgstr "Confirmar" +msgstr "Confirma" #: actions/passwordsettings.php:113 actions/recoverpassword.php:240 msgid "Same as password above" @@ -2697,7 +2715,7 @@ msgstr "Igual a la contrasenya de dalt" #: actions/passwordsettings.php:117 msgid "Change" -msgstr "Canviar" +msgstr "Canvia" #: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." @@ -3017,11 +3035,11 @@ msgstr "La biografia és massa llarga (mà x. %d carà cters)." #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." -msgstr "Franja horà ria no seleccionada." +msgstr "No s'ha seleccionat el fus horari." #: actions/profilesettings.php:241 msgid "Language is too long (max 50 chars)." -msgstr "L'idioma és massa llarg (mà x 50 carà cters)." +msgstr "La llengua és massa llarga (mà x. 50 carà cters)." #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format @@ -3047,7 +3065,7 @@ msgstr "No s'han pogut desar les etiquetes." #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 msgid "Settings saved." -msgstr "Configuració guardada." +msgstr "S'ha desat la configuració." #: actions/public.php:83 #, php-format @@ -3158,7 +3176,7 @@ msgstr "Núvol d'etiquetes" #: actions/recoverpassword.php:36 msgid "You are already logged in!" -msgstr "Ja t'has connectat!" +msgstr "Ja heu iniciat una sessió!" #: actions/recoverpassword.php:62 msgid "No such recovery code." @@ -3207,7 +3225,7 @@ msgstr "Sobrenom o adreça electrònica" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." msgstr "" -"El teu nom d'usuari en aquest servidor, o la teva adreça de correu " +"El vostre nom d'usuari en aquest servidor, o la vostra adreça de correu " "electrònic registrada." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 @@ -3236,11 +3254,11 @@ msgstr "6 o més carà cters, i no te n'oblidis!" #: actions/recoverpassword.php:243 msgid "Reset" -msgstr "Restablir" +msgstr "Reinicialitza" #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." -msgstr "Escriu un sobrenom o una adreça de correu electrònic." +msgstr "Escriviu un sobrenom o una adreça de correu electrònic." #: actions/recoverpassword.php:282 msgid "No user with that email address or username." @@ -3252,7 +3270,7 @@ msgstr "No hi ha cap adreça de correu electrònic registrada d'aquest usuari." #: actions/recoverpassword.php:313 msgid "Error saving address confirmation." -msgstr "Error en guardar confirmació de l'adreça." +msgstr "S'ha produït un error en desar la confirmació de l'adreça." #: actions/recoverpassword.php:338 msgid "" @@ -3312,7 +3330,7 @@ msgstr "L'adreça de correu electrònic ja existeix." #: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." -msgstr "Nom d'usuari o contrasenya invà lids." +msgstr "El nom d'usuari o la contrasenya no són và lids." #: actions/register.php:350 msgid "" @@ -3463,7 +3481,7 @@ msgstr "URL del teu perfil en un altre servei de microblogging compatible" #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:406 msgid "Subscribe" -msgstr "Subscriure's" +msgstr "Subscriu-m'hi" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" @@ -3499,7 +3517,7 @@ msgstr "No podeu repetir el vostre propi avÃs." msgid "You already repeated that notice." msgstr "Ja havÃeu repetit l'avÃs." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repetit" @@ -3534,10 +3552,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Canal de respostes de %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Aquesta és la lÃnia temporal que mostra les respostes a %1$s, però %2$s " "encara no ha rebut cap avÃs a la seva atenció." @@ -3552,13 +3570,13 @@ msgstr "" "[uniu-vos a grups](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Podeu provar d'[avisar %1$s](../%2$s) o [enviar quelcom per reclamar la seva " -"atenció](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Podeu provar d'[avisar %1$s](../%2$s) o [enviar quelcom per cridar-li " +"l'atenció](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format @@ -3646,7 +3664,7 @@ msgstr "Organització" msgid "Description" msgstr "Descripció" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "EstadÃstiques" @@ -3734,20 +3752,20 @@ msgstr "" "avisos que us agraden per arxivar-los per a més endavant i fer-los conèixer." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s no ha afegit cap avÃs als seus preferits encara. Envieu quelcom " "interessant que pugui afegir-hi." #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s no ha afegit cap avÃs als seus preferits encara. Per què no [registreu un " "compte](%%%%action.register%%%%) i llavors envieu quelcom interessant que " @@ -3809,7 +3827,7 @@ msgstr "Canal d'avisos del grup %s (Atom)" msgid "FOAF for %s group" msgstr "Safata de sortida per %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membres" @@ -3823,11 +3841,11 @@ msgstr "(Cap)" msgid "All members" msgstr "Tots els membres" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "S'ha creat" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3843,7 +3861,7 @@ msgstr "" "%) per formar part del grup i molt més! ([Més informació...](%%%%doc.help%%%" "%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3856,7 +3874,7 @@ msgstr "" "[StatusNet](http://status.net/). Els seus membre comparteixen missatges " "curts sobre llur vida i interessos. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administradors" @@ -3932,13 +3950,13 @@ msgstr "" "podria ser un bon moment per començar :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"Podeu provar d'avisar %1$s o [enviar quelcom per reclamar la seva atenció](%%" -"%%action.newnotice%%%%?status_textarea=%2$s)." +"Podeu provar d'avisar %1$s o [enviar quelcom per cridar-li l'atenció](%%%%" +"action.newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -4119,8 +4137,8 @@ msgstr "Parà metres de l'SMS" #, php-format msgid "You can receive SMS messages through email from %%site.name%%." msgstr "" -"Pots rebre missatges SMS a través del teu coreu electrònic des de %%site.name" -"%%." +"Podeu rebre missatges SMS a través del vostre correu electrònic des de %%" +"site.name%%." #. TRANS: Message given in the SMS settings if SMS is not enabled on the site. #: actions/smssettings.php:97 @@ -4179,7 +4197,7 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" -"Enviar-me avisos a través de SMS; puc entendre que això repercutirà en una " +"Envia'm avisos a través de l'SMS; puc entendre que això repercutirà en una " "exorbitant cà rrega del meu transport." #. TRANS: Confirmation message for successful SMS preferences save. @@ -4200,7 +4218,7 @@ msgstr "No s'ha sel·leccionat cap transport." #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 msgid "That is already your phone number." -msgstr "Aquest ja és el teu número de telèfon." +msgstr "Aquest ja és el vostre número de telèfon." #. TRANS: Message given saving SMS phone number that is already set for another user. #: actions/smssettings.php:356 @@ -4327,7 +4345,8 @@ msgstr "Desa els parà metres de les instantà nies" msgid "You are not subscribed to that profile." msgstr "No està s subscrit a aquest perfil." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "No s'ha pogut guardar la subscripció." @@ -4507,10 +4526,6 @@ msgstr "" msgid "No such tag." msgstr "No existeix aquesta etiqueta." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Mètode API en construcció." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "No heu blocat l'usuari." @@ -4611,7 +4626,7 @@ msgstr "Si es permet als usuaris invitar-ne de nous." #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "Autoritzar subscripció" +msgstr "Autoritza la subscripció" #: actions/userauthorization.php:110 msgid "" @@ -4822,83 +4837,131 @@ msgstr "Versió" msgid "Author(s)" msgstr "Autoria" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "Cap fitxer pot ser major de %d bytes i el fitxer que heu enviat era de %d " "bytes. Proveu de pujar una versió de mida menor." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Un fitxer d'aquesta mida excediria la vostra quota d'usuari de %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "Un fitxer d'aquesta mida excediria la vostra quota mensual de %d bytes." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "La mida no és và lida." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "No s'ha pogut unir al grup." -#: classes/Group_member.php:53 +#. 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 "No s'és part del grup." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "La sortida del grup ha fallat." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "No s'ha pogut actualitzar el grup local." -#: classes/Login_token.php:76 +#. 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 "No s'ha pogut crear un testimoni d'inici de sessió per a %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "Se us ha bandejat enviar missatges directes." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "No s'ha pogut inserir el missatge." -#: classes/Message.php:71 +#. 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 "No s'ha pogut inserir el missatge amb la 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "" "S'ha produït un error de la base de dades en inserir una etiqueta de " "coixinet (%): %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "S'ha produït un problema en desar l'avÃs. És massa llarg." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "S'ha produït un problema en desar l'avÃs. Usuari desconegut." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Massa avisos massa rà pid; pren un respir i publica de nou en uns minuts." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4906,71 +4969,122 @@ msgstr "" "Massa missatges duplicats en massa poc temps; preneu un respir i torneu a " "enviar en uns minuts." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Ha estat bandejat de publicar avisos en aquest lloc." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." -msgstr "Problema en guardar l'avÃs." +msgstr "S'ha produït un problema en desar l'avÃs." + +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "S'ha produït un problema en desar la safata d'entrada del grup." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "L'usuari no té perfil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "No s'ha pogut desar l'avÃs del lloc." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Se us ha banejat la subscripció." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Ja hi esteu subscrit!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Un usuari t'ha bloquejat." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "No hi esteu subscrit!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "No s'ha pogut eliminar l'autosubscripció." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "No s'ha pogut eliminar el testimoni OMB de la subscripció." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "No s'ha pogut eliminar la subscripció." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Us donem la benvinguda a %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "No s'ha pogut crear el grup." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "No es pot definir l'URI del grup." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "No s'ha pogut establir la pertinença d'aquest grup." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "No s'ha pogut desar la informació del grup local." @@ -5572,7 +5686,7 @@ msgstr "No té massa sentit avisar-se a un mateix!" #: lib/command.php:234 #, php-format msgid "Nudge sent to %s" -msgstr "S'ha enviat un avÃs a %s" +msgstr "S'ha cridat l'atenció a %s" #: lib/command.php:260 #, php-format @@ -6248,7 +6362,7 @@ msgstr "%s: confirmeu-ho si teniu aquest número de telèfon amb aquest codi:" #: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" -msgstr "Has estat reclamat per %s" +msgstr "%s us ha cridat l'atenció" #. TRANS: Body for 'nudge' notification email #: lib/mail.php:489 @@ -6405,8 +6519,8 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" -"1$s (@%9$s) acaba d'enviar un avÃs un avÃs a la vostra atenció (una resposta " -"amb @) a %2$s.\n" +"%1$s (@%9$s) acaba d'enviar un avÃs un avÃs a la vostra atenció (una " +"resposta amb @) a %2$s.\n" "\n" "L'avÃs és a continuació:\n" "\n" @@ -6442,7 +6556,7 @@ msgstr "" "usuaris en la conversa. La gent pot enviar-vos missatges només per als " "vostres ulls." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "de" @@ -6503,24 +6617,24 @@ msgstr "No s'ha pogut escriure el fitxer al disc." msgid "File upload stopped by extension." msgstr "L'extensió ha aturat la cà rrega del fitxer." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "El fitxer excedeix la quota de l'usuari." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "No s'ha pogut moure el fitxer al directori de destinació." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "No s'ha pogut determinar el tipus MIME del fitxer." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Proveu d'emprar un altre format %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s no és un tipus de fitxer permès al servidor." @@ -6576,65 +6690,65 @@ msgstr "" "l'esperat; torneu-ho a provar més tard" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "O" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "a" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "en context" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetit per" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "respondre a aquesta nota" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Respon" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "AvÃs repetit" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "Reclamar aquest usuari" +msgstr "Crida l'atenció a l'usuari" #: lib/nudgeform.php:128 msgid "Nudge" -msgstr "Reclamar" +msgstr "Crida l'atenció" #: lib/nudgeform.php:128 msgid "Send a nudge to this user" -msgstr "Enviar una reclamació a aquest usuari" +msgstr "Crida l'atenció a l'usuari" #: lib/oauthstore.php:283 msgid "Error inserting new profile" @@ -6878,8 +6992,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "El servidor no pot gestionar la pujada de temes si no pot tractar ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "La pujada del tema ha fallat o no hi és." +msgid "The theme file is missing or the upload failed." +msgstr "Manca el fitxer del tema o la pujada ha fallat." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 @@ -6899,7 +7013,7 @@ msgstr "" #: lib/themeuploader.php:178 msgid "Invalid theme archive: missing file css/display.css" -msgstr "L'arxiu del tema no és và lid: manca el fitxer de css / display.css" +msgstr "L'arxiu del tema no és và lid: manca el fitxer css/display.css" #: lib/themeuploader.php:205 msgid "" diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po index f9bd7ded9..0834169e9 100644 --- a/locale/cs/LC_MESSAGES/statusnet.po +++ b/locale/cs/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:06+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:47+0000\n" "Language-Team: Czech\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: cs\n" "X-Message-Group: out-statusnet\n" @@ -106,7 +106,7 @@ msgstr "Žádné takové oznámenÃ." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -173,15 +173,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -215,7 +215,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +266,7 @@ msgstr "Nelze uložit profil" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -365,8 +365,9 @@ msgid "Could not delete favorite." msgstr "Nelze smazat oblÃbenou položku." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "Nelze pÅ™esmÄ›rovat na server: %s" #: actions/apifriendshipscreate.php:118 #, php-format @@ -383,8 +384,8 @@ msgstr "Nelze pÅ™esmÄ›rovat na server: %s" msgid "You cannot unfollow yourself." msgstr "Nelze aktualizovat uživatele" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -517,6 +518,11 @@ msgstr "" msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Upload" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -664,23 +670,27 @@ msgstr "Obrázek nahrán" msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Je to pÅ™ÃliÅ¡ dlouhé. Maximálnà sdÄ›lenà délka je 140 znaků" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "Žádný požadavek nebyl nalezen!" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "Nepodporovaný formát obrázku." @@ -735,6 +745,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "Mikroblog od %s" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -790,7 +804,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Odstranit" @@ -1081,7 +1095,7 @@ msgid "Do not delete this notice" msgstr "Žádné takové oznámenÃ." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Odstranit toto oznámenÃ" @@ -1373,7 +1387,8 @@ msgstr "Neplatná adresa '%s'" msgid "Could not update group." msgstr "Nelze aktualizovat uživatele" -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "Nelze uložin informace o obrázku" @@ -2515,7 +2530,7 @@ msgstr "VÅ¡echny položky obsahujÃcà \"%s\"" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2592,8 +2607,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3492,7 +3507,7 @@ msgstr "Nemůžete se registrovat, pokud nesouhlasÃte s licencÃ." msgid "You already repeated that notice." msgstr "Již jste pÅ™ihlášen" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "VytvoÅ™it" @@ -3532,7 +3547,7 @@ msgstr "Feed sdÄ›lenà pro %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3545,8 +3560,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3645,7 +3660,7 @@ msgstr "UmÃstÄ›nÃ" msgid "Description" msgstr "OdbÄ›ry" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistiky" @@ -3730,16 +3745,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3799,7 +3814,7 @@ msgstr "Feed sdÄ›lenà pro %s" msgid "FOAF for %s group" msgstr "Feed sdÄ›lenà pro %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 #, fuzzy msgid "Members" msgstr "ÄŒlenem od" @@ -3814,12 +3829,12 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "VytvoÅ™it" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3829,7 +3844,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3838,7 +3853,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3914,8 +3929,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4304,7 +4319,8 @@ msgstr "NastavenÃ" msgid "You are not subscribed to that profile." msgstr "Neodeslal jste nám profil" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "Nelze vytvoÅ™it odebÃrat" @@ -4477,10 +4493,6 @@ msgstr "" msgid "No such tag." msgstr "Žádné takové oznámenÃ." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4789,160 +4801,257 @@ msgstr "OsobnÃ" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Neplatná velikost" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Žádné takové oznámenÃ." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Nelze aktualizovat uživatele" -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Žádné takové oznámenÃ." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Nelze aktualizovat uživatele" -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Nelze uložin informace o obrázku" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Chyba v DB pÅ™i vkládánà odpovÄ›di: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Problém pÅ™i ukládánà sdÄ›lenÃ" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 #, fuzzy msgid "Problem saving notice. Unknown user." msgstr "Problém pÅ™i ukládánà sdÄ›lenÃ" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problém pÅ™i ukládánà sdÄ›lenÃ" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Problém pÅ™i ukládánà sdÄ›lenÃ" #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Uživatel nemá profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Problém pÅ™i ukládánà sdÄ›lenÃ" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 #, fuzzy msgid "User has blocked you." msgstr "Uživatel nemá profil." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "NepÅ™ihlášen!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Nelze smazat odebÃránÃ" -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Nelze smazat odebÃránÃ" -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Nelze smazat odebÃránÃ" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 #, fuzzy msgid "Could not create group." msgstr "Nelze uložin informace o obrázku" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Nelze vytvoÅ™it odebÃrat" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "Nelze vytvoÅ™it odebÃrat" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Nelze vytvoÅ™it odebÃrat" @@ -6323,7 +6432,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr " od " @@ -6379,25 +6488,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Nelze aktualizovat uživatele" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6456,54 +6565,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "Žádný obsah!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "VytvoÅ™it" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 #, fuzzy msgid "Reply" msgstr "odpovÄ›Ä" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "SdÄ›lenÃ" @@ -6772,9 +6881,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Chyba systému pÅ™i nahrávánà souboru" +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/da/LC_MESSAGES/statusnet.po b/locale/da/LC_MESSAGES/statusnet.po new file mode 100644 index 000000000..772ca0e56 --- /dev/null +++ b/locale/da/LC_MESSAGES/statusnet.po @@ -0,0 +1,6737 @@ +# Translation of StatusNet to Danish +# +# Author@translatewiki.net: Mstenbaek +# -- +# This file is distributed under the same license as the StatusNet package. +# +msgid "" +msgstr "" +"Project-Id-Version: StatusNet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:48+0000\n" +"Language-Team: Danish\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" +"X-Translation-Project: translatewiki.net at http://translatewiki.net\n" +"X-Language-Code: da\n" +"X-Message-Group: out-statusnet\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Page title +#. TRANS: Menu item for site administration +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 +msgid "Access" +msgstr "Adgang" + +#. TRANS: Page notice +#: actions/accessadminpanel.php:67 +msgid "Site access settings" +msgstr "Indstillinger for adgang til webstedet" + +#. TRANS: Form legend for registration form. +#: actions/accessadminpanel.php:161 +msgid "Registration" +msgstr "Registrering" + +#. TRANS: Checkbox instructions for admin setting "Private" +#: actions/accessadminpanel.php:165 +msgid "Prohibit anonymous users (not logged in) from viewing site?" +msgstr "Forhindre anonyme brugere (som ikke er logget ind) i at se webstedet?" + +#. TRANS: Checkbox label for prohibiting anonymous users from viewing site. +#: actions/accessadminpanel.php:167 +msgctxt "LABEL" +msgid "Private" +msgstr "Privat" + +#. TRANS: Checkbox instructions for admin setting "Invite only" +#: actions/accessadminpanel.php:174 +msgid "Make registration invitation only." +msgstr "Registreing er kun mulig gennem en invitation" + +#. TRANS: Checkbox label for configuring site as invite only. +#: actions/accessadminpanel.php:176 +msgid "Invite only" +msgstr "Kun Inviterede" + +#. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) +#: actions/accessadminpanel.php:183 +msgid "Disable new registrations." +msgstr "Forhindre nye registreringer" + +#. TRANS: Checkbox label for disabling new user registrations. +#: actions/accessadminpanel.php:185 +msgid "Closed" +msgstr "Lukket" + +#. TRANS: Title / tooltip for button to save access settings in site admin panel +#: actions/accessadminpanel.php:202 +msgid "Save access settings" +msgstr "Gem adgangsindstillinger" + +#. TRANS: Button label to save e-mail preferences. +#. TRANS: Button label to save IM preferences. +#. TRANS: Button label to save SMS preferences. +#. TRANS: Button label +#: actions/accessadminpanel.php:203 actions/emailsettings.php:224 +#: actions/imsettings.php:184 actions/smssettings.php:209 +#: lib/applicationeditform.php:361 +msgctxt "BUTTON" +msgid "Save" +msgstr "Gem" + +#. TRANS: Server error when page not found (404) +#: actions/all.php:68 actions/public.php:98 actions/replies.php:93 +#: actions/showfavorites.php:138 actions/tag.php:52 +msgid "No such page." +msgstr "Siden findes ikke" + +#: actions/all.php:79 actions/allrss.php:68 +#: actions/apiaccountupdatedeliverydevice.php:114 +#: actions/apiaccountupdateprofile.php:105 +#: actions/apiaccountupdateprofilebackgroundimage.php:116 +#: actions/apiaccountupdateprofileimage.php:105 actions/apiblockcreate.php:97 +#: actions/apiblockdestroy.php:96 actions/apidirectmessage.php:77 +#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 +#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 +#: actions/apigroupleave.php:100 actions/apigrouplist.php:73 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 +#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 +#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 +#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 +#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58 +#: actions/hcard.php:67 actions/microsummary.php:62 actions/newmessage.php:116 +#: actions/otp.php:76 actions/remotesubscribe.php:145 +#: actions/remotesubscribe.php:154 actions/replies.php:73 +#: actions/repliesrss.php:38 actions/rsd.php:116 actions/showfavorites.php:105 +#: actions/userbyid.php:74 actions/usergroups.php:93 actions/userrss.php:40 +#: actions/xrds.php:71 lib/command.php:478 lib/galleryaction.php:59 +#: lib/mailbox.php:82 lib/profileaction.php:77 +msgid "No such user." +msgstr "Ingen bruger fundet." + +#. TRANS: Page title. %1$s is user nickname, %2$d is page number +#: actions/all.php:90 +#, php-format +msgid "%1$s and friends, page %2$d" +msgstr "%1$s og venner, side %2$d" + +#. TRANS: Page title. %1$s is user nickname +#. TRANS: H1 text. %1$s is user nickname +#. TRANS: Message is used as link title. %s is a user nickname. +#: actions/all.php:93 actions/all.php:185 actions/allrss.php:116 +#: actions/apitimelinefriends.php:210 actions/apitimelinehome.php:116 +#: lib/personalgroupnav.php:100 +#, php-format +msgid "%s and friends" +msgstr "%s og venner" + +#. TRANS: %1$s is user nickname +#: actions/all.php:107 +#, php-format +msgid "Feed for friends of %s (RSS 1.0)" +msgstr "Feed for venner af %s (RSS 1.0)" + +#. TRANS: %1$s is user nickname +#: actions/all.php:116 +#, php-format +msgid "Feed for friends of %s (RSS 2.0)" +msgstr "Feed for venner af %s (RSS 1.0)" + +#. TRANS: %1$s is user nickname +#: actions/all.php:125 +#, php-format +msgid "Feed for friends of %s (Atom)" +msgstr "Feed for venner af %s (Atom)" + +#. TRANS: %1$s is user nickname +#: actions/all.php:138 +#, php-format +msgid "" +"This is the timeline for %s and friends but no one has posted anything yet." +msgstr "" +"Dette er tidslinjen for %s og venner, men ingen har skrevet noget endnu." + +#: actions/all.php:143 +#, php-format +msgid "" +"Try subscribing to more people, [join a group](%%action.groups%%) or post " +"something yourself." +msgstr "" +"Prøv at abonnere pÃ¥ flere personer, [deltage i en gruppe] (%%action.groups%" +"%) eller skriv noget selv." + +#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" +#: actions/all.php:146 +#, php-format +msgid "" +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." +msgstr "" + +#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 +#, fuzzy, php-format +msgid "" +"Why not [register an account](%%%%action.register%%%%) and then nudge %s or " +"post a notice to them." +msgstr "" +"Hvorfor ikke [registrere en konto] (%%action.register%%), og vær den første " +"til at tilføje en meddelelse til dine favoritter!" + +#. TRANS: H1 text +#: actions/all.php:182 +msgid "You and friends" +msgstr "Du og vennerne" + +#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name. +#. TRANS: Message is used as a subtitle. %1$s is a user nickname, %2$s is a site name. +#: actions/allrss.php:121 actions/apitimelinefriends.php:216 +#: actions/apitimelinehome.php:122 +#, php-format +msgid "Updates from %1$s and friends on %2$s!" +msgstr "Opdateringer fra %1$s og venner pÃ¥ %2$s!" + +#: actions/apiaccountratelimitstatus.php:72 +#: actions/apiaccountupdatedeliverydevice.php:94 +#: actions/apiaccountupdateprofile.php:97 +#: actions/apiaccountupdateprofilebackgroundimage.php:94 +#: actions/apiaccountupdateprofilecolors.php:118 +#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 +#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 +#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:139 +#: actions/apigroupismember.php:115 actions/apigroupjoin.php:156 +#: actions/apigroupleave.php:142 actions/apigrouplist.php:137 +#: actions/apigrouplistall.php:122 actions/apigroupmembership.php:107 +#: actions/apigroupshow.php:116 actions/apihelptest.php:88 +#: actions/apistatusesdestroy.php:104 actions/apistatusesretweets.php:112 +#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 +#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 +#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 +#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 +#: actions/apitimelineretweetedtome.php:121 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 +msgid "API method not found." +msgstr "API metode ikke fundet." + +#: actions/apiaccountupdatedeliverydevice.php:86 +#: actions/apiaccountupdateprofile.php:89 +#: actions/apiaccountupdateprofilebackgroundimage.php:86 +#: actions/apiaccountupdateprofilecolors.php:110 +#: actions/apiaccountupdateprofileimage.php:84 actions/apiblockcreate.php:89 +#: actions/apiblockdestroy.php:88 actions/apidirectmessagenew.php:109 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 +#: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 +#: actions/apigroupcreate.php:105 actions/apigroupjoin.php:92 +#: actions/apigroupleave.php:92 actions/apimediaupload.php:67 +#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:198 +msgid "This method requires a POST." +msgstr "Denne metode kræver en POST." + +#: actions/apiaccountupdatedeliverydevice.php:106 +msgid "" +"You must specify a parameter named 'device' with a value of one of: sms, im, " +"none." +msgstr "" +"Du skal angive en parameter med navnet 'device', med værdien sat til en af " +"følgende: sms, im, none." + +#: actions/apiaccountupdatedeliverydevice.php:133 +msgid "Could not update user." +msgstr "Kunne ikke opdatere brugeren." + +#: actions/apiaccountupdateprofile.php:112 +#: actions/apiaccountupdateprofilebackgroundimage.php:194 +#: actions/apiaccountupdateprofilecolors.php:185 +#: actions/apiaccountupdateprofileimage.php:130 actions/apiusershow.php:108 +#: actions/avatarbynickname.php:80 actions/foaf.php:65 actions/hcard.php:74 +#: actions/replies.php:80 actions/usergroups.php:100 lib/galleryaction.php:66 +#: lib/profileaction.php:84 +msgid "User has no profile." +msgstr "Brugeren har ingen profil." + +#: actions/apiaccountupdateprofile.php:147 +msgid "Could not save profile." +msgstr "Kunne ikke gemme profilen." + +#: actions/apiaccountupdateprofilebackgroundimage.php:108 +#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 +#: actions/designadminpanel.php:123 actions/editapplication.php:118 +#: actions/newapplication.php:101 actions/newnotice.php:94 +#: lib/designsettings.php:283 +#, php-format +msgid "" +"The server was unable to handle that much POST data (%s bytes) due to its " +"current configuration." +msgstr "" +"Serveren var ikke i stand til at hÃ¥ndtere sÃ¥ meget POST data (%s bytes) pÃ¥ " +"grund af sin nuværende konfiguration." + +#: actions/apiaccountupdateprofilebackgroundimage.php:136 +#: actions/apiaccountupdateprofilebackgroundimage.php:146 +#: actions/apiaccountupdateprofilecolors.php:164 +#: actions/apiaccountupdateprofilecolors.php:174 +#: actions/groupdesignsettings.php:290 actions/groupdesignsettings.php:300 +#: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 +#: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 +msgid "Unable to save your design settings." +msgstr "Kunne ikke gemme dine design indstillinger." + +#: actions/apiaccountupdateprofilebackgroundimage.php:187 +#: actions/apiaccountupdateprofilecolors.php:142 +msgid "Could not update your design." +msgstr "Kunne ikke opdatere dit design." + +#: actions/apiblockcreate.php:105 +msgid "You cannot block yourself!" +msgstr "Du kan ikke blokere dig selv!" + +#: actions/apiblockcreate.php:126 +msgid "Block user failed." +msgstr "Blokering af bruger mislykkedes" + +#: actions/apiblockdestroy.php:114 +msgid "Unblock user failed." +msgstr "Ophæv blokering af bruger mislykkedes." + +#: actions/apidirectmessage.php:89 +#, php-format +msgid "Direct messages from %s" +msgstr "Direkte beskeder fra %s" + +#: actions/apidirectmessage.php:93 +#, php-format +msgid "All the direct messages sent from %s" +msgstr "Alle direkte beskeder, sendt fra %s" + +#: actions/apidirectmessage.php:101 +#, php-format +msgid "Direct messages to %s" +msgstr "Direkte beskeder til %s" + +#: actions/apidirectmessage.php:105 +#, php-format +msgid "All the direct messages sent to %s" +msgstr "Alle direkte beskeder, sendt til %s" + +#: actions/apidirectmessagenew.php:118 +msgid "No message text!" +msgstr "Ingen besked tekst!" + +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format +msgid "That's too long. Max message size is %d chars." +msgstr "Det er for langt. Maksimal besked størrelse er %d tegn." + +#: actions/apidirectmessagenew.php:138 +msgid "Recipient user not found." +msgstr "Modtager bruger ikke fundet" + +#: actions/apidirectmessagenew.php:142 +msgid "Can't send direct messages to users who aren't your friend." +msgstr "Kan ikke sende direkte beskeder til brugere, som ikke din ven." + +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 +msgid "No status found with that ID." +msgstr "Ingen status fundet med dette ID." + +#: actions/apifavoritecreate.php:120 +msgid "This status is already a favorite." +msgstr "Denne status er allerede en favorit." + +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 +msgid "Could not create favorite." +msgstr "Kunne ikke oprette favorit." + +#: actions/apifavoritedestroy.php:123 +msgid "That status is not a favorite." +msgstr "Denne status er ikke en favorit." + +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 +msgid "Could not delete favorite." +msgstr "Kunne ikke slette favorit." + +#: actions/apifriendshipscreate.php:109 +msgid "Could not follow user: profile not found." +msgstr "" + +#: actions/apifriendshipscreate.php:118 +#, php-format +msgid "Could not follow user: %s is already on your list." +msgstr "Kunne ikke følge bruger: %s er allerede pÃ¥ din liste." + +#: actions/apifriendshipsdestroy.php:109 +msgid "Could not unfollow user: User not found." +msgstr "Kunne ikke stoppe følgeskab af bruger: Bruger ikke fundet." + +#: actions/apifriendshipsdestroy.php:120 +msgid "You cannot unfollow yourself." +msgstr "Du kan ikke ophæve følgeskab til dig selv." + +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "" + +#: actions/apifriendshipsshow.php:134 +msgid "Could not determine source user." +msgstr "Kunne ikke finde kilde bruger" + +#: actions/apifriendshipsshow.php:142 +msgid "Could not find target user." +msgstr "Kunne ikke finde mÃ¥l bruger." + +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 +#: actions/newgroup.php:126 actions/profilesettings.php:215 +#: actions/register.php:212 +msgid "Nickname must have only lowercase letters and numbers and no spaces." +msgstr "Kaldenavn mÃ¥ kun have smÃ¥ bogstaver og tal og ingen mellemrum." + +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 +#: actions/newgroup.php:130 actions/profilesettings.php:238 +#: actions/register.php:215 +msgid "Nickname already in use. Try another one." +msgstr "Kaldenavn allerede er i brug. Prøv med et andet." + +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 +#: actions/newgroup.php:133 actions/profilesettings.php:218 +#: actions/register.php:217 +msgid "Not a valid nickname." +msgstr "Ikke et gyldigt kaldenavn" + +#: actions/apigroupcreate.php:199 actions/editapplication.php:215 +#: actions/editgroup.php:199 actions/newapplication.php:203 +#: actions/newgroup.php:139 actions/profilesettings.php:222 +#: actions/register.php:224 +msgid "Homepage is not a valid URL." +msgstr "Hjemmesiden er ikke en gyldig URL adresse." + +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 +#: actions/newgroup.php:142 actions/profilesettings.php:225 +#: actions/register.php:227 +msgid "Full name is too long (max 255 chars)." +msgstr "Fulde navn er for langt (max 255 tegn)." + +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 +#: actions/newapplication.php:172 +#, php-format +msgid "Description is too long (max %d chars)." +msgstr "Beskrivelse er for lang (max %d tegn)." + +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 +#: actions/newgroup.php:148 actions/profilesettings.php:232 +#: actions/register.php:234 +msgid "Location is too long (max 255 chars)." +msgstr "Placering er for lang (max 255 tegn)." + +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 +#: actions/newgroup.php:159 +#, php-format +msgid "Too many aliases! Maximum %d." +msgstr "Alt for mange aliaser! Maksimum %d." + +#: actions/apigroupcreate.php:267 +#, php-format +msgid "Invalid alias: \"%s\"." +msgstr "Ugyldigt alias: \"%s\"." + +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 +#: actions/newgroup.php:172 +#, php-format +msgid "Alias \"%s\" already in use. Try another one." +msgstr "Alias \"%s\" er allerede i brug. Prøv med et andet." + +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 +#: actions/newgroup.php:178 +msgid "Alias can't be the same as nickname." +msgstr "Alias kan ikke være det samme som kaldenavn." + +#: actions/apigroupismember.php:96 actions/apigroupjoin.php:105 +#: actions/apigroupleave.php:105 actions/apigroupmembership.php:92 +#: actions/apigroupshow.php:83 actions/apitimelinegroup.php:92 +msgid "Group not found." +msgstr "Gruppen blev ikke fundet." + +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 +msgid "You are already a member of that group." +msgstr "Du er allerede medlem af denne gruppe." + +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 +msgid "You have been blocked from that group by the admin." +msgstr "Du er blevet blokeret fra denne gruppe af administratoren." + +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 +#, php-format +msgid "Could not join user %1$s to group %2$s." +msgstr "Kunne ikke tilslutte bruger %1$s til gruppe %2$s." + +#: actions/apigroupleave.php:115 +msgid "You are not a member of this group." +msgstr "Du er ikke medlem af denne gruppe." + +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#, php-format +msgid "Could not remove user %1$s from group %2$s." +msgstr "Kunne ikke fjerne brugeren %1$s fra gruppen %2$s." + +#. TRANS: %s is a user name +#: actions/apigrouplist.php:98 +#, php-format +msgid "%s's groups" +msgstr "%s's grupper" + +#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s +#: actions/apigrouplist.php:108 +#, php-format +msgid "%1$s groups %2$s is a member of." +msgstr "%1$s grupper som %2$s er medlem af." + +#. TRANS: Message is used as a title. %s is a site name. +#. TRANS: Message is used as a page title. %s is a nick name. +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 +#, php-format +msgid "%s groups" +msgstr "%s's grupper" + +#: actions/apigrouplistall.php:96 +#, php-format +msgid "groups on %s" +msgstr "grupper pÃ¥ %s" + +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Ophæv blokering af bruger mislykkedes." + +#: actions/apioauthauthorize.php:101 +msgid "No oauth_token parameter provided." +msgstr "Ingen oauth_token parameter angivet." + +#: actions/apioauthauthorize.php:106 +msgid "Invalid token." +msgstr "Ugyldigt token." + +#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 +#: actions/deletenotice.php:169 actions/disfavor.php:74 +#: actions/emailsettings.php:267 actions/favor.php:75 actions/geocode.php:55 +#: actions/groupblock.php:66 actions/grouplogo.php:312 +#: actions/groupunblock.php:66 actions/imsettings.php:227 +#: actions/invite.php:56 actions/login.php:137 actions/makeadmin.php:66 +#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 +#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135 +#: actions/othersettings.php:145 actions/passwordsettings.php:138 +#: actions/profilesettings.php:194 actions/recoverpassword.php:350 +#: actions/register.php:172 actions/remotesubscribe.php:77 +#: actions/repeat.php:83 actions/smssettings.php:256 actions/subedit.php:38 +#: actions/subscribe.php:86 actions/tagother.php:166 +#: actions/unsubscribe.php:69 actions/userauthorization.php:52 +#: lib/designsettings.php:294 +msgid "There was a problem with your session token. Try again, please." +msgstr "Der var et problem med din session token. Venligst prøv igen." + +#: actions/apioauthauthorize.php:135 +msgid "Invalid nickname / password!" +msgstr "Ugyldig kaldenavn / password!" + +#: actions/apioauthauthorize.php:159 +msgid "Database error deleting OAuth application user." +msgstr "Databasefejl ved sletning af OAuth applikationsbruger." + +#: actions/apioauthauthorize.php:185 +msgid "Database error inserting OAuth application user." +msgstr "Databasefejl ved tilføjelse af OAuth applikationsbruger." + +#: actions/apioauthauthorize.php:214 +#, php-format +msgid "" +"The request token %s has been authorized. Please exchange it for an access " +"token." +msgstr "" +"Anmodnings-token %s er blevet godkendt. Venligst anvend den til en Adgangs-" +"token." + +#: actions/apioauthauthorize.php:227 +#, php-format +msgid "The request token %s has been denied and revoked." +msgstr "Anmodnings-token %s er blevet afvist og trukket tilbage." + +#. TRANS: Message given submitting a form with an unknown action in e-mail settings. +#. TRANS: Message given submitting a form with an unknown action in IM settings. +#. TRANS: Message given submitting a form with an unknown action in SMS settings. +#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281 +#: actions/designadminpanel.php:104 actions/editapplication.php:139 +#: actions/emailsettings.php:286 actions/grouplogo.php:322 +#: actions/imsettings.php:242 actions/newapplication.php:121 +#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44 +#: actions/smssettings.php:277 lib/designsettings.php:304 +msgid "Unexpected form submission." +msgstr "Uventet formularafsendelse." + +#: actions/apioauthauthorize.php:259 +msgid "An application would like to connect to your account" +msgstr "En applikation vil gerne forbinde til din konto" + +#: actions/apioauthauthorize.php:276 +msgid "Allow or deny access" +msgstr "Tillad eller Afvis adgang" + +#: actions/apioauthauthorize.php:292 +#, php-format +msgid "" +"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like " +"the ability to <strong>%3$s</strong> your %4$s account data. You should only " +"give access to your %4$s account to third parties you trust." +msgstr "" +"Applikationen <strong>%1$s</strong> af %2$s</strong> vil gerne <strong>%3$s</" +"strong> dine data for konto %4$s. Du bør kun give adgang til din %4$s konto " +"til tredjemand du stoler pÃ¥." + +#. TRANS: Main menu option when logged in for access to user settings +#: actions/apioauthauthorize.php:310 lib/action.php:450 +msgid "Account" +msgstr "Konto" + +#: actions/apioauthauthorize.php:313 actions/login.php:252 +#: actions/profilesettings.php:106 actions/register.php:431 +#: actions/showgroup.php:245 actions/tagother.php:94 +#: actions/userauthorization.php:145 lib/groupeditform.php:152 +#: lib/userprofile.php:132 +msgid "Nickname" +msgstr "Kaldenavn" + +#. TRANS: Link description in user account settings menu. +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 +msgid "Password" +msgstr "Adgangskode" + +#: actions/apioauthauthorize.php:328 +msgid "Deny" +msgstr "Nægt" + +#: actions/apioauthauthorize.php:334 +msgid "Allow" +msgstr "Tillad" + +#: actions/apioauthauthorize.php:351 +msgid "Allow or deny access to your account information." +msgstr "Tillad eller nægte adgang til dine kontooplysninger." + +#: actions/apistatusesdestroy.php:112 +msgid "This method requires a POST or DELETE." +msgstr "Denne metode kræver en POST eller DELETE." + +#: actions/apistatusesdestroy.php:135 +msgid "You may not delete another user's status." +msgstr "Du kan ikke slette en anden brugers status." + +#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 +#: actions/deletenotice.php:52 actions/shownotice.php:92 +msgid "No such notice." +msgstr "Ingen sÃ¥dan meddelelse." + +#: actions/apistatusesretweet.php:83 +msgid "Cannot repeat your own notice." +msgstr "Kan ikke gentage din egen meddelelse." + +#: actions/apistatusesretweet.php:91 +msgid "Already repeated that notice." +msgstr "Allerede gentaget denne medelelse." + +#: actions/apistatusesshow.php:139 +msgid "Status deleted." +msgstr "Status slettet." + +#: actions/apistatusesshow.php:145 +msgid "No status with that ID found." +msgstr "Ingen status med dette ID fundet." + +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 +#: lib/mailhandler.php:60 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "Det er for langt. Maksimal besked størrelse er %d tegn." + +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 +msgid "Not found." +msgstr "Ikke fundet." + +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 +#, php-format +msgid "Max notice size is %d chars, including attachment URL." +msgstr "Max meddelelse størrelse er %d tegn, inklusiv vedlagt URL." + +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 +msgid "Unsupported format." +msgstr "Formatet understøttes ikke" + +#: actions/apitimelinefavorites.php:110 +#, php-format +msgid "%1$s / Favorites from %2$s" +msgstr "%1$s / favoritter fra %2$s" + +#: actions/apitimelinefavorites.php:119 +#, php-format +msgid "%1$s updates favorited by %2$s / %2$s." +msgstr "%1$s opdateringer favoriseret af %2$s / %2$s." + +#: actions/apitimelinementions.php:118 +#, php-format +msgid "%1$s / Updates mentioning %2$s" +msgstr "%1$s / opdateringer nævner %2$s" + +#: actions/apitimelinementions.php:131 +#, php-format +msgid "%1$s updates that reply to updates from %2$s / %3$s." +msgstr "%1$s opdateringer, som svar pÃ¥ opdateringer fra %2$s / %3$s." + +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 +#, php-format +msgid "%s public timeline" +msgstr "%s offentlig tidslinie" + +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 +#, php-format +msgid "%s updates from everyone!" +msgstr "%s opdateringer fra alle!" + +#: actions/apitimelineretweetedtome.php:111 +#, php-format +msgid "Repeated to %s" +msgstr "Gentagne til %s" + +#: actions/apitimelineretweetsofme.php:114 +#, php-format +msgid "Repeats of %s" +msgstr "Gentaget af %s" + +#: actions/apitimelinetag.php:105 actions/tag.php:67 +#, php-format +msgid "Notices tagged with %s" +msgstr "Bekendtgørelser tagged med %s" + +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, php-format +msgid "Updates tagged with %1$s on %2$s!" +msgstr "Opdateringer tagged med %1$s pÃ¥ %2$s!" + +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + +#: actions/attachment.php:73 +msgid "No such attachment." +msgstr "Ingen sÃ¥dan fil." + +#: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 +#: actions/editgroup.php:84 actions/groupdesignsettings.php:84 +#: actions/grouplogo.php:86 actions/groupmembers.php:76 +#: actions/grouprss.php:91 actions/showgroup.php:121 +msgid "No nickname." +msgstr "Ingen kaldenavn." + +#: actions/avatarbynickname.php:64 +msgid "No size." +msgstr "Ingen størrelse." + +#: actions/avatarbynickname.php:69 +msgid "Invalid size." +msgstr "Ugyldig størrelse." + +#. TRANS: Link description in user account settings menu. +#: actions/avatarsettings.php:67 actions/showgroup.php:230 +#: lib/accountsettingsaction.php:118 +msgid "Avatar" +msgstr "Avatar" + +#: actions/avatarsettings.php:78 +#, php-format +msgid "You can upload your personal avatar. The maximum file size is %s." +msgstr "" +"Du kan uploade dine personlige avatar. Den maksimale filstørrelse er %s." + +#: actions/avatarsettings.php:106 actions/avatarsettings.php:185 +#: actions/grouplogo.php:181 actions/remotesubscribe.php:191 +#: actions/userauthorization.php:72 actions/userrss.php:108 +msgid "User without matching profile." +msgstr "Bruger uden matchende profil." + +#: actions/avatarsettings.php:119 actions/avatarsettings.php:197 +#: actions/grouplogo.php:254 +msgid "Avatar settings" +msgstr "Avatar indstillinger" + +#: actions/avatarsettings.php:127 actions/avatarsettings.php:205 +#: actions/grouplogo.php:202 actions/grouplogo.php:262 +msgid "Original" +msgstr "Original" + +#: actions/avatarsettings.php:142 actions/avatarsettings.php:217 +#: actions/grouplogo.php:213 actions/grouplogo.php:274 +msgid "Preview" +msgstr "ForhÃ¥ndsvisning" + +#: actions/avatarsettings.php:149 actions/showapplication.php:252 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 +msgid "Delete" +msgstr "Slet" + +#: actions/avatarsettings.php:166 actions/grouplogo.php:236 +msgid "Upload" +msgstr "Oplægge" + +#: actions/avatarsettings.php:231 actions/grouplogo.php:289 +msgid "Crop" +msgstr "Beskær" + +#: actions/avatarsettings.php:305 +msgid "No file uploaded." +msgstr "Ingen fil uploaded." + +#: actions/avatarsettings.php:332 +msgid "Pick a square area of the image to be your avatar" +msgstr "Vælg en firkantet omrÃ¥de af billedet til at være din avatar" + +#: actions/avatarsettings.php:347 actions/grouplogo.php:380 +msgid "Lost our file data." +msgstr "Mistede vores fil data." + +#: actions/avatarsettings.php:370 +msgid "Avatar updated." +msgstr "Avatar opdateret." + +#: actions/avatarsettings.php:373 +msgid "Failed updating avatar." +msgstr "Mislykket ajourføring af Avatar." + +#: actions/avatarsettings.php:397 +msgid "Avatar deleted." +msgstr "Avatar slettet." + +#: actions/block.php:69 +msgid "You already blocked that user." +msgstr "Du har allerede blokeret for denne bruger." + +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 +msgid "Block user" +msgstr "Bloker bruger" + +#: actions/block.php:138 +msgid "" +"Are you sure you want to block this user? Afterwards, they will be " +"unsubscribed from you, unable to subscribe to you in the future, and you " +"will not be notified of any @-replies from them." +msgstr "" +"Er du sikker pÃ¥ du vil blokere denne bruger? Bagefter vil de blive afmeldt " +"fra dig, ude af stand til at abonnere pÃ¥ dig i fremtiden, og du vil ikke " +"blive underrettet om nogen @-svar fra dem." + +#. TRANS: Button label on the user block form. +#. TRANS: Button label on the delete application form. +#. TRANS: Button label on the delete notice form. +#. TRANS: Button label on the delete user form. +#. TRANS: Button label on the form to block a user from a group. +#: actions/block.php:153 actions/deleteapplication.php:154 +#: actions/deletenotice.php:147 actions/deleteuser.php:152 +#: actions/groupblock.php:178 +msgctxt "BUTTON" +msgid "No" +msgstr "Nej" + +#. TRANS: Submit button title for 'No' when blocking a user. +#. TRANS: Submit button title for 'No' when deleting a user. +#: actions/block.php:157 actions/deleteuser.php:156 +msgid "Do not block this user" +msgstr "Bloker ikke denne bruger" + +#. TRANS: Button label on the user block form. +#. TRANS: Button label on the delete application form. +#. TRANS: Button label on the delete notice form. +#. TRANS: Button label on the delete user form. +#. TRANS: Button label on the form to block a user from a group. +#: actions/block.php:160 actions/deleteapplication.php:161 +#: actions/deletenotice.php:154 actions/deleteuser.php:159 +#: actions/groupblock.php:185 +msgctxt "BUTTON" +msgid "Yes" +msgstr "Ja" + +#. TRANS: Submit button title for 'Yes' when blocking a user. +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 +msgid "Block this user" +msgstr "Bloker denne bruger" + +#: actions/block.php:187 +msgid "Failed to save block information." +msgstr "Kunne ikke gemme blokerings oplysninger." + +#: actions/blockedfromgroup.php:80 actions/blockedfromgroup.php:87 +#: actions/editgroup.php:100 actions/foafgroup.php:44 actions/foafgroup.php:62 +#: actions/foafgroup.php:69 actions/groupblock.php:86 actions/groupbyid.php:83 +#: actions/groupdesignsettings.php:100 actions/grouplogo.php:102 +#: actions/groupmembers.php:83 actions/groupmembers.php:90 +#: actions/grouprss.php:98 actions/grouprss.php:105 +#: actions/groupunblock.php:86 actions/joingroup.php:82 +#: actions/joingroup.php:93 actions/leavegroup.php:82 +#: actions/leavegroup.php:93 actions/makeadmin.php:86 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:166 +#: lib/command.php:368 +msgid "No such group." +msgstr "Ingen sÃ¥dan gruppe." + +#: actions/blockedfromgroup.php:97 +#, php-format +msgid "%s blocked profiles" +msgstr "%s blokerede profiler" + +#: actions/blockedfromgroup.php:100 +#, php-format +msgid "%1$s blocked profiles, page %2$d" +msgstr "%1$s blokerede profiler, side %2$d" + +#: actions/blockedfromgroup.php:115 +msgid "A list of the users blocked from joining this group." +msgstr "En liste over brugere blokeret fra at deltage i denne gruppe." + +#: actions/blockedfromgroup.php:288 +msgid "Unblock user from group" +msgstr "Ophæv blokering af bruger fra gruppe" + +#: actions/blockedfromgroup.php:320 lib/unblockform.php:69 +msgid "Unblock" +msgstr "Fjern blokering" + +#: actions/blockedfromgroup.php:320 lib/unblockform.php:80 +msgid "Unblock this user" +msgstr "Fjern blokeringen af denne bruger" + +#. TRANS: Title for mini-posting window loaded from bookmarklet. +#: actions/bookmarklet.php:51 +#, php-format +msgid "Post to %s" +msgstr "Post til %s" + +#: actions/confirmaddress.php:75 +msgid "No confirmation code." +msgstr "Ingen bekræftelseskode." + +#: actions/confirmaddress.php:80 +msgid "Confirmation code not found." +msgstr "Bekræftelseskode ikke fundet." + +#: actions/confirmaddress.php:85 +msgid "That confirmation code is not for you!" +msgstr "Denne bekræftelseskode er ikke til dig!" + +#. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. +#: actions/confirmaddress.php:91 +#, php-format +msgid "Unrecognized address type %s." +msgstr "Ukendte adresse type %s." + +#. TRANS: Client error for an already confirmed email/jabbel/sms address. +#: actions/confirmaddress.php:96 +msgid "That address has already been confirmed." +msgstr "Denne adresse er allerede blevet bekræftet." + +#. TRANS: Server error thrown on database error updating e-mail preferences. +#. TRANS: Server error thrown on database error removing a registered e-mail address. +#. TRANS: Server error thrown on database error updating IM preferences. +#. TRANS: Server error thrown on database error removing a registered IM address. +#. TRANS: Server error thrown on database error updating SMS preferences. +#. TRANS: Server error thrown on database error removing a registered SMS phone number. +#: actions/confirmaddress.php:116 actions/emailsettings.php:327 +#: actions/emailsettings.php:473 actions/imsettings.php:280 +#: actions/imsettings.php:439 actions/othersettings.php:174 +#: actions/profilesettings.php:283 actions/smssettings.php:308 +#: actions/smssettings.php:464 +msgid "Couldn't update user." +msgstr "Kunne ikke opdatere brugeren." + +#. TRANS: Server error thrown on database error canceling e-mail address confirmation. +#. TRANS: Server error thrown on database error canceling SMS phone number confirmation. +#: actions/confirmaddress.php:128 actions/emailsettings.php:433 +#: actions/smssettings.php:422 +msgid "Couldn't delete email confirmation." +msgstr "Kunne ikke slette e-mail bekræftelse." + +#: actions/confirmaddress.php:146 +msgid "Confirm address" +msgstr "Bekræft adresse" + +#: actions/confirmaddress.php:161 +#, php-format +msgid "The address \"%s\" has been confirmed for your account." +msgstr "Adressen \"%s\" er blevet bekræftet for din konto." + +#: actions/conversation.php:99 +msgid "Conversation" +msgstr "Samtale" + +#: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 +#: lib/profileaction.php:229 lib/searchgroupnav.php:82 +msgid "Notices" +msgstr "Bekendtgørelser" + +#: actions/deleteapplication.php:63 +msgid "You must be logged in to delete an application." +msgstr "Du skal være logget ind for at slette et program." + +#: actions/deleteapplication.php:71 +msgid "Application not found." +msgstr "Program ikke fundet." + +#: actions/deleteapplication.php:78 actions/editapplication.php:77 +#: actions/showapplication.php:94 +msgid "You are not the owner of this application." +msgstr "Du er ikke ejer af dette program." + +#: actions/deleteapplication.php:102 actions/editapplication.php:127 +#: actions/newapplication.php:110 actions/showapplication.php:118 +#: lib/action.php:1263 +msgid "There was a problem with your session token." +msgstr "Der var et problem med din session token." + +#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 +msgid "Delete application" +msgstr "Slet program" + +#: actions/deleteapplication.php:149 +msgid "" +"Are you sure you want to delete this application? This will clear all data " +"about the application from the database, including all existing user " +"connections." +msgstr "" +"Er du sikker pÃ¥ du vil slette dette program? Dette vil slette alle data om " +"anvendelsen fra databasen, herunder alle eksisterende bruger indstillinger." + +#. TRANS: Submit button title for 'No' when deleting an application. +#: actions/deleteapplication.php:158 +msgid "Do not delete this application" +msgstr "Slet ikke dette program" + +#. TRANS: Submit button title for 'Yes' when deleting an application. +#: actions/deleteapplication.php:164 +msgid "Delete this application" +msgstr "Slet dette program" + +#. TRANS: Client error message thrown when trying to access the admin panel while not logged in. +#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62 +#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69 +#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89 +#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96 +#: actions/tagother.php:33 actions/unsubscribe.php:52 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 +#: lib/settingsaction.php:72 +msgid "Not logged in." +msgstr "Ikke logget ind" + +#: actions/deletenotice.php:71 +msgid "Can't delete this notice." +msgstr "Kan ikke slette denne meddelelse." + +#: actions/deletenotice.php:103 +msgid "" +"You are about to permanently delete a notice. Once this is done, it cannot " +"be undone." +msgstr "" +"Du er ved permanent at slette en meddelelse. NÃ¥r dette er gjort, kan det " +"ikke fortrydes." + +#: actions/deletenotice.php:109 actions/deletenotice.php:141 +msgid "Delete notice" +msgstr "Slet meddelelse" + +#: actions/deletenotice.php:144 +msgid "Are you sure you want to delete this notice?" +msgstr "Er du sikker pÃ¥ du vil slette denne meddelelse?" + +#. TRANS: Submit button title for 'No' when deleting a notice. +#: actions/deletenotice.php:151 +msgid "Do not delete this notice" +msgstr "Slet ikke denne meddelelse" + +#. TRANS: Submit button title for 'Yes' when deleting a notice. +#: actions/deletenotice.php:158 lib/noticelist.php:656 +msgid "Delete this notice" +msgstr "Slet denne meddelelse" + +#: actions/deleteuser.php:67 +msgid "You cannot delete users." +msgstr "Du kan ikke slette brugere." + +#: actions/deleteuser.php:74 +msgid "You can only delete local users." +msgstr "Du kan kun slette de lokale brugere." + +#: actions/deleteuser.php:110 actions/deleteuser.php:133 +msgid "Delete user" +msgstr "Slet bruger" + +#: actions/deleteuser.php:136 +msgid "" +"Are you sure you want to delete this user? This will clear all data about " +"the user from the database, without a backup." +msgstr "" +"Er du sikker pÃ¥ du vil slette denne bruger? Dette vil slette alle data om " +"brugeren fra databasen, uden en sikkerhedskopi." + +#. TRANS: Submit button title for 'Yes' when deleting a user. +#: actions/deleteuser.php:163 lib/deleteuserform.php:77 +msgid "Delete this user" +msgstr "Slet denne bruger" + +#. TRANS: Message used as title for design settings for the site. +#. TRANS: Link description in user account settings menu. +#: actions/designadminpanel.php:63 lib/accountsettingsaction.php:139 +#: lib/groupnav.php:119 +msgid "Design" +msgstr "Design" + +#: actions/designadminpanel.php:74 +msgid "Design settings for this StatusNet site." +msgstr "Design indstillinger for dette StatusNet site." + +#: actions/designadminpanel.php:318 +msgid "Invalid logo URL." +msgstr "Ugyldig logo URL." + +#: actions/designadminpanel.php:322 +#, php-format +msgid "Theme not available: %s." +msgstr "Tema ikke tilgængelige: %s." + +#: actions/designadminpanel.php:426 +msgid "Change logo" +msgstr "Skift logo" + +#: actions/designadminpanel.php:431 +msgid "Site logo" +msgstr "Site logo" + +#: actions/designadminpanel.php:443 +msgid "Change theme" +msgstr "Skift tema" + +#: actions/designadminpanel.php:460 +msgid "Site theme" +msgstr "Site tema" + +#: actions/designadminpanel.php:461 +msgid "Theme for the site." +msgstr "Tema for webstedet." + +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Brugerdefineret tema" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Du kan uploade en brugerdefineret StatusNet tema som en. ZIP arkiv." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 +msgid "Change background image" +msgstr "Skift baggrundsbillede" + +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 +#: lib/designsettings.php:178 +msgid "Background" +msgstr "Baggrund" + +#: actions/designadminpanel.php:496 +#, php-format +msgid "" +"You can upload a background image for the site. The maximum file size is %1" +"$s." +msgstr "" +"Du kan uploade et baggrundsbillede til webstedet. Den maksimale filstørrelse " +"er %1$s." + +#. TRANS: Used as radio button label to add a background image. +#: actions/designadminpanel.php:527 lib/designsettings.php:139 +msgid "On" +msgstr "Til" + +#. TRANS: Used as radio button label to not add a background image. +#: actions/designadminpanel.php:544 lib/designsettings.php:155 +msgid "Off" +msgstr "Fra" + +#: actions/designadminpanel.php:545 lib/designsettings.php:156 +msgid "Turn background image on or off." +msgstr "SlÃ¥ baggrundsbilledet til eller fra." + +#: actions/designadminpanel.php:550 lib/designsettings.php:161 +msgid "Tile background image" +msgstr "Tile baggrundsbillede" + +#: actions/designadminpanel.php:564 lib/designsettings.php:170 +msgid "Change colours" +msgstr "Skift farver" + +#: actions/designadminpanel.php:587 lib/designsettings.php:191 +msgid "Content" +msgstr "Indhold" + +#: actions/designadminpanel.php:600 lib/designsettings.php:204 +msgid "Sidebar" +msgstr "Sidebar" + +#: actions/designadminpanel.php:613 lib/designsettings.php:217 +msgid "Text" +msgstr "Tekst" + +#: actions/designadminpanel.php:626 lib/designsettings.php:230 +msgid "Links" +msgstr "Henvisninger" + +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avanceret" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Personlig CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 +msgid "Use defaults" +msgstr "Brug standardindstillinger" + +#: actions/designadminpanel.php:677 lib/designsettings.php:248 +msgid "Restore default designs" +msgstr "Gendan standard indstillinger" + +#: actions/designadminpanel.php:683 lib/designsettings.php:254 +msgid "Reset back to default" +msgstr "Nulstil til standard værdier" + +#. TRANS: Submit button title +#: actions/designadminpanel.php:685 actions/othersettings.php:126 +#: actions/pathsadminpanel.php:351 actions/profilesettings.php:174 +#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 +#: actions/sitenoticeadminpanel.php:195 actions/snapshotadminpanel.php:245 +#: actions/subscriptions.php:226 actions/tagother.php:154 +#: actions/useradminpanel.php:294 lib/applicationeditform.php:363 +#: lib/designsettings.php:256 lib/groupeditform.php:202 +msgid "Save" +msgstr "Gem" + +#: actions/designadminpanel.php:686 lib/designsettings.php:257 +msgid "Save design" +msgstr "Gem design" + +#: actions/disfavor.php:81 +msgid "This notice is not a favorite!" +msgstr "Denne meddelelse er ikke en favorit!" + +#: actions/disfavor.php:94 +msgid "Add to favorites" +msgstr "Tilføj til favoritter" + +#: actions/doc.php:158 +#, php-format +msgid "No such document \"%s\"" +msgstr "Ingen sÃ¥dan dokument \"%s\"" + +#: actions/editapplication.php:54 +msgid "Edit Application" +msgstr "Rediger program" + +#: actions/editapplication.php:66 +msgid "You must be logged in to edit an application." +msgstr "Du skal være logget ind for at redigere et program." + +#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 +#: actions/showapplication.php:87 +msgid "No such application." +msgstr "Ingen sÃ¥dan program" + +#: actions/editapplication.php:161 +msgid "Use this form to edit your application." +msgstr "Brug denne formular til at redigere dit program." + +#: actions/editapplication.php:177 actions/newapplication.php:159 +msgid "Name is required." +msgstr "Navn er pÃ¥krævet." + +#: actions/editapplication.php:180 actions/newapplication.php:165 +msgid "Name is too long (max 255 chars)." +msgstr "Navnet er for langt (max 255 tegn)." + +#: actions/editapplication.php:183 actions/newapplication.php:162 +msgid "Name already in use. Try another one." +msgstr "Navn allerede i brug. Prøv et andet." + +#: actions/editapplication.php:186 actions/newapplication.php:168 +msgid "Description is required." +msgstr "Beskrivelse er pÃ¥krævet." + +#: actions/editapplication.php:194 +msgid "Source URL is too long." +msgstr "Kilde-URL er for lang." + +#: actions/editapplication.php:200 actions/newapplication.php:185 +msgid "Source URL is not valid." +msgstr "Kilde-URL er ikke gyldig." + +#: actions/editapplication.php:203 actions/newapplication.php:188 +msgid "Organization is required." +msgstr "Organisationen er pÃ¥krævet." + +#: actions/editapplication.php:206 actions/newapplication.php:191 +msgid "Organization is too long (max 255 chars)." +msgstr "Organisationen er for lang (max 255 tegn)." + +#: actions/editapplication.php:209 actions/newapplication.php:194 +msgid "Organization homepage is required." +msgstr "Organisationens hjemmeside er pÃ¥krævet." + +#: actions/editapplication.php:218 actions/newapplication.php:206 +msgid "Callback is too long." +msgstr "Callback er for lang." + +#: actions/editapplication.php:225 actions/newapplication.php:215 +msgid "Callback URL is not valid." +msgstr "Tilbagekaldswebadresse er ikke gyldig." + +#: actions/editapplication.php:258 +msgid "Could not update application." +msgstr "Kunne ikke opdatere programmet." + +#: actions/editgroup.php:56 +#, php-format +msgid "Edit %s group" +msgstr "Rediger %s gruppe" + +#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 +msgid "You must be logged in to create a group." +msgstr "Du skal være logget ind for at oprette en gruppe." + +#: actions/editgroup.php:107 actions/editgroup.php:172 +#: actions/groupdesignsettings.php:107 actions/grouplogo.php:109 +msgid "You must be an admin to edit the group." +msgstr "Du skal være administrator for at redigere gruppen." + +#: actions/editgroup.php:158 +msgid "Use this form to edit the group." +msgstr "Brug denne formular til at redigere gruppen." + +#: actions/editgroup.php:205 actions/newgroup.php:145 +#, php-format +msgid "description is too long (max %d chars)." +msgstr "Beskrivelsen er for lang (max %d tegn)." + +#: actions/editgroup.php:228 actions/newgroup.php:168 +#, php-format +msgid "Invalid alias: \"%s\"" +msgstr "Ugyldigt alias: \"%s\"." + +#: actions/editgroup.php:258 +msgid "Could not update group." +msgstr "Kunne ikke opdatere gruppe." + +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 +msgid "Could not create aliases." +msgstr "Kunne ikke oprette aliaser." + +#: actions/editgroup.php:280 +msgid "Options saved." +msgstr "Valg gemt." + +#. TRANS: Title for e-mail settings. +#: actions/emailsettings.php:61 +msgid "Email settings" +msgstr "Email indstillinger" + +#. TRANS: E-mail settings page instructions. +#. TRANS: %%site.name%% is the name of the site. +#: actions/emailsettings.php:76 +#, php-format +msgid "Manage how you get email from %%site.name%%." +msgstr "Administrer hvordan du fÃ¥r e-mail fra %%site.name%%." + +#. TRANS: Form legend for e-mail settings form. +#. TRANS: Field label for e-mail address input in e-mail settings form. +#: actions/emailsettings.php:106 actions/emailsettings.php:132 +msgid "Email address" +msgstr "E-mail adresse" + +#. TRANS: Form note in e-mail settings form. +#: actions/emailsettings.php:112 +msgid "Current confirmed email address." +msgstr "Nuværende bekræftet email-adresse." + +#. TRANS: Button label to remove a confirmed e-mail address. +#. TRANS: Button label for removing a set sender e-mail address to post notices from. +#. TRANS: Button label to remove a confirmed IM address. +#. TRANS: Button label to remove a confirmed SMS address. +#. TRANS: Button label for removing a set sender SMS e-mail address to post notices from. +#: actions/emailsettings.php:115 actions/emailsettings.php:158 +#: actions/imsettings.php:116 actions/smssettings.php:124 +#: actions/smssettings.php:180 +msgctxt "BUTTON" +msgid "Remove" +msgstr "Fjern" + +#: actions/emailsettings.php:122 +msgid "" +"Awaiting confirmation on this address. Check your inbox (and spam box!) for " +"a message with further instructions." +msgstr "" +"Afventer bekræftelse pÃ¥ denne adresse. Tjek din indbakke (og spam box!) for " +"en besked med yderligere instruktioner." + +#. TRANS: Button label to cancel an e-mail address confirmation procedure. +#. TRANS: Button label to cancel an IM address confirmation procedure. +#. TRANS: Button label to cancel a SMS address confirmation procedure. +#. TRANS: Button label +#: actions/emailsettings.php:127 actions/imsettings.php:131 +#: actions/smssettings.php:137 lib/applicationeditform.php:357 +msgctxt "BUTTON" +msgid "Cancel" +msgstr "Afbryd" + +#. TRANS: Instructions for e-mail address input form. +#: actions/emailsettings.php:135 +msgid "Email address, like \"UserName@example.org\"" +msgstr "E-mail adresse, som \"UserName@example.org\"" + +#. TRANS: Button label for adding an e-mail address in e-mail settings form. +#. TRANS: Button label for adding an IM address in IM settings form. +#. TRANS: Button label for adding a SMS phone number in SMS settings form. +#: actions/emailsettings.php:139 actions/imsettings.php:148 +#: actions/smssettings.php:162 +msgctxt "BUTTON" +msgid "Add" +msgstr "Tilføj" + +#. TRANS: Form legend for incoming e-mail settings form. +#. TRANS: Form legend for incoming SMS settings form. +#: actions/emailsettings.php:147 actions/smssettings.php:171 +msgid "Incoming email" +msgstr "IndgÃ¥ende e-mail" + +#. TRANS: Form instructions for incoming e-mail form in e-mail settings. +#. TRANS: Form instructions for incoming SMS e-mail address form in SMS settings. +#: actions/emailsettings.php:155 actions/smssettings.php:178 +msgid "Send email to this address to post new notices." +msgstr "Send e-mail til denne adresse for at skrive nye bekendtgørelser." + +#. TRANS: Instructions for incoming e-mail address input form. +#. TRANS: Instructions for incoming SMS e-mail address input form. +#: actions/emailsettings.php:164 actions/smssettings.php:186 +msgid "Make a new email address for posting to; cancels the old one." +msgstr "" +"Opret en ny e-mail adresse til postering af beskeder; annullerer den gamle." + +#. TRANS: Button label for adding an e-mail address to send notices from. +#. TRANS: Button label for adding an SMS e-mail address to send notices from. +#: actions/emailsettings.php:168 actions/smssettings.php:189 +msgctxt "BUTTON" +msgid "New" +msgstr "Ny" + +#. TRANS: Form legend for e-mail preferences form. +#: actions/emailsettings.php:174 +msgid "Email preferences" +msgstr "Email indstillinger" + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:180 +msgid "Send me notices of new subscriptions through email." +msgstr "Send mig meddelelser om nye abonnementer via e-mail." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:186 +msgid "Send me email when someone adds my notice as a favorite." +msgstr "Send mig email, nÃ¥r nogen har tilføjet min meddelelse som en favorit." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:193 +msgid "Send me email when someone sends me a private message." +msgstr "Send mig email, nÃ¥r nogen sender mig en privat besked." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:199 +msgid "Send me email when someone sends me an \"@-reply\"." +msgstr "Send mig email, nÃ¥r nogen sender mig et \"@-svar\"." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:205 +msgid "Allow friends to nudge me and send me an email." +msgstr "Tillad venner at puffe mig og at sende mig en e-mail." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:212 +msgid "I want to post notices by email." +msgstr "Jeg ønsker at sende meddelelser via e-mail." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:219 +msgid "Publish a MicroID for my email address." +msgstr "Udgiv et MicroID til min email adresse." + +#. TRANS: Confirmation message for successful e-mail preferences save. +#: actions/emailsettings.php:334 +msgid "Email preferences saved." +msgstr "Email indstillinger gemt." + +#. TRANS: Message given saving e-mail address without having provided one. +#: actions/emailsettings.php:353 +msgid "No email address." +msgstr "Ingen e-mail-adresse." + +#. TRANS: Message given saving e-mail address that cannot be normalised. +#: actions/emailsettings.php:361 +msgid "Cannot normalize that email address" +msgstr "Kan ikke normalisere denne e-mail adresse" + +#. TRANS: Message given saving e-mail address that not valid. +#: actions/emailsettings.php:366 actions/register.php:208 +#: actions/siteadminpanel.php:144 +msgid "Not a valid email address." +msgstr "Ikke en gyldig e-mail adresse." + +#. TRANS: Message given saving e-mail address that is already set. +#: actions/emailsettings.php:370 +msgid "That is already your email address." +msgstr "Det er allerede din e-mail adresse." + +#. TRANS: Message given saving e-mail address that is already set for another user. +#: actions/emailsettings.php:374 +msgid "That email address already belongs to another user." +msgstr "Denne e-mail adresse tilhører allerede en anden bruger." + +#. TRANS: Server error thrown on database error adding e-mail confirmation code. +#. TRANS: Server error thrown on database error adding IM confirmation code. +#. TRANS: Server error thrown on database error adding SMS confirmation code. +#: actions/emailsettings.php:391 actions/imsettings.php:348 +#: actions/smssettings.php:373 +msgid "Couldn't insert confirmation code." +msgstr "Kunne ikke indsætte bekræftelseskode." + +#. TRANS: Message given saving valid e-mail address that is to be confirmed. +#: actions/emailsettings.php:398 +msgid "" +"A confirmation code was sent to the email address you added. Check your " +"inbox (and spam box!) for the code and instructions on how to use it." +msgstr "" +"En bekræftelse kode blev sendt til den e-mail adresse, du har tilføjet. Tjek " +"din indbakke (og spam box!) for koden og vejledning om, hvordan man bruger " +"den." + +#. TRANS: Message given canceling e-mail address confirmation that is not pending. +#. TRANS: Message given canceling IM address confirmation that is not pending. +#. TRANS: Message given canceling SMS phone number confirmation that is not pending. +#: actions/emailsettings.php:419 actions/imsettings.php:383 +#: actions/smssettings.php:408 +msgid "No pending confirmation to cancel." +msgstr "Ingen afventende bekræftelse at annullere." + +#. TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address. +#: actions/emailsettings.php:424 +msgid "That is the wrong email address." +msgstr "Det er den forkerte e-mail adresse." + +#. TRANS: Message given after successfully canceling e-mail address confirmation. +#: actions/emailsettings.php:438 +msgid "Email confirmation cancelled." +msgstr "Email bekræftelse aflyst." + +#. TRANS: Message given trying to remove an e-mail address that is not +#. TRANS: registered for the active user. +#: actions/emailsettings.php:458 +msgid "That is not your email address." +msgstr "Det er ikke din e-mail adresse." + +#. TRANS: Message given after successfully removing a registered e-mail address. +#: actions/emailsettings.php:479 +msgid "The email address was removed." +msgstr "E-mail adressen blev fjernet." + +#: actions/emailsettings.php:493 actions/smssettings.php:568 +msgid "No incoming email address." +msgstr "Ingen indkommende e-mail adresse." + +#. TRANS: Server error thrown on database error removing incoming e-mail address. +#. TRANS: Server error thrown on database error adding incoming e-mail address. +#: actions/emailsettings.php:504 actions/emailsettings.php:528 +#: actions/smssettings.php:578 actions/smssettings.php:602 +msgid "Couldn't update user record." +msgstr "Kunne ikke opdatere bruger oplysninger." + +#. TRANS: Message given after successfully removing an incoming e-mail address. +#: actions/emailsettings.php:508 actions/smssettings.php:581 +msgid "Incoming email address removed." +msgstr "IndgÃ¥ende e-mail adresse fjernet." + +#. TRANS: Message given after successfully adding an incoming e-mail address. +#: actions/emailsettings.php:532 actions/smssettings.php:605 +msgid "New incoming email address added." +msgstr "Ny indkommende e-mail adresse tilføjet." + +#: actions/favor.php:79 +msgid "This notice is already a favorite!" +msgstr "Denne meddelelse er allerede en favorit!" + +#: actions/favor.php:92 lib/disfavorform.php:140 +msgid "Disfavor favorite" +msgstr "Fjern markering som favorit" + +#: actions/favorited.php:65 lib/popularnoticesection.php:91 +#: lib/publicgroupnav.php:93 +msgid "Popular notices" +msgstr "Populære bekendtgørelser" + +#: actions/favorited.php:67 +#, php-format +msgid "Popular notices, page %d" +msgstr "Populære bekendtgørelser, side %d" + +#: actions/favorited.php:79 +msgid "The most popular notices on the site right now." +msgstr "De mest populære opslag pÃ¥ hjemmesiden lige nu." + +#: actions/favorited.php:150 +msgid "Favorite notices appear on this page but no one has favorited one yet." +msgstr "" +"Favorit bekendtgørelser vises pÃ¥ denne side, men ingen har markeret en " +"favorit endnu." + +#: actions/favorited.php:153 +msgid "" +"Be the first to add a notice to your favorites by clicking the fave button " +"next to any notice you like." +msgstr "" +"Vær den første til at tilføje en meddelelse til dine favoritter ved at " +"klikke pÃ¥ favorit knappen ved siden af en meddelelse, du syntes om." + +#: actions/favorited.php:156 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favorites!" +msgstr "" +"Hvorfor ikke [registrere en konto] (%%action.register%%), og vær den første " +"til at tilføje en meddelelse til dine favoritter!" + +#: actions/favoritesrss.php:111 actions/showfavorites.php:77 +#: lib/personalgroupnav.php:115 +#, php-format +msgid "%s's favorite notices" +msgstr "%s's favorit bekendtgørelser" + +#: actions/favoritesrss.php:115 +#, php-format +msgid "Updates favored by %1$s on %2$s!" +msgstr "Opdateringer markeret som favorit af %1$s pÃ¥ %2$s!" + +#: actions/featured.php:69 lib/featureduserssection.php:87 +#: lib/publicgroupnav.php:89 +msgid "Featured users" +msgstr "Udvalgte brugere" + +#: actions/featured.php:71 +#, php-format +msgid "Featured users, page %d" +msgstr "Udvalgte brugere, side %d" + +#: actions/featured.php:99 +#, php-format +msgid "A selection of some great users on %s" +msgstr "Et udvalg af nogle top brugere pÃ¥ %s" + +#: actions/file.php:34 +msgid "No notice ID." +msgstr "Ingen meddelelses ID." + +#: actions/file.php:38 +msgid "No notice." +msgstr "Ingen meddelelse." + +#: actions/file.php:42 +msgid "No attachments." +msgstr "Ingen vedhæftede filer." + +#: actions/file.php:51 +msgid "No uploaded attachments." +msgstr "Ingen uploaded vedhæftede filer." + +#: actions/finishremotesubscribe.php:69 +msgid "Not expecting this response!" +msgstr "Forventer ikke dette svar!" + +#: actions/finishremotesubscribe.php:80 +msgid "User being listened to does not exist." +msgstr "Brugeren som lyttes til, findes ikke." + +#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 +msgid "You can use the local subscription!" +msgstr "Du kan bruge det lokale abonnement!" + +#: actions/finishremotesubscribe.php:99 +msgid "That user has blocked you from subscribing." +msgstr "Denne bruger har blokeret dig fra at abonnere." + +#: actions/finishremotesubscribe.php:110 +msgid "You are not authorized." +msgstr "Du har ikke tilladelse." + +#: actions/finishremotesubscribe.php:113 +msgid "Could not convert request token to access token." +msgstr "Kunne ikke konvertere anmodnings-token til et adgangs-token." + +#: actions/finishremotesubscribe.php:118 +msgid "Remote service uses unknown version of OMB protocol." +msgstr "Fjerntjenesten bruger en ukendt version af 0MB protokol." + +#: actions/finishremotesubscribe.php:138 +msgid "Error updating remote profile." +msgstr "Fejl ved opdatering af fjernbetjeningsprofil." + +#: actions/getfile.php:79 +msgid "No such file." +msgstr "Ingen sÃ¥dan fil." + +#: actions/getfile.php:83 +msgid "Cannot read file." +msgstr "Kan ikke læse filen." + +#: actions/grantrole.php:62 actions/revokerole.php:62 +msgid "Invalid role." +msgstr "Ugyldig rolle." + +#: actions/grantrole.php:66 actions/revokerole.php:66 +msgid "This role is reserved and cannot be set." +msgstr "Denne rolle er reserveret og kan ikke indstilles." + +#: actions/grantrole.php:75 +msgid "You cannot grant user roles on this site." +msgstr "Du kan ikke tildele brugerroller pÃ¥ dette site." + +#: actions/grantrole.php:82 +msgid "User already has this role." +msgstr "Bruger har allerede denne rolle." + +#: actions/groupblock.php:71 actions/groupunblock.php:71 +#: actions/makeadmin.php:71 actions/subedit.php:46 +#: lib/profileformaction.php:79 +msgid "No profile specified." +msgstr "Ingen profil specificeret." + +#: actions/groupblock.php:76 actions/groupunblock.php:76 +#: actions/makeadmin.php:76 actions/subedit.php:53 actions/tagother.php:46 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 +msgid "No profile with that ID." +msgstr "Ingen profil med det ID." + +#: actions/groupblock.php:81 actions/groupunblock.php:81 +#: actions/makeadmin.php:81 +msgid "No group specified." +msgstr "Ingen gruppe angivet." + +#: actions/groupblock.php:91 +msgid "Only an admin can block group members." +msgstr "Kun en administrator kan blokere gruppens medlemmer." + +#: actions/groupblock.php:95 +msgid "User is already blocked from group." +msgstr "Bruger er allerede blokeret fra gruppen." + +#: actions/groupblock.php:100 +msgid "User is not a member of group." +msgstr "Brugeren er ikke medlem af gruppen." + +#: actions/groupblock.php:134 actions/groupmembers.php:360 +msgid "Block user from group" +msgstr "Bloker bruger fra gruppe" + +#: actions/groupblock.php:160 +#, php-format +msgid "" +"Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They " +"will be removed from the group, unable to post, and unable to subscribe to " +"the group in the future." +msgstr "" +"Er du sikker pÃ¥ du vil blokere bruger \"%1$s\" fra gruppen \"%2$s\"? De vil " +"blive fjernet fra gruppen, ude af stand til at postere, og ude af stand til " +"at tilmelde sig gruppen i fremtiden." + +#. TRANS: Submit button title for 'No' when blocking a user from a group. +#: actions/groupblock.php:182 +msgid "Do not block this user from this group" +msgstr "Bloker ikke denne bruger fra denne gruppe" + +#. TRANS: Submit button title for 'Yes' when blocking a user from a group. +#: actions/groupblock.php:189 +msgid "Block this user from this group" +msgstr "Bloker denne bruger fra denne gruppe" + +#: actions/groupblock.php:206 +msgid "Database error blocking user from group." +msgstr "Database fejl ved blokering af bruger fra gruppen." + +#: actions/groupbyid.php:74 actions/userbyid.php:70 +msgid "No ID." +msgstr "Ingen ID." + +#: actions/groupdesignsettings.php:68 +msgid "You must be logged in to edit a group." +msgstr "Du skal være logget pÃ¥ for at redigere en gruppe." + +#: actions/groupdesignsettings.php:144 +msgid "Group design" +msgstr "Gruppe design" + +#: actions/groupdesignsettings.php:155 +msgid "" +"Customize the way your group looks with a background image and a colour " +"palette of your choice." +msgstr "" +"Tilpas den mÃ¥de din gruppe vises pÃ¥, med et baggrundsbillede og en " +"farvepalet efter dit valg." + +#: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 +msgid "Couldn't update your design." +msgstr "Kunne ikke opdatere dit design." + +#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 +msgid "Design preferences saved." +msgstr "Design præferencer gemt." + +#: actions/grouplogo.php:142 actions/grouplogo.php:195 +msgid "Group logo" +msgstr "Gruppe logo" + +#: actions/grouplogo.php:153 +#, php-format +msgid "" +"You can upload a logo image for your group. The maximum file size is %s." +msgstr "" +"Du kan uploade et logo billede til din gruppe. Den maksimale filstørrelse er " +"%s." + +#: actions/grouplogo.php:365 +msgid "Pick a square area of the image to be the logo." +msgstr "Vælg en firkantet omrÃ¥de af billedet, der skal logoet." + +#: actions/grouplogo.php:399 +msgid "Logo updated." +msgstr "Logo opdateret." + +#: actions/grouplogo.php:401 +msgid "Failed updating logo." +msgstr "Mislykket ajourføring af logo." + +#: actions/groupmembers.php:100 lib/groupnav.php:92 +#, php-format +msgid "%s group members" +msgstr "%s gruppe medlemmer" + +#: actions/groupmembers.php:103 +#, php-format +msgid "%1$s group members, page %2$d" +msgstr "" + +#: actions/groupmembers.php:118 +msgid "A list of the users in this group." +msgstr "" + +#: actions/groupmembers.php:182 lib/groupnav.php:107 +msgid "Admin" +msgstr "" + +#: actions/groupmembers.php:392 lib/blockform.php:69 +msgid "Block" +msgstr "" + +#: actions/groupmembers.php:487 +msgid "Make user an admin of the group" +msgstr "" + +#: actions/groupmembers.php:519 +msgid "Make Admin" +msgstr "" + +#: actions/groupmembers.php:519 +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/grouprss.php:139 actions/userrss.php:94 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 +#, php-format +msgid "%s timeline" +msgstr "" + +#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name. +#: actions/grouprss.php:142 +#, php-format +msgid "Updates from members of %1$s on %2$s!" +msgstr "" + +#: actions/groups.php:62 lib/profileaction.php:223 lib/profileaction.php:249 +#: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 +msgid "Groups" +msgstr "" + +#: actions/groups.php:64 +#, php-format +msgid "Groups, page %d" +msgstr "" + +#: actions/groups.php:90 +#, php-format +msgid "" +"%%%%site.name%%%% groups let you find and talk with people of similar " +"interests. After you join a group you can send messages to all other members " +"using the syntax \"!groupname\". Don't see a group you like? Try [searching " +"for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" +"%%%%)" +msgstr "" + +#: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 +msgid "Create a new group" +msgstr "" + +#: actions/groupsearch.php:52 +#, php-format +msgid "" +"Search for groups on %%site.name%% by their name, location, or description. " +"Separate the terms by spaces; they must be 3 characters or more." +msgstr "" + +#: actions/groupsearch.php:58 +msgid "Group search" +msgstr "" + +#: actions/groupsearch.php:79 actions/noticesearch.php:117 +#: actions/peoplesearch.php:83 +msgid "No results." +msgstr "" + +#: actions/groupsearch.php:82 +#, php-format +msgid "" +"If you can't find the group you're looking for, you can [create it](%%action." +"newgroup%%) yourself." +msgstr "" + +#: actions/groupsearch.php:85 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and [create the group](%%" +"action.newgroup%%) yourself!" +msgstr "" + +#: actions/groupunblock.php:91 +msgid "Only an admin can unblock group members." +msgstr "" + +#: actions/groupunblock.php:95 +msgid "User is not blocked from group." +msgstr "" + +#: actions/groupunblock.php:128 actions/unblock.php:86 +msgid "Error removing the block." +msgstr "" + +#. TRANS: Title for instance messaging settings. +#: actions/imsettings.php:60 +msgid "IM settings" +msgstr "" + +#. TRANS: Instant messaging settings page instructions. +#. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. +#. TRANS: the order and formatting of link text and link should remain unchanged. +#: actions/imsettings.php:74 +#, php-format +msgid "" +"You can send and receive notices through Jabber/GTalk [instant messages](%%" +"doc.im%%). Configure your address and settings below." +msgstr "" + +#. TRANS: Message given in the IM settings if XMPP is not enabled on the site. +#: actions/imsettings.php:94 +msgid "IM is not available." +msgstr "" + +#. TRANS: Form legend for IM settings form. +#. TRANS: Field label for IM address input in IM settings form. +#: actions/imsettings.php:106 actions/imsettings.php:136 +msgid "IM address" +msgstr "" + +#: actions/imsettings.php:113 +msgid "Current confirmed Jabber/GTalk address." +msgstr "" + +#. TRANS: Form note in IM settings form. +#. TRANS: %s is the IM address set for the site. +#: actions/imsettings.php:124 +#, php-format +msgid "" +"Awaiting confirmation on this address. Check your Jabber/GTalk account for a " +"message with further instructions. (Did you add %s to your buddy list?)" +msgstr "" + +#. TRANS: IM address input field instructions in IM settings form. +#. TRANS: %s is the IM address set for the site. +#: actions/imsettings.php:140 +#, php-format +msgid "" +"Jabber or GTalk address, like \"UserName@example.org\". First, make sure to " +"add %s to your buddy list in your IM client or on GTalk." +msgstr "" + +#. TRANS: Form legend for IM preferences form. +#: actions/imsettings.php:155 +msgid "IM preferences" +msgstr "" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:160 +msgid "Send me notices through Jabber/GTalk." +msgstr "" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:166 +msgid "Post a notice when my Jabber/GTalk status changes." +msgstr "" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:172 +msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." +msgstr "" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:179 +msgid "Publish a MicroID for my Jabber/GTalk address." +msgstr "" + +#. TRANS: Confirmation message for successful IM preferences save. +#: actions/imsettings.php:287 actions/othersettings.php:180 +msgid "Preferences saved." +msgstr "" + +#. TRANS: Message given saving IM address without having provided one. +#: actions/imsettings.php:309 +msgid "No Jabber ID." +msgstr "" + +#. TRANS: Message given saving IM address that cannot be normalised. +#: actions/imsettings.php:317 +msgid "Cannot normalize that Jabber ID" +msgstr "" + +#. TRANS: Message given saving IM address that not valid. +#: actions/imsettings.php:322 +msgid "Not a valid Jabber ID" +msgstr "" + +#. TRANS: Message given saving IM address that is already set. +#: actions/imsettings.php:326 +msgid "That is already your Jabber ID." +msgstr "" + +#. TRANS: Message given saving IM address that is already set for another user. +#: actions/imsettings.php:330 +msgid "Jabber ID already belongs to another user." +msgstr "" + +#. TRANS: Message given saving valid IM address that is to be confirmed. +#. TRANS: %s is the IM address set for the site. +#: actions/imsettings.php:358 +#, php-format +msgid "" +"A confirmation code was sent to the IM address you added. You must approve %" +"s for sending messages to you." +msgstr "" + +#. TRANS: Message given canceling IM address confirmation for the wrong IM address. +#: actions/imsettings.php:388 +msgid "That is the wrong IM address." +msgstr "" + +#. TRANS: Server error thrown on database error canceling IM address confirmation. +#: actions/imsettings.php:397 +msgid "Couldn't delete IM confirmation." +msgstr "" + +#. TRANS: Message given after successfully canceling IM address confirmation. +#: actions/imsettings.php:402 +msgid "IM confirmation cancelled." +msgstr "" + +#. TRANS: Message given trying to remove an IM address that is not +#. TRANS: registered for the active user. +#: actions/imsettings.php:424 +msgid "That is not your Jabber ID." +msgstr "" + +#. TRANS: Message given after successfully removing a registered IM address. +#: actions/imsettings.php:447 +msgid "The IM address was removed." +msgstr "" + +#: actions/inbox.php:59 +#, php-format +msgid "Inbox for %1$s - page %2$d" +msgstr "" + +#: actions/inbox.php:62 +#, php-format +msgid "Inbox for %s" +msgstr "" + +#: actions/inbox.php:115 +msgid "This is your inbox, which lists your incoming private messages." +msgstr "" + +#: actions/invite.php:39 +msgid "Invites have been disabled." +msgstr "" + +#: actions/invite.php:41 +#, php-format +msgid "You must be logged in to invite other users to use %s." +msgstr "" + +#: actions/invite.php:72 +#, php-format +msgid "Invalid email address: %s" +msgstr "" + +#: actions/invite.php:110 +msgid "Invitation(s) sent" +msgstr "" + +#: actions/invite.php:112 +msgid "Invite new users" +msgstr "" + +#: actions/invite.php:128 +msgid "You are already subscribed to these users:" +msgstr "" + +#. TRANS: Whois output. +#. TRANS: %1$s nickname of the queried user, %2$s is their profile URL. +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:414 +#, php-format +msgid "%1$s (%2$s)" +msgstr "" + +#: actions/invite.php:136 +msgid "" +"These people are already users and you were automatically subscribed to them:" +msgstr "" + +#: actions/invite.php:144 +msgid "Invitation(s) sent to the following people:" +msgstr "" + +#: actions/invite.php:150 +msgid "" +"You will be notified when your invitees accept the invitation and register " +"on the site. Thanks for growing the community!" +msgstr "" + +#: actions/invite.php:162 +msgid "" +"Use this form to invite your friends and colleagues to use this service." +msgstr "" + +#: actions/invite.php:187 +msgid "Email addresses" +msgstr "" + +#: actions/invite.php:189 +msgid "Addresses of friends to invite (one per line)" +msgstr "" + +#: actions/invite.php:192 +msgid "Personal message" +msgstr "" + +#: actions/invite.php:194 +msgid "Optionally add a personal message to the invitation." +msgstr "" + +#. TRANS: Send button for inviting friends +#: actions/invite.php:198 +msgctxt "BUTTON" +msgid "Send" +msgstr "" + +#. TRANS: Subject for invitation email. Note that 'them' is correct as a gender-neutral singular 3rd-person pronoun in English. +#: actions/invite.php:228 +#, php-format +msgid "%1$s has invited you to join them on %2$s" +msgstr "" + +#. TRANS: Body text for invitation email. Note that 'them' is correct as a gender-neutral singular 3rd-person pronoun in English. +#: actions/invite.php:231 +#, php-format +msgid "" +"%1$s has invited you to join them on %2$s (%3$s).\n" +"\n" +"%2$s is a micro-blogging service that lets you keep up-to-date with people " +"you know and people who interest you.\n" +"\n" +"You can also share news about yourself, your thoughts, or your life online " +"with people who know about you. It's also great for meeting new people who " +"share your interests.\n" +"\n" +"%1$s said:\n" +"\n" +"%4$s\n" +"\n" +"You can see %1$s's profile page on %2$s here:\n" +"\n" +"%5$s\n" +"\n" +"If you'd like to try the service, click on the link below to accept the " +"invitation.\n" +"\n" +"%6$s\n" +"\n" +"If not, you can ignore this message. Thanks for your patience and your " +"time.\n" +"\n" +"Sincerely, %2$s\n" +msgstr "" + +#: actions/joingroup.php:60 +msgid "You must be logged in to join a group." +msgstr "" + +#: actions/joingroup.php:88 actions/leavegroup.php:88 +msgid "No nickname or ID." +msgstr "" + +#. 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. +#: actions/joingroup.php:141 lib/command.php:346 +#, php-format +msgid "%1$s joined group %2$s" +msgstr "" + +#: actions/leavegroup.php:60 +msgid "You must be logged in to leave a group." +msgstr "" + +#: actions/leavegroup.php:100 lib/command.php:373 +msgid "You are not a member of that group." +msgstr "" + +#. 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. +#: actions/leavegroup.php:137 lib/command.php:392 +#, php-format +msgid "%1$s left group %2$s" +msgstr "" + +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 +msgid "Already logged in." +msgstr "" + +#: actions/login.php:148 +msgid "Incorrect username or password." +msgstr "" + +#: actions/login.php:154 actions/otp.php:120 +msgid "Error setting user. You are probably not authorized." +msgstr "" + +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 +msgid "Login" +msgstr "" + +#: actions/login.php:249 +msgid "Login to site" +msgstr "" + +#: actions/login.php:258 actions/register.php:485 +msgid "Remember me" +msgstr "" + +#: actions/login.php:259 actions/register.php:487 +msgid "Automatically login in the future; not for shared computers!" +msgstr "" + +#: actions/login.php:269 +msgid "Lost or forgotten password?" +msgstr "" + +#: actions/login.php:288 +msgid "" +"For security reasons, please re-enter your user name and password before " +"changing your settings." +msgstr "" + +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "" + +#: actions/login.php:295 +#, php-format +msgid "" +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "" + +#: actions/makeadmin.php:92 +msgid "Only an admin can make another user an admin." +msgstr "" + +#: actions/makeadmin.php:96 +#, php-format +msgid "%1$s is already an admin for group \"%2$s\"." +msgstr "" + +#: actions/makeadmin.php:133 +#, php-format +msgid "Can't get membership record for %1$s in group %2$s." +msgstr "" + +#: actions/makeadmin.php:146 +#, php-format +msgid "Can't make %1$s an admin for group %2$s." +msgstr "" + +#: actions/microsummary.php:69 +msgid "No current status." +msgstr "" + +#: actions/newapplication.php:52 +msgid "New Application" +msgstr "" + +#: actions/newapplication.php:64 +msgid "You must be logged in to register an application." +msgstr "" + +#: actions/newapplication.php:143 +msgid "Use this form to register a new application." +msgstr "" + +#: actions/newapplication.php:176 +msgid "Source URL is required." +msgstr "" + +#: actions/newapplication.php:258 actions/newapplication.php:267 +msgid "Could not create application." +msgstr "" + +#: actions/newgroup.php:53 +msgid "New group" +msgstr "" + +#: actions/newgroup.php:110 +msgid "Use this form to create a new group." +msgstr "" + +#: actions/newmessage.php:71 actions/newmessage.php:231 +msgid "New message" +msgstr "" + +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +msgid "You can't send a message to this user." +msgstr "" + +#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 +#: lib/command.php:555 +msgid "No content!" +msgstr "" + +#: actions/newmessage.php:158 +msgid "No recipient specified." +msgstr "" + +#: actions/newmessage.php:164 lib/command.php:484 +msgid "" +"Don't send a message to yourself; just say it to yourself quietly instead." +msgstr "" + +#: actions/newmessage.php:181 +msgid "Message sent" +msgstr "" + +#: actions/newmessage.php:185 +#, php-format +msgid "Direct message to %s sent." +msgstr "" + +#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +msgid "Ajax Error" +msgstr "" + +#: actions/newnotice.php:69 +msgid "New notice" +msgstr "" + +#: actions/newnotice.php:217 +msgid "Notice posted" +msgstr "" + +#: actions/noticesearch.php:68 +#, php-format +msgid "" +"Search for notices on %%site.name%% by their contents. Separate search terms " +"by spaces; they must be 3 characters or more." +msgstr "" + +#: actions/noticesearch.php:78 +msgid "Text search" +msgstr "" + +#: actions/noticesearch.php:91 +#, php-format +msgid "Search results for \"%1$s\" on %2$s" +msgstr "" + +#: actions/noticesearch.php:121 +#, php-format +msgid "" +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" +msgstr "" + +#: actions/noticesearch.php:124 +#, php-format +msgid "" +"Why not [register an account](%%%%action.register%%%%) and be the first to " +"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" +msgstr "" + +#: actions/noticesearchrss.php:96 +#, php-format +msgid "Updates with \"%s\"" +msgstr "" + +#: actions/noticesearchrss.php:98 +#, php-format +msgid "Updates matching search term \"%1$s\" on %2$s!" +msgstr "" + +#: actions/nudge.php:85 +msgid "" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." +msgstr "" + +#: actions/nudge.php:94 +msgid "Nudge sent" +msgstr "" + +#: actions/nudge.php:97 +msgid "Nudge sent!" +msgstr "" + +#: actions/oauthappssettings.php:59 +msgid "You must be logged in to list your applications." +msgstr "" + +#: actions/oauthappssettings.php:74 +msgid "OAuth applications" +msgstr "" + +#: actions/oauthappssettings.php:85 +msgid "Applications you have registered" +msgstr "" + +#: actions/oauthappssettings.php:135 +#, php-format +msgid "You have not registered any applications yet." +msgstr "" + +#: actions/oauthconnectionssettings.php:72 +msgid "Connected applications" +msgstr "" + +#: actions/oauthconnectionssettings.php:83 +msgid "You have allowed the following applications to access you account." +msgstr "" + +#: actions/oauthconnectionssettings.php:175 +msgid "You are not a user of that application." +msgstr "" + +#: actions/oauthconnectionssettings.php:186 +#, php-format +msgid "Unable to revoke access for app: %s." +msgstr "" + +#: actions/oauthconnectionssettings.php:198 +msgid "You have not authorized any applications to use your account." +msgstr "" + +#: actions/oauthconnectionssettings.php:211 +msgid "Developers can edit the registration settings for their applications " +msgstr "" + +#: actions/oembed.php:80 actions/shownotice.php:100 +msgid "Notice has no profile." +msgstr "" + +#: actions/oembed.php:87 actions/shownotice.php:175 +#, php-format +msgid "%1$s's status on %2$s" +msgstr "" + +#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') +#: actions/oembed.php:159 +#, php-format +msgid "Content type %s not supported." +msgstr "" + +#. TRANS: Error message displaying attachments. %s is the site's base URL. +#: actions/oembed.php:163 +#, php-format +msgid "Only %s URLs over plain HTTP please." +msgstr "" + +#. TRANS: Client error on an API request with an unsupported data format. +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 +msgid "Not a supported data format." +msgstr "" + +#: actions/opensearch.php:64 +msgid "People Search" +msgstr "" + +#: actions/opensearch.php:67 +msgid "Notice Search" +msgstr "" + +#: actions/othersettings.php:60 +msgid "Other settings" +msgstr "" + +#: actions/othersettings.php:71 +msgid "Manage various other options." +msgstr "" + +#: actions/othersettings.php:108 +msgid " (free service)" +msgstr "" + +#: actions/othersettings.php:116 +msgid "Shorten URLs with" +msgstr "" + +#: actions/othersettings.php:117 +msgid "Automatic shortening service to use." +msgstr "" + +#: actions/othersettings.php:122 +msgid "View profile designs" +msgstr "" + +#: actions/othersettings.php:123 +msgid "Show or hide profile designs." +msgstr "" + +#: actions/othersettings.php:153 +msgid "URL shortening service is too long (max 50 chars)." +msgstr "" + +#: actions/otp.php:69 +msgid "No user ID specified." +msgstr "" + +#: actions/otp.php:83 +msgid "No login token specified." +msgstr "" + +#: actions/otp.php:90 +msgid "No login token requested." +msgstr "" + +#: actions/otp.php:95 +msgid "Invalid login token specified." +msgstr "" + +#: actions/otp.php:104 +msgid "Login token expired." +msgstr "" + +#: actions/outbox.php:58 +#, php-format +msgid "Outbox for %1$s - page %2$d" +msgstr "" + +#: actions/outbox.php:61 +#, php-format +msgid "Outbox for %s" +msgstr "" + +#: actions/outbox.php:116 +msgid "This is your outbox, which lists private messages you have sent." +msgstr "" + +#: actions/passwordsettings.php:58 +msgid "Change password" +msgstr "" + +#: actions/passwordsettings.php:69 +msgid "Change your password." +msgstr "" + +#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 +msgid "Password change" +msgstr "" + +#: actions/passwordsettings.php:104 +msgid "Old password" +msgstr "" + +#: actions/passwordsettings.php:108 actions/recoverpassword.php:235 +msgid "New password" +msgstr "" + +#: actions/passwordsettings.php:109 +msgid "6 or more characters" +msgstr "" + +#: actions/passwordsettings.php:112 actions/recoverpassword.php:239 +#: actions/register.php:440 +msgid "Confirm" +msgstr "" + +#: actions/passwordsettings.php:113 actions/recoverpassword.php:240 +msgid "Same as password above" +msgstr "" + +#: actions/passwordsettings.php:117 +msgid "Change" +msgstr "" + +#: actions/passwordsettings.php:154 actions/register.php:237 +msgid "Password must be 6 or more characters." +msgstr "" + +#: actions/passwordsettings.php:157 actions/register.php:240 +msgid "Passwords don't match." +msgstr "" + +#: actions/passwordsettings.php:165 +msgid "Incorrect old password" +msgstr "" + +#: actions/passwordsettings.php:181 +msgid "Error saving user; invalid." +msgstr "" + +#: actions/passwordsettings.php:186 actions/recoverpassword.php:381 +msgid "Can't save new password." +msgstr "" + +#: actions/passwordsettings.php:192 actions/recoverpassword.php:211 +msgid "Password saved." +msgstr "" + +#. TRANS: Menu item for site administration +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 +msgid "Paths" +msgstr "" + +#: actions/pathsadminpanel.php:70 +msgid "Path and server settings for this StatusNet site." +msgstr "" + +#: actions/pathsadminpanel.php:157 +#, php-format +msgid "Theme directory not readable: %s." +msgstr "" + +#: actions/pathsadminpanel.php:163 +#, php-format +msgid "Avatar directory not writable: %s." +msgstr "" + +#: actions/pathsadminpanel.php:169 +#, php-format +msgid "Background directory not writable: %s." +msgstr "" + +#: actions/pathsadminpanel.php:177 +#, php-format +msgid "Locales directory not readable: %s." +msgstr "" + +#: actions/pathsadminpanel.php:183 +msgid "Invalid SSL server. The maximum length is 255 characters." +msgstr "" + +#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 +msgid "Site" +msgstr "" + +#: actions/pathsadminpanel.php:238 +msgid "Server" +msgstr "" + +#: actions/pathsadminpanel.php:238 +msgid "Site's server hostname." +msgstr "" + +#: actions/pathsadminpanel.php:242 +msgid "Path" +msgstr "" + +#: actions/pathsadminpanel.php:242 +msgid "Site path" +msgstr "" + +#: actions/pathsadminpanel.php:246 +msgid "Path to locales" +msgstr "" + +#: actions/pathsadminpanel.php:246 +msgid "Directory path to locales" +msgstr "" + +#: actions/pathsadminpanel.php:250 +msgid "Fancy URLs" +msgstr "" + +#: actions/pathsadminpanel.php:252 +msgid "Use fancy (more readable and memorable) URLs?" +msgstr "" + +#: actions/pathsadminpanel.php:259 +msgid "Theme" +msgstr "" + +#: actions/pathsadminpanel.php:264 +msgid "Theme server" +msgstr "" + +#: actions/pathsadminpanel.php:268 +msgid "Theme path" +msgstr "" + +#: actions/pathsadminpanel.php:272 +msgid "Theme directory" +msgstr "" + +#: actions/pathsadminpanel.php:279 +msgid "Avatars" +msgstr "" + +#: actions/pathsadminpanel.php:284 +msgid "Avatar server" +msgstr "" + +#: actions/pathsadminpanel.php:288 +msgid "Avatar path" +msgstr "" + +#: actions/pathsadminpanel.php:292 +msgid "Avatar directory" +msgstr "" + +#: actions/pathsadminpanel.php:301 +msgid "Backgrounds" +msgstr "" + +#: actions/pathsadminpanel.php:305 +msgid "Background server" +msgstr "" + +#: actions/pathsadminpanel.php:309 +msgid "Background path" +msgstr "" + +#: actions/pathsadminpanel.php:313 +msgid "Background directory" +msgstr "" + +#: actions/pathsadminpanel.php:320 +msgid "SSL" +msgstr "" + +#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 +msgid "Never" +msgstr "" + +#: actions/pathsadminpanel.php:324 +msgid "Sometimes" +msgstr "" + +#: actions/pathsadminpanel.php:325 +msgid "Always" +msgstr "" + +#: actions/pathsadminpanel.php:329 +msgid "Use SSL" +msgstr "" + +#: actions/pathsadminpanel.php:330 +msgid "When to use SSL" +msgstr "" + +#: actions/pathsadminpanel.php:335 +msgid "SSL server" +msgstr "" + +#: actions/pathsadminpanel.php:336 +msgid "Server to direct SSL requests to" +msgstr "" + +#: actions/pathsadminpanel.php:352 +msgid "Save paths" +msgstr "" + +#: actions/peoplesearch.php:52 +#, php-format +msgid "" +"Search for people on %%site.name%% by their name, location, or interests. " +"Separate the terms by spaces; they must be 3 characters or more." +msgstr "" + +#: actions/peoplesearch.php:58 +msgid "People search" +msgstr "" + +#: actions/peopletag.php:68 +#, php-format +msgid "Not a valid people tag: %s." +msgstr "" + +#: actions/peopletag.php:142 +#, php-format +msgid "Users self-tagged with %1$s - page %2$d" +msgstr "" + +#: actions/postnotice.php:95 +msgid "Invalid notice content." +msgstr "" + +#: actions/postnotice.php:101 +#, php-format +msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." +msgstr "" + +#: actions/profilesettings.php:60 +msgid "Profile settings" +msgstr "" + +#: actions/profilesettings.php:71 +msgid "" +"You can update your personal profile info here so people know more about you." +msgstr "" + +#: actions/profilesettings.php:99 +msgid "Profile information" +msgstr "" + +#: actions/profilesettings.php:108 lib/groupeditform.php:154 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces" +msgstr "" + +#: actions/profilesettings.php:111 actions/register.php:455 +#: actions/showgroup.php:256 actions/tagother.php:104 +#: lib/groupeditform.php:157 lib/userprofile.php:150 +msgid "Full name" +msgstr "" + +#. TRANS: Form input field label. +#: actions/profilesettings.php:115 actions/register.php:460 +#: lib/applicationeditform.php:244 lib/groupeditform.php:161 +msgid "Homepage" +msgstr "" + +#: actions/profilesettings.php:117 actions/register.php:462 +msgid "URL of your homepage, blog, or profile on another site" +msgstr "" + +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format +msgid "Describe yourself and your interests in %d chars" +msgstr "" + +#: actions/profilesettings.php:125 actions/register.php:471 +msgid "Describe yourself and your interests" +msgstr "" + +#: actions/profilesettings.php:127 actions/register.php:473 +msgid "Bio" +msgstr "" + +#: actions/profilesettings.php:132 actions/register.php:478 +#: actions/showgroup.php:265 actions/tagother.php:112 +#: actions/userauthorization.php:166 lib/groupeditform.php:177 +#: lib/userprofile.php:165 +msgid "Location" +msgstr "" + +#: actions/profilesettings.php:134 actions/register.php:480 +msgid "Where you are, like \"City, State (or Region), Country\"" +msgstr "" + +#: actions/profilesettings.php:138 +msgid "Share my current location when posting notices" +msgstr "" + +#: actions/profilesettings.php:145 actions/tagother.php:149 +#: actions/tagother.php:209 lib/subscriptionlist.php:106 +#: lib/subscriptionlist.php:108 lib/userprofile.php:210 +msgid "Tags" +msgstr "" + +#: actions/profilesettings.php:147 +msgid "" +"Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" +msgstr "" + +#: actions/profilesettings.php:151 +msgid "Language" +msgstr "" + +#: actions/profilesettings.php:152 +msgid "Preferred language" +msgstr "" + +#: actions/profilesettings.php:161 +msgid "Timezone" +msgstr "" + +#: actions/profilesettings.php:162 +msgid "What timezone are you normally in?" +msgstr "" + +#: actions/profilesettings.php:167 +msgid "" +"Automatically subscribe to whoever subscribes to me (best for non-humans)" +msgstr "" + +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format +msgid "Bio is too long (max %d chars)." +msgstr "" + +#: actions/profilesettings.php:235 actions/siteadminpanel.php:151 +msgid "Timezone not selected." +msgstr "" + +#: actions/profilesettings.php:241 +msgid "Language is too long (max 50 chars)." +msgstr "" + +#: actions/profilesettings.php:253 actions/tagother.php:178 +#, php-format +msgid "Invalid tag: \"%s\"" +msgstr "" + +#: actions/profilesettings.php:306 +msgid "Couldn't update user for autosubscribe." +msgstr "" + +#: actions/profilesettings.php:363 +msgid "Couldn't save location prefs." +msgstr "" + +#: actions/profilesettings.php:375 +msgid "Couldn't save profile." +msgstr "" + +#: actions/profilesettings.php:383 +msgid "Couldn't save tags." +msgstr "" + +#. TRANS: Message after successful saving of administrative settings. +#: actions/profilesettings.php:391 lib/adminpanelaction.php:141 +msgid "Settings saved." +msgstr "" + +#: actions/public.php:83 +#, php-format +msgid "Beyond the page limit (%s)." +msgstr "" + +#: actions/public.php:92 +msgid "Could not retrieve public stream." +msgstr "" + +#: actions/public.php:130 +#, php-format +msgid "Public timeline, page %d" +msgstr "" + +#: actions/public.php:132 lib/publicgroupnav.php:79 +msgid "Public timeline" +msgstr "" + +#: actions/public.php:160 +msgid "Public Stream Feed (RSS 1.0)" +msgstr "" + +#: actions/public.php:164 +msgid "Public Stream Feed (RSS 2.0)" +msgstr "" + +#: actions/public.php:168 +msgid "Public Stream Feed (Atom)" +msgstr "" + +#: actions/public.php:188 +#, php-format +msgid "" +"This is the public timeline for %%site.name%% but no one has posted anything " +"yet." +msgstr "" + +#: actions/public.php:191 +msgid "Be the first to post!" +msgstr "" + +#: actions/public.php:195 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to post!" +msgstr "" + +#: actions/public.php:242 +#, php-format +msgid "" +"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-" +"blogging) service based on the Free Software [StatusNet](http://status.net/) " +"tool. [Join now](%%action.register%%) to share notices about yourself with " +"friends, family, and colleagues! ([Read more](%%doc.help%%))" +msgstr "" + +#: actions/public.php:247 +#, php-format +msgid "" +"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-" +"blogging) service based on the Free Software [StatusNet](http://status.net/) " +"tool." +msgstr "" + +#: actions/publictagcloud.php:57 +msgid "Public tag cloud" +msgstr "" + +#: actions/publictagcloud.php:63 +#, php-format +msgid "These are most popular recent tags on %s " +msgstr "" + +#: actions/publictagcloud.php:69 +#, php-format +msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." +msgstr "" + +#: actions/publictagcloud.php:72 +msgid "Be the first to post one!" +msgstr "" + +#: actions/publictagcloud.php:75 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to post " +"one!" +msgstr "" + +#: actions/publictagcloud.php:134 +msgid "Tag cloud" +msgstr "" + +#: actions/recoverpassword.php:36 +msgid "You are already logged in!" +msgstr "" + +#: actions/recoverpassword.php:62 +msgid "No such recovery code." +msgstr "" + +#: actions/recoverpassword.php:66 +msgid "Not a recovery code." +msgstr "" + +#: actions/recoverpassword.php:73 +msgid "Recovery code for unknown user." +msgstr "" + +#: actions/recoverpassword.php:86 +msgid "Error with confirmation code." +msgstr "" + +#: actions/recoverpassword.php:97 +msgid "This confirmation code is too old. Please start again." +msgstr "" + +#: actions/recoverpassword.php:111 +msgid "Could not update user with confirmed email address." +msgstr "" + +#: actions/recoverpassword.php:152 +msgid "" +"If you have forgotten or lost your password, you can get a new one sent to " +"the email address you have stored in your account." +msgstr "" + +#: actions/recoverpassword.php:158 +msgid "You have been identified. Enter a new password below. " +msgstr "" + +#: actions/recoverpassword.php:188 +msgid "Password recovery" +msgstr "" + +#: actions/recoverpassword.php:191 +msgid "Nickname or email address" +msgstr "" + +#: actions/recoverpassword.php:193 +msgid "Your nickname on this server, or your registered email address." +msgstr "" + +#: actions/recoverpassword.php:199 actions/recoverpassword.php:200 +msgid "Recover" +msgstr "" + +#: actions/recoverpassword.php:208 +msgid "Reset password" +msgstr "" + +#: actions/recoverpassword.php:209 +msgid "Recover password" +msgstr "" + +#: actions/recoverpassword.php:210 actions/recoverpassword.php:335 +msgid "Password recovery requested" +msgstr "" + +#: actions/recoverpassword.php:213 +msgid "Unknown action" +msgstr "" + +#: actions/recoverpassword.php:236 +msgid "6 or more characters, and don't forget it!" +msgstr "" + +#: actions/recoverpassword.php:243 +msgid "Reset" +msgstr "" + +#: actions/recoverpassword.php:252 +msgid "Enter a nickname or email address." +msgstr "" + +#: actions/recoverpassword.php:282 +msgid "No user with that email address or username." +msgstr "" + +#: actions/recoverpassword.php:299 +msgid "No registered email address for that user." +msgstr "" + +#: actions/recoverpassword.php:313 +msgid "Error saving address confirmation." +msgstr "" + +#: actions/recoverpassword.php:338 +msgid "" +"Instructions for recovering your password have been sent to the email " +"address registered to your account." +msgstr "" + +#: actions/recoverpassword.php:357 +msgid "Unexpected password reset." +msgstr "" + +#: actions/recoverpassword.php:365 +msgid "Password must be 6 chars or more." +msgstr "" + +#: actions/recoverpassword.php:369 +msgid "Password and confirmation do not match." +msgstr "" + +#: actions/recoverpassword.php:388 actions/register.php:255 +msgid "Error setting user." +msgstr "" + +#: actions/recoverpassword.php:395 +msgid "New password successfully saved. You are now logged in." +msgstr "" + +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 +msgid "Sorry, only invited people can register." +msgstr "" + +#: actions/register.php:99 +msgid "Sorry, invalid invitation code." +msgstr "" + +#: actions/register.php:119 +msgid "Registration successful" +msgstr "" + +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 +msgid "Register" +msgstr "" + +#: actions/register.php:142 +msgid "Registration not allowed." +msgstr "" + +#: actions/register.php:205 +msgid "You can't register if you don't agree to the license." +msgstr "" + +#: actions/register.php:219 +msgid "Email address already exists." +msgstr "" + +#: actions/register.php:250 actions/register.php:272 +msgid "Invalid username or password." +msgstr "" + +#: actions/register.php:350 +msgid "" +"With this form you can create a new account. You can then post notices and " +"link up to friends and colleagues. " +msgstr "" + +#: actions/register.php:432 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." +msgstr "" + +#: actions/register.php:437 +msgid "6 or more characters. Required." +msgstr "" + +#: actions/register.php:441 +msgid "Same as password above. Required." +msgstr "" + +#. TRANS: Link description in user account settings menu. +#: actions/register.php:445 actions/register.php:449 +#: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 +msgid "Email" +msgstr "" + +#: actions/register.php:446 actions/register.php:450 +msgid "Used only for updates, announcements, and password recovery" +msgstr "" + +#: actions/register.php:457 +msgid "Longer name, preferably your \"real\" name" +msgstr "" + +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "" + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. +#: actions/register.php:532 +msgid "My text and files remain under my own copyright." +msgstr "" + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. +#: actions/register.php:535 +msgid "All rights reserved." +msgstr "" + +#. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. +#: actions/register.php:540 +#, php-format +msgid "" +"My text and files are available under %s except this private data: password, " +"email address, IM address, and phone number." +msgstr "" + +#: actions/register.php:583 +#, php-format +msgid "" +"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " +"want to...\n" +"\n" +"* Go to [your profile](%2$s) and post your first message.\n" +"* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send " +"notices through instant messages.\n" +"* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that " +"share your interests. \n" +"* Update your [profile settings](%%%%action.profilesettings%%%%) to tell " +"others more about you. \n" +"* Read over the [online docs](%%%%doc.help%%%%) for features you may have " +"missed. \n" +"\n" +"Thanks for signing up and we hope you enjoy using this service." +msgstr "" + +#: actions/register.php:607 +msgid "" +"(You should receive a message by email momentarily, with instructions on how " +"to confirm your email address.)" +msgstr "" + +#: actions/remotesubscribe.php:98 +#, php-format +msgid "" +"To subscribe, you can [login](%%action.login%%), or [register](%%action." +"register%%) a new account. If you already have an account on a [compatible " +"microblogging site](%%doc.openmublog%%), enter your profile URL below." +msgstr "" + +#: actions/remotesubscribe.php:112 +msgid "Remote subscribe" +msgstr "" + +#: actions/remotesubscribe.php:124 +msgid "Subscribe to a remote user" +msgstr "" + +#: actions/remotesubscribe.php:129 +msgid "User nickname" +msgstr "" + +#: actions/remotesubscribe.php:130 +msgid "Nickname of the user you want to follow" +msgstr "" + +#: actions/remotesubscribe.php:133 +msgid "Profile URL" +msgstr "" + +#: actions/remotesubscribe.php:134 +msgid "URL of your profile on another compatible microblogging service" +msgstr "" + +#: actions/remotesubscribe.php:137 lib/subscribeform.php:139 +#: lib/userprofile.php:406 +msgid "Subscribe" +msgstr "" + +#: actions/remotesubscribe.php:159 +msgid "Invalid profile URL (bad format)" +msgstr "" + +#: actions/remotesubscribe.php:168 +msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." +msgstr "" + +#: actions/remotesubscribe.php:176 +msgid "That’s a local profile! Login to subscribe." +msgstr "" + +#: actions/remotesubscribe.php:183 +msgid "Couldn’t get a request token." +msgstr "" + +#: actions/repeat.php:57 +msgid "Only logged-in users can repeat notices." +msgstr "" + +#: actions/repeat.php:64 actions/repeat.php:71 +msgid "No notice specified." +msgstr "" + +#: actions/repeat.php:76 +msgid "You can't repeat your own notice." +msgstr "" + +#: actions/repeat.php:90 +msgid "You already repeated that notice." +msgstr "" + +#: actions/repeat.php:114 lib/noticelist.php:675 +msgid "Repeated" +msgstr "" + +#: actions/repeat.php:119 +msgid "Repeated!" +msgstr "" + +#: actions/replies.php:126 actions/repliesrss.php:68 +#: lib/personalgroupnav.php:105 +#, php-format +msgid "Replies to %s" +msgstr "" + +#: actions/replies.php:128 +#, php-format +msgid "Replies to %1$s, page %2$d" +msgstr "" + +#: actions/replies.php:145 +#, php-format +msgid "Replies feed for %s (RSS 1.0)" +msgstr "" + +#: actions/replies.php:152 +#, php-format +msgid "Replies feed for %s (RSS 2.0)" +msgstr "" + +#: actions/replies.php:159 +#, php-format +msgid "Replies feed for %s (Atom)" +msgstr "" + +#: actions/replies.php:199 +#, fuzzy, php-format +msgid "" +"This is the timeline showing replies to %1$s but %2$s hasn't received a " +"notice to them yet." +msgstr "" +"Dette er tidslinjen for %s og venner, men ingen har skrevet noget endnu." + +#: actions/replies.php:204 +#, php-format +msgid "" +"You can engage other users in a conversation, subscribe to more people or " +"[join groups](%%action.groups%%)." +msgstr "" + +#: actions/replies.php:206 +#, php-format +msgid "" +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." +msgstr "" + +#: actions/repliesrss.php:72 +#, php-format +msgid "Replies to %1$s on %2$s!" +msgstr "" + +#: actions/revokerole.php:75 +msgid "You cannot revoke user roles on this site." +msgstr "" + +#: actions/revokerole.php:82 +msgid "User doesn't have this role." +msgstr "" + +#: actions/rsd.php:146 actions/version.php:159 +msgid "StatusNet" +msgstr "" + +#: actions/sandbox.php:65 actions/unsandbox.php:65 +msgid "You cannot sandbox users on this site." +msgstr "" + +#: actions/sandbox.php:72 +msgid "User is already sandboxed." +msgstr "" + +#. TRANS: Menu item for site administration +#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 +#: lib/adminpanelaction.php:392 +msgid "Sessions" +msgstr "" + +#: actions/sessionsadminpanel.php:65 +msgid "Session settings for this StatusNet site." +msgstr "" + +#: actions/sessionsadminpanel.php:175 +msgid "Handle sessions" +msgstr "" + +#: actions/sessionsadminpanel.php:177 +msgid "Whether to handle sessions ourselves." +msgstr "" + +#: actions/sessionsadminpanel.php:181 +msgid "Session debugging" +msgstr "" + +#: actions/sessionsadminpanel.php:183 +msgid "Turn on debugging output for sessions." +msgstr "" + +#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 +#: actions/useradminpanel.php:294 +msgid "Save site settings" +msgstr "" + +#: actions/showapplication.php:82 +msgid "You must be logged in to view an application." +msgstr "" + +#: actions/showapplication.php:157 +msgid "Application profile" +msgstr "" + +#. TRANS: Form input field label for application icon. +#: actions/showapplication.php:159 lib/applicationeditform.php:182 +msgid "Icon" +msgstr "" + +#. TRANS: Form input field label for application name. +#: actions/showapplication.php:169 actions/version.php:197 +#: lib/applicationeditform.php:199 +msgid "Name" +msgstr "" + +#. TRANS: Form input field label. +#: actions/showapplication.php:178 lib/applicationeditform.php:235 +msgid "Organization" +msgstr "" + +#. TRANS: Form input field label. +#: actions/showapplication.php:187 actions/version.php:200 +#: lib/applicationeditform.php:216 lib/groupeditform.php:172 +msgid "Description" +msgstr "" + +#: actions/showapplication.php:192 actions/showgroup.php:436 +#: lib/profileaction.php:187 +msgid "Statistics" +msgstr "" + +#: actions/showapplication.php:203 +#, php-format +msgid "Created by %1$s - %2$s access by default - %3$d users" +msgstr "" + +#: actions/showapplication.php:213 +msgid "Application actions" +msgstr "" + +#: actions/showapplication.php:236 +msgid "Reset key & secret" +msgstr "" + +#: actions/showapplication.php:261 +msgid "Application info" +msgstr "" + +#: actions/showapplication.php:263 +msgid "Consumer key" +msgstr "" + +#: actions/showapplication.php:268 +msgid "Consumer secret" +msgstr "" + +#: actions/showapplication.php:273 +msgid "Request token URL" +msgstr "" + +#: actions/showapplication.php:278 +msgid "Access token URL" +msgstr "" + +#: actions/showapplication.php:283 +msgid "Authorize URL" +msgstr "" + +#: actions/showapplication.php:288 +msgid "" +"Note: We support HMAC-SHA1 signatures. We do not support the plaintext " +"signature method." +msgstr "" + +#: actions/showapplication.php:309 +msgid "Are you sure you want to reset your consumer key and secret?" +msgstr "" + +#: actions/showfavorites.php:79 +#, php-format +msgid "%1$s's favorite notices, page %2$d" +msgstr "" + +#: actions/showfavorites.php:132 +msgid "Could not retrieve favorite notices." +msgstr "" + +#: actions/showfavorites.php:171 +#, php-format +msgid "Feed for favorites of %s (RSS 1.0)" +msgstr "" + +#: actions/showfavorites.php:178 +#, php-format +msgid "Feed for favorites of %s (RSS 2.0)" +msgstr "" + +#: actions/showfavorites.php:185 +#, php-format +msgid "Feed for favorites of %s (Atom)" +msgstr "" + +#: actions/showfavorites.php:206 +msgid "" +"You haven't chosen any favorite notices yet. Click the fave button on " +"notices you like to bookmark them for later or shed a spotlight on them." +msgstr "" + +#: actions/showfavorites.php:208 +#, php-format +msgid "" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" +msgstr "" + +#: actions/showfavorites.php:212 +#, php-format +msgid "" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" +msgstr "" + +#: actions/showfavorites.php:243 +msgid "This is a way to share what you like." +msgstr "" + +#: actions/showgroup.php:82 lib/groupnav.php:86 +#, php-format +msgid "%s group" +msgstr "" + +#: actions/showgroup.php:84 +#, php-format +msgid "%1$s group, page %2$d" +msgstr "" + +#: actions/showgroup.php:227 +msgid "Group profile" +msgstr "" + +#: actions/showgroup.php:272 actions/tagother.php:118 +#: actions/userauthorization.php:175 lib/userprofile.php:178 +msgid "URL" +msgstr "" + +#: actions/showgroup.php:283 actions/tagother.php:128 +#: actions/userauthorization.php:187 lib/userprofile.php:195 +msgid "Note" +msgstr "" + +#: actions/showgroup.php:293 lib/groupeditform.php:184 +msgid "Aliases" +msgstr "" + +#: actions/showgroup.php:302 +msgid "Group actions" +msgstr "" + +#: actions/showgroup.php:338 +#, php-format +msgid "Notice feed for %s group (RSS 1.0)" +msgstr "" + +#: actions/showgroup.php:344 +#, php-format +msgid "Notice feed for %s group (RSS 2.0)" +msgstr "" + +#: actions/showgroup.php:350 +#, php-format +msgid "Notice feed for %s group (Atom)" +msgstr "" + +#: actions/showgroup.php:355 +#, php-format +msgid "FOAF for %s group" +msgstr "" + +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 +msgid "Members" +msgstr "" + +#: actions/showgroup.php:398 lib/profileaction.php:117 +#: lib/profileaction.php:152 lib/profileaction.php:255 lib/section.php:95 +#: lib/subscriptionlist.php:127 lib/tagcloudsection.php:71 +msgid "(None)" +msgstr "" + +#: actions/showgroup.php:404 +msgid "All members" +msgstr "" + +#: actions/showgroup.php:439 +msgid "Created" +msgstr "" + +#: actions/showgroup.php:455 +#, php-format +msgid "" +"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." +"wikipedia.org/wiki/Micro-blogging) service based on the Free Software " +"[StatusNet](http://status.net/) tool. Its members share short messages about " +"their life and interests. [Join now](%%%%action.register%%%%) to become part " +"of this group and many more! ([Read more](%%%%doc.help%%%%))" +msgstr "" + +#: actions/showgroup.php:461 +#, php-format +msgid "" +"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." +"wikipedia.org/wiki/Micro-blogging) service based on the Free Software " +"[StatusNet](http://status.net/) tool. Its members share short messages about " +"their life and interests. " +msgstr "" + +#: actions/showgroup.php:489 +msgid "Admins" +msgstr "" + +#: actions/showmessage.php:81 +msgid "No such message." +msgstr "" + +#: actions/showmessage.php:98 +msgid "Only the sender and recipient may read this message." +msgstr "" + +#: actions/showmessage.php:108 +#, php-format +msgid "Message to %1$s on %2$s" +msgstr "" + +#: actions/showmessage.php:113 +#, php-format +msgid "Message from %1$s on %2$s" +msgstr "" + +#: actions/shownotice.php:90 +msgid "Notice deleted." +msgstr "" + +#: actions/showstream.php:73 +#, php-format +msgid " tagged %s" +msgstr "" + +#: actions/showstream.php:79 +#, php-format +msgid "%1$s, page %2$d" +msgstr "" + +#: actions/showstream.php:122 +#, php-format +msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" +msgstr "" + +#: actions/showstream.php:129 +#, php-format +msgid "Notice feed for %s (RSS 1.0)" +msgstr "" + +#: actions/showstream.php:136 +#, php-format +msgid "Notice feed for %s (RSS 2.0)" +msgstr "" + +#: actions/showstream.php:143 +#, php-format +msgid "Notice feed for %s (Atom)" +msgstr "" + +#: actions/showstream.php:148 +#, php-format +msgid "FOAF for %s" +msgstr "" + +#: actions/showstream.php:200 +#, php-format +msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." +msgstr "" + +#: actions/showstream.php:205 +msgid "" +"Seen anything interesting recently? You haven't posted any notices yet, now " +"would be a good time to start :)" +msgstr "" + +#: actions/showstream.php:207 +#, php-format +msgid "" +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." +msgstr "" + +#: actions/showstream.php:243 +#, php-format +msgid "" +"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en." +"wikipedia.org/wiki/Micro-blogging) service based on the Free Software " +"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " +"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" +msgstr "" + +#: actions/showstream.php:248 +#, php-format +msgid "" +"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en." +"wikipedia.org/wiki/Micro-blogging) service based on the Free Software " +"[StatusNet](http://status.net/) tool. " +msgstr "" + +#: actions/showstream.php:305 +#, php-format +msgid "Repeat of %s" +msgstr "" + +#: actions/silence.php:65 actions/unsilence.php:65 +msgid "You cannot silence users on this site." +msgstr "" + +#: actions/silence.php:72 +msgid "User is already silenced." +msgstr "" + +#: actions/siteadminpanel.php:69 +msgid "Basic settings for this StatusNet site" +msgstr "" + +#: actions/siteadminpanel.php:133 +msgid "Site name must have non-zero length." +msgstr "" + +#: actions/siteadminpanel.php:141 +msgid "You must have a valid contact email address." +msgstr "" + +#: actions/siteadminpanel.php:159 +#, php-format +msgid "Unknown language \"%s\"." +msgstr "" + +#: actions/siteadminpanel.php:165 +msgid "Minimum text limit is 0 (unlimited)." +msgstr "" + +#: actions/siteadminpanel.php:171 +msgid "Dupe limit must be one or more seconds." +msgstr "" + +#: actions/siteadminpanel.php:221 +msgid "General" +msgstr "" + +#: actions/siteadminpanel.php:224 +msgid "Site name" +msgstr "" + +#: actions/siteadminpanel.php:225 +msgid "The name of your site, like \"Yourcompany Microblog\"" +msgstr "" + +#: actions/siteadminpanel.php:229 +msgid "Brought by" +msgstr "" + +#: actions/siteadminpanel.php:230 +msgid "Text used for credits link in footer of each page" +msgstr "" + +#: actions/siteadminpanel.php:234 +msgid "Brought by URL" +msgstr "" + +#: actions/siteadminpanel.php:235 +msgid "URL used for credits link in footer of each page" +msgstr "" + +#: actions/siteadminpanel.php:239 +msgid "Contact email address for your site" +msgstr "" + +#: actions/siteadminpanel.php:245 +msgid "Local" +msgstr "" + +#: actions/siteadminpanel.php:256 +msgid "Default timezone" +msgstr "" + +#: actions/siteadminpanel.php:257 +msgid "Default timezone for the site; usually UTC." +msgstr "" + +#: actions/siteadminpanel.php:262 +msgid "Default language" +msgstr "" + +#: actions/siteadminpanel.php:263 +msgid "Site language when autodetection from browser settings is not available" +msgstr "" + +#: actions/siteadminpanel.php:271 +msgid "Limits" +msgstr "" + +#: actions/siteadminpanel.php:274 +msgid "Text limit" +msgstr "" + +#: actions/siteadminpanel.php:274 +msgid "Maximum number of characters for notices." +msgstr "" + +#: actions/siteadminpanel.php:278 +msgid "Dupe limit" +msgstr "" + +#: actions/siteadminpanel.php:278 +msgid "How long users must wait (in seconds) to post the same thing again." +msgstr "" + +#: actions/sitenoticeadminpanel.php:56 +msgid "Site Notice" +msgstr "" + +#: actions/sitenoticeadminpanel.php:67 +msgid "Edit site-wide message" +msgstr "" + +#: actions/sitenoticeadminpanel.php:103 +msgid "Unable to save site notice." +msgstr "" + +#: actions/sitenoticeadminpanel.php:113 +msgid "Max length for the site-wide notice is 255 chars." +msgstr "" + +#: actions/sitenoticeadminpanel.php:176 +msgid "Site notice text" +msgstr "" + +#: actions/sitenoticeadminpanel.php:178 +msgid "Site-wide notice text (255 chars max; HTML okay)" +msgstr "" + +#: actions/sitenoticeadminpanel.php:198 +msgid "Save site notice" +msgstr "" + +#. TRANS: Title for SMS settings. +#: actions/smssettings.php:59 +msgid "SMS settings" +msgstr "" + +#. 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 "" + +#. 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 "" + +#. TRANS: Form legend for SMS settings form. +#: actions/smssettings.php:111 +msgid "SMS address" +msgstr "" + +#. TRANS: Form guide in SMS settings form. +#: actions/smssettings.php:120 +msgid "Current confirmed SMS-enabled phone number." +msgstr "" + +#. TRANS: Form guide in IM settings form. +#: actions/smssettings.php:133 +msgid "Awaiting confirmation on this phone number." +msgstr "" + +#. TRANS: Field label for SMS address input in SMS settings form. +#: actions/smssettings.php:142 +msgid "Confirmation code" +msgstr "" + +#. TRANS: Form field instructions in SMS settings form. +#: actions/smssettings.php:144 +msgid "Enter the code you received on your phone." +msgstr "" + +#. TRANS: Button label to confirm SMS confirmation code in SMS settings. +#: actions/smssettings.php:148 +msgctxt "BUTTON" +msgid "Confirm" +msgstr "" + +#. TRANS: Field label for SMS phone number input in SMS settings form. +#: actions/smssettings.php:153 +msgid "SMS phone number" +msgstr "" + +#. 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 "" + +#. TRANS: Form legend for SMS preferences form. +#: actions/smssettings.php:195 +msgid "SMS preferences" +msgstr "" + +#. TRANS: Checkbox label in SMS preferences form. +#: actions/smssettings.php:201 +msgid "" +"Send me notices through SMS; I understand I may incur exorbitant charges " +"from my carrier." +msgstr "" + +#. TRANS: Confirmation message for successful SMS preferences save. +#: actions/smssettings.php:315 +msgid "SMS preferences saved." +msgstr "" + +#. TRANS: Message given saving SMS phone number without having provided one. +#: actions/smssettings.php:338 +msgid "No phone number." +msgstr "" + +#. TRANS: Message given saving SMS phone number without having selected a carrier. +#: actions/smssettings.php:344 +msgid "No carrier selected." +msgstr "" + +#. TRANS: Message given saving SMS phone number that is already set. +#: actions/smssettings.php:352 +msgid "That is already your phone number." +msgstr "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. TRANS: Message given after successfully canceling SMS phone number confirmation. +#: actions/smssettings.php:427 +msgid "SMS confirmation cancelled." +msgstr "" + +#. 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 "" + +#. TRANS: Message given after successfully removing a registered SMS phone number. +#: actions/smssettings.php:470 +msgid "The SMS phone number was removed." +msgstr "" + +#. TRANS: Label for mobile carrier dropdown menu in SMS settings. +#: actions/smssettings.php:511 +msgid "Mobile carrier" +msgstr "" + +#. TRANS: Default option for mobile carrier dropdown menu in SMS settings. +#: actions/smssettings.php:516 +msgid "Select a carrier" +msgstr "" + +#. TRANS: Form instructions for mobile carrier dropdown menu in SMS settings. +#. TRANS: %s is an administrative contact's e-mail address. +#: actions/smssettings.php:525 +#, php-format +msgid "" +"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 "" + +#. TRANS: Message given saving SMS phone number confirmation code without having provided one. +#: actions/smssettings.php:548 +msgid "No code entered" +msgstr "" + +#. TRANS: Menu item for site administration +#: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 +#: lib/adminpanelaction.php:408 +msgid "Snapshots" +msgstr "" + +#: actions/snapshotadminpanel.php:65 +msgid "Manage snapshot configuration" +msgstr "" + +#: actions/snapshotadminpanel.php:127 +msgid "Invalid snapshot run value." +msgstr "" + +#: actions/snapshotadminpanel.php:133 +msgid "Snapshot frequency must be a number." +msgstr "" + +#: actions/snapshotadminpanel.php:144 +msgid "Invalid snapshot report URL." +msgstr "" + +#: actions/snapshotadminpanel.php:200 +msgid "Randomly during web hit" +msgstr "" + +#: actions/snapshotadminpanel.php:201 +msgid "In a scheduled job" +msgstr "" + +#: actions/snapshotadminpanel.php:206 +msgid "Data snapshots" +msgstr "" + +#: actions/snapshotadminpanel.php:208 +msgid "When to send statistical data to status.net servers" +msgstr "" + +#: actions/snapshotadminpanel.php:217 +msgid "Frequency" +msgstr "" + +#: actions/snapshotadminpanel.php:218 +msgid "Snapshots will be sent once every N web hits" +msgstr "" + +#: actions/snapshotadminpanel.php:226 +msgid "Report URL" +msgstr "" + +#: actions/snapshotadminpanel.php:227 +msgid "Snapshots will be sent to this URL" +msgstr "" + +#: actions/snapshotadminpanel.php:248 +msgid "Save snapshot settings" +msgstr "" + +#: actions/subedit.php:70 +msgid "You are not subscribed to that profile." +msgstr "" + +#. 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 "" + +#: actions/subscribe.php:77 +msgid "This action only accepts POST requests." +msgstr "" + +#: actions/subscribe.php:107 +msgid "No such profile." +msgstr "" + +#: actions/subscribe.php:117 +msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." +msgstr "" + +#: actions/subscribe.php:145 +msgid "Subscribed" +msgstr "" + +#: actions/subscribers.php:50 +#, php-format +msgid "%s subscribers" +msgstr "" + +#: actions/subscribers.php:52 +#, php-format +msgid "%1$s subscribers, page %2$d" +msgstr "" + +#: actions/subscribers.php:63 +msgid "These are the people who listen to your notices." +msgstr "" + +#: actions/subscribers.php:67 +#, php-format +msgid "These are the people who listen to %s's notices." +msgstr "" + +#: actions/subscribers.php:108 +msgid "" +"You have no subscribers. Try subscribing to people you know and they might " +"return the favor" +msgstr "" + +#: actions/subscribers.php:110 +#, php-format +msgid "%s has no subscribers. Want to be the first?" +msgstr "" + +#: actions/subscribers.php:114 +#, php-format +msgid "" +"%s has no subscribers. Why not [register an account](%%%%action.register%%%" +"%) and be the first?" +msgstr "" + +#: actions/subscriptions.php:52 +#, php-format +msgid "%s subscriptions" +msgstr "" + +#: actions/subscriptions.php:54 +#, php-format +msgid "%1$s subscriptions, page %2$d" +msgstr "" + +#: actions/subscriptions.php:65 +msgid "These are the people whose notices you listen to." +msgstr "" + +#: actions/subscriptions.php:69 +#, php-format +msgid "These are the people whose notices %s listens to." +msgstr "" + +#: actions/subscriptions.php:126 +#, php-format +msgid "" +"You're not listening to anyone's notices right now, try subscribing to " +"people you know. Try [people search](%%action.peoplesearch%%), look for " +"members in groups you're interested in and in our [featured users](%%action." +"featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can " +"automatically subscribe to people you already follow there." +msgstr "" + +#: actions/subscriptions.php:128 actions/subscriptions.php:132 +#, php-format +msgid "%s is not listening to anyone." +msgstr "" + +#: actions/subscriptions.php:208 +msgid "Jabber" +msgstr "" + +#: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 +msgid "SMS" +msgstr "" + +#: actions/tag.php:69 +#, php-format +msgid "Notices tagged with %1$s, page %2$d" +msgstr "" + +#: actions/tag.php:87 +#, php-format +msgid "Notice feed for tag %s (RSS 1.0)" +msgstr "" + +#: actions/tag.php:93 +#, php-format +msgid "Notice feed for tag %s (RSS 2.0)" +msgstr "" + +#: actions/tag.php:99 +#, php-format +msgid "Notice feed for tag %s (Atom)" +msgstr "" + +#: actions/tagother.php:39 +msgid "No ID argument." +msgstr "" + +#: actions/tagother.php:65 +#, php-format +msgid "Tag %s" +msgstr "" + +#: actions/tagother.php:77 lib/userprofile.php:76 +msgid "User profile" +msgstr "" + +#: actions/tagother.php:81 actions/userauthorization.php:132 +#: lib/userprofile.php:103 +msgid "Photo" +msgstr "" + +#: actions/tagother.php:141 +msgid "Tag user" +msgstr "" + +#: actions/tagother.php:151 +msgid "" +"Tags for this user (letters, numbers, -, ., and _), comma- or space- " +"separated" +msgstr "" + +#: actions/tagother.php:193 +msgid "" +"You can only tag people you are subscribed to or who are subscribed to you." +msgstr "" + +#: actions/tagother.php:200 +msgid "Could not save tags." +msgstr "" + +#: actions/tagother.php:236 +msgid "Use this form to add tags to your subscribers or subscriptions." +msgstr "" + +#: actions/tagrss.php:35 +msgid "No such tag." +msgstr "" + +#: actions/unblock.php:59 +msgid "You haven't blocked that user." +msgstr "" + +#: actions/unsandbox.php:72 +msgid "User is not sandboxed." +msgstr "" + +#: actions/unsilence.php:72 +msgid "User is not silenced." +msgstr "" + +#: actions/unsubscribe.php:77 +msgid "No profile ID in request." +msgstr "" + +#: actions/unsubscribe.php:98 +msgid "Unsubscribed" +msgstr "" + +#: 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 "" + +#. TRANS: User admin panel title +#: actions/useradminpanel.php:59 +msgctxt "TITLE" +msgid "User" +msgstr "" + +#: actions/useradminpanel.php:70 +msgid "User settings for this StatusNet site." +msgstr "" + +#: actions/useradminpanel.php:149 +msgid "Invalid bio limit. Must be numeric." +msgstr "" + +#: actions/useradminpanel.php:155 +msgid "Invalid welcome text. Max length is 255 characters." +msgstr "" + +#: actions/useradminpanel.php:165 +#, php-format +msgid "Invalid default subscripton: '%1$s' is not user." +msgstr "" + +#. TRANS: Link description in user account settings menu. +#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 +#: lib/personalgroupnav.php:109 +msgid "Profile" +msgstr "" + +#: actions/useradminpanel.php:222 +msgid "Bio Limit" +msgstr "" + +#: actions/useradminpanel.php:223 +msgid "Maximum length of a profile bio in characters." +msgstr "" + +#: actions/useradminpanel.php:231 +msgid "New users" +msgstr "" + +#: actions/useradminpanel.php:235 +msgid "New user welcome" +msgstr "" + +#: actions/useradminpanel.php:236 +msgid "Welcome text for new users (Max 255 chars)." +msgstr "" + +#: actions/useradminpanel.php:241 +msgid "Default subscription" +msgstr "" + +#: actions/useradminpanel.php:242 +msgid "Automatically subscribe new users to this user." +msgstr "" + +#: actions/useradminpanel.php:251 +msgid "Invitations" +msgstr "" + +#: actions/useradminpanel.php:256 +msgid "Invitations enabled" +msgstr "" + +#: actions/useradminpanel.php:258 +msgid "Whether to allow users to invite new users." +msgstr "" + +#: actions/userauthorization.php:105 +msgid "Authorize subscription" +msgstr "" + +#: actions/userauthorization.php:110 +msgid "" +"Please check these details to make sure that you want to subscribe to this " +"user’s notices. If you didn’t just ask to subscribe to someone’s notices, " +"click “Rejectâ€." +msgstr "" + +#: actions/userauthorization.php:196 actions/version.php:167 +msgid "License" +msgstr "" + +#: actions/userauthorization.php:217 +msgid "Accept" +msgstr "" + +#: actions/userauthorization.php:218 lib/subscribeform.php:115 +#: lib/subscribeform.php:139 +msgid "Subscribe to this user" +msgstr "" + +#: actions/userauthorization.php:219 +msgid "Reject" +msgstr "" + +#: actions/userauthorization.php:220 +msgid "Reject this subscription" +msgstr "" + +#: actions/userauthorization.php:232 +msgid "No authorization request!" +msgstr "" + +#: actions/userauthorization.php:254 +msgid "Subscription authorized" +msgstr "" + +#: actions/userauthorization.php:256 +msgid "" +"The subscription has been authorized, but no callback URL was passed. Check " +"with the site’s instructions for details on how to authorize the " +"subscription. Your subscription token is:" +msgstr "" + +#: actions/userauthorization.php:266 +msgid "Subscription rejected" +msgstr "" + +#: actions/userauthorization.php:268 +msgid "" +"The subscription has been rejected, but no callback URL was passed. Check " +"with the site’s instructions for details on how to fully reject the " +"subscription." +msgstr "" + +#: actions/userauthorization.php:303 +#, php-format +msgid "Listener URI ‘%s’ not found here." +msgstr "" + +#: actions/userauthorization.php:308 +#, php-format +msgid "Listenee URI ‘%s’ is too long." +msgstr "" + +#: actions/userauthorization.php:314 +#, php-format +msgid "Listenee URI ‘%s’ is a local user." +msgstr "" + +#: actions/userauthorization.php:329 +#, php-format +msgid "Profile URL ‘%s’ is for a local user." +msgstr "" + +#: actions/userauthorization.php:345 +#, php-format +msgid "Avatar URL ‘%s’ is not valid." +msgstr "" + +#: actions/userauthorization.php:350 +#, php-format +msgid "Can’t read avatar URL ‘%s’." +msgstr "" + +#: actions/userauthorization.php:355 +#, php-format +msgid "Wrong image type for avatar URL ‘%s’." +msgstr "" + +#: actions/userdesignsettings.php:76 lib/designsettings.php:65 +msgid "Profile design" +msgstr "" + +#: actions/userdesignsettings.php:87 lib/designsettings.php:76 +msgid "" +"Customize the way your profile looks with a background image and a colour " +"palette of your choice." +msgstr "" + +#: actions/userdesignsettings.php:282 +msgid "Enjoy your hotdog!" +msgstr "" + +#. TRANS: Message is used as a page title. %1$s is a nick name, %2$d is a page number. +#: actions/usergroups.php:66 +#, php-format +msgid "%1$s groups, page %2$d" +msgstr "" + +#: actions/usergroups.php:132 +msgid "Search for more groups" +msgstr "" + +#: actions/usergroups.php:159 +#, php-format +msgid "%s is not a member of any group." +msgstr "" + +#: actions/usergroups.php:164 +#, php-format +msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." +msgstr "" + +#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name. +#. TRANS: Message is used as a subtitle in atom group notice feed. +#. TRANS: %1$s is a group name, %2$s is a site name. +#. TRANS: Message is used as a subtitle in atom user notice feed. +#. TRANS: %1$s is a user name, %2$s is a site name. +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 +#, php-format +msgid "Updates from %1$s on %2$s!" +msgstr "" + +#: actions/version.php:75 +#, php-format +msgid "StatusNet %s" +msgstr "" + +#: actions/version.php:155 +#, php-format +msgid "" +"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " +"Inc. and contributors." +msgstr "" + +#: actions/version.php:163 +msgid "Contributors" +msgstr "" + +#: actions/version.php:170 +msgid "" +"StatusNet 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. " +msgstr "" + +#: actions/version.php:176 +msgid "" +"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. " +msgstr "" + +#: actions/version.php:182 +#, php-format +msgid "" +"You should have received a copy of the GNU Affero General Public License " +"along with this program. If not, see %s." +msgstr "" + +#: actions/version.php:191 +msgid "Plugins" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. +#: actions/version.php:198 lib/action.php:789 +msgid "Version" +msgstr "" + +#: actions/version.php:199 +msgid "Author(s)" +msgstr "" + +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, php-format +msgid "" +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." +msgstr "" + +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 +#, php-format +msgid "A file this large would exceed your user quota of %d bytes." +msgstr "" + +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 +#, php-format +msgid "A file this large would exceed your monthly quota of %d bytes." +msgstr "" + +#. 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 "" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 +msgid "Group join failed." +msgstr "" + +#. 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 "" + +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 +msgid "Group leave failed." +msgstr "" + +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 +msgid "Could not update local group." +msgstr "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 +msgid "Could not insert message." +msgstr "" + +#. 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 "" + +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + +#. TRANS: Server exception. %s are the error details. +#: classes/Notice.php:190 +#, php-format +msgid "Database error inserting hashtag: %s" +msgstr "" + +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 +msgid "Problem saving notice. Too long." +msgstr "" + +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 +msgid "Problem saving notice. Unknown user." +msgstr "" + +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 +msgid "" +"Too many notices too fast; take a breather and post again in a few minutes." +msgstr "" + +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 +msgid "" +"Too many duplicate messages too quickly; take a breather and post again in a " +"few minutes." +msgstr "" + +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 +msgid "You are banned from posting notices on this site." +msgstr "" + +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 +msgid "Problem saving notice." +msgstr "" + +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 +msgid "Problem saving group inbox." +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. +#: classes/Notice.php:1614 +#, php-format +msgid "RT @%1$s %2$s" +msgstr "" + +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "" + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 +msgid "You have been banned from subscribing." +msgstr "" + +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 +msgid "Already subscribed!" +msgstr "" + +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 +msgid "User has blocked you." +msgstr "" + +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 +msgid "Not subscribed!" +msgstr "" + +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "" + +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." +msgstr "" + +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "" + +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 +#, php-format +msgid "Welcome to %1$s, @%2$s!" +msgstr "" + +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 +msgid "Could not create group." +msgstr "" + +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 +msgid "Could not set group URI." +msgstr "" + +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 +msgid "Could not set group membership." +msgstr "" + +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 +msgid "Could not save local group info." +msgstr "" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:109 +msgid "Change your profile settings" +msgstr "" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:116 +msgid "Upload an avatar" +msgstr "" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:123 +msgid "Change your password" +msgstr "" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:130 +msgid "Change email handling" +msgstr "" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:137 +msgid "Design your profile" +msgstr "" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:144 +msgid "Other options" +msgstr "" + +#. TRANS: Link description in user account settings menu. +#: lib/accountsettingsaction.php:146 +msgid "Other" +msgstr "" + +#. TRANS: Page title. %1$s is the title, %2$s is the site name. +#: lib/action.php:145 +#, php-format +msgid "%1$s - %2$s" +msgstr "" + +#. TRANS: Page title for a page without a title set. +#: lib/action.php:161 +msgid "Untitled page" +msgstr "" + +#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. +#: lib/action.php:436 +msgid "Primary site navigation" +msgstr "" + +#. TRANS: Tooltip for main menu option "Personal" +#: lib/action.php:442 +msgctxt "TOOLTIP" +msgid "Personal profile and friends timeline" +msgstr "" + +#. TRANS: Main menu option when logged in for access to personal profile and friends timeline +#: lib/action.php:445 +msgctxt "MENU" +msgid "Personal" +msgstr "" + +#. TRANS: Tooltip for main menu option "Account" +#: lib/action.php:447 +msgctxt "TOOLTIP" +msgid "Change your email, avatar, password, profile" +msgstr "" + +#. TRANS: Tooltip for main menu option "Services" +#: lib/action.php:452 +msgctxt "TOOLTIP" +msgid "Connect to services" +msgstr "" + +#. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services +#: lib/action.php:455 +msgid "Connect" +msgstr "" + +#. TRANS: Tooltip for menu option "Admin" +#: lib/action.php:458 +msgctxt "TOOLTIP" +msgid "Change site configuration" +msgstr "" + +#. TRANS: Main menu option when logged in and site admin for access to site configuration +#: lib/action.php:461 +msgctxt "MENU" +msgid "Admin" +msgstr "" + +#. TRANS: Tooltip for main menu option "Invite" +#: lib/action.php:465 +#, php-format +msgctxt "TOOLTIP" +msgid "Invite friends and colleagues to join you on %s" +msgstr "" + +#. TRANS: Main menu option when logged in and invitations are allowed for inviting new users +#: lib/action.php:468 +msgctxt "MENU" +msgid "Invite" +msgstr "" + +#. TRANS: Tooltip for main menu option "Logout" +#: lib/action.php:474 +msgctxt "TOOLTIP" +msgid "Logout from the site" +msgstr "" + +#. TRANS: Main menu option when logged in to log out the current user +#: lib/action.php:477 +msgctxt "MENU" +msgid "Logout" +msgstr "" + +#. TRANS: Tooltip for main menu option "Register" +#: lib/action.php:482 +msgctxt "TOOLTIP" +msgid "Create an account" +msgstr "" + +#. TRANS: Main menu option when not logged in to register a new account +#: lib/action.php:485 +msgctxt "MENU" +msgid "Register" +msgstr "" + +#. TRANS: Tooltip for main menu option "Login" +#: lib/action.php:488 +msgctxt "TOOLTIP" +msgid "Login to the site" +msgstr "" + +#: lib/action.php:491 +msgctxt "MENU" +msgid "Login" +msgstr "" + +#. TRANS: Tooltip for main menu option "Help" +#: lib/action.php:494 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "" + +#: lib/action.php:497 +msgctxt "MENU" +msgid "Help" +msgstr "" + +#. TRANS: Tooltip for main menu option "Search" +#: lib/action.php:500 +msgctxt "TOOLTIP" +msgid "Search for people or text" +msgstr "" + +#: lib/action.php:503 +msgctxt "MENU" +msgid "Search" +msgstr "" + +#. TRANS: DT element for site notice. String is hidden in default CSS. +#. TRANS: Menu item for site administration +#: lib/action.php:525 lib/adminpanelaction.php:400 +msgid "Site notice" +msgstr "" + +#. TRANS: DT element for local views block. String is hidden in default CSS. +#: lib/action.php:592 +msgid "Local views" +msgstr "" + +#. TRANS: DT element for page notice. String is hidden in default CSS. +#: lib/action.php:659 +msgid "Page notice" +msgstr "" + +#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. +#: lib/action.php:762 +msgid "Secondary site navigation" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to help on StatusNet. +#: lib/action.php:768 +msgid "Help" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to text about StatusNet site. +#: lib/action.php:771 +msgid "About" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. +#: lib/action.php:774 +msgid "FAQ" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to Terms of Service. +#: lib/action.php:779 +msgid "TOS" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to privacy policy. +#: lib/action.php:783 +msgid "Privacy" +msgstr "" + +#. TRANS: Secondary navigation menu option. +#: lib/action.php:786 +msgid "Source" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. +#: lib/action.php:792 +msgid "Contact" +msgstr "" + +#: lib/action.php:794 +msgid "Badge" +msgstr "" + +#. TRANS: DT element for StatusNet software license. +#: lib/action.php:823 +msgid "StatusNet software license" +msgstr "" + +#. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. +#: lib/action.php:827 +#, php-format +msgid "" +"**%%site.name%%** is a microblogging service brought to you by [%%site." +"broughtby%%](%%site.broughtbyurl%%)." +msgstr "" + +#. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. +#: lib/action.php:830 +#, php-format +msgid "**%%site.name%%** is a microblogging service." +msgstr "" + +#. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. +#: lib/action.php:834 +#, php-format +msgid "" +"It runs the [StatusNet](http://status.net/) microblogging software, version %" +"s, available under the [GNU Affero General Public License](http://www.fsf." +"org/licensing/licenses/agpl-3.0.html)." +msgstr "" + +#. TRANS: DT element for StatusNet site content license. +#: lib/action.php:850 +msgid "Site content license" +msgstr "" + +#. TRANS: Content license displayed when license is set to 'private'. +#. TRANS: %1$s is the site name. +#: lib/action.php:857 +#, php-format +msgid "Content and data of %1$s are private and confidential." +msgstr "" + +#. TRANS: Content license displayed when license is set to 'allrightsreserved'. +#. TRANS: %1$s is the copyright owner. +#: lib/action.php:864 +#, php-format +msgid "Content and data copyright by %1$s. All rights reserved." +msgstr "" + +#. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. +#: lib/action.php:868 +msgid "Content and data copyright by contributors. All rights reserved." +msgstr "" + +#. TRANS: license message in footer. %1$s is the site name, %2$s is a link to the license URL, with a licence name set in configuration. +#: lib/action.php:881 +#, php-format +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:1192 +msgid "Pagination" +msgstr "" + +#. TRANS: Pagination message to go to a page displaying information more in the +#. TRANS: present than the currently displayed information. +#: lib/action.php:1203 +msgid "After" +msgstr "" + +#. TRANS: Pagination message to go to a page displaying information more in the +#. TRANS: past than the currently displayed information. +#: lib/action.php:1213 +msgid "Before" +msgstr "" + +#. TRANS: Client exception thrown when a feed instance is a DOMDocument. +#: lib/activity.php:122 +msgid "Expecting a root feed element but got a whole XML document." +msgstr "" + +#: lib/activityutils.php:208 +msgid "Can't handle remote content yet." +msgstr "" + +#: lib/activityutils.php:244 +msgid "Can't handle embedded XML content yet." +msgstr "" + +#: lib/activityutils.php:248 +msgid "Can't handle embedded Base64 content yet." +msgstr "" + +#. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights. +#: lib/adminpanelaction.php:98 +msgid "You cannot make changes to this site." +msgstr "" + +#. TRANS: Client error message throw when a certain panel's settings cannot be changed. +#: lib/adminpanelaction.php:110 +msgid "Changes to that panel are not allowed." +msgstr "" + +#. TRANS: Client error message. +#: lib/adminpanelaction.php:229 +msgid "showForm() not implemented." +msgstr "" + +#. TRANS: Client error message +#: lib/adminpanelaction.php:259 +msgid "saveSettings() not implemented." +msgstr "" + +#. TRANS: Client error message thrown if design settings could not be deleted in +#. TRANS: the admin panel Design. +#: lib/adminpanelaction.php:284 +msgid "Unable to delete design setting." +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:350 +msgid "Basic site configuration" +msgstr "" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:352 +msgctxt "MENU" +msgid "Site" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:358 +msgid "Design configuration" +msgstr "" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:360 +msgctxt "MENU" +msgid "Design" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:366 +msgid "User configuration" +msgstr "" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 +msgid "User" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:374 +msgid "Access configuration" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:382 +msgid "Paths configuration" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:390 +msgid "Sessions configuration" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:398 +msgid "Edit site notice" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:406 +msgid "Snapshots configuration" +msgstr "" + +#. TRANS: Client error 401. +#: lib/apiauth.php:113 +msgid "API resource requires read-write access, but you only have read access." +msgstr "" + +#. TRANS: Form legend. +#: lib/applicationeditform.php:137 +msgid "Edit application" +msgstr "" + +#. TRANS: Form guide. +#: lib/applicationeditform.php:187 +msgid "Icon for this application" +msgstr "" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:209 +#, php-format +msgid "Describe your application in %d characters" +msgstr "" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:213 +msgid "Describe your application" +msgstr "" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:224 +msgid "URL of the homepage of this application" +msgstr "" + +#. TRANS: Form input field label. +#: lib/applicationeditform.php:226 +msgid "Source URL" +msgstr "" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:233 +msgid "Organization responsible for this application" +msgstr "" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:242 +msgid "URL for the homepage of the organization" +msgstr "" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:251 +msgid "URL to redirect to after authentication" +msgstr "" + +#. TRANS: Radio button label for application type +#: lib/applicationeditform.php:278 +msgid "Browser" +msgstr "" + +#. TRANS: Radio button label for application type +#: lib/applicationeditform.php:295 +msgid "Desktop" +msgstr "" + +#. TRANS: Form guide. +#: lib/applicationeditform.php:297 +msgid "Type of application, browser or desktop" +msgstr "" + +#. TRANS: Radio button label for access type. +#: lib/applicationeditform.php:320 +msgid "Read-only" +msgstr "" + +#. TRANS: Radio button label for access type. +#: lib/applicationeditform.php:339 +msgid "Read-write" +msgstr "" + +#. TRANS: Form guide. +#: lib/applicationeditform.php:341 +msgid "Default access for this application: read-only, or read-write" +msgstr "" + +#. TRANS: Submit button title +#: lib/applicationeditform.php:359 +msgid "Cancel" +msgstr "" + +#. TRANS: Application access type +#: lib/applicationlist.php:136 +msgid "read-write" +msgstr "" + +#. TRANS: Application access type +#: lib/applicationlist.php:138 +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:144 +#, php-format +msgid "Approved %1$s - \"%2$s\" access." +msgstr "" + +#. TRANS: Button label +#: lib/applicationlist.php:159 +msgctxt "BUTTON" +msgid "Revoke" +msgstr "" + +#. TRANS: DT element label in attachment list. +#: lib/attachmentlist.php:88 +msgid "Attachments" +msgstr "" + +#. TRANS: DT element label in attachment list item. +#: lib/attachmentlist.php:265 +msgid "Author" +msgstr "" + +#. TRANS: DT element label in attachment list item. +#: lib/attachmentlist.php:279 +msgid "Provider" +msgstr "" + +#: lib/attachmentnoticesection.php:67 +msgid "Notices where this attachment appears" +msgstr "" + +#: lib/attachmenttagcloudsection.php:48 +msgid "Tags for this attachment" +msgstr "" + +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 +msgid "Password changing failed" +msgstr "" + +#: lib/authenticationplugin.php:236 +msgid "Password changing is not allowed" +msgstr "" + +#: lib/channel.php:157 lib/channel.php:177 +msgid "Command results" +msgstr "" + +#: lib/channel.php:229 lib/mailhandler.php:142 +msgid "Command complete" +msgstr "" + +#: lib/channel.php:240 +msgid "Command failed" +msgstr "" + +#: lib/command.php:83 lib/command.php:105 +msgid "Notice with that id does not exist" +msgstr "" + +#: lib/command.php:99 lib/command.php:596 +msgid "User has no last notice" +msgstr "" + +#. 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:127 +#, php-format +msgid "Could not find a user with nickname %s" +msgstr "" + +#. TRANS: Message given getting a non-existing user. +#. TRANS: %s is the nickname of the user that could not be found. +#: lib/command.php:147 +#, php-format +msgid "Could not find a local user with nickname %s" +msgstr "" + +#: lib/command.php:180 +msgid "Sorry, this command is not yet implemented." +msgstr "" + +#: lib/command.php:225 +msgid "It does not make a lot of sense to nudge yourself!" +msgstr "" + +#. TRANS: Message given having nudged another user. +#. TRANS: %s is the nickname of the user that was nudged. +#: lib/command.php:234 +#, php-format +msgid "Nudge sent to %s" +msgstr "" + +#: lib/command.php:260 +#, php-format +msgid "" +"Subscriptions: %1$s\n" +"Subscribers: %2$s\n" +"Notices: %3$s" +msgstr "" + +#: lib/command.php:302 +msgid "Notice marked as fave." +msgstr "" + +#: lib/command.php:323 +msgid "You are already a member of that group" +msgstr "" + +#. TRANS: Message given having failed to add 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:339 +#, php-format +msgid "Could not join user %1$s to group %2$s" +msgstr "" + +#. TRANS: Message given having failed to remove 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:385 +#, php-format +msgid "Could not remove user %1$s from group %2$s" +msgstr "" + +#. TRANS: Whois output. %s is the full name of the queried user. +#: lib/command.php:418 +#, php-format +msgid "Fullname: %s" +msgstr "" + +#. TRANS: Whois output. %s is the location of the queried user. +#. TRANS: Profile info line in new-subscriber notification e-mail +#: lib/command.php:422 lib/mail.php:268 +#, php-format +msgid "Location: %s" +msgstr "" + +#. TRANS: Whois output. %s is the homepage of the queried user. +#. TRANS: Profile info line in new-subscriber notification e-mail +#: lib/command.php:426 lib/mail.php:271 +#, php-format +msgid "Homepage: %s" +msgstr "" + +#. TRANS: Whois output. %s is the bio information of the queried user. +#: lib/command.php:430 +#, php-format +msgid "About: %s" +msgstr "" + +#: lib/command.php:457 +#, php-format +msgid "" +"%s is a remote profile; you can only send direct messages to users on the " +"same server." +msgstr "" + +#. 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. +#: lib/command.php:472 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgstr "" + +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: lib/command.php:492 +#, php-format +msgid "Direct message to %s sent" +msgstr "" + +#: lib/command.php:494 +msgid "Error sending direct message." +msgstr "" + +#: lib/command.php:514 +msgid "Cannot repeat your own notice" +msgstr "" + +#: lib/command.php:519 +msgid "Already repeated that notice" +msgstr "" + +#. 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:529 +#, php-format +msgid "Notice from %s repeated" +msgstr "" + +#: lib/command.php:531 +msgid "Error repeating notice." +msgstr "" + +#: lib/command.php:562 +#, php-format +msgid "Notice too long - maximum is %d characters, you sent %d" +msgstr "" + +#: lib/command.php:571 +#, php-format +msgid "Reply to %s sent" +msgstr "" + +#: lib/command.php:573 +msgid "Error saving notice." +msgstr "" + +#: lib/command.php:620 +msgid "Specify the name of the user to subscribe to" +msgstr "" + +#: lib/command.php:628 +msgid "Can't subscribe to OMB profiles by command." +msgstr "" + +#: lib/command.php:634 +#, php-format +msgid "Subscribed to %s" +msgstr "" + +#: lib/command.php:655 lib/command.php:754 +msgid "Specify the name of the user to unsubscribe from" +msgstr "" + +#: lib/command.php:664 +#, php-format +msgid "Unsubscribed from %s" +msgstr "" + +#: lib/command.php:682 lib/command.php:705 +msgid "Command not yet implemented." +msgstr "" + +#: lib/command.php:685 +msgid "Notification off." +msgstr "" + +#: lib/command.php:687 +msgid "Can't turn off notification." +msgstr "" + +#: lib/command.php:708 +msgid "Notification on." +msgstr "" + +#: lib/command.php:710 +msgid "Can't turn on notification." +msgstr "" + +#: lib/command.php:723 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:734 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:761 +#, php-format +msgid "Unsubscribed %s" +msgstr "" + +#: lib/command.php:778 +msgid "You are not subscribed to anyone." +msgstr "" + +#: lib/command.php:780 +#, fuzzy +msgid "You are subscribed to this person:" +msgid_plural "You are subscribed to these people:" +msgstr[0] "You are subscribed to this person:" +msgstr[1] "You are subscribed to these people:" + +#: lib/command.php:800 +msgid "No one is subscribed to you." +msgstr "" + +#: lib/command.php:802 +#, fuzzy +msgid "This person is subscribed to you:" +msgid_plural "These people are subscribed to you:" +msgstr[0] "This person is subscribed to you:" +msgstr[1] "These people are subscribed to you:" + +#: lib/command.php:822 +msgid "You are not a member of any groups." +msgstr "" + +#: lib/command.php:824 +#, fuzzy +msgid "You are a member of this group:" +msgid_plural "You are a member of these groups:" +msgstr[0] "You are a member of this group:" +msgstr[1] "You are a member of these groups:" + +#: lib/command.php:838 +msgid "" +"Commands:\n" +"on - turn on notifications\n" +"off - turn off notifications\n" +"help - show this help\n" +"follow <nickname> - subscribe to user\n" +"groups - lists the groups you have joined\n" +"subscriptions - list the people you follow\n" +"subscribers - list the people that follow you\n" +"leave <nickname> - unsubscribe from user\n" +"d <nickname> <text> - direct message to user\n" +"get <nickname> - get last notice from user\n" +"whois <nickname> - get profile info on user\n" +"lose <nickname> - force user to stop following you\n" +"fav <nickname> - add user's last notice as a 'fave'\n" +"fav #<notice_id> - add notice with the given id as a 'fave'\n" +"repeat #<notice_id> - repeat a notice with a given id\n" +"repeat <nickname> - repeat the last notice from user\n" +"reply #<notice_id> - reply to notice with a given id\n" +"reply <nickname> - reply to the last notice from user\n" +"join <group> - join group\n" +"login - Get a link to login to the web interface\n" +"drop <group> - leave group\n" +"stats - get your stats\n" +"stop - same as 'off'\n" +"quit - same as 'off'\n" +"sub <nickname> - same as 'follow'\n" +"unsub <nickname> - same as 'leave'\n" +"last <nickname> - same as 'get'\n" +"on <nickname> - not yet implemented.\n" +"off <nickname> - not yet implemented.\n" +"nudge <nickname> - remind a user to update.\n" +"invite <phone number> - not yet implemented.\n" +"track <word> - not yet implemented.\n" +"untrack <word> - not yet implemented.\n" +"track off - not yet implemented.\n" +"untrack all - not yet implemented.\n" +"tracks - not yet implemented.\n" +"tracking - not yet implemented.\n" +msgstr "" + +#: lib/common.php:135 +msgid "No configuration file found. " +msgstr "" + +#: lib/common.php:136 +msgid "I looked for configuration files in the following places: " +msgstr "" + +#: lib/common.php:138 +msgid "You may wish to run the installer to fix this." +msgstr "" + +#: lib/common.php:139 +msgid "Go to the installer." +msgstr "" + +#: lib/connectsettingsaction.php:110 +msgid "IM" +msgstr "" + +#: lib/connectsettingsaction.php:111 +msgid "Updates by instant messenger (IM)" +msgstr "" + +#: lib/connectsettingsaction.php:116 +msgid "Updates by SMS" +msgstr "" + +#: lib/connectsettingsaction.php:120 +msgid "Connections" +msgstr "" + +#: lib/connectsettingsaction.php:121 +msgid "Authorized connected applications" +msgstr "" + +#: lib/dberroraction.php:60 +msgid "Database error" +msgstr "" + +#: lib/designsettings.php:105 +msgid "Upload file" +msgstr "" + +#: lib/designsettings.php:109 +msgid "" +"You can upload your personal background image. The maximum file size is 2MB." +msgstr "" + +#: lib/designsettings.php:418 +msgid "Design defaults restored." +msgstr "" + +#: lib/disfavorform.php:114 lib/disfavorform.php:140 +msgid "Disfavor this notice" +msgstr "" + +#: lib/favorform.php:114 lib/favorform.php:140 +msgid "Favor this notice" +msgstr "" + +#: lib/favorform.php:140 +msgid "Favor" +msgstr "" + +#: lib/feed.php:85 +msgid "RSS 1.0" +msgstr "" + +#: lib/feed.php:87 +msgid "RSS 2.0" +msgstr "" + +#: lib/feed.php:89 +msgid "Atom" +msgstr "" + +#: lib/feed.php:91 +msgid "FOAF" +msgstr "" + +#: lib/feedlist.php:64 +msgid "Export data" +msgstr "" + +#: lib/galleryaction.php:121 +msgid "Filter tags" +msgstr "" + +#: lib/galleryaction.php:131 +msgid "All" +msgstr "" + +#: lib/galleryaction.php:139 +msgid "Select tag to filter" +msgstr "" + +#: lib/galleryaction.php:140 +msgid "Tag" +msgstr "" + +#: lib/galleryaction.php:141 +msgid "Choose a tag to narrow list" +msgstr "" + +#: lib/galleryaction.php:143 +msgid "Go" +msgstr "" + +#: lib/grantroleform.php:91 +#, php-format +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 "" + +#: lib/groupeditform.php:168 +msgid "Describe the group or topic" +msgstr "" + +#: lib/groupeditform.php:170 +#, php-format +msgid "Describe the group or topic in %d characters" +msgstr "" + +#: lib/groupeditform.php:179 +msgid "" +"Location for the group, if any, like \"City, State (or Region), Country\"" +msgstr "" + +#: lib/groupeditform.php:187 +#, php-format +msgid "Extra nicknames for the group, comma- or space- separated, max %d" +msgstr "" + +#: lib/groupnav.php:85 +msgid "Group" +msgstr "" + +#: lib/groupnav.php:101 +msgid "Blocked" +msgstr "" + +#: lib/groupnav.php:102 +#, php-format +msgid "%s blocked users" +msgstr "" + +#: lib/groupnav.php:108 +#, php-format +msgid "Edit %s group properties" +msgstr "" + +#: lib/groupnav.php:113 +msgid "Logo" +msgstr "" + +#: lib/groupnav.php:114 +#, php-format +msgid "Add or edit %s logo" +msgstr "" + +#: lib/groupnav.php:120 +#, php-format +msgid "Add or edit %s design" +msgstr "" + +#: lib/groupsbymemberssection.php:71 +msgid "Groups with most members" +msgstr "" + +#: lib/groupsbypostssection.php:71 +msgid "Groups with most posts" +msgstr "" + +#: lib/grouptagcloudsection.php:56 +#, php-format +msgid "Tags in %s group's notices" +msgstr "" + +#. TRANS: Client exception 406 +#: lib/htmloutputter.php:104 +msgid "This page is not available in a media type you accept" +msgstr "" + +#: lib/imagefile.php:72 +msgid "Unsupported image file format." +msgstr "" + +#: lib/imagefile.php:88 +#, php-format +msgid "That file is too big. The maximum file size is %s." +msgstr "" + +#: lib/imagefile.php:93 +msgid "Partial upload." +msgstr "" + +#: lib/imagefile.php:101 lib/mediafile.php:170 +msgid "System error uploading file." +msgstr "" + +#: lib/imagefile.php:109 +msgid "Not an image or corrupt file." +msgstr "" + +#: lib/imagefile.php:122 +msgid "Lost our file." +msgstr "" + +#: lib/imagefile.php:163 lib/imagefile.php:224 +msgid "Unknown file type" +msgstr "" + +#: lib/imagefile.php:244 +msgid "MB" +msgstr "" + +#: lib/imagefile.php:246 +msgid "kB" +msgstr "" + +#: lib/jabber.php:387 +#, php-format +msgid "[%s]" +msgstr "" + +#: lib/jabber.php:567 +#, php-format +msgid "Unknown inbox source %d." +msgstr "" + +#: lib/joinform.php:114 +msgid "Join" +msgstr "" + +#: lib/leaveform.php:114 +msgid "Leave" +msgstr "" + +#: lib/logingroupnav.php:80 +msgid "Login with a username and password" +msgstr "" + +#: lib/logingroupnav.php:86 +msgid "Sign up for a new account" +msgstr "" + +#. TRANS: Subject for address confirmation email +#: lib/mail.php:174 +msgid "Email address confirmation" +msgstr "" + +#. TRANS: Body for address confirmation email. +#: lib/mail.php:177 +#, php-format +msgid "" +"Hey, %s.\n" +"\n" +"Someone just entered this email address on %s.\n" +"\n" +"If it was you, and you want to confirm your entry, use the URL below:\n" +"\n" +"\t%s\n" +"\n" +"If not, just ignore this message.\n" +"\n" +"Thanks for your time, \n" +"%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 "" + +#: 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 "" + +#. TRANS: Main body of new-subscriber notification e-mail +#: lib/mail.php:254 +#, php-format +msgid "" +"%1$s is now listening to your notices on %2$s.\n" +"\n" +"\t%3$s\n" +"\n" +"%4$s%5$s%6$s\n" +"Faithfully yours,\n" +"%7$s.\n" +"\n" +"----\n" +"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 "" + +#. 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 "" + +#. TRANS: Body of notification mail for new posting email address +#: lib/mail.php:308 +#, php-format +msgid "" +"You have a new posting address on %1$s.\n" +"\n" +"Send email to %2$s to post new messages.\n" +"\n" +"More email instructions at %3$s.\n" +"\n" +"Faithfully yours,\n" +"%4$s" +msgstr "" + +#. TRANS: Subject line for SMS-by-email notification messages +#: lib/mail.php:433 +#, php-format +msgid "%s status" +msgstr "" + +#. TRANS: Subject line for SMS-by-email address confirmation message +#: lib/mail.php:460 +msgid "SMS confirmation" +msgstr "" + +#. 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 "" + +#. TRANS: Subject for 'nudge' notification email +#: lib/mail.php:484 +#, php-format +msgid "You've been nudged by %s" +msgstr "" + +#. TRANS: Body for 'nudge' notification email +#: lib/mail.php:489 +#, php-format +msgid "" +"%1$s (%2$s) is wondering what you are up to these days and is inviting you " +"to post some news.\n" +"\n" +"So let's hear from you :)\n" +"\n" +"%3$s\n" +"\n" +"Don't reply to this email; it won't get to them.\n" +"\n" +"With kind regards,\n" +"%4$s\n" +msgstr "" + +#. TRANS: Subject for direct-message notification email +#: lib/mail.php:536 +#, php-format +msgid "New private message from %s" +msgstr "" + +#. TRANS: Body for direct-message notification email +#: lib/mail.php:541 +#, php-format +msgid "" +"%1$s (%2$s) sent you a private message:\n" +"\n" +"------------------------------------------------------\n" +"%3$s\n" +"------------------------------------------------------\n" +"\n" +"You can reply to their message here:\n" +"\n" +"%4$s\n" +"\n" +"Don't reply to this email; it won't get to them.\n" +"\n" +"With kind regards,\n" +"%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 "" + +#. TRANS: Body for favorite notification email +#: lib/mail.php:592 +#, php-format +msgid "" +"%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" +"\n" +"The URL of your notice is:\n" +"\n" +"%3$s\n" +"\n" +"The text of your notice is:\n" +"\n" +"%4$s\n" +"\n" +"You can see the list of %1$s's favorites here:\n" +"\n" +"%5$s\n" +"\n" +"Faithfully yours,\n" +"%6$s\n" +msgstr "" + +#. TRANS: Line in @-reply notification e-mail. %s is conversation URL. +#: lib/mail.php:651 +#, php-format +msgid "" +"The full conversation can be read here:\n" +"\n" +"\t%s" +msgstr "" + +#: lib/mail.php:657 +#, php-format +msgid "%s (@%s) sent a notice to your attention" +msgstr "" + +#. TRANS: Body of @-reply notification e-mail. +#: lib/mail.php:660 +#, php-format +msgid "" +"%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" +"\n" +"The notice is here:\n" +"\n" +"\t%3$s\n" +"\n" +"It reads:\n" +"\n" +"\t%4$s\n" +"\n" +"%5$sYou can reply back here:\n" +"\n" +"\t%6$s\n" +"\n" +"The list of all @-replies for you here:\n" +"\n" +"%7$s\n" +"\n" +"Faithfully yours,\n" +"%2$s\n" +"\n" +"P.S. You can turn off these email notifications here: %8$s\n" +msgstr "" + +#: lib/mailbox.php:89 +msgid "Only the user can read their own mailboxes." +msgstr "" + +#: 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 "" + +#: lib/mailbox.php:227 lib/noticelist.php:505 +msgid "from" +msgstr "" + +#: lib/mailhandler.php:37 +msgid "Could not parse message." +msgstr "" + +#: lib/mailhandler.php:42 +msgid "Not a registered user." +msgstr "" + +#: lib/mailhandler.php:46 +msgid "Sorry, that is not your incoming email address." +msgstr "" + +#: lib/mailhandler.php:50 +msgid "Sorry, no incoming email allowed." +msgstr "" + +#: lib/mailhandler.php:228 +#, php-format +msgid "Unsupported message type: %s" +msgstr "" + +#: lib/mediafile.php:98 lib/mediafile.php:123 +msgid "There was a database error while saving your file. Please try again." +msgstr "" + +#: lib/mediafile.php:142 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." +msgstr "" + +#: lib/mediafile.php:147 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form." +msgstr "" + +#: lib/mediafile.php:152 +msgid "The uploaded file was only partially uploaded." +msgstr "" + +#: lib/mediafile.php:159 +msgid "Missing a temporary folder." +msgstr "" + +#: lib/mediafile.php:162 +msgid "Failed to write file to disk." +msgstr "" + +#: lib/mediafile.php:165 +msgid "File upload stopped by extension." +msgstr "" + +#: lib/mediafile.php:179 lib/mediafile.php:217 +msgid "File exceeds user's quota." +msgstr "" + +#: lib/mediafile.php:197 lib/mediafile.php:234 +msgid "File could not be moved to destination directory." +msgstr "" + +#: lib/mediafile.php:202 lib/mediafile.php:238 +msgid "Could not determine file's MIME type." +msgstr "" + +#: lib/mediafile.php:318 +#, php-format +msgid " Try using another %s format." +msgstr "" + +#: lib/mediafile.php:323 +#, php-format +msgid "%s is not a supported file type on this server." +msgstr "" + +#: lib/messageform.php:120 +msgid "Send a direct notice" +msgstr "" + +#: lib/messageform.php:146 +msgid "To" +msgstr "" + +#: lib/messageform.php:159 lib/noticeform.php:185 +msgid "Available characters" +msgstr "" + +#: lib/messageform.php:178 lib/noticeform.php:236 +msgctxt "Send button for sending notice" +msgid "Send" +msgstr "" + +#: lib/noticeform.php:160 +msgid "Send a notice" +msgstr "" + +#: lib/noticeform.php:173 +#, php-format +msgid "What's up, %s?" +msgstr "" + +#: lib/noticeform.php:192 +msgid "Attach" +msgstr "" + +#: lib/noticeform.php:196 +msgid "Attach a file" +msgstr "" + +#: lib/noticeform.php:212 +msgid "Share my location" +msgstr "" + +#: lib/noticeform.php:215 +msgid "Do not share my location" +msgstr "" + +#: lib/noticeform.php:216 +msgid "" +"Sorry, retrieving your geo location is taking longer than expected, please " +"try again later" +msgstr "" + +#. TRANS: Used in coordinates as abbreviation of north +#: lib/noticelist.php:436 +msgid "N" +msgstr "" + +#. TRANS: Used in coordinates as abbreviation of south +#: lib/noticelist.php:438 +msgid "S" +msgstr "" + +#. TRANS: Used in coordinates as abbreviation of east +#: lib/noticelist.php:440 +msgid "E" +msgstr "" + +#. TRANS: Used in coordinates as abbreviation of west +#: lib/noticelist.php:442 +msgid "W" +msgstr "" + +#: lib/noticelist.php:444 +#, php-format +msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" +msgstr "" + +#: lib/noticelist.php:453 +msgid "at" +msgstr "" + +#: lib/noticelist.php:567 +msgid "in context" +msgstr "" + +#: lib/noticelist.php:602 +msgid "Repeated by" +msgstr "" + +#: lib/noticelist.php:629 +msgid "Reply to this notice" +msgstr "" + +#: lib/noticelist.php:630 +msgid "Reply" +msgstr "" + +#: lib/noticelist.php:674 +msgid "Notice repeated" +msgstr "" + +#: lib/nudgeform.php:116 +msgid "Nudge this user" +msgstr "" + +#: lib/nudgeform.php:128 +msgid "Nudge" +msgstr "" + +#: lib/nudgeform.php:128 +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:306 +msgid "Error updating remote profile" +msgstr "" + +#: lib/oauthstore.php:311 +msgid "Error inserting remote profile" +msgstr "" + +#: lib/oauthstore.php:345 +msgid "Duplicate notice" +msgstr "" + +#: lib/oauthstore.php:490 +msgid "Couldn't insert new subscription." +msgstr "" + +#: lib/personalgroupnav.php:99 +msgid "Personal" +msgstr "" + +#: lib/personalgroupnav.php:104 +msgid "Replies" +msgstr "" + +#: lib/personalgroupnav.php:114 +msgid "Favorites" +msgstr "" + +#: lib/personalgroupnav.php:125 +msgid "Inbox" +msgstr "" + +#: lib/personalgroupnav.php:126 +msgid "Your incoming messages" +msgstr "" + +#: lib/personalgroupnav.php:130 +msgid "Outbox" +msgstr "" + +#: lib/personalgroupnav.php:131 +msgid "Your sent messages" +msgstr "" + +#: lib/personaltagcloudsection.php:56 +#, php-format +msgid "Tags in %s's notices" +msgstr "" + +#: lib/plugin.php:115 +msgid "Unknown" +msgstr "" + +#: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 +msgid "Subscriptions" +msgstr "" + +#: lib/profileaction.php:126 +msgid "All subscriptions" +msgstr "" + +#: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90 +msgid "Subscribers" +msgstr "" + +#: lib/profileaction.php:161 +msgid "All subscribers" +msgstr "" + +#: lib/profileaction.php:191 +msgid "User ID" +msgstr "" + +#: lib/profileaction.php:196 +msgid "Member since" +msgstr "" + +#. TRANS: Average count of posts made per day since account registration +#: lib/profileaction.php:235 +msgid "Daily average" +msgstr "" + +#: lib/profileaction.php:264 +msgid "All groups" +msgstr "" + +#: lib/profileformaction.php:123 +msgid "Unimplemented method." +msgstr "" + +#: lib/publicgroupnav.php:78 +msgid "Public" +msgstr "" + +#: lib/publicgroupnav.php:82 +msgid "User groups" +msgstr "" + +#: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 +msgid "Recent tags" +msgstr "" + +#: lib/publicgroupnav.php:88 +msgid "Featured" +msgstr "" + +#: lib/publicgroupnav.php:92 +msgid "Popular" +msgstr "" + +#: lib/redirectingaction.php:95 +msgid "No return-to arguments." +msgstr "" + +#: lib/repeatform.php:107 +msgid "Repeat this notice?" +msgstr "" + +#: lib/repeatform.php:132 +msgid "Yes" +msgstr "" + +#: lib/repeatform.php:132 +msgid "Repeat this notice" +msgstr "" + +#: lib/revokeroleform.php:91 +#, php-format +msgid "Revoke the \"%s\" role from this user" +msgstr "" + +#: lib/router.php:709 +msgid "No single user defined for single-user mode." +msgstr "" + +#: lib/sandboxform.php:67 +msgid "Sandbox" +msgstr "" + +#: lib/sandboxform.php:78 +msgid "Sandbox this user" +msgstr "" + +#: lib/searchaction.php:120 +msgid "Search site" +msgstr "" + +#: lib/searchaction.php:126 +msgid "Keyword(s)" +msgstr "" + +#: lib/searchaction.php:127 +msgid "Search" +msgstr "" + +#: lib/searchaction.php:162 +msgid "Search help" +msgstr "" + +#: lib/searchgroupnav.php:80 +msgid "People" +msgstr "" + +#: lib/searchgroupnav.php:81 +msgid "Find people on this site" +msgstr "" + +#: lib/searchgroupnav.php:83 +msgid "Find content of notices" +msgstr "" + +#: lib/searchgroupnav.php:85 +msgid "Find groups on this site" +msgstr "" + +#: lib/section.php:89 +msgid "Untitled section" +msgstr "" + +#: lib/section.php:106 +msgid "More..." +msgstr "" + +#: lib/silenceform.php:67 +msgid "Silence" +msgstr "" + +#: lib/silenceform.php:78 +msgid "Silence this user" +msgstr "" + +#: lib/subgroupnav.php:83 +#, php-format +msgid "People %s subscribes to" +msgstr "" + +#: lib/subgroupnav.php:91 +#, php-format +msgid "People subscribed to %s" +msgstr "" + +#: lib/subgroupnav.php:99 +#, php-format +msgid "Groups %s is a member of" +msgstr "" + +#: lib/subgroupnav.php:105 +msgid "Invite" +msgstr "" + +#: lib/subgroupnav.php:106 +#, php-format +msgid "Invite friends and colleagues to join you on %s" +msgstr "" + +#: lib/subscriberspeopleselftagcloudsection.php:48 +#: lib/subscriptionspeopleselftagcloudsection.php:48 +msgid "People Tagcloud as self-tagged" +msgstr "" + +#: lib/subscriberspeopletagcloudsection.php:48 +#: lib/subscriptionspeopletagcloudsection.php:48 +msgid "People Tagcloud as tagged" +msgstr "" + +#: lib/tagcloudsection.php:56 +msgid "None" +msgstr "" + +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +msgid "The theme file is missing or the upload failed." +msgstr "" + +#: lib/themeuploader.php:91 lib/themeuploader.php:102 +#: lib/themeuploader.php:253 lib/themeuploader.php:257 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "" + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "" + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "" + +#: lib/themeuploader.php:205 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "" + +#: lib/topposterssection.php:74 +msgid "Top posters" +msgstr "" + +#: lib/unsandboxform.php:69 +msgid "Unsandbox" +msgstr "" + +#: lib/unsandboxform.php:80 +msgid "Unsandbox this user" +msgstr "" + +#: lib/unsilenceform.php:67 +msgid "Unsilence" +msgstr "" + +#: lib/unsilenceform.php:78 +msgid "Unsilence this user" +msgstr "" + +#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 +msgid "Unsubscribe from this user" +msgstr "" + +#: lib/unsubscribeform.php:137 +msgid "Unsubscribe" +msgstr "" + +#: lib/usernoprofileexception.php:58 +#, php-format +msgid "User %s (%d) has no profile record." +msgstr "" + +#: lib/userprofile.php:117 +msgid "Edit Avatar" +msgstr "" + +#: lib/userprofile.php:234 lib/userprofile.php:248 +msgid "User actions" +msgstr "" + +#: lib/userprofile.php:237 +msgid "User deletion in progress..." +msgstr "" + +#: lib/userprofile.php:263 +msgid "Edit profile settings" +msgstr "" + +#: lib/userprofile.php:264 +msgid "Edit" +msgstr "" + +#: lib/userprofile.php:287 +msgid "Send a direct message to this user" +msgstr "" + +#: lib/userprofile.php:288 +msgid "Message" +msgstr "" + +#: lib/userprofile.php:326 +msgid "Moderate" +msgstr "" + +#: lib/userprofile.php:364 +msgid "User role" +msgstr "" + +#: lib/userprofile.php:366 +msgctxt "role" +msgid "Administrator" +msgstr "" + +#: lib/userprofile.php:367 +msgctxt "role" +msgid "Moderator" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1100 +msgid "a few seconds ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1103 +msgid "about a minute ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1107 +#, php-format +msgid "about %d minutes ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1110 +msgid "about an hour ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1114 +#, php-format +msgid "about %d hours ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1117 +msgid "about a day ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1121 +#, php-format +msgid "about %d days ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1124 +msgid "about a month ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1128 +#, php-format +msgid "about %d months ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1131 +msgid "about a year ago" +msgstr "" + +#: lib/webcolor.php:82 +#, php-format +msgid "%s is not a valid color!" +msgstr "" + +#: lib/webcolor.php:123 +#, php-format +msgid "%s is not a valid color! Use 3 or 6 hex chars." +msgstr "" + +#: lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po index 3f16402f2..8154220b7 100644 --- a/locale/de/LC_MESSAGES/statusnet.po +++ b/locale/de/LC_MESSAGES/statusnet.po @@ -7,7 +7,6 @@ # Author@translatewiki.net: McDutchie # Author@translatewiki.net: Michael # Author@translatewiki.net: Michi -# Author@translatewiki.net: Pill # Author@translatewiki.net: The Evil IP address # Author@translatewiki.net: Umherirrender # -- @@ -17,12 +16,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:12+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:49+0000\n" "Language-Team: German\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: de\n" "X-Message-Group: out-statusnet\n" @@ -107,7 +106,7 @@ msgstr "Seite nicht vorhanden" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -178,22 +177,20 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Du kannst [%1$s in seinem Profil einen Stups geben](../%2$s) oder [ihm etwas " -"posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit " -"zu erregen." +"Du kannst versuchen, [%1$s in seinem Profil einen Stups zu geben](../%2$s) " +"oder [ihm etwas posten](%%%%action.newnotice%%%%?status_textarea=%s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Warum [registrierst Du nicht einen Account](%%%%action.register%%%%) und " -"gibst %s dann einen Stups oder postest ihm etwas, um seine Aufmerksamkeit zu " -"erregen?" +"gibst %s dann einen Stups oder postest ihm etwas." #. TRANS: H1 text #: actions/all.php:182 @@ -225,7 +222,7 @@ msgstr "Aktualisierungen von %1$s und Freunden auf %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -275,7 +272,7 @@ msgstr "Konnte Profil nicht speichern." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -376,8 +373,8 @@ msgid "Could not delete favorite." msgstr "Konnte Favoriten nicht löschen." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Konnte Nutzer nicht folgen: Nutzer nicht gefunden" +msgid "Could not follow user: profile not found." +msgstr "Konnte Nutzer nicht folgen: Profil nicht gefunden" #: actions/apifriendshipscreate.php:118 #, php-format @@ -392,9 +389,9 @@ msgstr "Kann Benutzer nicht entfolgen: Benutzer nicht gefunden." msgid "You cannot unfollow yourself." msgstr "Du kannst dich nicht selbst entfolgen!" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Zwei IDs oder Benutzernamen müssen angegeben werden." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Zwei gültige IDs oder Benutzernamen müssen angegeben werden." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -524,6 +521,10 @@ msgstr "%s Gruppen" msgid "groups on %s" msgstr "Gruppen von %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Hochladen fehlgeschlagen." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Kein oauth_token Parameter angegeben." @@ -667,25 +668,31 @@ msgstr "Status gelöscht." msgid "No status with that ID found." msgstr "Keine Nachricht mit dieser ID gefunden." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" +"Der Client muss einen „status“-Parameter mit einen Wert zur Verfügung " +"stellen." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" "Das war zu lang. Die Länge einer Nachricht ist auf %d Zeichen beschränkt." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nicht gefunden." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "Die maximale Größe von Nachrichten ist %d Zeichen, inklusive der URL der " "Anhänge" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Bildformat wird nicht unterstützt." @@ -739,6 +746,10 @@ msgstr "Nachrichten, die mit %s getagt sind" msgid "Updates tagged with %1$s on %2$s!" msgstr "Aktualisierungen mit %1$s getagt auf %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-Methode im Aufbau." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Kein solcher Anhang." @@ -792,7 +803,7 @@ msgid "Preview" msgstr "Vorschau" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Löschen" @@ -1073,7 +1084,7 @@ msgid "Do not delete this notice" msgstr "Diese Nachricht nicht löschen" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Nachricht löschen" @@ -1143,13 +1154,12 @@ msgid "Theme for the site." msgstr "Theme dieser Seite." #: actions/designadminpanel.php:467 -#, fuzzy msgid "Custom theme" -msgstr "Seitentheme" +msgstr "Angepasster Skin" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." -msgstr "" +msgstr "Du kannst ein angepasstes StatusNet-Theme als .ZIP-Archiv hochladen." #: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" @@ -1353,7 +1363,8 @@ msgstr "Ungültiges Stichwort: „%s“" msgid "Could not update group." msgstr "Konnte Gruppe nicht aktualisieren." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Konnte keinen Favoriten erstellen." @@ -2519,10 +2530,10 @@ msgstr "Alle Aktualisierungen, die den Suchbegriff „%s“ enthalten" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Dieser Benutzer erlaubt keine Stupser oder hat seine E-Mail-Adresse noch " -"nicht bestätigt." +"nicht bestätigt oder eingestellt." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2600,8 +2611,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Bitte nur %s URLs über einfaches HTTP." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Kein unterstütztes Datenformat." @@ -3519,7 +3530,7 @@ msgstr "Du kannst deine eigene Nachricht nicht wiederholen." msgid "You already repeated that notice." msgstr "Nachricht bereits wiederholt" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Wiederholt" @@ -3557,10 +3568,10 @@ msgstr "Feed der Nachrichten von %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" -"Dies ist die Zeitleiste für %1$s und Freunde aber bisher hat niemand etwas " -"gepostet." +"Dies ist die Zeitleiste für %1$s, aber %2$s hat noch keine Notiz dazu " +"erhalten." #: actions/replies.php:204 #, php-format @@ -3574,12 +3585,11 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Du kannst [%1$s in seinem Profil einen Stups geben](../%s) oder [ihm etwas " -"posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit " -"zu erregen." +"Du kannst versuchen [%1$s einen Stups zu geben](../%s) oder [ihm etwas " +"posten](%%%%action.newnotice%%%%?status_textarea=%s)." #: actions/repliesrss.php:72 #, php-format @@ -3667,7 +3677,7 @@ msgstr "Organisation" msgid "Description" msgstr "Beschreibung" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistiken" @@ -3757,8 +3767,8 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s hat noch keine Nachricht zu den Favoriten hinzugefügt. Sende du doch " "einfach eine interessante Nachricht, damit sich daran etwas ändert :)" @@ -3766,13 +3776,13 @@ msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s hat noch keine Nachrichten zu seinen Favoriten hinzugefügt. Warum meldest " -"du dich nicht an ( [anmelden](%%%%action.register%%%%) ) und schreibst " -"etwas, was %s hinzufügen kann!" +"%s hat noch keine Nachrichten zu seinen Favoriten hinzugefügt. Warum " +"[meldest du dich nicht an](%%%%action.register%%%%) und schreibst etwas, was " +"%s hinzufügen kann!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3830,7 +3840,7 @@ msgstr "Nachrichtenfeed der Gruppe %s (Atom)" msgid "FOAF for %s group" msgstr "Postausgang von %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Mitglieder" @@ -3844,11 +3854,11 @@ msgstr "(Kein)" msgid "All members" msgstr "Alle Mitglieder" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Erstellt" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3863,7 +3873,7 @@ msgstr "" "und werde Teil der Gruppe und vielen anderen! ([Mehr Informationen](%%%%doc." "help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3876,7 +3886,7 @@ msgstr "" "Freien Software [StatusNet](http://status.net/). Seine Mitglieder erstellen " "kurze Nachrichten über Ihr Leben und Interessen. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratoren" @@ -3955,11 +3965,11 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Du kannst %1$s in seinem Profil einen Stups geben oder [ihm etwas posten](%%%" -"%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit zu erregen." +"%action.newnotice%%%%?status_textarea=%s)." #: actions/showstream.php:243 #, php-format @@ -4347,7 +4357,8 @@ msgstr "Snapshot-Einstellungen speichern" msgid "You are not subscribed to that profile." msgstr "Du hast dieses Profil nicht abonniert." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Konnte Abonnement nicht erstellen." @@ -4526,10 +4537,6 @@ msgstr "" msgid "No such tag." msgstr "Stichwort nicht vorhanden." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-Methode im Aufbau." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Du hast diesen Benutzer nicht blockiert." @@ -4841,82 +4848,129 @@ msgstr "Version" msgid "Author(s)" msgstr "Autor(en)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Die URL „%s“ konnte nicht verarbeitet werden" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin denkt, dass etwas unmöglich ist." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "Keine Datei darf größer als %d Bytes sein und die Datei die du verschicken " -"wolltest ist %d Bytes groß. Bitte eine kleinere Datei hoch laden." +"wolltest war %d Bytes groß. Bitte eine kleinere Version hochladen." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "Eine Datei dieser Größe überschreitet deine User Quota von %d Byte." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "Eine Datei dieser Größe würde deine monatliche Quota von %d Byte " "überschreiten." -#: classes/Group_member.php:41 +#. 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 "Ungültiger Dateiname." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Konnte Gruppe nicht beitreten" -#: classes/Group_member.php:53 +#. 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 "Nicht Mitglied der Gruppe" -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Konnte Gruppe nicht verlassen" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Konnte Gruppe nicht aktualisieren." -#: classes/Login_token.php:76 +#. 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 "Konnte keinen Login-Token für %s erstellen" -#: classes/Message.php:45 +#. 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 "Nirgedwo einen Datenbanknamen oder DSN gefunden." + +#. 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 "Direktes senden von Nachrichten wurde blockiert" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Konnte Nachricht nicht einfügen." -#: classes/Message.php:71 +#. 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 "Konnte Nachricht nicht mit neuer URI versehen." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Kein Profil (%1$d) für eine Notiz gefunden (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Datenbankfehler beim Einfügen des Hashtags: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problem bei Speichern der Nachricht. Sie ist zu lang." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problem bei Speichern der Nachricht. Unbekannter Benutzer." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Zu schnell zu viele Nachrichten; atme kurz durch und schicke sie erneut in " "ein paar Minuten ab." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4924,73 +4978,124 @@ msgstr "" "Zu schnell zu viele Nachrichten; atme kurz durch und schicke sie erneut in " "ein paar Minuten ab." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" "Du wurdest für das Schreiben von Nachrichten auf dieser Seite gesperrt." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problem bei Speichern der Nachricht." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" +"Der Methode saveKnownGroups wurde ein schlechter Wert zur Verfügung gestellt" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problem bei Speichern der Nachricht." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"Die Rolle „%1$s“ kann nicht für Benutzer #%2$d widerrufen werden. Benutzer " +"existiert nicht." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Die Rolle „%1$s“ kann nicht für Benutzer #%2$d widerrufen werden. " +"Datenbankfehler." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Benutzer hat kein Profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Konnte Seitenbenachrichtigung nicht speichern." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Dieser Benutzer erlaubt dir nicht ihn zu abonnieren." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Bereits abonniert!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Dieser Benutzer hat dich blockiert." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Nicht abonniert!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." -msgstr "Konnte Abonnement nicht löschen." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Konnte Selbst-Abonnement nicht löschen." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Konnte OMB-Abonnement nicht löschen." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." +msgstr "Konnte OMB-Abonnement-Token nicht löschen." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Konnte Abonnement nicht löschen." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Herzlich willkommen bei %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Konnte Gruppe nicht erstellen." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Konnte die Gruppen URI nicht setzen." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Konnte Gruppenmitgliedschaft nicht setzen." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Konnte die lokale Gruppen Information nicht speichern." @@ -6457,7 +6562,7 @@ msgstr "" "schicken, um sie in eine Konversation zu verwickeln. Andere Leute können Dir " "Nachrichten schicken, die nur Du sehen kannst." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "von" @@ -6518,24 +6623,24 @@ msgstr "Konnte die Datei nicht auf die Festplatte schreiben." msgid "File upload stopped by extension." msgstr "Upload der Datei wurde wegen der Dateiendung gestoppt." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Dateigröße liegt über dem Benutzerlimit" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Datei konnte nicht in das Zielverzeichnis verschoben werden." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Konnte den MIME-Typ nicht feststellen." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Versuche ein anderes %s Format." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s ist kein unterstütztes Dateiformat auf diesem Server." @@ -6591,51 +6696,51 @@ msgstr "" "Bitte versuche es später wieder." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "O" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "W" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "in" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "im Zusammenhang" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Wiederholt von" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Auf diese Nachricht antworten" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Antworten" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Nachricht wiederholt" @@ -6890,48 +6995,47 @@ msgstr "Nichts" #: lib/themeuploader.php:50 msgid "This server cannot handle theme uploads without ZIP support." -msgstr "" +msgstr "Dieser Server kann nicht mit Theme-Uploads ohne ZIP-Support umgehen." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Systemfehler beim hochladen der Datei." +msgid "The theme file is missing or the upload failed." +msgstr "Die Theme-Datei fehlt oder das Hochladen ist fehlgeschlagen." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 #: lib/themeuploader.php:265 lib/themeuploader.php:272 -#, fuzzy msgid "Failed saving theme." -msgstr "Aktualisierung des Avatars fehlgeschlagen." +msgstr "Speicherung des Themes fehlgeschlagen." #: lib/themeuploader.php:139 msgid "Invalid theme: bad directory structure." -msgstr "" +msgstr "Ungültiger Theme: schlechte Ordner-Struktur." #: lib/themeuploader.php:166 #, php-format msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." -msgstr "" +msgstr "Der hochgeladene Theme ist zu groß; er muss unter %d Bytes sein." #: lib/themeuploader.php:178 msgid "Invalid theme archive: missing file css/display.css" -msgstr "" +msgstr "Ungültigges Theme-Archiv: fehlende Datei css/display.css" #: lib/themeuploader.php:205 msgid "" "Theme contains invalid file or folder name. Stick with ASCII letters, " "digits, underscore, and minus sign." msgstr "" +"Der Theme enthält einen ungültigen Datei- oder Ordnernamen. Bleib bei ASCII-" +"Buchstaben, Zahlen, Unterstrichen und Minuszeichen." #: lib/themeuploader.php:216 #, php-format msgid "Theme contains file of type '.%s', which is not allowed." -msgstr "" +msgstr "Das Theme enthält Dateien des Types „.%s“, die nicht erlaubt sind." #: lib/themeuploader.php:234 -#, fuzzy msgid "Error opening theme archive." -msgstr "Fehler beim Aktualisieren des entfernten Profils." +msgstr "Fehler beim Öffnen des Theme-Archives." #: lib/topposterssection.php:74 msgid "Top posters" diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po index 803c3b34b..704ae6c2a 100644 --- a/locale/el/LC_MESSAGES/statusnet.po +++ b/locale/el/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:17+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:51+0000\n" "Language-Team: Greek\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: el\n" "X-Message-Group: out-statusnet\n" @@ -101,7 +101,7 @@ msgstr "Δεν υπάÏχει Ï„Îτοια σελίδα" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -172,15 +172,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -213,7 +213,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -264,7 +264,7 @@ msgstr "ΑπÎτυχε η αποθήκευση του Ï€Ïοφίλ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -361,7 +361,8 @@ msgid "Could not delete favorite." msgstr "" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Δε μποÏÏŽ να ακολουθήσω το χÏήστη: ο χÏήστης δε βÏÎθηκε." #: actions/apifriendshipscreate.php:118 @@ -380,8 +381,8 @@ msgstr "Δε μποÏÏŽ να ακολουθήσω το χÏήστη: ο χÏήσ msgid "You cannot unfollow yourself." msgstr "Δεν μποÏείτε να εμποδίσετε τον εαυτό σας!" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -512,6 +513,11 @@ msgstr "" msgid "groups on %s" msgstr "ομάδες του χÏήστη %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -655,22 +661,26 @@ msgstr "Η κατάσταση διεγÏάφη." msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "" @@ -724,6 +734,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Η μÎθοδος του ΑΡΙ είναι υπό κατασκευή." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "" @@ -776,7 +790,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "ΔιαγÏαφή" @@ -1064,7 +1078,7 @@ msgid "Do not delete this notice" msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "" @@ -1352,7 +1366,8 @@ msgstr "" msgid "Could not update group." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." @@ -2471,7 +2486,7 @@ msgstr "Όλες οι ενημεÏώσεις που ταιÏιάζουν με Ï„ #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2548,8 +2563,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3450,7 +3465,7 @@ msgstr "" msgid "You already repeated that notice." msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "ΔημιουÏγία" @@ -3487,11 +3502,13 @@ msgid "Replies feed for %s (Atom)" msgstr "Ροή φίλων του/της %s" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" +"Αυτό είναι το χÏονοδιάγÏαμμα για %s και φίλους, αλλά κανείς δεν Îχει κάνει " +"καμία αποστολή ακόμα." #: actions/replies.php:204 #, php-format @@ -3503,8 +3520,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3598,7 +3615,7 @@ msgstr "Î Ïοσκλήσεις" msgid "Description" msgstr "ΠεÏιγÏαφή" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "" @@ -3684,16 +3701,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3753,7 +3770,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "ÎœÎλη" @@ -3767,11 +3784,11 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "ΔημιουÏγημÎνος" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3781,7 +3798,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3790,7 +3807,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ΔιαχειÏιστÎÏ‚" @@ -3866,8 +3883,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4252,7 +4269,8 @@ msgstr "Ρυθμίσεις OpenID" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" @@ -4419,10 +4437,6 @@ msgstr "" msgid "No such tag." msgstr "" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Η μÎθοδος του ΑΡΙ είναι υπό κατασκευή." - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4715,155 +4729,252 @@ msgstr "Î Ïοσωπικά" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Μήνυμα" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Σφάλμα στη βάση δεδομÎνων κατά την εισαγωγή hashtag: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Î Ïοφίλ χÏήστη" + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "" -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "ΑπÎτυχε η συνδÏομή." -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "ΑπÎτυχε η διαγÏαφή συνδÏομής." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "ΑπÎτυχε η διαγÏαφή συνδÏομής." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "ΑπÎτυχε η διαγÏαφή συνδÏομής." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Δεν ήταν δυνατή η δημιουÏγία ομάδας." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" @@ -6207,7 +6318,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "από" @@ -6262,25 +6373,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "ΑπÎτυχε η ενημÎÏωση του χÏήστη." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6336,51 +6447,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Επαναλαμβάνεται από" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "Ρυθμίσεις OpenID" @@ -6644,7 +6755,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po index 96dc69be6..d4d793a36 100644 --- a/locale/en_GB/LC_MESSAGES/statusnet.po +++ b/locale/en_GB/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:21+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:52+0000\n" "Language-Team: British English\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: en-gb\n" "X-Message-Group: out-statusnet\n" @@ -100,7 +100,7 @@ msgstr "No such page." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -168,19 +168,19 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "You can try to [nudge %1$s](../%2$s) from his profile or [post something to " "his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " "post a notice to his or her attention." @@ -215,7 +215,7 @@ msgstr "Updates from %1$s and friends on %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -267,7 +267,7 @@ msgstr "Couldn't save profile." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -365,7 +365,8 @@ msgid "Could not delete favorite." msgstr "Could not delete favourite." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Could not follow user: User not found." #: actions/apifriendshipscreate.php:118 @@ -381,8 +382,9 @@ msgstr "Could not unfollow user: User not found." msgid "You cannot unfollow yourself." msgstr "You cannot unfollow yourself." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Two user ids or screen_names must be supplied." #: actions/apifriendshipsshow.php:134 @@ -510,6 +512,11 @@ msgstr "%s groups" msgid "groups on %s" msgstr "groups on %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Upload file" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "No oauth_token parameter provided." @@ -653,22 +660,26 @@ msgstr "Status deleted." msgid "No status with that ID found." msgstr "No status with that ID found." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "That's too long. Max notice size is %d chars." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Not found." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "Max notice size is %d chars, including attachment URL." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Unsupported format." @@ -722,6 +733,10 @@ msgstr "Notices tagged with %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Updates tagged with %1$s on %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API method under construction." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "No such attachment." @@ -774,7 +789,7 @@ msgid "Preview" msgstr "Preview" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Delete" @@ -1055,7 +1070,7 @@ msgid "Do not delete this notice" msgstr "Do not delete this notice" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Delete this notice" @@ -1334,7 +1349,8 @@ msgstr "Invalid alias: \"%s\"" msgid "Could not update group." msgstr "Could not update group." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Could not create aliases" @@ -2477,8 +2493,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Updates matching search term \"%1$s\" on %2$s!" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "This user doesn't allow nudges or hasn't confirmed or set his e-mail yet." @@ -2554,8 +2571,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Not a supported data format." @@ -3446,7 +3463,7 @@ msgstr "You can't repeat your own notice." msgid "You already repeated that notice." msgstr "You already repeated that notice." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repeated" @@ -3481,10 +3498,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Notice feed for %s" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " "notice to his attention yet." @@ -3497,10 +3514,10 @@ msgid "" msgstr "" #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "You can try to [nudge %1$s](../%2$s) or [post something to his or her " "attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3591,7 +3608,7 @@ msgstr "Organization" msgid "Description" msgstr "Description" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistics" @@ -3676,20 +3693,20 @@ msgstr "" "notices you like to bookmark them for later or shed a spotlight on them." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s hasn't added any notices to his favourites yet. Post something " "interesting they would add to their favourites :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s hasn't added any notices to his favourites yet. Why not [register an " "account](%%%%action.register%%%%) and then post something interesting they " @@ -3751,7 +3768,7 @@ msgstr "Notice feed for %s group (Atom)" msgid "FOAF for %s group" msgstr "Outbox for %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Members" @@ -3765,11 +3782,11 @@ msgstr "(None)" msgid "All members" msgstr "All members" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Created" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3784,7 +3801,7 @@ msgstr "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3797,7 +3814,7 @@ msgstr "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Admins" @@ -3870,10 +3887,10 @@ msgid "" msgstr "" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "You can try to nudge %1$s or [post something to his or her attention](%%%%" "action.newnotice%%%%?status_textarea=%2$s)." @@ -4251,7 +4268,8 @@ msgstr "Save snapshot settings" msgid "You are not subscribed to that profile." msgstr "You are not subscribed to that profile." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Could not save subscription." @@ -4420,10 +4438,6 @@ msgstr "Use this form to add tags to your subscribers or subscriptions." msgid "No such tag." msgstr "No such tag." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API method under construction." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "You haven't blocked that user." @@ -4731,77 +4745,125 @@ msgstr "Version" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Invalid size." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Group join failed." -#: classes/Group_member.php:53 +#. 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 "Not part of group." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Group leave failed." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Could not update local group." -#: classes/Login_token.php:76 +#. 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 "Could not create login token for %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "You are banned from sending direct messages." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Could not insert message." -#: classes/Message.php:71 +#. 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 "Could not update message with new 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Database error inserting hashtag: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problem saving notice. Too long." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problem saving notice. Unknown user." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Too many notices too fast; take a breather and post again in a few minutes." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4809,72 +4871,123 @@ msgstr "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "You are banned from posting notices on this site." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problem saving notice." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problem saving group inbox." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "User has no profile." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Unable to save site notice." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "You have been banned from subscribing." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "User has blocked you." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Not subscribed!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "Couldn't delete self-subscription." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "Couldn't delete subscription OMB token." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Couldn't delete subscription." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Welcome to %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Could not create group." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Could not set group URI." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Could not set group membership." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Could not save local group info." @@ -6242,7 +6355,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "from" @@ -6297,24 +6410,24 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Could not determine file's MIME type." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6368,51 +6481,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "in context" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repeated by" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Reply to this notice" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Reply" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Notice repeated" @@ -6670,9 +6783,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "System error uploading file." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po index 56f866af8..ae6f2929a 100644 --- a/locale/es/LC_MESSAGES/statusnet.po +++ b/locale/es/LC_MESSAGES/statusnet.po @@ -15,12 +15,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:25+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:54+0000\n" "Language-Team: Spanish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: es\n" "X-Message-Group: out-statusnet\n" @@ -104,7 +104,7 @@ msgstr "No existe tal página." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -175,20 +175,20 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Puedes intentar [darle un toque a %1$s](../%2$s) desde su perfil o [publicar " -"algo a su atención](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Puedes intentar [zarandear a %1$s](../%2$s) desde su perfil o [publicar algo " +"a ellos](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" -"¿Por qué no [registrar una cuenta](%%%%action.register%%%%) y luego darle un " -"toque a %s o publicar algo a su atención?" +"Por qué no [registrar una cuenta](%%%%action.register%%%%) y luego zarandear " +"a %s o publicar una nota a ellos?" #. TRANS: H1 text #: actions/all.php:182 @@ -220,7 +220,7 @@ msgstr "¡Actualizaciones de %1$s y sus amistades en %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -270,7 +270,7 @@ msgstr "No se pudo guardar el perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -368,8 +368,8 @@ msgid "Could not delete favorite." msgstr "No se pudo borrar favorito." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "No puede seguir al usuario. Usuario no encontrado" +msgid "Could not follow user: profile not found." +msgstr "No se pudo seguir al usuario: Perfil no encontrado." #: actions/apifriendshipscreate.php:118 #, php-format @@ -384,9 +384,9 @@ msgstr "No se pudo dejar de seguir al usuario. Usuario no encontrado" msgid "You cannot unfollow yourself." msgstr "No puedes dejar de seguirte a ti mismo." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Deben proveerse dos identificaciones de usuario o nombres en pantalla." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Deben proveerse dos IDs válidos o nombres en pantalla." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -515,6 +515,10 @@ msgstr "Grupos %s" msgid "groups on %s" msgstr "Grupos en %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Carga falló." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "No se ha provisto de un parámetro oauth_token." @@ -661,24 +665,28 @@ msgstr "Status borrado." msgid "No status with that ID found." msgstr "No hay estado para ese ID" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "El cliente debe proveer un parámetro de 'status' con un valor." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "La entrada es muy larga. El tamaño máximo es de %d caracteres." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "No encontrado." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "El tamaño máximo de la notificación es %d caracteres, incluyendo el URL " "adjunto." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formato no soportado." @@ -732,6 +740,10 @@ msgstr "Avisos etiquetados con %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Actualizaciones etiquetadas con %1$s en %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Método API en construcción." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "No existe tal archivo adjunto." @@ -784,7 +796,7 @@ msgid "Preview" msgstr "Vista previa" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Borrar" @@ -1066,7 +1078,7 @@ msgid "Do not delete this notice" msgstr "No eliminar este mensaje" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Borrar este aviso" @@ -1344,7 +1356,8 @@ msgstr "Alias inválido: \"%s\"" msgid "Could not update group." msgstr "No se pudo actualizar el grupo." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "No fue posible crear alias." @@ -2289,7 +2302,7 @@ msgstr "Ningún nombre de usuario o ID." #: actions/joingroup.php:141 lib/command.php:346 #, php-format msgid "%1$s joined group %2$s" -msgstr "%1$s se ha unido al grupo %2$" +msgstr "%1$s se ha unido al grupo %2$s" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." @@ -2505,10 +2518,10 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"Este usuario no permite toques o todavÃa no confirma o configura su correo " -"electrónico." +"Este usuario no permite zarandeos o todavÃa no confirma o configura su " +"correo electrónico." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2584,8 +2597,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Solamente %s URLs sobre HTTP simples por favor." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "No es un formato de dato soportado" @@ -3508,7 +3521,7 @@ msgstr "No puedes repetir tus propios mensajes." msgid "You already repeated that notice." msgstr "Ya has repetido este mensaje." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repetido" @@ -3546,10 +3559,10 @@ msgstr "Feed de avisos de %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Esta es la lÃnea temporal que muestra las respuestas a a %1$s, pero %2$s aún " -"no ha recibido ningún aviso a su atención." +"no ha recibido ningún aviso." #: actions/replies.php:204 #, php-format @@ -3563,11 +3576,11 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Puedes intentar [darle un toque a %1$s](../%2$s) o [publicar algo en su " -"atención](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Puedes intentar [zarandear a %1$s](../%2$s) o [publicar algo a ellos](%%%%" +"action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format @@ -3655,7 +3668,7 @@ msgstr "Organización" msgid "Description" msgstr "Descripción" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "EstadÃsticas" @@ -3744,22 +3757,22 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" -"%s aún no ha añadido ningún aviso a sus favoritos. ¡Publica algo interesante " -"que pueda añadir a sus favoritos! :)" +"%s aún no ha agregado ningún aviso a sus favoritos. Publica algo interesante " +"que pueda añadir a sus favoritos :)" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s aún no ha añadido ningún aviso a sus favoritos. ¿Por qué no [registras " -"una cuenta] (%%%%action.register%%%%) y publicas algo interesante que pueda " -"añadir a sus favoritos? :)" +"%s aún no ha añadido ningún aviso a sus favoritos. Por qué no [registras una " +"cuenta] (%%%%action.register%%%%) y publicas algo interesante que puedan " +"añadir a sus favoritos :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3817,7 +3830,7 @@ msgstr "Canal de avisos del grupo %s (Atom)" msgid "FOAF for %s group" msgstr "Amistades de amistades del grupo %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Miembros" @@ -3831,11 +3844,11 @@ msgstr "(Ninguno)" msgid "All members" msgstr "Todos los miembros" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Creado" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3851,7 +3864,7 @@ msgstr "" "action.register%%%%) para formar parte de este y muchos más grupos! ([Más " "información](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3864,7 +3877,7 @@ msgstr "" "herramienta de software libre [StatusNet](http://status.net/). Sus miembros " "comparten mensajes cortos acerca de su vida e intereses. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administradores" @@ -3941,11 +3954,11 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"Puedes intentar darle un toque a %1$s o [publicar algo a su atención](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"Puedes intentar zarandear a %1$s o [publicar algo a ellos](%%%%action." +"newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -4334,7 +4347,8 @@ msgstr "Guardar la configuración de instantáneas" msgid "You are not subscribed to that profile." msgstr "No te has suscrito a ese perfil." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "No se ha podido guardar la suscripción." @@ -4514,10 +4528,6 @@ msgstr "" msgid "No such tag." msgstr "No existe tal etiqueta." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Método API en construcción." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "No has bloqueado ese usuario." @@ -4828,81 +4838,128 @@ msgstr "Versión" msgid "Author(s)" msgstr "Autor(es)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "No se puede procesar URL '%s'" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr " Robin piensa que algo es imposible." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"No puede haber un archivo de tamaño mayor a %d bytes y el archivo subido es " -"de %d bytes. Por favor, intenta subir una versión más ligera." +"Ningún archivopuede ser de tamaño mayor a %1$d bytes y el archivo que " +"enviaste es de %2$d bytes. Trata de subir una versión más pequeña." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Un archivo tan grande podrÃa sobrepasar tu cuota de usuario de %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Un archivo tan grande podrÃa sobrepasar tu cuota mensual de %d bytes." -#: classes/Group_member.php:41 +#. 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 "Nombre de archivo inválido." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Ha fallado la acción de unirse el grupo" -#: classes/Group_member.php:53 +#. 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 "No es parte del grupo." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Ha fallado la acción de abandonar el grupo" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "No se pudo actualizar el grupo local." -#: classes/Login_token.php:76 +#. 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 "No se pudo crear el token de acceso para %s" -#: classes/Message.php:45 +#. 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 "Ningún nombre de base de datos o DSN encontrado." + +#. 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 "Se te ha inhabilitado para enviar mensajes directos." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "No se pudo insertar mensaje." -#: classes/Message.php:71 +#. 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 "No se pudo actualizar mensaje con nuevo 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "No existe tal perfil (%1$d) para notificar (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Error de la BD al insertar la etiqueta clave: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Ha habido un problema al guardar el mensaje. Es muy largo." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Ha habido un problema al guardar el mensaje. Usuario desconocido." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Demasiados avisos demasiado rápido; para y publicar nuevamente en unos " "minutos." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4910,72 +4967,119 @@ msgstr "" "Muchos mensajes, enviados muy rápido; espera un poco e intenta publicar " "pasados unos minutos." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Tienes prohibido publicar avisos en este sitio." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Hubo un problema al guardar el aviso." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "Mal tipo proveÃdo a saveKnownGroups" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Hubo un problema al guarda la bandeja de entrada del grupo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "No se puede revocar rol \"%1$s\" para usuario #%2$d; no existe." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"No se puede revocar rol \"%1$s\" para usuario #%2$d; error de base de datos." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Perfil ausente." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Incapaz de grabar etiqueta." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Se te ha prohibido la suscripción." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "¡Ya te has suscrito!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "El usuario te ha bloqueado." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "¡No estás suscrito!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "No se pudo eliminar la auto-suscripción." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "No se pudo eliminar el token OMB de suscripción." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." +msgstr "No se pudo eliminar la ficha OMB de suscripción." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "No se pudo eliminar la suscripción." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Bienvenido a %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "No se pudo crear grupo." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "No se pudo configurar el URI del grupo." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "No se pudo configurar la membresÃa del grupo." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "No se ha podido guardar la información del grupo local." @@ -6453,7 +6557,7 @@ msgstr "" "otros usuarios partÃcipes de la conversación. La gente puede enviarte " "mensajes que sólo puedas leer tú." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "desde" @@ -6513,24 +6617,24 @@ msgstr "No se pudo escribir el archivo en el disco." msgid "File upload stopped by extension." msgstr "La subida de archivos se detuvo por extensión." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Archivo sobrepasa la cuota del usuario." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "El archivo no se pudo mover al directorio de destino." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "No se pudo determinar tipo MIME del archivo" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Pruebe a usar otro formato %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s no es un tipo de archivo soportado en este servidor." @@ -6586,51 +6690,51 @@ msgstr "" "favor, inténtalo más tarde." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "W" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "en" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "en contexto" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetido por" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Responder este aviso." -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Aviso repetido" @@ -6888,8 +6992,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "Este servidor no puede manejar cargas de temas sin soporte ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Sudida del tema perdido o errado." +msgid "The theme file is missing or the upload failed." +msgstr "El archivo de tema está perdido o la carga falló." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/fa/LC_MESSAGES/statusnet.po b/locale/fa/LC_MESSAGES/statusnet.po index 22997fc91..685d96e4a 100644 --- a/locale/fa/LC_MESSAGES/statusnet.po +++ b/locale/fa/LC_MESSAGES/statusnet.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:35+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:57+0000\n" "Last-Translator: Ahmad Sufi Mahmudi\n" "Language-Team: Persian\n" "MIME-Version: 1.0\n" @@ -22,7 +22,7 @@ msgstr "" "X-Language-Code: fa\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" #. TRANS: Page title @@ -103,7 +103,7 @@ msgstr "چنین صÙØه‌ای وجود ندارد." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,19 +170,19 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "شما می‌توانید [یادآوری‌کردن %1$s](../%2$s) را از نمایه‌اش امتØان کنید یا [به " "توجه او چیزی بÙرستید](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "چرا [ثبت‌نام](%%%%action.register%%%%) نمی‌کنید Ùˆ سپس به %s یادآوری کنید یا یک " "پیام به توجه‌اش بÙرستید." @@ -217,7 +217,7 @@ msgstr "به روز رسانی از %1$s Ùˆ دوستان در %2$s" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +266,7 @@ msgstr "نمی‌توان نمایه را ذخیره کرد." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -363,7 +363,8 @@ msgid "Could not delete favorite." msgstr "نمی‌توان پیام برگزیده را Øذ٠کرد." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "نمی‌توان کاربر را دنبال کرد: کاربر یاÙت نشد." #: actions/apifriendshipscreate.php:118 @@ -379,8 +380,9 @@ msgstr "نمی‌توان کاربر را دنبال نکرد: کاربر یا٠msgid "You cannot unfollow yourself." msgstr "نمی‌توانید خودتان را دنبال کنید." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "باید Û² شناسه‌ی کاربر یا نام ظاهری وارد کنید." #: actions/apifriendshipsshow.php:134 @@ -508,6 +510,11 @@ msgstr "%s گروه" msgid "groups on %s" msgstr "گروه‌ها در %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "بارگذاری پرونده" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "هیچ پارامتر oauth_token آماده نشده است." @@ -651,22 +658,26 @@ msgstr "وضعیت Øذ٠شد." msgid "No status with that ID found." msgstr "هیچ وضعیتی با آن شناسه یاÙت نشد." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "این خیلی طولانی است. بیشینهٔ طول پیام %d نویسه است." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "یاÙت نشد." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "بیشینهٔ طول پیام %d نویسه Ú©Ù‡ شامل نشانی اینترنتی پیوست هم هست." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "قالب پشتیبانی نشده." @@ -720,6 +731,10 @@ msgstr "پیام‌هایی Ú©Ù‡ با %s نشانه گزاری شده اند." msgid "Updates tagged with %1$s on %2$s!" msgstr "پیام‌های نشانه گزاری شده با %1$s در %2$s" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "روش API در دست ساخت." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "چنین پیوستی وجود ندارد." @@ -773,7 +788,7 @@ msgid "Preview" msgstr "پیش‌نمایش" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "ØØ°Ù" @@ -1055,7 +1070,7 @@ msgid "Do not delete this notice" msgstr "این پیام را پاک Ù†Ú©Ù†" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "این پیام را پاک Ú©Ù†" @@ -1334,7 +1349,8 @@ msgstr "نام‌مستعار غیر مجاز: «%s»" msgid "Could not update group." msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "نمی‌توان نام‌های مستعار را ساخت." @@ -2476,8 +2492,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "پیام‌هایی Ú©Ù‡ با جست‌و‌جوی عبارت »%1$s« در %s یاÙت شدند." #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "این کاربر اجازه‌ی یادآوری‌کردن را نداده است یا پست‌الکترونیک خود را تایید یا " "تعیین نکرده است." @@ -2555,8 +2572,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "لطÙا تنها از نشانی‌های اینترنتی %s از راه HTTP ساده استÙاده کنید." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "یک قالب دادهٔ پشتیبانی‌شده نیست." @@ -3460,7 +3477,7 @@ msgstr "شما نمی‌توانید پیام خودتان را تکرار Ú©Ù†Û msgid "You already repeated that notice." msgstr "شما قبلا آن پیام را تکرار کرده‌اید." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "تکرار شده" @@ -3495,10 +3512,10 @@ msgid "Replies feed for %s (Atom)" msgstr "خوراک پاسخ‌ها برای %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "این خط‌زمانی است Ú©Ù‡ پاسخ‌ها به %1$s را نشان می‌دهد، اما %2$s هنوز یک پیام به " "توجه‌اش دریاÙت نکرده است." @@ -3513,10 +3530,10 @@ msgstr "" "شوید یا [به گروه‌ها بپیوندید](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "شما می‌توانید [یادآوری %1$s](../%2$s) را امتØان کنید یا [به توجه او چیزی " "بÙرستید](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3608,7 +3625,7 @@ msgstr "سازمان" msgid "Description" msgstr "توصیÙ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "آمار" @@ -3696,20 +3713,20 @@ msgstr "" "آن‌ها بگذارید." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s تاکنون هیچ پیامی را به برگزیده‌هایش اضاÙÙ‡ نکرده است. چیز جالبی بÙرستید Ú©Ù‡ " "ممکن است به برگزیده‌هایشان اضاÙÙ‡ کنند :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s تاکنون هیچ پیامی را به برگزیده‌هایش اضاÙÙ‡ نکرده است. چرا به [ثبت کردن یک " "Øساب](%%%%action.register%%%%) اقدام نمی‌کنید Ùˆ سپس چیز جالبی را Ú©Ù‡ ممکن است " @@ -3771,7 +3788,7 @@ msgstr "خوراک پیام برای گروه %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF برای گروه %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "اعضا" @@ -3785,11 +3802,11 @@ msgstr "هیچ" msgid "All members" msgstr "همهٔ اعضا" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "ساخته شد" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3805,7 +3822,7 @@ msgstr "" "می‌گذارند. [اکنون بپیوندید ](%%%%action.register%%%%) تا یکی از اعضای این " "گروه Ùˆ بلکه بیش‌تر بشوید! ([بیش‌تر بخوانید](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3819,7 +3836,7 @@ msgstr "" "است. کاربران آن پیام‌های کوتاهی را دربارهٔ زندگی Ùˆ علاقه‌مندی‌هایشان به اشتراک " "می‌گذارند. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "مدیران" @@ -3894,10 +3911,10 @@ msgstr "" "زمان خوبی برای شروع باشد :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "شما می‌توانید یادآوری %1$s را امتØان کنید یا [به توجه او چیزی بÙرستید](%%%%" "action.newnotice%%%%?status_textarea=%2$s)." @@ -4283,7 +4300,8 @@ msgstr "ذخیرهٔ تنظیمات تصویر Ù„Øظه‌ای" msgid "You are not subscribed to that profile." msgstr "شما مشترک آن نمایه نیستید." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "نمی‌توان اشتراک را ذخیره کرد." @@ -4460,10 +4478,6 @@ msgstr "از این روش برای اÙزودن برچسب به مشترک‌ه msgid "No such tag." msgstr "چنین برچسبی وجود ندارد." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "روش API در دست ساخت." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "شما آن کاربر را مسدود نکرده اید." @@ -4765,83 +4779,131 @@ msgstr "نسخه" msgid "Author(s)" msgstr "مؤلÙ(ها)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "هیچ پرونده‌ای نباید بزرگ‌تر از %d بایت باشد Ùˆ پرونده‌ای Ú©Ù‡ شما Ùرستادید %d بایت " "بود. بارگذاری یک نسخهٔ کوچک‌تر را امتØان کنید." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "یک پرونده با این Øجم زیاد می‌تواند از سهمیهٔ کاربری شما از %d بایت بگذرد." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "یک پرونده با این Øجم زیاد می‌تواند از سهمیهٔ کاربری ماهانهٔ شما از %d بایت " "بگذرد." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "اندازه‌ی نادرست" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "پیوستن به گروه شکست خورد." -#: classes/Group_member.php:53 +#. 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 "بخشی از گروه نیست." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "ترک کردن گروه شکست خورد." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "نمی‌توان گروه Ù…ØÙ„ÛŒ را به‌هنگام‌سازی کرد." -#: classes/Login_token.php:76 +#. 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 "نمی‌توان رمز ورود را برای %s ایجاد کرد" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "شما از Ùرستادن پیام مستقیم مردود شده اید." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "پیغام نمی تواند درج گردد" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "هنگام اÙزودن برچسب خطا در پایگاه داده رخ داد: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "مشکل در ذخیره کردن پیام. بسیار طولانی." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "مشکل در ذخیره کردن پیام. کاربر نا شناخته." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "تعداد زیادی پیام Ùˆ خیلی سریع Ùرستاده شده‌اند؛ استراØت کنید Ùˆ دقایقی دیگر " "دوباره بÙرستید." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4849,72 +4911,123 @@ msgstr "" "تعداد زیاد پیام های دو نسخه ای Ùˆ بسرعت؛ استراØت کنید Ùˆ دقایقی دیگر مجددا " "ارسال کنید." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "شما از Ùرستادن پیام در این وب‌گاه منع شده‌اید." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "هنگام ذخیرهٔ پیام مشکلی ایجاد شد." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "کاربر هیچ نمایه‌ای ندارد." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "نمی‌توان پیام وب‌گاه را ذخیره کرد." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "شما از اشتراک منع شده‌اید." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "قبلا اشتراک انجام شده است!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "کاربر شما را مسدود کرده است." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "تایید نشده!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "نمی‌توان خود-اشتراکی را Øذ٠کرد." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "نمی‌توان رمز اشتراک OMB را Øذ٠کرد." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "نمی‌توان اشتراک را لغو کرد." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "@%2$sØŒ به %1$s خوش آمدید!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "نمیتوان گروه را تشکیل داد" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "نمیتوان گروه را تشکیل داد" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "نمی‌توان عضویت گروه را تعیین کرد." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "نمی‌توان اطلاعات گروه Ù…ØÙ„ÛŒ را ذخیره کرد." @@ -6375,7 +6488,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "از" @@ -6431,24 +6544,24 @@ msgstr "شکست خوردن در نوشتن Ùایل روی دیسک." msgid "File upload stopped by extension." msgstr "بارگذاری پرونده توسط اÙزونه متوق٠شد." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "پرونده از سهمیهٔ کاربر می‌گذرد." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Ùایل نتوانست به دایرکتوری مقصد منتقل شود." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "نمی‌توان Ùرمت پرونده را تعیین کرد." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "تلاش برای امتØان نوع دیگر %s" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s یک گونهٔ پروندهٔ پیشتیبانی شده روی این کارگزار نیست." @@ -6504,51 +6617,51 @@ msgstr "" "دوباره تلاش کنید." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "در" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "در زمینه" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "تکرار از" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "به این پیام پاسخ دهید" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "پاسخ" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "پیام تکرار شد" @@ -6806,9 +6919,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "هنگام بارگذاری پرونده خطای سیستمی رخ داد." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po index 2b5f91e41..a087c5777 100644 --- a/locale/fi/LC_MESSAGES/statusnet.po +++ b/locale/fi/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:30+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:55+0000\n" "Language-Team: Finnish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fi\n" "X-Message-Group: out-statusnet\n" @@ -107,7 +107,7 @@ msgstr "Sivua ei ole." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -178,8 +178,8 @@ msgstr "" #: actions/all.php:146 #, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action." "newnotice%%%%?status_textarea=%s)!" @@ -188,7 +188,7 @@ msgstr "" #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -221,7 +221,7 @@ msgstr "Käyttäjän %1$s ja kavereiden päivitykset palvelussa %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -272,7 +272,7 @@ msgstr "Ei voitu tallentaa profiilia." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -374,7 +374,8 @@ msgid "Could not delete favorite." msgstr "Ei voitu poistaa suosikkia." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Ei voitu tilata käyttäjää: Käyttäjää ei löytynyt." #: actions/apifriendshipscreate.php:118 @@ -391,8 +392,9 @@ msgstr "Ei voitu lopettaa tilausta: Käyttäjää ei löytynyt." msgid "You cannot unfollow yourself." msgstr "Et voi lopettaa itsesi tilausta!" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Kaksi käyttäjätunnusta tai nimeä täytyy antaa." #: actions/apifriendshipsshow.php:134 @@ -525,6 +527,11 @@ msgstr "Käyttäjän %s ryhmät" msgid "groups on %s" msgstr "Ryhmän toiminnot" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Lataa" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -673,22 +680,26 @@ msgstr "Päivitys poistettu." msgid "No status with that ID found." msgstr "Käyttäjätunnukselle ei löytynyt statusviestiä." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Päivitys on liian pitkä. Maksimipituus on %d merkkiä." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ei löytynyt." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "Maksimikoko päivitykselle on %d merkkiä, mukaan lukien URL-osoite." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formaattia ei ole tuettu." @@ -743,6 +754,10 @@ msgstr "Päivitykset joilla on tagi %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Käyttäjän %1$s päivitykset palvelussa %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-metodi on työn alla!" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Liitettä ei ole." @@ -796,7 +811,7 @@ msgid "Preview" msgstr "Esikatselu" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Poista" @@ -1083,7 +1098,7 @@ msgid "Do not delete this notice" msgstr "Älä poista tätä päivitystä" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Poista tämä päivitys" @@ -1380,7 +1395,8 @@ msgstr "Virheellinen alias: \"%s\"" msgid "Could not update group." msgstr "Ei voitu päivittää ryhmää." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Ei voitu lisätä aliasta." @@ -1421,7 +1437,6 @@ msgstr "Tämän hetken vahvistettu sähköpostiosoite." #: actions/emailsettings.php:115 actions/emailsettings.php:158 #: actions/imsettings.php:116 actions/smssettings.php:124 #: actions/smssettings.php:180 -#, fuzzy msgctxt "BUTTON" msgid "Remove" msgstr "Poista" @@ -2555,8 +2570,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Kaikki päivitykset hakuehdolla \"%s\"" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Käyttäjä ei ole sallinut tönäisyjä tai ei ole vahvistanut " "sähköpostiosoitettaan." @@ -2638,8 +2654,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Tuo ei ole tuettu tietomuoto." @@ -3568,7 +3584,7 @@ msgstr "Et voi rekisteröityä, jos et hyväksy lisenssiehtoja." msgid "You already repeated that notice." msgstr "Sinä olet jo estänyt tämän käyttäjän." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "Luotu" @@ -3608,7 +3624,7 @@ msgstr "Päivityksien syöte käyttäjälle %s" #, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Tämä on käyttäjän %s aikajana, mutta %s ei ole lähettänyt vielä yhtään " "päivitystä." @@ -3623,8 +3639,8 @@ msgstr "" #: actions/replies.php:206 #, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action." "newnotice%%%%?status_textarea=%s)!" @@ -3726,7 +3742,7 @@ msgstr "Sivutus" msgid "Description" msgstr "Kuvaus" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Tilastot" @@ -3812,16 +3828,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3880,7 +3896,7 @@ msgstr "Syöte ryhmän %s päivityksille (Atom)" msgid "FOAF for %s group" msgstr "Käyttäjän %s lähetetyt viestit" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Jäsenet" @@ -3894,11 +3910,11 @@ msgstr "(Tyhjä)" msgid "All members" msgstr "Kaikki jäsenet" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Luotu" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3908,7 +3924,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, fuzzy, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3919,7 +3935,7 @@ msgstr "" "**%s** on ryhmä palvelussa %%%%site.name%%%%, joka on [mikroblogauspalvelu]" "(http://en.wikipedia.org/wiki/Micro-blogging)" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Ylläpitäjät" @@ -3996,8 +4012,8 @@ msgstr "" #: actions/showstream.php:207 #, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action." "newnotice%%%%?status_textarea=%s)!" @@ -4399,7 +4415,8 @@ msgstr "Profiilikuva-asetukset" msgid "You are not subscribed to that profile." msgstr "Et ole tilannut tämän käyttäjän päivityksiä." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Tilausta ei onnistuttu tallentamaan." @@ -4572,10 +4589,6 @@ msgstr "" msgid "No such tag." msgstr "Tuota tagia ei ole." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-metodi on työn alla!" - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4887,84 +4900,132 @@ msgstr "Omat" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Koko ei kelpaa." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Ryhmän profiili" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Ei voitu päivittää ryhmää." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Ryhmän profiili" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Ei voitu päivittää ryhmää." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Ei voitu lisätä aliasta." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "Tapahtui virhe suoran viestin lähetyksessä." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Viestin tallennus ei onnistunut." -#: classes/Message.php:71 +#. 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 "Viestin päivittäminen uudella URI-osoitteella ei onnistunut." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Tietokantavirhe tallennettaessa risutagiä: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Ongelma päivityksen tallentamisessa." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Virhe tapahtui päivityksen tallennuksessa. Tuntematon käyttäjä." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Liian monta päivitystä liian nopeasti; pidä pieni hengähdystauko ja jatka " "päivityksien lähettämista muutaman minuutin päästä." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4972,77 +5033,126 @@ msgstr "" "Liian monta päivitystä liian nopeasti; pidä pieni hengähdystauko ja jatka " "päivityksien lähettämista muutaman minuutin päästä." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Päivityksesi tähän palveluun on estetty." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Ongelma päivityksen tallentamisessa." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Ongelma päivityksen tallentamisessa." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%1$s (%2$s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Käyttäjällä ei ole profiilia." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Twitter-asetuksia ei voitu tallentaa!" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "Käyttäjä on estänyt sinua tilaamasta päivityksiä." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Käyttäjä on asettanut eston sinulle." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Ei ole tilattu!." -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Ei voitu poistaa tilausta." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Ei voitu poistaa tilausta." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Ei voitu poistaa tilausta." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, fuzzy, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Viesti käyttäjälle %1$s, %2$s" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Ryhmän luonti ei onnistunut." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Ryhmän jäsenyystietoja ei voitu asettaa." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Ryhmän jäsenyystietoja ei voitu asettaa." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Tilausta ei onnistuttu tallentamaan." @@ -6435,7 +6545,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr " lähteestä " @@ -6491,25 +6601,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Julkista päivitysvirtaa ei saatu." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6566,54 +6676,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "Ei" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "Ei sisältöä!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "Luotu" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Vastaa tähän päivitykseen" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Vastaus" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "Päivitys on poistettu." @@ -6884,9 +6994,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Tiedoston lähetyksessä tapahtui järjestelmävirhe." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po index 5adb8b360..3246555e1 100644 --- a/locale/fr/LC_MESSAGES/statusnet.po +++ b/locale/fr/LC_MESSAGES/statusnet.po @@ -15,12 +15,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:40+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:21:58+0000\n" "Language-Team: French\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fr\n" "X-Message-Group: out-statusnet\n" @@ -104,7 +104,7 @@ msgstr "Page non trouvée." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -175,8 +175,8 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Vous pouvez essayer de [faire un clin d’œil à %1$s](../%2$s) depuis son " "profil ou [poster quelque chose à son intention](%%%%action.newnotice%%%%?" @@ -186,9 +186,9 @@ msgstr "" #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" -"Pourquoi ne pas [créer un compte](%%%%action.register%%%%) et ensuite faire " +"Pourquoi ne pas [créer un compte](%%%%action.register%%%%) et faire ensuite " "un clin d’œil à %s ou poster un avis à son intention." #. TRANS: H1 text @@ -221,7 +221,7 @@ msgstr "Statuts de %1$s et ses amis dans %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -271,7 +271,7 @@ msgstr "Impossible d’enregistrer le profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -371,8 +371,8 @@ msgid "Could not delete favorite." msgstr "Impossible de supprimer le favori." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Impossible de suivre l’utilisateur : Utilisateur non trouvé." +msgid "Could not follow user: profile not found." +msgstr "Impossible de suivre l’utilisateur : profil non trouvé." #: actions/apifriendshipscreate.php:118 #, php-format @@ -387,9 +387,9 @@ msgstr "Impossible de ne plus suivre l’utilisateur : utilisateur non trouvé." msgid "You cannot unfollow yourself." msgstr "Vous ne pouvez pas ne plus vous suivre vous-même." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Vous devez fournir 2 identifiants ou pseudos." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Vous devez fournir deux identifiants ou pseudonymes." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -518,6 +518,10 @@ msgstr "Groupes de %s" msgid "groups on %s" msgstr "groupes sur %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Échec du téléversement." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Paramètre oauth_token non fourni." @@ -668,24 +672,28 @@ msgstr "Statut supprimé." msgid "No status with that ID found." msgstr "Aucun statut trouvé avec cet identifiant." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Le client doit fournir un paramètre « statut » avec une valeur." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "C’est trop long ! La taille maximale de l’avis est de %d caractères." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trouvé." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "La taille maximale de l’avis est de %d caractères, en incluant l’URL de la " "pièce jointe." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Format non supporté." @@ -739,6 +747,10 @@ msgstr "Avis marqués avec %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Mises à jour marquées avec %1$s dans %2$s !" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Méthode API en construction." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Pièce jointe non trouvée." @@ -793,7 +805,7 @@ msgid "Preview" msgstr "Aperçu" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Supprimer" @@ -1074,7 +1086,7 @@ msgid "Do not delete this notice" msgstr "Ne pas supprimer cet avis" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Supprimer cet avis" @@ -1353,7 +1365,8 @@ msgstr "Alias invalide : « %s »" msgid "Could not update group." msgstr "Impossible de mettre à jour le groupe." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Impossible de créer les alias." @@ -1503,7 +1516,7 @@ msgstr "Préférences de courrier électronique enregistrées." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." -msgstr "Aucune adresse courriel." +msgstr "Aucune adresse électronique." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 @@ -2524,7 +2537,7 @@ msgstr "mises à jour correspondant au(x) terme(s) « %1$s » sur %2$s !" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Cet utilisateur n’accepte pas les clins d’œil ou n’a pas encore validé son " "adresse électronique." @@ -2604,8 +2617,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Veuillez n'utiliser que des URL HTTP complètes en %s." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Format de données non supporté." @@ -3525,7 +3538,7 @@ msgstr "Vous ne pouvez pas reprendre votre propre avis." msgid "You already repeated that notice." msgstr "Vous avez déjà repris cet avis." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repris" @@ -3563,7 +3576,7 @@ msgstr "Flux des réponses pour %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Ceci est la chronologie des réponses à %1$s mais %2$s n’a encore reçu aucun " "avis à son intention." @@ -3581,8 +3594,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Vous pouvez essayer de [faire un clin d’œil à %1$s](../%2$s) ou de [poster " "quelque chose à son intention](%%%%action.newnotice%%%%?status_textarea=%3" @@ -3675,7 +3688,7 @@ msgstr "Organisation" msgid "Description" msgstr "Description" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistiques" @@ -3765,8 +3778,8 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s n’a pas ajouté d’avis à ses favoris pour le moment. Publiez quelque chose " "d’intéressant, et cela pourrait être ajouté à ses favoris :)" @@ -3774,13 +3787,13 @@ msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s n’a pas ajouté d’avis à ses favoris pour le moment. Vous pourriez [créer " "un compte](%%%%action.register%%%%), puis poster quelque chose " -"d’intéressant, qui serait ajouté à ses favoris :)" +"d’intéressant, qu’il pourrait ajouter à ses favoris :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3838,7 +3851,7 @@ msgstr "Fil des avis du groupe %s (Atom)" msgid "FOAF for %s group" msgstr "ami d’un ami pour le groupe %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membres" @@ -3852,11 +3865,11 @@ msgstr "(aucun)" msgid "All members" msgstr "Tous les membres" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Créé" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3872,7 +3885,7 @@ msgstr "" "action.register%%%%) pour devenir membre de ce groupe et bien plus ! ([En " "lire plus](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3885,7 +3898,7 @@ msgstr "" "logiciel libre [StatusNet](http://status.net/). Ses membres partagent des " "messages courts à propos de leur vie et leurs intérêts. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administrateurs" @@ -3965,8 +3978,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Vous pouvez essayer de faire un clin d’œil à %1$s ou de [poster quelque " "chose à son intention](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -4359,7 +4372,8 @@ msgstr "Sauvegarder les paramètres des instantanés" msgid "You are not subscribed to that profile." msgstr "Vous n’êtes pas abonné(e) à ce profil." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Impossible d’enregistrer l’abonnement." @@ -4540,10 +4554,6 @@ msgstr "" msgid "No such tag." msgstr "Cette marque n’existe pas." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Méthode API en construction." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Vous n’avez pas bloqué cet utilisateur." @@ -4859,80 +4869,127 @@ msgstr "Version" msgid "Author(s)" msgstr "Auteur(s)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Impossible de traiter l’URL « %s »" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin pense que quelque chose est impossible." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Un fichier ne peut pas être plus gros que %d octets et le fichier que vous " -"avez envoyé pesait %d octets. Essayez d’importer une version moins grosse." +"Un fichier ne peut pas peser plus de %1$d octets et le fichier que vous avez " +"envoyé pesait %2$d octets. Essayez d’importer une version moins lourde." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "Un fichier aussi gros dépasserai votre quota utilisateur de %d octets." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Un fichier aussi gros dépasserai votre quota mensuel de %d octets." -#: classes/Group_member.php:41 +#. 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 "Nom de fichier non valide." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "L’inscription au groupe a échoué." -#: classes/Group_member.php:53 +#. 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 "N’appartient pas au groupe." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "La désinscription du groupe a échoué." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Impossible de mettre à jour le groupe local." -#: classes/Login_token.php:76 +#. 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 "Impossible de créer le jeton d’identification pour %s" -#: classes/Message.php:45 +#. 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 "Aucune base de données de nom ou DSN trouvée nulle part." + +#. 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 "Il vous est interdit d’envoyer des messages directs." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Impossible d’insérer le message." -#: classes/Message.php:71 +#. 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 "Impossible de mettre à jour le message avec un nouvel 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Impossible de trouver le profil (%1$d) pour l’avis (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Erreur de base de donnée en insérant la marque (hashtag) : %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problème lors de l’enregistrement de l’avis ; trop long." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Erreur lors de l’enregistrement de l’avis. Utilisateur inconnu." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Trop d’avis, trop vite ! Faites une pause et publiez à nouveau dans quelques " "minutes." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4940,71 +4997,121 @@ msgstr "" "Trop de messages en double trop vite ! Prenez une pause et publiez à nouveau " "dans quelques minutes." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Il vous est interdit de poster des avis sur ce site." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problème lors de l’enregistrement de l’avis." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "Le type renseigné pour saveKnownGroups n’est pas valable" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problème lors de l’enregistrement de la boîte de réception du groupe." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"Impossible de révoquer le rôle de « %1$s » pour l’utilisateur #%2$d : " +"l’utilisateur n’existe pas." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Impossible de révoquer le rôle de « %1$s » pour l’utilisateur #%2$d : erreur " +"dans la base de données." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Profil manquant." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Impossible d’enregistrer l’étiquette." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Il vous a été interdit de vous abonner." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Déjà abonné !" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Cet utilisateur vous a bloqué." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Pas abonné !" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "Impossible de supprimer l’abonnement à soi-même." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Impossible de supprimer le jeton OMB de l'abonnement ." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." +msgstr "Impossible de supprimer le jeton OMB de l'abonnement." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Impossible de cesser l’abonnement" +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Impossible de supprimer l’abonnement" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Bienvenue à %1$s, @%2$s !" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Impossible de créer le groupe." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Impossible de définir l'URI du groupe." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Impossible d’établir l’inscription au groupe." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Impossible d’enregistrer les informations du groupe local." @@ -6487,7 +6594,7 @@ msgstr "" "pour démarrer des conversations avec d’autres utilisateurs. Ceux-ci peuvent " "vous envoyer des messages destinés à vous seul(e)." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "de" @@ -6546,24 +6653,24 @@ msgstr "Impossible d’écrire sur le disque." msgid "File upload stopped by extension." msgstr "Import de fichier stoppé par une extension." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Le fichier dépasse le quota de l’utilisateur." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Le fichier n’a pas pu être déplacé dans le dossier de destination." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Impossible de déterminer le type MIME du fichier." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Essayez d’utiliser un autre %s format." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s n’est pas un type de fichier supporté sur ce serveur." @@ -6619,51 +6726,51 @@ msgstr "" "Veuillez réessayer plus tard." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "O" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u° %2$u' %3$u\" %4$s %5$u° %6$u' %7$u\" %8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "chez" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "dans le contexte" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repris par" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Répondre à cet avis" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Répondre" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Avis repris" @@ -6923,8 +7030,8 @@ msgstr "" "ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Le thème est manquant ou son import a échoué." +msgid "The theme file is missing or the upload failed." +msgstr "Le fichier de thème est manquant ou le téléversement a échoué." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po index ac7ad1b5f..dc3c53286 100644 --- a/locale/ga/LC_MESSAGES/statusnet.po +++ b/locale/ga/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:45+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:00+0000\n" "Language-Team: Irish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ga\n" "X-Message-Group: out-statusnet\n" @@ -107,7 +107,7 @@ msgstr "Non existe a etiqueta." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -174,15 +174,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -216,7 +216,7 @@ msgstr "Actualizacións dende %1$s e amigos en %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -267,7 +267,7 @@ msgstr "Non se puido gardar o perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -370,7 +370,8 @@ msgid "Could not delete favorite." msgstr "Non se puido eliminar o favorito." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Non podes seguir a este usuario: o Usuario non se atopa." #: actions/apifriendshipscreate.php:118 @@ -388,8 +389,9 @@ msgstr "Non podes seguir a este usuario: o Usuario non se atopa." msgid "You cannot unfollow yourself." msgstr "Non se puido actualizar o usuario." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "" "Dous identificadores de usuario ou nomes_en_pantalla deben ser " "proporcionados." @@ -522,6 +524,11 @@ msgstr "" msgid "groups on %s" msgstr "Outras opcions" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Subir" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -669,23 +676,27 @@ msgstr "Avatar actualizado." msgid "No status with that ID found." msgstr "Non existe ningún estado con esa ID atopada." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" "Iso é demasiado longo. O tamaño máximo para un chÃo é de 140 caracteres." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non atopado" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "Formato de ficheiro de imaxe non soportado." @@ -740,6 +751,10 @@ msgstr "ChÃos tagueados con %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Actualizacións dende %1$s en %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Método da API en contrución." + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -795,7 +810,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 #, fuzzy msgid "Delete" msgstr "eliminar" @@ -1095,7 +1110,7 @@ msgid "Do not delete this notice" msgstr "Non se pode eliminar este chÃos." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 #, fuzzy msgid "Delete this notice" msgstr "Eliminar chÃo" @@ -1400,7 +1415,8 @@ msgstr "Etiqueta inválida: '%s'" msgid "Could not update group." msgstr "Non se puido actualizar o usuario." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "Non se puido crear o favorito." @@ -2586,8 +2602,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Tódalas actualizacións que coinciden co termo de procura \"%s\"" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Este usuario non permite toques, ou non confirmou ainda o seu correo " "electrónico." @@ -2668,8 +2685,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Non é un formato de datos soportado." @@ -3608,7 +3625,7 @@ msgstr "Non podes rexistrarte se non estas de acordo coa licenza." msgid "You already repeated that notice." msgstr "Xa bloqueaches a este usuario." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "Crear" @@ -3648,7 +3665,7 @@ msgstr "Fonte de chÃos para %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3661,8 +3678,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3762,7 +3779,7 @@ msgstr "Invitación(s) enviada(s)." msgid "Description" msgstr "Subscricións" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "EstatÃsticas" @@ -3848,16 +3865,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3919,7 +3936,7 @@ msgstr "Fonte de chÃos para %s" msgid "FOAF for %s group" msgstr "Band. SaÃda para %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 #, fuzzy msgid "Members" msgstr "Membro dende" @@ -3935,12 +3952,12 @@ msgstr "(nada)" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "Crear" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, fuzzy, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3954,7 +3971,7 @@ msgstr "" "(http://status.net/). [Únete agora](%%action.register%%) para compartir " "chÃos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, fuzzy, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3967,7 +3984,7 @@ msgstr "" "(http://status.net/). [Únete agora](%%action.register%%) para compartir " "chÃos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -4043,8 +4060,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4450,7 +4467,8 @@ msgstr "Configuracións de Twitter" msgid "You are not subscribed to that profile." msgstr "Non estás suscrito a ese perfil" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Non se pode gardar a subscrición." @@ -4625,10 +4643,6 @@ msgstr "" msgid "No such tag." msgstr "Non existe a etiqueta." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Método da API en contrución." - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4942,84 +4956,132 @@ msgstr "Persoal" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Tamaño inválido." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Non existe o perfil." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Non se puido actualizar o usuario." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Non existe o perfil." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Non se puido actualizar o usuario." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Non se puido crear o favorito." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "Erro ó enviar a mensaxe directa." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Non se pode inserir unha mensaxe." -#: classes/Message.php:71 +#. 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 "Non se puido actualizar a mensaxe coa 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Erro ó inserir o hashtag na BD: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Aconteceu un erro ó gardar o chÃo." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Aconteceu un erro ó gardar o chÃo. Usuario descoñecido." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Demasiados chÃos en pouco tempo; tomate un respiro e envÃao de novo dentro " "duns minutos." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 #, fuzzy msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " @@ -5028,79 +5090,128 @@ msgstr "" "Demasiados chÃos en pouco tempo; tomate un respiro e envÃao de novo dentro " "duns minutos." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Tes restrinxido o envio de chÃos neste sitio." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Aconteceu un erro ó gardar o chÃo." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Aconteceu un erro ó gardar o chÃo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%1$s (%2$s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "O usuario non ten perfil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Non se puideron gardar os teus axustes de Twitter!" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "Este usuario non che permite suscribirte a el." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "O usuario bloqueoute." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Non está suscrito!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Non se pode eliminar a subscrición." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Non se pode eliminar a subscrición." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Non se pode eliminar a subscrición." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, fuzzy, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Mensaxe de %1$s en %2$s" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 #, fuzzy msgid "Could not create group." msgstr "Non se puido crear o favorito." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Non se pode gardar a subscrición." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "Non se pode gardar a subscrición." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Non se pode gardar a subscrición." @@ -6585,7 +6696,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr " dende " @@ -6641,25 +6752,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Non se pudo recuperar a liña de tempo publica." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6719,56 +6830,56 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "No" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "Sen contido!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "Crear" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 #, fuzzy msgid "Reply to this notice" msgstr "Non se pode eliminar este chÃos." -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 #, fuzzy msgid "Reply" msgstr "contestar" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "ChÃo publicado" @@ -7049,9 +7160,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Aconteceu un erro no sistema namentras se estaba cargando o ficheiro." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/gl/LC_MESSAGES/statusnet.po b/locale/gl/LC_MESSAGES/statusnet.po index 14cbd03c7..40e79f782 100644 --- a/locale/gl/LC_MESSAGES/statusnet.po +++ b/locale/gl/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:49+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:01+0000\n" "Language-Team: Galician\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: gl\n" "X-Message-Group: out-statusnet\n" @@ -98,7 +98,7 @@ msgstr "Esa páxina non existe." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -166,20 +166,20 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Pode probar a [facerlle un aceno a %1$s](../%2$s) dende o seu perfil ou " "[publicar algo dirixido a el ou ela](%%%%action.newnotice%%%%?" "status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Por que non [rexistrar unha conta](%%%%action.register%%%%) e entón facerlle " "un aceno a %s ou publicar unha nota dirixida a el ou ela?" @@ -214,7 +214,7 @@ msgstr "Actualizacións de %1$s e amigos en %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -264,7 +264,7 @@ msgstr "Non se puido gardar o perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -364,7 +364,7 @@ msgid "Could not delete favorite." msgstr "Non se puido eliminar o favorito." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +msgid "Could not follow user: profile not found." msgstr "Non se puido seguir o usuario: non se atopou." #: actions/apifriendshipscreate.php:118 @@ -380,8 +380,8 @@ msgstr "Non se puido deixar de seguir o usuario: non se atopou." msgid "You cannot unfollow yourself." msgstr "Non pode deixar de seguirse a si mesmo." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "Deben fornecerse dúas identificacións ou nomes de usuario." #: actions/apifriendshipsshow.php:134 @@ -511,6 +511,11 @@ msgstr "grupos %s" msgid "groups on %s" msgstr "grupos en %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Cargar un ficheiro" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Non se forneceu o parámetro oauth_token." @@ -656,24 +661,28 @@ msgstr "Borrouse o estado." msgid "No status with that ID found." msgstr "Non se atopou ningún estado con esa ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Iso é longo de máis. A nota non pode exceder os %d caracteres." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non se atopou." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "A lonxitude máxima das notas é de %d caracteres, incluÃdo o URL do dato " "adxunto." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formato non soportado." @@ -727,6 +736,10 @@ msgstr "Notas etiquetadas con %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Actualizacións etiquetadas con %1$s en %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Método API en desenvolvemento." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Non existe tal dato adxunto." @@ -781,7 +794,7 @@ msgid "Preview" msgstr "Vista previa" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Borrar" @@ -1062,7 +1075,7 @@ msgid "Do not delete this notice" msgstr "Non borrar esta nota" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Borrar esta nota" @@ -1341,7 +1354,8 @@ msgstr "Pseudónimo inválido: \"%s\"" msgid "Could not update group." msgstr "Non se puido actualizar o grupo." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Non se puideron crear os pseudónimos." @@ -2501,9 +2515,9 @@ msgstr "Actualizacións que conteñen o termo \"%1$s\" en %2$s!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"Este usuario non permite acenos ou aÃnda non corfirmou ou configurou o seu " +"Este usuario non permite acenos ou aÃnda non confirmou ou configurou o seu " "enderezo de correo electrónico." #: actions/nudge.php:94 @@ -2580,8 +2594,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Só %s enderezos URL sobre HTTP simple." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Non se soporta ese formato de datos." @@ -3506,7 +3520,7 @@ msgstr "Non pode repetir a súa propia nota." msgid "You already repeated that notice." msgstr "Xa repetiu esa nota." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repetida" @@ -3541,10 +3555,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Fonte de novas coas respostas a %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Esta é a liña do tempo coas respostas a %1$s, pero a %2$s aÃnda non lle " "mandaron ningunha nota." @@ -3559,10 +3573,10 @@ msgstr "" "grupos](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Pode probar a [facerlle un aceno a %1$s](../%2$s) ou [publicar algo dirixido " "a el ou ela](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3653,7 +3667,7 @@ msgstr "Organización" msgid "Description" msgstr "Descrición" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "EstatÃsticas" @@ -3744,8 +3758,8 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s aÃnda non marcou ningunha nota como favorita. Publique algo interesante " "que poida querer engadir aos seus favoritos :)" @@ -3753,9 +3767,9 @@ msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s aÃnda non marcou ningunha nota como favorita. Por que non [rexistrar unha " "conta](%%%%action.register%%%%) e publicar algo interesante que puidese " @@ -3817,7 +3831,7 @@ msgstr "Fonte de novas das notas do grupo %s (Atom)" msgid "FOAF for %s group" msgstr "Amigo dun amigo para o grupo %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membros" @@ -3831,11 +3845,11 @@ msgstr "(Ningún)" msgid "All members" msgstr "Todos os membros" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Creado" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3851,7 +3865,7 @@ msgstr "" "[Únase agora](%%%%action.register%%%%) para pasar a formar parte deste grupo " "e de moitos máis! ([Máis información](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3864,7 +3878,7 @@ msgstr "" "baseado na ferramenta de software libre [StatusNet](http://status.net/). Os " "seus membros comparten mensaxes curtas sobre as súas vidas e intereses. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administradores" @@ -3939,10 +3953,10 @@ msgstr "" "bo momento para comezar :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Pode probar a facerlle un aceno a %1$s ou [publicar algo dirixido a el ou " "ela](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -4335,7 +4349,8 @@ msgstr "Gardar a configuración das instantáneas" msgid "You are not subscribed to that profile." msgstr "Non está subscrito a ese perfil." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Non se puido gardar a subscrición." @@ -4514,10 +4529,6 @@ msgstr "" msgid "No such tag." msgstr "Esa etiqueta non existe." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Método API en desenvolvemento." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Non bloqueou a ese usuario." @@ -4828,81 +4839,129 @@ msgstr "Versión" msgid "Author(s)" msgstr "Autores" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Ningún ficheiro pode superar os %d bytes e o que enviou ocupaba %d. Probe a " -"subir un ficheiro máis pequeno." +"Ningún ficheiro pode superar os %1$d bytes e o que enviou ocupaba %2$d. " +"Probe a subir un ficheiro máis pequeno." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Un ficheiro deste tamaño excederÃa a súa cota de usuario, que é de %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Un ficheiro deste tamaño excederÃa a súa cota mensual de %d bytes." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Tamaño non válido." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Non se puido unir ao grupo." -#: classes/Group_member.php:53 +#. 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 "Non forma parte do grupo." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Non se puido deixar o grupo." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Non se puido actualizar o grupo local." -#: classes/Login_token.php:76 +#. 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 "Non se puido crear un pase de sesión para %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "ProhibÃuselle enviar mensaxes directas de momento." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Non se puido inserir a mensaxe." -#: classes/Message.php:71 +#. 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 "Non se puido actualizar a mensaxe co novo 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). +#: classes/Notice.php:98 +#, fuzzy, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Non existe tal perfil (%d) para a nota (%d)" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Houbo un erro na base de datos ao intentar inserir a etiqueta: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Houbo un problema ao gardar a nota. É longa de máis." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Houbo un problema ao gardar a nota. Descoñécese o usuario." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Escribiu demasiadas notas en moi pouco tempo. Tómese un respiro e volva " "publicar nuns minutos." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4910,71 +4969,121 @@ msgstr "" "Repetiu demasiadas mensaxes en moi pouco tempo. Tómese un respiro e volva " "publicar nuns minutos." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "ProhibÃuselle publicar notas neste sitio de momento." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Houbo un problema ao gardar a nota." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Houbo un problema ao gardar a caixa de entrada do grupo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "â™» @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "O usuario non ten perfil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Non se puido gardar a nota do sitio." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "ProhibÃuselle realizar subscricións de momento." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Xa está subscrito!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "O usuario bloqueouno." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Non está subscrito!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "Non se puido borrar a subscrición a si mesmo." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "Non se puido borrar o pase de subscrición OMB." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Non se puido borrar a subscrición." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Benvido a %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Non se puido crear o grupo." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Non se puido establecer o URI do grupo." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Non se puido establecer a pertenza ao grupo." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Non se puido gardar a información do grupo local." @@ -6447,7 +6556,7 @@ msgstr "" "Non ten mensaxes privadas. Pode enviar mensaxes privadas para conversar con " "outros usuarios. A xente pode enviarlle mensaxes para que só as lea vostede." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "de" @@ -6505,24 +6614,24 @@ msgstr "Non se puido escribir o ficheiro no disco." msgid "File upload stopped by extension." msgstr "Interrompeuse a carga do ficheiro por mor da extensión." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "O ficheiro supera a cota do usuario." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Non se puido mover o ficheiro ao directorio de destino." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Non se puido determinar o tipo MIME do ficheiro." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Inténteo utilizando outro formato %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "Neste servidor non se soporta o tipo de ficheiro %s." @@ -6578,51 +6687,51 @@ msgstr "" "intentar máis tarde" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "L" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "O" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "en" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "no contexto" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetida por" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Responder a esta nota" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Repetiuse a nota" @@ -6882,8 +6991,8 @@ msgstr "" "formato ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Houbo un erro no sistema ao cargar o tema visual." +msgid "The theme file is missing or the upload failed." +msgstr "O ficheiro do tema visual non existe ou a subida fallou." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po index d1b13a29a..d8d60e729 100644 --- a/locale/he/LC_MESSAGES/statusnet.po +++ b/locale/he/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:54+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:03+0000\n" "Language-Team: Hebrew\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: he\n" "X-Message-Group: out-statusnet\n" @@ -104,7 +104,7 @@ msgstr "×ין הודעה כזו." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -171,15 +171,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -213,7 +213,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -264,7 +264,7 @@ msgstr "שמירת הפרופיל × ×›×©×œ×”." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -363,8 +363,9 @@ msgid "Could not delete favorite." msgstr "" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "× ×›×©×œ×” ×”×”×¤× ×™×” לשרת: %s" #: actions/apifriendshipscreate.php:118 #, php-format @@ -381,8 +382,8 @@ msgstr "× ×›×©×œ×” ×”×”×¤× ×™×” לשרת: %s" msgid "You cannot unfollow yourself." msgstr "עידכון המשתמש × ×›×©×œ." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -515,6 +516,11 @@ msgstr "" msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ההעלה" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -661,23 +667,27 @@ msgstr "×”×ª×ž×•× ×” ×¢×•×“×›× ×”." msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "×œ× × ×ž×¦×" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "פורמט ×”×ª×ž×•× ×” ××™× ×• × ×ª×ž×š." @@ -732,6 +742,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "מיקרובלוג מ×ת %s" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -787,7 +801,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 #, fuzzy msgid "Delete" msgstr "מחק" @@ -1081,7 +1095,7 @@ msgid "Do not delete this notice" msgstr "×ין הודעה כזו." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "" @@ -1379,7 +1393,8 @@ msgstr "כתובת ×תר הבית '%s' ××™× ×” חוקית" msgid "Could not update group." msgstr "עידכון המשתמש × ×›×©×œ." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "שמירת מידע ×”×ª×ž×•× ×” × ×›×©×œ" @@ -2523,7 +2538,7 @@ msgstr "כל ×”×¢×™×“×›×•× ×™× ×”×ª×•××ž×™× ×ת החיפוש ×חרי \"%s\" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2600,8 +2615,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3496,7 +3511,7 @@ msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון" msgid "You already repeated that notice." msgstr "כבר × ×›× ×¡×ª למערכת!" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "צור" @@ -3536,7 +3551,7 @@ msgstr "×”×–× ×ª הודעות של %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3549,8 +3564,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3649,7 +3664,7 @@ msgstr "מיקו×" msgid "Description" msgstr "הרשמות" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "סטטיסטיקה" @@ -3734,16 +3749,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3804,7 +3819,7 @@ msgstr "×”×–× ×ª הודעות של %s" msgid "FOAF for %s group" msgstr "×”×–× ×ª הודעות של %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 #, fuzzy msgid "Members" msgstr "חבר מ××–" @@ -3819,12 +3834,12 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "צור" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3834,7 +3849,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3843,7 +3858,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3919,8 +3934,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4307,7 +4322,8 @@ msgstr "הגדרות" msgid "You are not subscribed to that profile." msgstr "×œ× ×©×œ×—× ×• ××œ×™× ×• ×ת הפרופיל ×”×–×”" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "יצירת ×”×ž× ×•×™ × ×›×©×œ×”." @@ -4480,10 +4496,6 @@ msgstr "" msgid "No such tag." msgstr "×ין הודעה כזו." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4792,160 +4804,257 @@ msgstr "×ישי" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "גודל ×œ× ×—×•×§×™." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "×ין הודעה כזו." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "עידכון המשתמש × ×›×©×œ." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "×ין הודעה כזו." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "עידכון המשתמש × ×›×©×œ." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "שמירת מידע ×”×ª×ž×•× ×” × ×›×©×œ" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "שגי×ת מסד × ×ª×•× ×™× ×‘×”×›× ×¡×ª התגובה: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "בעיה בשמירת ההודעה." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 #, fuzzy msgid "Problem saving notice. Unknown user." msgstr "בעיה בשמירת ההודעה." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "בעיה בשמירת ההודעה." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "למשתמש ×ין פרופיל." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "בעיה בשמירת ההודעה." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 #, fuzzy msgid "User has blocked you." msgstr "למשתמש ×ין פרופיל." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "×œ× ×ž× ×•×™!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "מחיקת ×”×ž× ×•×™ ×œ× ×”×¦×œ×™×—×”." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "מחיקת ×”×ž× ×•×™ ×œ× ×”×¦×œ×™×—×”." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "מחיקת ×”×ž× ×•×™ ×œ× ×”×¦×œ×™×—×”." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 #, fuzzy msgid "Could not create group." msgstr "שמירת מידע ×”×ª×ž×•× ×” × ×›×©×œ" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "יצירת ×”×ž× ×•×™ × ×›×©×œ×”." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "יצירת ×”×ž× ×•×™ × ×›×©×œ×”." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "יצירת ×”×ž× ×•×™ × ×›×©×œ×”." @@ -6324,7 +6433,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "" @@ -6379,25 +6488,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "עידכון המשתמש × ×›×©×œ." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6456,55 +6565,55 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "ל×" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "×ין תוכן!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "צור" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 #, fuzzy msgid "Reply" msgstr "הגב" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "הודעות" @@ -6776,9 +6885,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "שגי×ת מערכת בהעל×ת הקובץ." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po index 1c5781d51..e0cc3dc43 100644 --- a/locale/hsb/LC_MESSAGES/statusnet.po +++ b/locale/hsb/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Upper Sorbian # +# Author@translatewiki.net: Brion # Author@translatewiki.net: McDutchie # Author@translatewiki.net: Michawiki # -- @@ -9,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:03:58+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:04+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: hsb\n" "X-Message-Group: out-statusnet\n" @@ -99,7 +100,7 @@ msgstr "Strona njeeksistuje." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -166,15 +167,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -207,7 +208,7 @@ msgstr "Aktualizacije wot %1$s a pÅ™ećelow na %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -255,7 +256,7 @@ msgstr "Profil njeje so skÅ‚adować daÅ‚." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -353,8 +354,8 @@ msgid "Could not delete favorite." msgstr "Faworit njeda so zhaÅ¡eć." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +msgid "Could not follow user: profile not found." +msgstr "NjebÄ› móžno wužiwarja sÅ‚Ä›dować: profil njenamakany." #: actions/apifriendshipscreate.php:118 #, php-format @@ -369,9 +370,9 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "NjemóžeÅ¡ slÄ›dowanje swójskich aktiwitow blokować." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Dwaj wužiwarskej ID abo wužiwarskej mjenje dyrbitej so podać." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Dyrbitej so dwaj pÅ‚aćiwej wužiwarskej ID abo wužiwarskej mjenje podać." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -386,6 +387,7 @@ msgstr "Cilowy wužiwar njeda so namakać." #: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" +"PÅ™imjeno smÄ› jenož maÅ‚e pismiki a cyfry wobsahować. Mjezery njejsu dowolene." #: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 @@ -498,6 +500,10 @@ msgstr "%s skupinow" msgid "groups on %s" msgstr "skupiny na %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Nahraće je so njeporadźiÅ‚o." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -636,22 +642,26 @@ msgstr "Status zniÄeny." msgid "No status with that ID found." msgstr "Žadyn status z tym ID namakany." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "To je pÅ™edoÅ‚ho. Maksimalna wulkosć zdźělenki je %d znamjeÅ¡kow." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Njenamakany." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "NjepodpÄ›rany format." @@ -705,6 +715,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "PÅ™iwěšk njeeksistuje." @@ -758,7 +772,7 @@ msgid "Preview" msgstr "PÅ™ehlad" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "ZniÄić" @@ -1031,7 +1045,7 @@ msgid "Do not delete this notice" msgstr "Tutu zdźělenku njewuÅ¡mórnyć" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Tutu zdźělenku wuÅ¡mórnyć" @@ -1104,7 +1118,7 @@ msgstr "Swójski Å¡at" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." -msgstr "" +msgstr "MóžeÅ¡ swójski Å¡at StatusNet jako .ZIP-archiw nahrać." #: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" @@ -1306,7 +1320,8 @@ msgstr "NjepÅ‚aćiwy alias: \"%s\"" msgid "Could not update group." msgstr "Skupina njeje so daÅ‚a aktualizować." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Aliasy njejsu so dali wutworić." @@ -2263,12 +2278,12 @@ msgstr "%1$s je hižo administrator za skupinu \"%2$s\"." #: actions/makeadmin.php:133 #, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "PÅ™istup na datowu sadźbu ÄÅ‚ona %1$S w skupinje %2$s móžno njeje." +msgstr "PÅ™istup na datowu sadźbu ÄÅ‚ona %1$s w skupinje %2$s móžno njeje." #: actions/makeadmin.php:146 #, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "Njeje móžno %1$S k administratorej w skupinje %2$s Äinić." +msgstr "Njeje móžno %1$s k administratorej w skupinje %2$s Äinić." #: actions/microsummary.php:69 msgid "No current status." @@ -2387,7 +2402,7 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2462,8 +2477,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Njeje podpÄ›rany datowy format." @@ -3321,7 +3336,7 @@ msgstr "NjemóžeÅ¡ swójsku zdźělenku wospjetować." msgid "You already repeated that notice." msgstr "Sy tutu zdźělenku hižo wospjetowaÅ‚." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Wospjetowany" @@ -3359,7 +3374,7 @@ msgstr "" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3372,8 +3387,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3462,7 +3477,7 @@ msgstr "Organizacija" msgid "Description" msgstr "Wopisanje" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistika" @@ -3547,16 +3562,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3615,7 +3630,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Čłonojo" @@ -3629,11 +3644,11 @@ msgstr "(Žadyn)" msgid "All members" msgstr "WÅ¡itcy ÄÅ‚onojo" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Wutworjeny" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3643,7 +3658,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3652,7 +3667,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratorojo" @@ -3727,8 +3742,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4095,7 +4110,8 @@ msgstr "Nastajenja wobrazowkoweho fota skÅ‚adować" msgid "You are not subscribed to that profile." msgstr "Njejsy tón profil abonowaÅ‚." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Abonement njeda so skÅ‚adować." @@ -4259,10 +4275,6 @@ msgstr "" msgid "No such tag." msgstr "" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Njejsy toho wužiwarja zablokowaÅ‚." @@ -4548,146 +4560,239 @@ msgstr "Wersija" msgid "Author(s)" msgstr "Awtorojo" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. 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 "NjepÅ‚aćiwe datajowe mjeno." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "PÅ™izamknjenje k skupinje je so njeporadźiÅ‚o." -#: classes/Group_member.php:53 +#. 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 "Njeje dźěl skupiny." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Wopušćenje skupiny je so njeporadźiÅ‚o." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Lokalna skupina njeda so aktualizować." -#: classes/Login_token.php:76 +#. 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 "Njeje móžno byÅ‚o, pÅ™izjewjenske znamjeÅ¡ko za %s wutworić" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "PowÄ›sć njeda so zasunyć." -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Zmylk datoweje banki pÅ™i zasunjenju haÅ¡eje tafliÄki: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Falowacy profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Njeje móžno, tafliÄku skÅ‚adować." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Hižo abonowany!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Wužiwar je će zablokowaÅ‚." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Njeje abonowany!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." -msgstr "Sebjeabonement njeje so daÅ‚ zniÄić." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Sebjeabonement njeda so zhaÅ¡eć." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." msgstr "Znamjo OMB-abonementa njeda so zhaÅ¡eć." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Abonoment njeje so daÅ‚ zniÄić." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Abonoment njeda so zhaÅ¡eć ." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Witaj do %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Skupina njeda so wutowrić." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "URI skupiny njeda so nastajić." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Skupinske ÄÅ‚onstwo njeda so stajić." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Informacije wo lokalnej skupinje njedachu so skÅ‚adować." @@ -4980,13 +5085,13 @@ msgstr "" #. TRANS: present than the currently displayed information. #: lib/action.php:1203 msgid "After" -msgstr "" +msgstr "Po" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. #: lib/action.php:1213 msgid "Before" -msgstr "" +msgstr "PÅ™ed" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. #: lib/activity.php:122 @@ -6008,7 +6113,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "wot" @@ -6065,24 +6170,24 @@ msgstr "Dataju njeda so na taÄel pisać." msgid "File upload stopped by extension." msgstr "Datajowe nahraće pÅ™ez rozÅ¡Ä›rjenje zastajene." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Dataja njeda so do ciloweho zapisa pÅ™esunyć." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "MIME-typ dataje njeda so zwÄ›sćić." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Spytaj druhi format %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s njeje podpÄ›rany datajowy typ na tutym serwerje." @@ -6136,51 +6241,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "S" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "J" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "W" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "Z" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "w konteksće" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Wospjetowany wot" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Na tutu zdźělenku wotmoÅ‚wić" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "WotmoÅ‚wić" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Zdźělenka wospjetowana" @@ -6438,8 +6543,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Nahraće Å¡ata faluje abo je so njeporadźiÅ‚o." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/ia/LC_MESSAGES/statusnet.po b/locale/ia/LC_MESSAGES/statusnet.po index cc699cef4..e0961e447 100644 --- a/locale/ia/LC_MESSAGES/statusnet.po +++ b/locale/ia/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:03+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:07+0000\n" "Language-Team: Interlingua\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ia\n" "X-Message-Group: out-statusnet\n" @@ -97,7 +97,7 @@ msgstr "Pagina non existe." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -168,8 +168,8 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Tu pote tentar [dar un pulsata a %1$s](../%2$s) in su profilo o [publicar un " "message a su attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -178,7 +178,7 @@ msgstr "" #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Proque non [registrar un conto](%%%%action.register%%%%) e postea dar un " "pulsata a %s o publicar un message a su attention." @@ -213,7 +213,7 @@ msgstr "Actualisationes de %1$s e su amicos in %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -263,7 +263,7 @@ msgstr "Non poteva salveguardar le profilo." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -361,8 +361,8 @@ msgid "Could not delete favorite." msgstr "Non poteva deler le favorite." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Non poteva sequer le usator: Usator non trovate." +msgid "Could not follow user: profile not found." +msgstr "Non poteva sequer le usator: profilo non trovate." #: actions/apifriendshipscreate.php:118 #, php-format @@ -377,9 +377,9 @@ msgstr "Non poteva cessar de sequer le usator: Usator non trovate." msgid "You cannot unfollow yourself." msgstr "Tu non pote cessar de sequer te mesme." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Duo IDs de usator o pseudonymos debe esser fornite." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Duo IDs o pseudonymos valide debe esser fornite." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -506,6 +506,10 @@ msgstr "Gruppos de %s" msgid "groups on %s" msgstr "gruppos in %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Le incargamento ha fallite." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Nulle parametro oauth_token fornite." @@ -652,25 +656,29 @@ msgstr "Stato delite." msgid "No status with that ID found." msgstr "Nulle stato trovate con iste ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Le cliente debe fornir un parametro 'status' con un valor." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" "Isto es troppo longe. Le longitude maximal del notas es %d characteres." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trovate." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "Le longitude maximal del notas es %d characteres, includente le URL " "adjungite." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formato non supportate." @@ -725,6 +733,10 @@ msgstr "Notas con etiquetta %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Actualisationes con etiquetta %1$s in %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Methodo API in construction." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Annexo non existe." @@ -778,7 +790,7 @@ msgid "Preview" msgstr "Previsualisation" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Deler" @@ -1031,7 +1043,7 @@ msgstr "Deler iste application" #: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." -msgstr "Non identificate." +msgstr "Tu non ha aperite un session." #: actions/deletenotice.php:71 msgid "Can't delete this notice." @@ -1059,7 +1071,7 @@ msgid "Do not delete this notice" msgstr "Non deler iste nota" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Deler iste nota" @@ -1339,7 +1351,8 @@ msgstr "Alias invalide: \"%s\"" msgid "Could not update group." msgstr "Non poteva actualisar gruppo." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Non poteva crear aliases." @@ -2299,7 +2312,7 @@ msgstr "%1$s quitava le gruppo %2$s" #: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." -msgstr "Tu es ja identificate." +msgstr "Tu es jam authenticate." #: actions/login.php:148 msgid "Incorrect username or password." @@ -2316,7 +2329,7 @@ msgstr "Aperir session" #: actions/login.php:249 msgid "Login to site" -msgstr "Identificar te a iste sito" +msgstr "Authenticar te a iste sito" #: actions/login.php:258 actions/register.php:485 msgid "Remember me" @@ -2496,7 +2509,7 @@ msgstr "Actualisationes correspondente al termino de recerca \"%1$s\" in %2$s!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Iste usator non accepta pulsatas o non ha ancora confirmate o fornite su " "adresse de e-mail." @@ -2575,8 +2588,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Solmente le URLs %s es permittite super HTTP simple." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Formato de datos non supportate." @@ -3148,7 +3161,7 @@ msgstr "Etiquettario" #: actions/recoverpassword.php:36 msgid "You are already logged in!" -msgstr "Tu es ja identificate!" +msgstr "Tu es jam authenticate!" #: actions/recoverpassword.php:62 msgid "No such recovery code." @@ -3472,7 +3485,7 @@ msgstr "Non poteva obtener un indicio de requesta." #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." -msgstr "Solmente usatores identificate pote repeter notas." +msgstr "Solmente usatores authenticate pote repeter notas." #: actions/repeat.php:64 actions/repeat.php:71 msgid "No notice specified." @@ -3486,7 +3499,7 @@ msgstr "Tu non pote repeter tu proprie nota." msgid "You already repeated that notice." msgstr "Tu ha ja repetite iste nota." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repetite" @@ -3524,10 +3537,10 @@ msgstr "Syndication de responsas pro %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Isto es le chronologia de responsas a %1$s, ma %2$s non ha ancora recipite " -"alcun nota a su attention." +"un nota a su attention." #: actions/replies.php:204 #, php-format @@ -3541,8 +3554,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Tu pote tentar [pulsar %1$s](../%2$s) o [publicar alique a su attention](%%%%" "action.newnotice%%%%?status_textarea=%3$s)." @@ -3633,7 +3646,7 @@ msgstr "Organisation" msgid "Description" msgstr "Description" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statisticas" @@ -3721,20 +3734,20 @@ msgstr "" "mitter los in evidentia." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s non ha ancora addite alcun nota a su favorites. Publica alique " "interessante que ille favoritisarea :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s non ha ancora addite alcun nota a su favorites. Proque non [registrar un " "conto](%%%%action.register%%%%) e postea publicar alique interessante que " @@ -3796,7 +3809,7 @@ msgstr "Syndication de notas pro le gruppo %s (Atom)" msgid "FOAF for %s group" msgstr "Amico de un amico pro le gruppo %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membros" @@ -3810,11 +3823,11 @@ msgstr "(Nulle)" msgid "All members" msgstr "Tote le membros" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Create" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3829,7 +3842,7 @@ msgstr "" "lor vita e interesses. [Crea un conto](%%%%action.register%%%%) pro devenir " "parte de iste gruppo e multe alteres! ([Lege plus](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3842,7 +3855,7 @@ msgstr "" "[StatusNet](http://status.net/). Su membros condivide breve messages super " "lor vita e interesses. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratores" @@ -3918,10 +3931,10 @@ msgstr "" "alcun nota, dunque iste es un bon momento pro comenciar :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Tu pote tentar pulsar %1$s o [publicar un nota a su attention](%%%%action." "newnotice%%%%?status_textarea=%2$s)." @@ -4053,7 +4066,7 @@ msgstr "Limite de texto" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "Numero maximal de characteres pro notas." +msgstr "Numero maxime de characteres pro notas." #: actions/siteadminpanel.php:278 msgid "Dupe limit" @@ -4310,7 +4323,8 @@ msgstr "Salveguardar configuration de instantaneos" msgid "You are not subscribed to that profile." msgstr "Tu non es subscribite a iste profilo." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Non poteva salveguardar le subscription." @@ -4489,10 +4503,6 @@ msgstr "" msgid "No such tag." msgstr "Etiquetta non existe." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Methodo API in construction." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Tu non ha blocate iste usator." @@ -4803,80 +4813,128 @@ msgstr "Version" msgid "Author(s)" msgstr "Autor(es)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "Nulle file pote esser plus grande que %d bytes e le file que tu inviava ha %" "d bytes. Tenta incargar un version minus grande." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "Un file de iste dimension excederea tu quota de usator de %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Un file de iste dimension excederea tu quota mensual de %d bytes." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Dimension invalide." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Le inscription al gruppo ha fallite." -#: classes/Group_member.php:53 +#. 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 "Non es membro del gruppo." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Le cancellation del membrato del gruppo ha fallite." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Non poteva actualisar gruppo local." -#: classes/Login_token.php:76 +#. 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 "Non poteva crear indicio de identification pro %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "Il te es prohibite inviar messages directe." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Non poteva inserer message." -#: classes/Message.php:71 +#. 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 "Non poteva actualisar message con nove 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Error in base de datos durante insertion del marca (hashtag): %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problema salveguardar nota. Troppo longe." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problema salveguardar nota. Usator incognite." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Troppo de notas troppo rapidemente; face un pausa e publica de novo post " "alcun minutas." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4884,71 +4942,122 @@ msgstr "" "Troppo de messages duplicate troppo rapidemente; face un pausa e publica de " "novo post alcun minutas." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Il te es prohibite publicar notas in iste sito." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problema salveguardar nota." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problema salveguardar le cassa de entrata del gruppo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Le usator non ha un profilo." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Impossibile salveguardar le aviso del sito." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Tu ha essite blocate del subscription." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Ja subscribite!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Le usator te ha blocate." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Non subscribite!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "Non poteva deler auto-subscription." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "Non poteva deler le indicio OMB del subscription." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Non poteva deler subscription." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Benvenite a %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Non poteva crear gruppo." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Non poteva definir le URL del gruppo." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Non poteva configurar le membrato del gruppo." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Non poteva salveguardar le informationes del gruppo local." @@ -5085,7 +5194,7 @@ msgstr "Crear conto" #: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "Identificar te a iste sito" +msgstr "Authenticar te a iste sito" #: lib/action.php:491 msgctxt "MENU" @@ -6417,7 +6526,7 @@ msgstr "" "altere usatores in conversation. Altere personas pote inviar te messages que " "solmente tu pote leger." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "de" @@ -6476,24 +6585,24 @@ msgstr "Falleva de scriber le file in disco." msgid "File upload stopped by extension." msgstr "Incargamento de file stoppate per un extension." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "File excede quota del usator." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "File non poteva esser displaciate in le directorio de destination." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Non poteva determinar le typo MIME del file." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Tenta usar un altere formato %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, 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." @@ -6549,51 +6658,51 @@ msgstr "" "previste. Per favor reproba plus tarde." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "W" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "a" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "in contexto" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetite per" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Responder a iste nota" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Nota repetite" @@ -6853,7 +6962,7 @@ msgstr "" "ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "Le file del apparentia manca o le incargamento ha fallite." #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po index c76c4e95f..963d21424 100644 --- a/locale/is/LC_MESSAGES/statusnet.po +++ b/locale/is/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:07+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:08+0000\n" "Language-Team: Icelandic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: is\n" "X-Message-Group: out-statusnet\n" @@ -107,7 +107,7 @@ msgstr "Ekkert þannig merki." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -174,15 +174,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -215,7 +215,7 @@ msgstr "Færslur frá %1$s og vinum á %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +266,7 @@ msgstr "Gat ekki vistað persónulega sÃðu." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -366,7 +366,8 @@ msgid "Could not delete favorite." msgstr "Gat ekki eytt uppáhaldi." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Get ekki fylgst með notanda: Notandinn finnst ekki." #: actions/apifriendshipscreate.php:118 @@ -385,8 +386,9 @@ msgstr "Get ekki fylgst með notanda: Notandinn finnst ekki." msgid "You cannot unfollow yourself." msgstr "Gat ekki uppfært notanda." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Tvo notendakenni eða skjáarnöfn verða að vera uppgefin." #: actions/apifriendshipsshow.php:134 @@ -517,6 +519,11 @@ msgstr "Hópar %s" msgid "groups on %s" msgstr "Hópsaðgerðir" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Misheppnuð skipun" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -662,22 +669,26 @@ msgstr "" msgid "No status with that ID found." msgstr "Engin staða með þessu kenni fannst." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Fannst ekki." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "Skráarsnið myndar ekki stutt." @@ -732,6 +743,10 @@ msgstr "Babl merkt með %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Aðferð à forritsskilum er à þróun." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "" @@ -785,7 +800,7 @@ msgid "Preview" msgstr "Forsýn" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Eyða" @@ -1072,7 +1087,7 @@ msgid "Do not delete this notice" msgstr "" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Eyða þessu babli" @@ -1369,7 +1384,8 @@ msgstr "" msgid "Could not update group." msgstr "Gat ekki uppfært hóp." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "" @@ -2538,8 +2554,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Allar færslur sem passa við \"%s\"" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Þessi notandi leyfir ekki að ýta við sér eða hefur ekki staðfest eða skráð " "tölvupóstinn sinn." @@ -2620,8 +2637,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Enginn stuðningur við gagnasnið." @@ -3542,7 +3559,7 @@ msgstr "Þú getur ekki nýskráð þig nema þú samþykkir leyfið." msgid "You already repeated that notice." msgstr "Þú hefur nú þegar lokað á þennan notanda." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "à sviðsljósinu" @@ -3581,7 +3598,7 @@ msgstr "Bablveita fyrir hópinn %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3594,8 +3611,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3693,7 +3710,7 @@ msgstr "Uppröðun" msgid "Description" msgstr "Lýsing" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Tölfræði" @@ -3779,16 +3796,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3847,7 +3864,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "%s hópurinn" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Meðlimir" @@ -3861,11 +3878,11 @@ msgstr "(Ekkert)" msgid "All members" msgstr "Allir meðlimir" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3875,7 +3892,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3884,7 +3901,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3960,8 +3977,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4355,7 +4372,8 @@ msgstr "Stillingar fyrir mynd" msgid "You are not subscribed to that profile." msgstr "Þú ert ekki áskrifandi." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Gat ekki vistað áskrift." @@ -4528,10 +4546,6 @@ msgstr "" msgid "No such tag." msgstr "Ekkert þannig merki." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Aðferð à forritsskilum er à þróun." - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4841,159 +4855,256 @@ msgstr "Persónulegt" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Ótæk stærð." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "HópssÃðan" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Gat ekki uppfært hóp." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "HópssÃðan" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Gat ekki uppfært hóp." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Gat ekki búið til uppáhald." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "Villa kom upp við að senda bein skilaboð" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Gat ekki skeytt skilaboðum inn Ã." -#: classes/Message.php:71 +#. 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 "Gat ekki uppfært skilaboð með nýju veffangi." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Gat ekki vistað babl. Óþekktur notandi." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Of mikið babl à einu; slakaðu aðeins á og haltu svo áfram eftir nokkrar " "mÃnútur." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Það hefur verið lagt bann við babli frá þér á þessari sÃðu." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Vandamál komu upp við að vista babl." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Vandamál komu upp við að vista babl." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%1$s (%2$s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Notandi hefur enga persónulega sÃðu." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Vandamál komu upp við að vista babl." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "Þessi notandi hefur bannað þér að gerast áskrifandi" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Notandinn hefur lokað á þig." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Ekki à áskrift!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Gat ekki eytt áskrift." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Gat ekki eytt áskrift." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Gat ekki eytt áskrift." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Gat ekki búið til hóp." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Gat ekki skráð hópmeðlimi." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Gat ekki skráð hópmeðlimi." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Gat ekki vistað áskrift." @@ -6371,7 +6482,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr "frá" @@ -6427,25 +6538,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Gat ekki eytt uppáhaldi." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6502,53 +6613,53 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "Nei" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "à sviðsljósinu" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Svara þessu babli" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Svara" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "Babl sent inn" @@ -6816,9 +6927,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Kerfisvilla kom upp við upphal skráar." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po index 1b6b39f03..401889a5c 100644 --- a/locale/it/LC_MESSAGES/statusnet.po +++ b/locale/it/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:12+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:10+0000\n" "Language-Team: Italian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: it\n" "X-Message-Group: out-statusnet\n" @@ -101,7 +101,7 @@ msgstr "Pagina inesistente." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,20 +170,20 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Puoi provare a [richiamare %1$s](../%2$s) dal suo profilo o [scrivere " "qualche cosa alla sua attenzione](%%%%action.newnotice%%%%?status_textarea=%3" "$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Perché non [crei un account](%%%%action.register%%%%) e richiami %s o scrivi " "un messaggio alla sua attenzione." @@ -218,7 +218,7 @@ msgstr "Messaggi da %1$s e amici su %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -268,7 +268,7 @@ msgstr "Impossibile salvare il profilo." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -366,7 +366,8 @@ msgid "Could not delete favorite." msgstr "Impossibile eliminare un preferito." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Impossibile seguire l'utente: utente non trovato." #: actions/apifriendshipscreate.php:118 @@ -382,8 +383,9 @@ msgstr "Impossibile non seguire l'utente: utente non trovato." msgid "You cannot unfollow yourself." msgstr "Non puoi non seguirti." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Devono essere forniti due ID utente o nominativi." #: actions/apifriendshipsshow.php:134 @@ -513,6 +515,11 @@ msgstr "Gruppi di %s" msgid "groups on %s" msgstr "Gruppi su %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Carica file" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Nessun parametro oauth_token fornito." @@ -657,23 +664,27 @@ msgstr "Messaggio eliminato." msgid "No status with that ID found." msgstr "Nessuno stato trovato con quel ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Troppo lungo. Lunghezza massima %d caratteri." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trovato." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "La dimensione massima di un messaggio è di %d caratteri, compreso l'URL." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formato non supportato." @@ -727,6 +738,10 @@ msgstr "Messaggi etichettati con %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Messaggi etichettati con %1$s su %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Metodo delle API in lavorazione." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Nessun allegato." @@ -780,7 +795,7 @@ msgid "Preview" msgstr "Anteprima" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Elimina" @@ -1060,7 +1075,7 @@ msgid "Do not delete this notice" msgstr "Non eliminare il messaggio" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Elimina questo messaggio" @@ -1338,7 +1353,8 @@ msgstr "Alias non valido: \"%s\"" msgid "Could not update group." msgstr "Impossibile aggiornare il gruppo." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Impossibile creare gli alias." @@ -2492,8 +2508,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Messaggi che corrispondono al termine \"%1$s\" su %2$s!" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Questo utente non consente i richiami oppure non ha confermato o impostato " "ancora il suo indirizzo email." @@ -2572,8 +2589,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Solo URL %s attraverso HTTP semplice." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Non è un formato di dati supportato." @@ -3485,7 +3502,7 @@ msgstr "Non puoi ripetere i tuoi stessi messaggi." msgid "You already repeated that notice." msgstr "Hai già ripetuto quel messaggio." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Ripetuti" @@ -3520,10 +3537,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Feed delle risposte di %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Questa è l'attività delle risposte a %1$s, ma %2$s non ha ricevuto ancora " "alcun messaggio." @@ -3538,10 +3555,10 @@ msgstr "" "[entrare in qualche gruppo](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Puoi provare a [richiamare %1$s](../%2$s) o [scrivere qualche cosa alla sua " "attenzione](%%%%action.newnotice%%%%?status_textarea=%s)." @@ -3632,7 +3649,7 @@ msgstr "Organizzazione" msgid "Description" msgstr "Descrizione" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistiche" @@ -3719,20 +3736,20 @@ msgstr "" "forma di cuore per salvare i messaggi e rileggerli in un altro momento." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s non ha aggiunto alcun messaggio tra i suoi preferiti. Scrivi qualche cosa " "di interessante in modo che lo inserisca tra i suoi preferiti. :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s non ha aggiunto alcun messaggio tra i suoi preferiti. Perché non [crei un " "account](%%%%action.register%%%%) e quindi scrivi qualche cosa di " @@ -3794,7 +3811,7 @@ msgstr "Feed dei messaggi per il gruppo %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF per il gruppo %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membri" @@ -3808,11 +3825,11 @@ msgstr "(nessuno)" msgid "All members" msgstr "Tutti i membri" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Creato" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3828,7 +3845,7 @@ msgstr "" "stesso](%%%%action.register%%%%) per far parte di questo gruppo e di molti " "altri! ([Maggiori informazioni](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3840,7 +3857,7 @@ msgstr "" "(http://it.wikipedia.org/wiki/Microblogging) basato sul software libero " "[StatusNet](http://status.net/)." -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Amministratori" @@ -3915,10 +3932,10 @@ msgstr "" "potrebbe essere un buon momento per iniziare! :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Puoi provare a richiamare %1$s o [scrivere qualche cosa che attiri la sua " "attenzione](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -4306,7 +4323,8 @@ msgstr "Salva impostazioni snapshot" msgid "You are not subscribed to that profile." msgstr "Non hai una abbonamento a quel profilo." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Impossibile salvare l'abbonamento." @@ -4486,10 +4504,6 @@ msgstr "" msgid "No such tag." msgstr "Nessuna etichetta." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Metodo delle API in lavorazione." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Non hai bloccato quell'utente." @@ -4800,82 +4814,130 @@ msgstr "Versione" msgid "Author(s)" msgstr "Autori" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "Nessun file può superare %d byte e il file inviato era di %d byte. Prova a " "caricarne una versione più piccola." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Un file di questa dimensione supererebbe la tua quota utente di %d byte." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "Un file di questa dimensione supererebbe la tua quota mensile di %d byte." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Dimensione non valida." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Ingresso nel gruppo non riuscito." -#: classes/Group_member.php:53 +#. 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 "Non si fa parte del gruppo." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Uscita dal gruppo non riuscita." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Impossibile aggiornare il gruppo locale." -#: classes/Login_token.php:76 +#. 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 "Impossibile creare il token di accesso per %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "Ti è proibito inviare messaggi diretti." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Impossibile inserire il messaggio." -#: classes/Message.php:71 +#. 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 "Impossibile aggiornare il messaggio con il nuovo 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Errore del database nell'inserire un hashtag: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problema nel salvare il messaggio. Troppo lungo." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problema nel salvare il messaggio. Utente sconosciuto." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Troppi messaggi troppo velocemente; fai una pausa e scrivi di nuovo tra " "qualche minuto." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4883,71 +4945,122 @@ msgstr "" "Troppi messaggi duplicati troppo velocemente; fai una pausa e scrivi di " "nuovo tra qualche minuto." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Ti è proibito inviare messaggi su questo sito." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problema nel salvare il messaggio." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problema nel salvare la casella della posta del gruppo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "L'utente non ha un profilo." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Impossibile salvare il messaggio del sito." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Non ti è possibile abbonarti." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Hai già l'abbonamento!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "L'utente non ti consente di seguirlo." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Non hai l'abbonamento!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "Impossibile eliminare l'auto-abbonamento." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "Impossibile eliminare il token di abbonamento OMB." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Impossibile eliminare l'abbonamento." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Benvenuti su %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Impossibile creare il gruppo." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Impossibile impostare l'URI del gruppo." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Impossibile impostare la membership al gruppo." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Impossibile salvare le informazioni del gruppo locale." @@ -6423,7 +6536,7 @@ msgstr "" "iniziare una conversazione con altri utenti. Altre persone possono mandare " "messaggi riservati solamente a te." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "via" @@ -6481,24 +6594,24 @@ msgstr "Scrittura del file su disco non riuscita." msgid "File upload stopped by extension." msgstr "Caricamento del file bloccato dall'estensione." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Il file supera la quota dell'utente." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Impossibile spostare il file nella directory di destinazione." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Impossibile determinare il tipo MIME del file." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Prova a usare un altro formato per %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s non è un tipo di file supportato su server." @@ -6554,51 +6667,51 @@ msgstr "" "previsto. Riprova più tardi." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "O" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "presso" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "in una discussione" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Ripetuto da" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Rispondi a questo messaggio" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Rispondi" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Messaggio ripetuto" @@ -6857,8 +6970,8 @@ msgstr "" "Questo server non è in grado di gestire caricamenti senza il supporto ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Tema caricato mancante o caricamento non riuscito." +msgid "The theme file is missing or the upload failed." +msgstr "Manca il file del tema o il caricamento non è riuscito." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po index e0e1ef021..1141b3427 100644 --- a/locale/ja/LC_MESSAGES/statusnet.po +++ b/locale/ja/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:16+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:11+0000\n" "Language-Team: Japanese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ja\n" "X-Message-Group: out-statusnet\n" @@ -103,7 +103,7 @@ msgstr "ãã®ã‚ˆã†ãªãƒšãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,19 +170,19 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã‹ã‚‰ [%1$s ã•ã‚“ã«åˆå›³](../%2$s) ã—ãŸã‚Šã€[知らã›ãŸã„ã“ã¨ã«ã¤ã„ã¦æŠ•" "稿](%%%%action.newnotice%%%%?status_textarea=%3$s) ã—ãŸã‚Šã§ãã¾ã™ã€‚" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "[アカウントを登録](%%%%action.register%%%%) ã—㦠%s ã•ã‚“ã«åˆå›³ã—ãŸã‚Šã€ãŠçŸ¥ã‚‰" "ã›ã‚’é€ã£ã¦ã¿ã¾ã›ã‚“ã‹ã€‚" @@ -217,7 +217,7 @@ msgstr "%2$s ã« %1$s ã¨å‹äººã‹ã‚‰ã®æ›´æ–°ãŒã‚ã‚Šã¾ã™ï¼" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -268,7 +268,7 @@ msgstr "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’ä¿å˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -366,7 +366,8 @@ msgid "Could not delete favorite." msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’å–り消ã™ã“ã¨ãŒã§ãã¾ã›ã‚“。" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "ユーザをフォãƒãƒ¼ã§ãã¾ã›ã‚“ã§ã—ãŸ: ユーザãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: actions/apifriendshipscreate.php:118 @@ -383,8 +384,9 @@ msgstr "ユーザã®ãƒ•ã‚©ãƒãƒ¼ã‚’åœæ¢ã§ãã¾ã›ã‚“ã§ã—ãŸ: ユーザãŒè msgid "You cannot unfollow yourself." msgstr "自分自身をフォãƒãƒ¼åœæ¢ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "ãµãŸã¤ã®ï¼©ï¼¤ã‹ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãƒãƒ¼ãƒ ãŒå¿…è¦ã§ã™ã€‚" #: actions/apifriendshipsshow.php:134 @@ -515,6 +517,11 @@ msgstr "%s グループ" msgid "groups on %s" msgstr "%s 上ã®ã‚°ãƒ«ãƒ¼ãƒ—" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ファイルアップãƒãƒ¼ãƒ‰" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "oauth_token パラメータã¯æä¾›ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" @@ -655,22 +662,26 @@ msgstr "ステータスを削除ã—ã¾ã—ãŸã€‚" msgid "No status with that ID found." msgstr "ãã®ï¼©ï¼¤ã§ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "é•·ã™ãŽã¾ã™ã€‚ã¤ã¶ã‚„ãã¯æœ€å¤§ 140 å—ã¾ã§ã§ã™ã€‚" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "ã¤ã¶ã‚„ã㯠URL ã‚’å«ã‚ã¦æœ€å¤§ %d å—ã¾ã§ã§ã™ã€‚" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "サãƒãƒ¼ãƒˆå¤–ã®å½¢å¼ã§ã™ã€‚" @@ -724,6 +735,10 @@ msgstr "%s ã¨ã‚¿ã‚°ä»˜ã‘ã•ã‚ŒãŸã¤ã¶ã‚„ã" msgid "Updates tagged with %1$s on %2$s!" msgstr "%2$s ã« %1$s ã«ã‚ˆã‚‹æ›´æ–°ãŒã‚ã‚Šã¾ã™ï¼" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API メソッドãŒå·¥äº‹ä¸ã§ã™ã€‚" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "ãã®ã‚ˆã†ãªæ·»ä»˜ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -776,7 +791,7 @@ msgid "Preview" msgstr "プレビュー" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "削除" @@ -1061,7 +1076,7 @@ msgid "Do not delete this notice" msgstr "ã“ã®ã¤ã¶ã‚„ãを削除ã§ãã¾ã›ã‚“。" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "ã“ã®ã¤ã¶ã‚„ãを削除" @@ -1340,7 +1355,8 @@ msgstr "ä¸æ£ãªåˆ¥å: \"%s\"" msgid "Could not update group." msgstr "グループを更新ã§ãã¾ã›ã‚“。" -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "別åを作æˆã§ãã¾ã›ã‚“。" @@ -2513,8 +2529,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "\"%2$s\" 上ã®æ¤œç´¢èªž \"$1$s\" ã«ä¸€è‡´ã™ã‚‹ã™ã¹ã¦ã®æ›´æ–°" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "ã“ã®ãƒ¦ãƒ¼ã‚¶ã¯ã€åˆå›³ã‚’許å¯ã—ã¦ã„ãªã„ã‹ã€ç¢ºèªã•ã‚Œã¦ã„ãŸçŠ¶æ…‹ã§ãªã„ã‹ã€ãƒ¡ãƒ¼ãƒ«è¨å®š" "ã‚’ã—ã¦ã„ã¾ã›ã‚“。" @@ -2594,8 +2611,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„データ形å¼ã€‚" @@ -3503,7 +3520,7 @@ msgstr "自分ã®ã¤ã¶ã‚„ãã¯ç¹°ã‚Šè¿”ã›ã¾ã›ã‚“。" msgid "You already repeated that notice." msgstr "ã™ã§ã«ãã®ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¦ã„ã¾ã™ã€‚" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "ç¹°ã‚Šè¿”ã•ã‚ŒãŸ" @@ -3538,10 +3555,10 @@ msgid "Replies feed for %s (Atom)" msgstr "%s ã®è¿”信フィード (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "ã“れ㯠%1$s ã¸ã®è¿”信を表示ã—ãŸã‚¿ã‚¤ãƒ ラインã§ã™ã€ã—ã‹ã— %2$s ã¯ã¾ã ã¤ã¶ã‚„ãã‚’" "å—ã‘å–ã£ã¦ã„ã¾ã›ã‚“。" @@ -3556,10 +3573,10 @@ msgstr "" "ループã«åŠ ã‚ã‚‹](%%action.groups%%)ã“ã¨ãŒã§ãã¾ã™ã€‚" #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "ã‚ãªãŸã¯ [%1$s ã«åˆå›³](../%2$s) ã™ã‚‹ã‹ã€[ãã®äººå®›ã¦ã«ä½•ã‹ã‚’投稿](%%%%action." "newnotice%%%%?status_textarea=%3$s)ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" @@ -3652,7 +3669,7 @@ msgstr "組織" msgid "Description" msgstr "概è¦" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "統計データ" @@ -3741,20 +3758,20 @@ msgstr "" "ã™ã‚‹ã‹ã€ã¾ãŸã¯ãれらã®ä¸Šã§ã‚¹ãƒãƒƒãƒˆãƒ©ã‚¤ãƒˆã‚’ã¯ã˜ã„ã¦ãã ã•ã„。" #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s ã¯ã¾ã å½¼ã®ãŠæ°—ã«å…¥ã‚Šã«å°‘ã—ã®ã¤ã¶ã‚„ãã‚‚åŠ ãˆã¦ã„ã¾ã›ã‚“。 彼らãŒãŠæ°—ã«å…¥ã‚Šã«" "åŠ ãˆã‚‹ã“ã¨ãŠã‚‚ã—ã‚ã„ã‚‚ã®ã‚’投稿ã—ã¦ãã ã•ã„:)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s ã¯ã¾ã ãŠæ°—ã«å…¥ã‚Šã«å°‘ã—ã®ã¤ã¶ã‚„ãã‚‚åŠ ãˆã¦ã„ã¾ã›ã‚“。 ãªãœ [アカウント登録](%" "%%%action.register%%%%) ã—ãªã„ã®ã§ã™ã‹ã€‚ãã—ã¦ã€å½¼ã‚‰ãŒãŠæ°—ã«å…¥ã‚Šã«åŠ ãˆã‚‹ãŠã‚‚" @@ -3816,7 +3833,7 @@ msgstr "%s グループã®ã¤ã¶ã‚„ãフィード (Atom)" msgid "FOAF for %s group" msgstr "%s グループ㮠FOAF" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "メンãƒãƒ¼" @@ -3830,11 +3847,11 @@ msgstr "(ãªã—)" msgid "All members" msgstr "å…¨ã¦ã®ãƒ¡ãƒ³ãƒãƒ¼" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "作æˆæ—¥" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3849,7 +3866,7 @@ msgstr "" "ã™ã‚‹çŸã„メッセージを共有ã—ã¾ã™ã€‚[今ã™ãå‚åŠ ](%%%%action.register%%%%) ã—ã¦ã“" "ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¸€å“¡ã«ãªã‚Šã¾ã—ょã†! ([ã‚‚ã£ã¨èªã‚€](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3862,7 +3879,7 @@ msgstr "" "wikipedia.org/wiki/Micro-blogging) サービス。メンãƒãƒ¼ã¯å½¼ã‚‰ã®æš®ã‚‰ã—ã¨èˆˆå‘³ã«é–¢" "ã™ã‚‹çŸã„メッセージを共有ã—ã¾ã™ã€‚" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "管ç†è€…" @@ -3937,10 +3954,10 @@ msgstr "" "ã„ã¾ã¯å§‹ã‚る良ã„時ã§ã—ょã†:)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "ã‚ãªãŸã¯ã€%1$s ã«åˆå›³ã™ã‚‹ã‹ã€[ã¾ãŸã¯ãã®äººå®›ã«ä½•ã‹ã‚’投稿](%%%%action." "newnotice%%%%?status_textarea=%2$s) ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" @@ -4347,7 +4364,8 @@ msgstr "サイトè¨å®šã®ä¿å˜" msgid "You are not subscribed to that profile." msgstr "ã‚ãªãŸã¯ãã®ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒ•ã‚©ãƒãƒ¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "フォãƒãƒ¼ã‚’ä¿å˜ã§ãã¾ã›ã‚“。" @@ -4526,10 +4544,6 @@ msgstr "ã“ã®ãƒ•ã‚©ãƒ¼ãƒ を使用ã—ã¦ã€ãƒ•ã‚©ãƒãƒ¼è€…ã‹ãƒ•ã‚©ãƒãƒ¼ã«ã‚¿ msgid "No such tag." msgstr "ãã®ã‚ˆã†ãªã‚¿ã‚°ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API メソッドãŒå·¥äº‹ä¸ã§ã™ã€‚" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "ã‚ãªãŸã¯ãã®ãƒ¦ãƒ¼ã‚¶ã‚’ブãƒãƒƒã‚¯ã—ã¦ã„ã¾ã›ã‚“。" @@ -4832,83 +4846,131 @@ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" msgid "Author(s)" msgstr "作者" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "ã©ã‚“ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚‚ %d ãƒã‚¤ãƒˆã‚ˆã‚Šå¤§ããã¦ã¯ã„ã‘ã¾ã›ã‚“ã€ãã—ã¦ã€ã‚ãªãŸãŒé€ã£ãŸ" "ファイル㯠%d ãƒã‚¤ãƒˆã§ã—ãŸã€‚よりå°ã•ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’アップãƒãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†ã«ã—ã¦" "ãã ã•ã„。" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "ã“ã‚Œã»ã©å¤§ãã„ファイルã¯ã‚ãªãŸã®%dãƒã‚¤ãƒˆã®ãƒ¦ãƒ¼ã‚¶å‰²å½“ã¦ã‚’超ãˆã¦ã„ã‚‹ã§ã—ょã†ã€‚" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "ã“ã‚Œã»ã©å¤§ãã„ファイルã¯ã‚ãªãŸã®%dãƒã‚¤ãƒˆã®æ¯Žæœˆã®å‰²å½“ã¦ã‚’超ãˆã¦ã„ã‚‹ã§ã—ょã†ã€‚" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "ä¸æ£ãªã‚µã‚¤ã‚ºã€‚" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "グループå‚åŠ ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" -#: classes/Group_member.php:53 +#. 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 "グループã®ä¸€éƒ¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "グループ脱退ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "グループを更新ã§ãã¾ã›ã‚“。" -#: classes/Login_token.php:76 +#. 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 "%s 用ã®ãƒã‚°ã‚¤ãƒ³ãƒ»ãƒˆãƒ¼ã‚¯ãƒ³ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "ã‚ãªãŸã¯ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã®ãŒç¦æ¢ã•ã‚Œã¦ã„ã¾ã™ã€‚" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’è¿½åŠ ã§ãã¾ã›ã‚“。" -#: classes/Message.php:71 +#. 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 "æ–°ã—ã„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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°è¿½åŠ DB エラー: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "ã¤ã¶ã‚„ãã‚’ä¿å˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚é•·ã™ãŽã§ã™ã€‚" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "ã¤ã¶ã‚„ãã‚’ä¿å˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ä¸æ˜Žãªãƒ¦ãƒ¼ã‚¶ã§ã™ã€‚" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "多ã™ãŽã‚‹ã¤ã¶ã‚„ããŒé€Ÿã™ãŽã¾ã™; 数分間ã®ä¼‘ã¿ã‚’å–ã£ã¦ã‹ã‚‰å†æŠ•ç¨¿ã—ã¦ãã ã•ã„。" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4916,73 +4978,123 @@ msgstr "" "多ã™ãŽã‚‹é‡è¤‡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒé€Ÿã™ãŽã¾ã™; 数分間休ã¿ã‚’å–ã£ã¦ã‹ã‚‰å†åº¦æŠ•ç¨¿ã—ã¦ãã ã•" "ã„。" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "ã‚ãªãŸã¯ã“ã®ã‚µã‚¤ãƒˆã§ã¤ã¶ã‚„ãを投稿ã™ã‚‹ã®ãŒç¦æ¢ã•ã‚Œã¦ã„ã¾ã™ã€‚" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "ã¤ã¶ã‚„ãã‚’ä¿å˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "ユーザã¯ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’ã‚‚ã£ã¦ã„ã¾ã›ã‚“。" + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "ã‚ãªãŸã®ãƒ‡ã‚¶ã‚¤ãƒ³è¨å®šã‚’ä¿å˜ã§ãã¾ã›ã‚“。" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "ã‚ãªãŸã¯ãƒ•ã‚©ãƒãƒ¼ãŒç¦æ¢ã•ã‚Œã¾ã—ãŸã€‚" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "ã™ã§ã«ãƒ•ã‚©ãƒãƒ¼ã—ã¦ã„ã¾ã™!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "ユーザã¯ã‚ãªãŸã‚’ブãƒãƒƒã‚¯ã—ã¾ã—ãŸã€‚" -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "フォãƒãƒ¼ã—ã¦ã„ã¾ã›ã‚“ï¼" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "自己フォãƒãƒ¼ã‚’削除ã§ãã¾ã›ã‚“。" -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "フォãƒãƒ¼ã‚’削除ã§ãã¾ã›ã‚“" -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "フォãƒãƒ¼ã‚’削除ã§ãã¾ã›ã‚“" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "よã†ã“ã %1$sã€@%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "グループを作æˆã§ãã¾ã›ã‚“。" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "グループメンãƒãƒ¼ã‚·ãƒƒãƒ—をセットã§ãã¾ã›ã‚“。" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "グループメンãƒãƒ¼ã‚·ãƒƒãƒ—をセットã§ãã¾ã›ã‚“。" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "フォãƒãƒ¼ã‚’ä¿å˜ã§ãã¾ã›ã‚“。" @@ -6401,7 +6513,7 @@ msgstr "" "ã«å¼•ã込むプライベートメッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚人々ã¯ã‚ãªãŸã ã‘ã¸ã®" "メッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "from" @@ -6462,24 +6574,24 @@ msgstr "ディスクã¸ã®ãƒ•ã‚¡ã‚¤ãƒ«æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" msgid "File upload stopped by extension." msgstr "エクステンションã«ã‚ˆã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã‚’ä¸æ¢ã—ã¾ã—ãŸã€‚" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "ファイルã¯ãƒ¦ãƒ¼ã‚¶ã®å‰²å½“ã¦ã‚’超ãˆã¦ã„ã¾ã™ã€‚" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "ファイルを目的ディレクトリã«å‹•ã‹ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "ファイルã®MIMEタイプを決定ã§ãã¾ã›ã‚“。" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "別㮠%s フォーマットを試ã—ã¦ãã ã•ã„。" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s ã¯ã“ã®ã‚µãƒ¼ãƒã®ã‚µãƒãƒ¼ãƒˆã—ã¦ã„るファイルタイプã§ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -6536,55 +6648,55 @@ msgstr "" "度試ã¿ã¦ãã ã•ã„" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "北" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 #, fuzzy msgid "S" msgstr "å—" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 #, fuzzy msgid "E" msgstr "æ±" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 #, fuzzy msgid "W" msgstr "西" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "at" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "ã“ã®ã¤ã¶ã‚„ãã¸è¿”ä¿¡" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "返信" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¾ã—ãŸ" @@ -6842,9 +6954,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã§ã‚·ã‚¹ãƒ†ãƒ エラー" +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po index ce2db363a..c40002fc5 100644 --- a/locale/ko/LC_MESSAGES/statusnet.po +++ b/locale/ko/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Korean # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Twkang # -- # This file is distributed under the same license as the StatusNet package. @@ -8,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:21+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:13+0000\n" "Language-Team: Korean\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ko\n" "X-Message-Group: out-statusnet\n" @@ -97,7 +98,7 @@ msgstr "해당하는 페ì´ì§€ ì—†ìŒ" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -166,15 +167,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -207,7 +208,7 @@ msgstr "%2$sì— ìžˆëŠ” %1$s ë° ì¹œêµ¬ë“¤ì˜ ì—…ë°ì´íŠ¸!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -255,7 +256,7 @@ msgstr "í”„ë¡œí•„ì„ ì €ìž¥ í• ìˆ˜ 없습니다." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -353,7 +354,8 @@ msgid "Could not delete favorite." msgstr "관심소ì‹ì„ ì‚ì œí• ìˆ˜ 없습니다." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "íŒ”ë¡œìš°í• ìˆ˜ 없습니다: ì´ìš©ìž ì—†ìŒ." #: actions/apifriendshipscreate.php:118 @@ -369,8 +371,9 @@ msgstr "ì–¸íŒ”ë¡œìš°í• ìˆ˜ 없습니다: ì´ìš©ìž ì—†ìŒ." msgid "You cannot unfollow yourself." msgstr "ìžê¸° ìžì‹ ì„ ì–¸íŒ”ë¡œìš°í• ìˆ˜ 없습니다." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "ë‘ ê°œì˜ ì‚¬ìš©ìž ID나 ëŒ€í™”ëª…ì„ ìž…ë ¥í•´ì•¼ 합니다." #: actions/apifriendshipsshow.php:134 @@ -501,6 +504,11 @@ msgstr "%s 그룹" msgid "groups on %s" msgstr "%s ìƒì˜ 그룹들" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "올리기" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -644,22 +652,26 @@ msgstr "ì‚ì œëœ ì†Œì‹ìž…니다." msgid "No status with that ID found." msgstr "ë°œê²¬ëœ IDì˜ ìƒíƒœê°€ 없습니다." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "너무 ê¹ë‹ˆë‹¤. í†µì§€ì˜ ìµœëŒ€ 길ì´ëŠ” %d ê¸€ìž ìž…ë‹ˆë‹¤." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "ì°¾ì„ ìˆ˜ê°€ 없습니다." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "소ì‹ì˜ 최대 길ì´ëŠ” 첨부 URLì„ í¬í•¨í•˜ì—¬ %d 글ìžìž…니다." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "지ì›í•˜ì§€ 않는 형ì‹ìž…니다." @@ -713,6 +725,10 @@ msgstr "%s íƒœê·¸ëœ í†µì§€" msgid "Updates tagged with %1$s on %2$s!" msgstr "%2$sì— ìžˆëŠ” %1$sì˜ ì—…ë°ì´íŠ¸!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API 메서드를 구성중 입니다." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "해당하는 첨부파ì¼ì´ 없습니다." @@ -766,7 +782,7 @@ msgid "Preview" msgstr "미리보기" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "ì‚ì œ" @@ -1054,7 +1070,7 @@ msgid "Do not delete this notice" msgstr "ì´ í†µì§€ë¥¼ 지울 수 없습니다." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "ì´ ê²Œì‹œê¸€ ì‚ì œí•˜ê¸°" @@ -1344,7 +1360,8 @@ msgstr "ì‚¬ìš©í• ìˆ˜ 없는 별명 : \"%s\"" msgid "Could not update group." msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "좋아하는 ê²Œì‹œê¸€ì„ ìƒì„±í• 수 없습니다." @@ -2508,8 +2525,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "\"%s\" ì— ì¼ì¹˜í•˜ëŠ” ëª¨ë“ ì—…ë°ì´íŠ¸" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "ì´ ì‚¬ìš©ìžëŠ” nudge를 허용하지 ì•Šì•˜ê³ , ì•„ì§ ê·¸ì˜ ì´ë©”ì¼ì„ ì¸ì¦í•˜ì§€ 않았습니다." @@ -2589,8 +2607,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "지ì›í•˜ëŠ” 형ì‹ì˜ ë°ì´í„°ê°€ 아닙니다." @@ -3506,7 +3524,7 @@ msgstr "ìžì‹ ì˜ ê¸€ì€ ìž¬ì „ì†¡í• ìˆ˜ 없습니다." msgid "You already repeated that notice." msgstr "ë‹¹ì‹ ì€ ì´ë¯¸ ì´ ì‚¬ìš©ìžë¥¼ ì°¨ë‹¨í•˜ê³ ìžˆìŠµë‹ˆë‹¤." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "ìž¬ì „ì†¡ë¨" @@ -3541,11 +3559,11 @@ msgid "Replies feed for %s (Atom)" msgstr "%sì˜ í†µì§€ 피드" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." -msgstr "" +"notice to them yet." +msgstr "%s ë° ì¹œêµ¬ë“¤ì˜ íƒ€ìž„ë¼ì¸ì´ì§€ë§Œ, ì•„ì§ ì•„ë¬´ë„ ê¸€ì„ ìž‘ì„±í•˜ì§€ 않았습니다." #: actions/replies.php:204 #, php-format @@ -3557,8 +3575,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3656,7 +3674,7 @@ msgstr "페ì´ì§€ìˆ˜" msgid "Description" msgstr "설명" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "통계" @@ -3742,16 +3760,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3810,7 +3828,7 @@ msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (Atom)" msgid "FOAF for %s group" msgstr "%sì˜ ë³´ë‚¸ìª½ì§€í•¨" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "회ì›" @@ -3824,12 +3842,12 @@ msgstr "(없습니다.)" msgid "All members" msgstr "ëª¨ë“ íšŒì›" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "ìƒì„±" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3839,7 +3857,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, fuzzy, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3850,7 +3868,7 @@ msgstr "" "**%s** 는 %%%%site.name%%%% [마ì´í¬ë¡œë¸”로깅)(http://en.wikipedia.org/wiki/" "Micro-blogging)ì˜ ì‚¬ìš©ìž ê·¸ë£¹ìž…ë‹ˆë‹¤. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 #, fuzzy msgid "Admins" msgstr "관리ìž" @@ -3929,8 +3947,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4328,7 +4346,8 @@ msgstr "아바타 ì„¤ì •" msgid "You are not subscribed to that profile." msgstr "ë‹¹ì‹ ì€ ì´ í”„ë¡œí•„ì— êµ¬ë…ë˜ì§€ ì•Šê³ ìžˆìŠµë‹ˆë‹¤." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "구ë…ì„ ì €ìž¥í• ìˆ˜ 없습니다." @@ -4498,10 +4517,6 @@ msgstr "ë‹¹ì‹ ì˜ êµ¬ë…ìžë‚˜ 구ë…하는 ì‚¬ëžŒì— íƒœê¹…ì„ ìœ„í•´ ì´ ì–‘ì‹ msgid "No such tag." msgstr "그러한 태그가 없습니다." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API 메서드를 구성중 입니다." - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4810,83 +4825,131 @@ msgstr "ë²„ì ¼" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "옳지 ì•Šì€ í¬ê¸°" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "ê·¸ë£¹ì— ê°€ìž…í•˜ì§€ 못했습니다." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "그룹 프로필" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." -#: classes/Login_token.php:76 +#. 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 "%s ì— ëŒ€í•œ ë¡œê·¸ì¸ í† í°ì„ 만들 수 없습니다." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "ì§ì ‘ 메시지 보내기 오류." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "메시지를 ì‚½ìž…í• ìˆ˜ 없습니다." -#: classes/Message.php:71 +#. 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 "새 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "해쉬테그를 추가 í• ë•Œì— ë°ì´íƒ€ë² ì´ìŠ¤ ì—러 : %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "게시글 ì €ìž¥ë¬¸ì œ. ì•Œë ¤ì§€ì§€ì•Šì€ íšŒì›" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "너무 ë§Žì€ ê²Œì‹œê¸€ì´ ë„ˆë¬´ ë¹ ë¥´ê²Œ 올ë¼ì˜µë‹ˆë‹¤. í•œìˆ¨ê³ ë¥´ê³ ëª‡ë¶„í›„ì— ë‹¤ì‹œ í¬ìŠ¤íŠ¸ë¥¼ " "해보세요." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 #, fuzzy msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " @@ -4895,77 +4958,126 @@ msgstr "" "너무 ë§Žì€ ê²Œì‹œê¸€ì´ ë„ˆë¬´ ë¹ ë¥´ê²Œ 올ë¼ì˜µë‹ˆë‹¤. í•œìˆ¨ê³ ë¥´ê³ ëª‡ë¶„í›„ì— ë‹¤ì‹œ í¬ìŠ¤íŠ¸ë¥¼ " "해보세요." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "ì´ ì‚¬ì´íŠ¸ì— 게시글 í¬ìŠ¤íŒ…으로부터 ë‹¹ì‹ ì€ ê¸ˆì§€ë˜ì—ˆìŠµë‹ˆë‹¤." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%1$s (%2$s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³ ìžˆì§€ 않습니다." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "트위터 í™˜ê²½ì„¤ì •ì„ ì €ìž¥í• ìˆ˜ 없습니다." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "ì´ íšŒì›ì€ 구ë…으로부터 ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ë‹¤." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "구ë…í•˜ê³ ìžˆì§€ 않습니다!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "예약 구ë…ì„ ì‚ì œ í• ìˆ˜ 없습니다." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "예약 구ë…ì„ ì‚ì œ í• ìˆ˜ 없습니다." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "예약 구ë…ì„ ì‚ì œ í• ìˆ˜ 없습니다." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, fuzzy, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "%2$sì—ì„œ %1$s까지 메시지" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "새 ê·¸ë£¹ì„ ë§Œë“¤ 수 없습니다." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "그룹 맴버ì‹ì„ ì„¸íŒ…í• ìˆ˜ 없습니다." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "그룹 맴버ì‹ì„ ì„¸íŒ…í• ìˆ˜ 없습니다." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "구ë…ì„ ì €ìž¥í• ìˆ˜ 없습니다." @@ -6190,7 +6302,7 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -"í¬ìŠ¤íŒ… 주소는 %1$s입니다.새 메시지를 등ë¡í•˜ë ¤ë©´ %2$ 주소로 ì´ë©”ì¼ì„ ë³´ë‚´ì‹ì‹œ" +"í¬ìŠ¤íŒ… 주소는 %1$s입니다.새 메시지를 등ë¡í•˜ë ¤ë©´ %2$s 주소로 ì´ë©”ì¼ì„ ë³´ë‚´ì‹ì‹œ" "오.ì´ë©”ì¼ ì‚¬ìš©ë²•ì€ %3$s 페ì´ì§€ë¥¼ ë³´ì‹ì‹œì˜¤.안녕히,%4$s" #. TRANS: Subject line for SMS-by-email notification messages @@ -6339,7 +6451,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr "다ìŒì—ì„œ:" @@ -6395,25 +6507,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "공개 streamì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6470,54 +6582,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "아니오" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "ìƒì„±" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "답장하기" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." @@ -6788,9 +6900,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "파ì¼ì„ ì˜¬ë¦¬ëŠ”ë° ì‹œìŠ¤í…œ 오류 ë°œìƒ" +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po index 09836ffa5..383d7a91a 100644 --- a/locale/mk/LC_MESSAGES/statusnet.po +++ b/locale/mk/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:26+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:14+0000\n" "Language-Team: Macedonian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: mk\n" "X-Message-Group: out-statusnet\n" @@ -100,7 +100,7 @@ msgstr "Ðема таква Ñтраница." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,22 +170,20 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Можете да Ñе обидете да го [подбуцнете кориÑникот %1$s](../%2$s) од профилот " -"на кориÑникот или да [објавите нешто што Ñакате тој да го прочита](%%%%" -"action.newnotice%%%%?status_textarea=%3$s)." +"Можете да го [подбуцнете кориÑникот %1$s](../%2$s) од неговиот профил или да " +"[му иÑпратите нешто](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" -"Рзошто не [региÑтрирате Ñметка](%%%%action.register%%%%), за да можете да " -"го подбуцнете кориÑникот %s или да објавите забелешка што Ñакате тој да ја " -"прочита." +"Рзошто не Ñе [региÑтрирате](%%%%action.register%%%%), и потоа да го " +"подбуцнете кориÑникот %s или да му иÑпратите забелешка." #. TRANS: H1 text #: actions/all.php:182 @@ -217,7 +215,7 @@ msgstr "Подновувања од %1$s и пријатели на %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -267,7 +265,7 @@ msgstr "Ðе може да Ñе зачува профил." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -366,8 +364,8 @@ msgid "Could not delete favorite." msgstr "Ðе можам да ја избришам омилената забелешка." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Ðе можам да го Ñледам кориÑникот: КориÑникот не е пронајден." +msgid "Could not follow user: profile not found." +msgstr "Ðе можам да го Ñледам кориÑникот: профилот не е пронајден." #: actions/apifriendshipscreate.php:118 #, php-format @@ -383,10 +381,11 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "Ðе можете да преÑтанете да Ñе Ñледите Ñамите ÑебеÑи." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" -"Мора да бидат наведени два кориÑнички идентификатора (ID) или две имиња." +"Мора да Ñе наведат две кориÑнички назнаки (ID) или screen_names (имиња за " +"приказ)." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -513,6 +512,10 @@ msgstr "%s групи" msgid "groups on %s" msgstr "групи на %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Подигањето не уÑпеа." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Ðема наведено oauth_token параметар." @@ -656,24 +659,28 @@ msgstr "СтатуÑот е избришан." msgid "No status with that ID found." msgstr "Ðема пронајдено ÑÑ‚Ð°Ñ‚ÑƒÑ Ñо тој ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Клиентот мора да укаже вредноÑÑ‚ за параметарот „ÑтатуÑ“" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Ова е предолго. МакÑималната дозволена должина изнеÑува %d знаци." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе е пронајдено." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "МакÑималната големина на забелешката е %d знаци, вклучувајќи ја URL-адреÑата " "на прилогот." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Ðеподдржан формат." @@ -727,6 +734,10 @@ msgstr "Забелешки означени Ñо %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Подновувањата Ñе означени Ñо %1$s на %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-методот е во изработка." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Ðема таков прилог." @@ -781,7 +792,7 @@ msgid "Preview" msgstr "Преглед" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Бриши" @@ -1063,7 +1074,7 @@ msgid "Do not delete this notice" msgstr "Ðе ја бриши оваа забелешка" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Бриши ја оваа забелешка" @@ -1341,7 +1352,8 @@ msgstr "Ðеважечки алијаÑ: „%s“" msgid "Could not update group." msgstr "Ðе можев да ја подновам групата." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Ðе можеше да Ñе Ñоздадат алијаÑи." @@ -2332,8 +2344,7 @@ msgstr "Запамети ме" #: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" -"Следниот пат најавете Ñе автоматÑки; не е за компјутери кои ги делите Ñо " -"други!" +"ОтÑега врши автоматÑка најава. Ðе треба да Ñе кориÑти за јавни Ñметачи!" #: actions/login.php:269 msgid "Lost or forgotten password?" @@ -2503,7 +2514,7 @@ msgstr "Подновувања кои Ñе Ñовпаѓаат Ñо пребарР#: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Овој кориÑник не дозволува подбуцнувања или Ñè уште нема потврдено или " "поÑтавено Ñвоја е-пошта." @@ -2581,8 +2592,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Ве молиме кориÑтете Ñамо %s URL-адреÑи врз проÑÑ‚ HTTP-код." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Ова не е поддржан формат на податотека." @@ -3499,7 +3510,7 @@ msgstr "Ðе можете да повторувате ÑопÑтвена забРmsgid "You already repeated that notice." msgstr "Веќе ја имате повторено таа забелешка." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Повторено" @@ -3537,10 +3548,10 @@ msgstr "Канал Ñо одговори за %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Ова е иÑторијата на која Ñе прикажани одговорите на %1$s, но %2$s Ñè уште " -"нема добиено порака од некој што Ñака да ја прочита." +"нема добиено забелешка за нив." #: actions/replies.php:204 #, php-format @@ -3554,11 +3565,11 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Можете да го [подбуцнете кориÑникот 1$s](../%2$s) или да [објавите нешто што " -"Ñакате тој да го прочита](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Можете да го [подбуцнете кориÑникот 1$s](../%2$s) или да [му иÑпратите нешто]" +"(%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format @@ -3646,7 +3657,7 @@ msgstr "Организација" msgid "Description" msgstr "ОпиÑ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтики" @@ -3738,21 +3749,21 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" -"%s Ñè уште нема додадено забелешки како омилени. Објавете нешто интереÑно, " -"што кориÑникот би го обележал како омилено :)" +"%s Ñè уште нема додадено омилени забелешки. Објавете нешто интереÑно, што " +"кориÑникот би го обележал како омилено :)" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s Ñè уште нема додадено омилени забелешки. Зошто не [региÑтрирате Ñметка](%%" -"%%action.register%%%%) и потоа објавите нешто интереÑно што кориÑникот би го " +"%s Ñè уште нема додадено омилени забелешки. Зошто не Ñе [региÑтрирате](%%%%" +"action.register%%%%) и потоа објавите нешто интереÑно што кориÑникот би го " "додал како омилено :)" #: actions/showfavorites.php:243 @@ -3811,7 +3822,7 @@ msgstr "Канал Ñо забелешки за групата%s (Atom)" msgid "FOAF for %s group" msgstr "FOAF за групата %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Членови" @@ -3825,11 +3836,11 @@ msgstr "(Ðема)" msgid "All members" msgstr "Сите членови" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Создадено" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3845,7 +3856,7 @@ msgstr "" "Ñе](%%%%action.register%%%%) за да Ñтанете дел од оваа група и многу повеќе! " "([Прочитајте повеќе](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3858,7 +3869,7 @@ msgstr "" "Ñлободната програмÑка алатка [StatusNet](http://status.net/). Ðејзините " "членови Ñи разменуваат кратки пораки за нивниот живот и интереÑи. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтратори" @@ -3935,11 +3946,11 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"Можете да го подбуцнете кориÑникот %1$s или [да објавите нешто што Ñакате да " -"го прочита](%%%%action.newnotice%%%%?status_textarea=%2$s)." +"Можете да го подбуцнете кориÑникот %1$s или [му иÑпратите нешто](%%%%action." +"newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -4329,7 +4340,8 @@ msgstr "Зачувај поÑтавки за Ñнимки" msgid "You are not subscribed to that profile." msgstr "Ðе Ñте претплатени на тој профил." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Ðе можев да ја зачувам претплатата." @@ -4507,10 +4519,6 @@ msgstr "Со овој образец додавајте ознаки во Ваш msgid "No such tag." msgstr "Ðема таква ознака." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-методот е во изработка." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Го немате блокирано тој кориÑник." @@ -4823,81 +4831,128 @@ msgstr "Верзија" msgid "Author(s)" msgstr "Ðвтор(и)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Ðе можам да ја обработам URL-адреÑата „%s“" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Робин миÑли дека нешто е невозможно." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Ðиедна податотека не Ñмее да биде поголема од %d бајти, а подаотеката што ја " +"Податотеките не Ñмеат да бидат поголеми од %d бајти, а податотеката што ја " "иÑпративте Ñодржи %d бајти. Подигнете помала верзија." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Волку голема податотека ќе ја надмине Вашата кориÑничка квота од %d бајти." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "ВОлку голема податотека ќе ја надмине Вашата меÑечна квота од %d бајти" -#: classes/Group_member.php:41 +#. 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 "Погрешно податотечно име." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Зачленувањето во групата не уÑпеа." -#: classes/Group_member.php:53 +#. 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 "Ðе е дел од групата." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Ðапуштањето на групата не уÑпеа." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Ðе можев да ја подновам локалната група." -#: classes/Login_token.php:76 +#. 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 "Ðе можам да Ñоздадам најавен жетон за" -#: classes/Message.php:45 +#. 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 "Ðикаде не е пронајдено име на базата или DSN." + +#. 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 "Забрането Ви е иÑпраќање на директни пораки." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Ðе можев да ја иÑпратам пораката." -#: classes/Message.php:71 +#. 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 "Ðе можев да ја подновам пораката Ñо нов 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Ðема таков профил (%1$d) за забелешката (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Грешка во базата на податоци при вметнувањето на хеш-ознаката: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Проблем Ñо зачувувањето на белешката. Премногу долго." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Проблем Ñо зачувувањето на белешката. Ðепознат кориÑник." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Премногу забелњшки за прекратко време; здивнете малку и продолжете за " "неколку минути." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4905,72 +4960,122 @@ msgstr "" "Премногу дуплирани пораки во прекратко време; здивнете малку и продолжете за " "неколку минути." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Забрането Ви е да објавувате забелешки на ова мрежно меÑто." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Проблем во зачувувањето на белешката." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "Ðа saveKnownGroups му е уакажан грешен тип" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"Ðе можам да му ја одземам улогата „%1$s“ на кориÑникот #%2$s. Таква улога не " +"поÑтои." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Ðе можам да му ја одземам улогата „%1$s“ на кориÑникот #%2$d. Има грешка во " +"базата на податоци." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "ÐедоÑтаÑува профил." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Ðе можам да ја зачувам ознаката." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Блокирани Ñте од претплаќање." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Веќе претплатено!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "КориÑникот Ве има блокирано." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Ðе Ñте претплатени!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "Ðе можам да ја избришам Ñамопретплатата." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Ðе можете да го избришете OMB-жетонот за претплата." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." +msgstr "Ðе можам да го избришам OMB-жетонот за претплата." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Претплата не може да Ñе избрише." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Ðе можам да ја избришам претплатата." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Добредојдовте на %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Ðе можев да ја Ñоздадам групата." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Ðе можев да поÑтавам URI на групата." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Ðе можев да назначам членÑтво во групата." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Ðе можев да ги зачувам информациите за локалните групи." @@ -6442,7 +6547,7 @@ msgstr "" "впуштите во разговор Ñо други кориÑници. Луѓето можат да ви иÑпраќаат пораки " "што ќе можете да ги видите Ñамо Вие." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "од" @@ -6503,24 +6608,24 @@ msgstr "Податотеката не може да Ñе запише на Ð´Ð¸Ñ msgid "File upload stopped by extension." msgstr "Подигањето на податотеката е запрено од проширувањето." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Податотеката ја надминува квотата на кориÑникот." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Податотеката не може да Ñе премеÑти во целниот директориум." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Ðе можев да го утврдам mime-типот на податотеката." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Обидете Ñе Ñо друг формат на %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s не е поддржан тип на податотека на овој опÑлужувач." @@ -6576,51 +6681,51 @@ msgstr "" "Обидете Ñе подоцна." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "С" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "Ј" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "И" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "З" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "во" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "во контекÑÑ‚" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Повторено од" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Одговори на забелешкава" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Одговор" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Забелешката е повторена" @@ -6879,8 +6984,8 @@ msgstr "" "ОпÑлужувачот не може да Ñе Ñправи Ñо подигања на изгледи без ZIP-поддршка." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Подигањето на мотивот недоÑтаÑува или не уÑпеа." +msgid "The theme file is missing or the upload failed." +msgstr "Податотеката за изгледот недоÑтаÑува или подигањето не уÑпеало." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po index 112ca76c8..6616a6a6b 100644 --- a/locale/nb/LC_MESSAGES/statusnet.po +++ b/locale/nb/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:30+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:16+0000\n" "Language-Team: Norwegian (bokmÃ¥l)‬\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: no\n" "X-Message-Group: out-statusnet\n" @@ -98,7 +98,7 @@ msgstr "Ingen slik side." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -165,20 +165,20 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Du kan prøve Ã¥ [knuffe %1$s](../%2$s) fra dennes profil eller [poste noe for " "Ã¥ fÃ¥ hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?" "status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Hvorfor ikke [opprette en konto](%%%%action.register%%%%) og sÃ¥ knuff %s " "eller post en notis for Ã¥ fÃ¥ hans eller hennes oppmerksomhet." @@ -213,7 +213,7 @@ msgstr "Oppdateringer fra %1$s og venner pÃ¥ %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -264,7 +264,7 @@ msgstr "Klarte ikke Ã¥ lagre profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -363,8 +363,8 @@ msgid "Could not delete favorite." msgstr "Kunne ikke slette favoritt." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Kunne ikke følge brukeren: Fant ikke brukeren." +msgid "Could not follow user: profile not found." +msgstr "Kunne ikke følge brukeren: fant ikke profilen." #: actions/apifriendshipscreate.php:118 #, php-format @@ -379,9 +379,9 @@ msgstr "Kunne ikke slutte Ã¥ følge brukeren: Fant ikke brukeren." msgid "You cannot unfollow yourself." msgstr "Du kan ikke slutte Ã¥ følge deg selv." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "To bruker ID-er eller kallenavn mÃ¥ oppgis." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "To gyldige ID-er eller screen_names mÃ¥ oppgis." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -508,6 +508,11 @@ msgstr "%s grupper" msgid "groups on %s" msgstr "grupper pÃ¥ %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Last opp fil" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Ingen verdi for oauth_token er oppgitt." @@ -649,22 +654,26 @@ msgstr "Status slettet." msgid "No status with that ID found." msgstr "Ingen status med den ID-en funnet." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Det er for langt. Maks notisstørrelse er %d tegn." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ikke funnet." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "Maks notisstørrelse er %d tegn, inklusive vedleggs-URL." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formatet støttes ikke." @@ -718,6 +727,10 @@ msgstr "Notiser merket med %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Oppdateringer merket med %1$s pÃ¥ %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-metode under utvikling." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Ingen slike vedlegg." @@ -770,7 +783,7 @@ msgid "Preview" msgstr "ForhÃ¥ndsvis" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Slett" @@ -1051,7 +1064,7 @@ msgid "Do not delete this notice" msgstr "Ikke slett denne notisen" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Slett denne notisen" @@ -1121,13 +1134,12 @@ msgid "Theme for the site." msgstr "Tema for nettstedet." #: actions/designadminpanel.php:467 -#, fuzzy msgid "Custom theme" -msgstr "Nettstedstema" +msgstr "Egendefinert tema" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." -msgstr "" +msgstr "Du kan laste opp et egendefinert StatusNet-tema som et .ZIP-arkiv." #: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" @@ -1186,11 +1198,11 @@ msgstr "Lenker" #: actions/designadminpanel.php:651 msgid "Advanced" -msgstr "" +msgstr "Avansert" #: actions/designadminpanel.php:655 msgid "Custom CSS" -msgstr "" +msgstr "Egendefinert CSS" #: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" @@ -1329,7 +1341,8 @@ msgstr "Ugyldig alias: «%s»" msgid "Could not update group." msgstr "Kunne ikke oppdatere gruppe." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Kunne ikke opprette alias." @@ -2471,7 +2484,7 @@ msgstr "Oppdateringer som samsvarer søkestrengen «%1$s» pÃ¥ %2$s." #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Denne brukeren tillater ikke knuffing eller har ikke bekreftet eller angitt " "sin e-post ennÃ¥." @@ -2548,8 +2561,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Bare %s-nettadresser over vanlig HTTP." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Ikke et støttet dataformat." @@ -3457,7 +3470,7 @@ msgstr "Du kan ikke gjenta din egen notis." msgid "You already repeated that notice." msgstr "Du har allerede gjentatt den notisen." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Gjentatt" @@ -3492,10 +3505,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Svarstrøm for %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Dette er tidslinjen som viser svar til %1$s men %2$s har ikke mottat en " "notis for hans oppmerksomhet ennÃ¥." @@ -3510,10 +3523,10 @@ msgstr "" "eller [bli med i grupper](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Du kan prøve Ã¥ [knuffe %1$s](../%2$s) eller [post noe for Ã¥ fÃ¥ hans eller " "hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3604,7 +3617,7 @@ msgstr "Organisasjon" msgid "Description" msgstr "Beskrivelse" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistikk" @@ -3694,22 +3707,22 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" -"%s har ikke lagt til noen notiser til sine favoritter ennÃ¥. Post noe " -"interessant som de vil legge til sine favoritter :)" +"%s har ikke lagt til noen favorittnotiser ennÃ¥. Post noe interessant som de " +"vil legge til sine favoritter :)" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s har ikke lagt noen notiser til sine favoritter ennÃ¥. Hvorfor ikke " -"[registrere en konto](%%%%action.register%%%%) og post noe interessant som " -"de vil legge til sine favoritter :)" +"%s har ikke lagt til noen favorittnotiser ennÃ¥. Hvorfor ikke [registrere en " +"konto](%%%%action.register%%%%) og post noe interessant som de vil legge til " +"sine favoritter :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3767,7 +3780,7 @@ msgstr "Notismating for %s gruppe (Atom)" msgid "FOAF for %s group" msgstr "FOAF for gruppen %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Medlemmer" @@ -3781,11 +3794,11 @@ msgstr "(Ingen)" msgid "All members" msgstr "Alle medlemmer" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Opprettet" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3801,7 +3814,7 @@ msgstr "" "%%%) for Ã¥ bli medlem av denne gruppen og mange fler. ([Les mer](%%%%doc.help" "%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3814,7 +3827,7 @@ msgstr "" "programvareverktøyet [StatusNet](http://status.net/). Dets medlemmer deler " "korte meldinger om deres liv og interesser. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratorer" @@ -3889,10 +3902,10 @@ msgstr "" "ikke begynne nÃ¥? :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Du kan prøve Ã¥ knuffe %1$s eller [poste noe for Ã¥ fÃ¥ hans eller hennes " "oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -4042,9 +4055,8 @@ msgid "Edit site-wide message" msgstr "" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "Kunne ikke lagre dine innstillinger for utseende." +msgstr "Kunne ikke lagre nettstedsnotis." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." @@ -4118,7 +4130,7 @@ msgstr "Telefonnummer for SMS" #. 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 "Telefonnummer, ingen tegnsetting eller mellomrom, med retningsnummer" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 @@ -4279,7 +4291,8 @@ msgstr "Innstillinger for IM" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" @@ -4404,9 +4417,9 @@ msgid "No ID argument." msgstr "" #: actions/tagother.php:65 -#, fuzzy, php-format +#, php-format msgid "Tag %s" -msgstr "Tagger" +msgstr "Merk %s" #: actions/tagother.php:77 lib/userprofile.php:76 msgid "User profile" @@ -4418,9 +4431,8 @@ msgid "Photo" msgstr "Foto" #: actions/tagother.php:141 -#, fuzzy msgid "Tag user" -msgstr "Tagger" +msgstr "Merk bruker" #: actions/tagother.php:151 msgid "" @@ -4445,10 +4457,6 @@ msgstr "" msgid "No such tag." msgstr "" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-metode under utvikling." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Du har ikke blokkert den brukeren." @@ -4738,153 +4746,249 @@ msgstr "Versjon" msgid "Author(s)" msgstr "Forfatter(e)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. 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 "Ugyldig filnavn." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Klarte ikke Ã¥ lagre profil." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Klarte ikke Ã¥ oppdatere bruker." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Klarte ikke Ã¥ lagre profil." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Kunne ikke oppdatere gruppe." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Kunne ikke sette inn melding." -#: classes/Message.php:71 +#. 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 "Kunne ikke oppdatere melding med ny nettadresse." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Databasefeil ved innsetting av bruker i programmet OAuth." -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problem ved lagring av notis. For lang." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problem ved lagring av notis. Ukjent bruker." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problem ved lagring av notis." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problem ved lagring av gruppeinnboks." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Brukeren har ingen profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Kunne ikke lagre nettstedsnotis." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Bruker har blokkert deg." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Alle abonnementer" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "" +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." +msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Velkommen til %1$s, @%2$s." -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Kunne ikke opprette gruppe." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Kunne ikke stille inn gruppe-URI." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Kunne ikke stille inn gruppemedlemskap." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Kunne ikke lagre lokal gruppeinformasjon." @@ -6304,7 +6408,7 @@ msgstr "" "engasjere andre brukere i en samtale. Personer kan sende deg meldinger som " "bare du kan se." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "fra" @@ -6359,24 +6463,24 @@ msgstr "" msgid "File upload stopped by extension." msgstr "Filopplasting stoppet grunnet filendelse." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Fil overgÃ¥r brukers kvote." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Filen kunne ikke flyttes til mÃ¥lmappen." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Kunne ikke avgjøre filens MIME-type." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Prøv Ã¥ bruke et annet %s-format." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "filtypen %s støttes ikke pÃ¥ denne tjeneren." @@ -6432,51 +6536,51 @@ msgstr "" "igjen senere" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "Ø" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "V" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "pÃ¥" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetert av" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Svar pÃ¥ denne notisen" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Svar" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Notis repetert" @@ -6737,9 +6841,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Systemfeil ved opplasting av fil." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po index a69a7c7ea..c98e1d84a 100644 --- a/locale/nl/LC_MESSAGES/statusnet.po +++ b/locale/nl/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Dutch # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Itavero # Author@translatewiki.net: McDutchie # Author@translatewiki.net: Siebrand @@ -10,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:39+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:19+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nl\n" "X-Message-Group: out-statusnet\n" @@ -99,7 +100,7 @@ msgstr "Deze pagina bestaat niet." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,10 +171,10 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" -"U kunt proberen [%1$s te porren](../%2$s) op de eigen profielpagina of [een " +"U kunt proberen [%1$s te porren](../%2$s) op de eigen profielpagina of [een " "bericht voor die gebruiker plaatsen](%%%%action.newnotice%%%%?" "status_textarea=%3$s)." @@ -181,7 +182,7 @@ msgstr "" #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "U kunt een [gebruiker aanmaken](%%%%action.register%%%%) en %s dan porren of " "een bericht sturen." @@ -216,7 +217,7 @@ msgstr "Updates van %1$s en vrienden op %2$s." #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +267,7 @@ msgstr "Het was niet mogelijk het profiel op te slaan." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -367,7 +368,7 @@ msgstr "" "Het was niet mogelijk deze mededeling van uw favorietenlijst te verwijderen." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +msgid "Could not follow user: profile not found." msgstr "U kunt deze gebruiker niet volgen, omdat deze niet bestaat." #: actions/apifriendshipscreate.php:118 @@ -385,9 +386,10 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "U kunt het abonnement op uzelf niet opzeggen." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Er moeten twee gebruikersnamen of ID's opgegeven worden." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "" +"Er moeten twee gebruikersnamen (screen_names) of ID's opgegeven worden." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -517,6 +519,10 @@ msgstr "%s groepen" msgid "groups on %s" msgstr "groepen op %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Uploaden is mislukt." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Er is geen oauth_token parameter opgegeven." @@ -666,24 +672,28 @@ msgstr "De status is verwijderd." msgid "No status with that ID found." msgstr "Er is geen status gevonden met dit ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "De client moet een parameter \"status\" met een waarde opgeven." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "De mededeling is te lang. Gebruik maximaal %d tekens." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Niet aangetroffen." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "De maximale mededelingenlengte is %d tekens, inclusief de URL voor de " "bijlage." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Niet-ondersteund bestandsformaat." @@ -737,6 +747,10 @@ msgstr "Mededelingen met het label %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Updates met het label %1$s op %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "De API-functie is in bewerking." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Deze bijlage bestaat niet." @@ -790,7 +804,7 @@ msgid "Preview" msgstr "Voorvertoning" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Verwijderen" @@ -1072,7 +1086,7 @@ msgid "Do not delete this notice" msgstr "Deze mededeling niet verwijderen" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Deze mededeling verwijderen" @@ -1351,7 +1365,8 @@ msgstr "Ongeldige alias: \"%s\"" msgid "Could not update group." msgstr "Het was niet mogelijk de groep bij te werken." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Het was niet mogelijk de aliassen aan te maken." @@ -2519,10 +2534,9 @@ msgstr "Updates die overeenkomen met de zoekterm \"%1$s\" op %2$s." #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"Deze gebruiker is niet te porren of heeft zijn e-mailadres nog niet " -"bevestigd." +"Deze gebruiker is niet te porren of heeft nog geen bevestigd e-mailadres." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2603,8 +2617,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Alleen URL's voor %s via normale HTTP alstublieft." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Geen ondersteund gegevensformaat." @@ -3523,7 +3537,7 @@ msgstr "U kunt uw eigen mededeling niet herhalen." msgid "You already repeated that notice." msgstr "U hent die mededeling al herhaald." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Herhaald" @@ -3561,9 +3575,9 @@ msgstr "Antwoordenfeed voor %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" -"Dit is de tijdlijn met de antwoorden aan %1$s, maar %2$s heeft nog geen " +"Dit is de tijdlijn met antwoorden aan %1$s, maar %2$s heeft nog geen " "antwoorden ontvangen." #: actions/replies.php:204 @@ -3578,8 +3592,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "U kunt proberen [%1$s te porren](../%2$s) of [een bericht voor die gebruiker " "plaatsen](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3670,7 +3684,7 @@ msgstr "Organisatie" msgid "Description" msgstr "Beschrijving" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistieken" @@ -3761,22 +3775,22 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" -"%s heeff nog geen mededelingen op de eigen favorietenlijst geplaatst. Plaats " +"%s heeft nog geen mededelingen op de eigen favorietenlijst geplaatst. Plaats " "een interessant bericht, en dan komt u misschien wel op de " "favorietenlijst. :)" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s heeft nog geen favorietenlijst. U kunt een [gebruiker registeren](%%%%" -"action.register%%%%) en dan interessante mededelingen plaatsten die " +"%s heeft nog geen favoriete mededelingen. U kunt een [gebruiker registeren](%" +"%%%action.register%%%%) en dan interessante mededelingen plaatsten die " "misschien aan favorietenlijsten zijn toe te voegen. :)" #: actions/showfavorites.php:243 @@ -3835,7 +3849,7 @@ msgstr "Mededelingenfeed voor groep %s (Atom)" msgid "FOAF for %s group" msgstr "Vriend van een vriend voor de groep %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Leden" @@ -3849,11 +3863,11 @@ msgstr "(geen)" msgid "All members" msgstr "Alle leden" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Aangemaakt" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3869,7 +3883,7 @@ msgstr "" "lid te worden van deze groep en nog veel meer! [Meer lezen...](%%%%doc.help%%" "%%)" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3882,7 +3896,7 @@ msgstr "" "[StatusNet](http://status.net/). De leden wisselen korte mededelingen uit " "over hun ervaringen en interesses. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Beheerders" @@ -3960,11 +3974,11 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"U kunt proberen %1$s te porren of [een bericht voor die gebruiker plaatsen](%" -"%%%action.newnotice%%%%?status_textarea=%2$s)." +"U kunt proberen %1$s te porren of [een bericht aan die gebruiker sturen](%%%%" +"action.newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -4357,7 +4371,8 @@ msgstr "Snapshotinstellingen opslaan" msgid "You are not subscribed to that profile." msgstr "U bent niet geabonneerd op dat profiel." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Het was niet mogelijk het abonnement op te slaan." @@ -4539,10 +4554,6 @@ msgstr "" msgid "No such tag." msgstr "Onbekend label." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "De API-functie is in bewerking." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "U hebt deze gebruiker niet geblokkeerd." @@ -4802,7 +4813,7 @@ msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " "Inc. and contributors." msgstr "" -"Deze website wordt aangedreven door %1$2 versie %2$s. Auteursrechten " +"Deze website wordt aangedreven door %1$s versie %2$s. Auteursrechten " "voorbehouden 2008-2010 Statusnet, Inc. en medewerkers." #: actions/version.php:163 @@ -4855,86 +4866,133 @@ msgstr "Versie" msgid "Author(s)" msgstr "Auteur(s)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Het was niet mogelijk de URL \"%s\" te verwerken." + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin denkt dat iets onmogelijk is." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Bestanden mogen niet groter zijn dan %d bytes, en uw bestand was %d bytes. " -"Probeer een kleinere versie te uploaden." +"Bestanden mogen niet groter zijn dan %1$d bytes, en uw bestand was %2$d " +"bytes. Probeer een kleinere versie te uploaden." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Een bestand van deze grootte overschijdt uw gebruikersquota van %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "Een bestand van deze grootte overschijdt uw maandelijkse quota van %d bytes." -#: classes/Group_member.php:41 +#. 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 "Ongeldig bestandsnaam." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Groepslidmaatschap toevoegen is mislukt." -#: classes/Group_member.php:53 +#. 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 "Geen lid van groep." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Groepslidmaatschap opzeggen is mislukt." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Het was niet mogelijk de lokale groep bij te werken." -#: classes/Login_token.php:76 +#. 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 "Het was niet mogelijk een aanmeldtoken aan te maken voor %s" -#: classes/Message.php:45 +#. 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 "Geen databasenaam of DSN gevonden." + +#. 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 "U mag geen directe berichten verzenden." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Het was niet mogelijk het bericht in te voegen." -#: classes/Message.php:71 +#. 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 "Het was niet mogelijk het bericht bij te werken met de nieuwe 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Er is geen profiel (%1$d) te vinden bij de mededeling (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Er is een databasefout opgetreden bij de invoer van de hashtag: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" "Er is een probleem opgetreden bij het opslaan van de mededeling. Deze is te " "lang." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "" "Er was een probleem bij het opslaan van de mededeling. De gebruiker is " "onbekend." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "U hebt te snel te veel mededelingen verstuurd. Kom even op adem en probeer " "het over enige tijd weer." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4942,16 +5000,25 @@ msgstr "" "Te veel duplicaatberichten te snel achter elkaar. Neem een adempauze en " "plaats over een aantal minuten pas weer een bericht." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" "U bent geblokkeerd en mag geen mededelingen meer achterlaten op deze site." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Er is een probleem opgetreden bij het opslaan van de mededeling." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "Het gegevenstype dat is opgegeven aan saveKnownGroups is onjuist" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "" "Er is een probleem opgetreden bij het opslaan van het Postvak IN van de " @@ -4959,58 +5026,99 @@ 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"De rol \"%1$s\" voor gebruiker #%2$d kan niet ingetrokken worden. Deze " +"gebruiker bestaat niet." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"De rol \"%1$s\" voor gebruiker #%2$d kan niet ingetrokken worden. " +"Databasefout." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Ontbrekend profiel." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Het was niet mogelijk om het label op te slaan." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "U mag zich niet abonneren." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "U bent al gebonneerd!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Deze gebruiker negeert u." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Niet geabonneerd!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." -msgstr "Het was niet mogelijk het abonnement op uzelf te verwijderen." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Kon abonnement op eigen gebruiker niet verwijderen." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." msgstr "" "Het was niet mogelijk om het OMB-token voor het abonnement te verwijderen." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Kon abonnement niet verwijderen." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Welkom bij %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Het was niet mogelijk de groep aan te maken." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Het was niet mogelijk de groeps-URI in te stellen." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Het was niet mogelijk het groepslidmaatschap in te stellen." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Het was niet mogelijk de lokale groepsinformatie op te slaan." @@ -6491,7 +6599,7 @@ msgstr "" "U hebt geen privéberichten. U kunt privéberichten verzenden aan andere " "gebruikers. Mensen kunnen u privéberichten sturen die alleen u kunt lezen." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "van" @@ -6552,24 +6660,24 @@ msgstr "Het was niet mogelijk naar schijf te schrijven." msgid "File upload stopped by extension." msgstr "Het uploaden van het bestand is tegengehouden door een uitbreiding." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Met dit bestand wordt het quotum van de gebruiker overschreden." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Het bestand kon niet verplaatst worden naar de doelmap." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Het was niet mogelijk het MIME-type van het bestand te bepalen." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Probeer een ander %s-formaat te gebruiken." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "Het bestandstype %s wordt door deze server niet ondersteund." @@ -6625,51 +6733,51 @@ msgstr "" "nog eens" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "Z" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "O" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "W" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "op" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "in context" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Herhaald door" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Op deze mededeling antwoorden" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Antwoorden" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Mededeling herhaald" @@ -6931,8 +7039,8 @@ msgstr "" "ondersteuning." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Het uploaden van het bestand met de vormgeving is mislukt." +msgid "The theme file is missing or the upload failed." +msgstr "Het vormgevingsbestand ontbreekt of is de upload mislukt." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 @@ -6954,7 +7062,7 @@ msgstr "" #: lib/themeuploader.php:178 msgid "Invalid theme archive: missing file css/display.css" msgstr "" -"Ongeldig bestand met vormgeving: het bestand display.css is niet aanwezig" +"Ongeldig bestand met vormgeving: het bestand css/display.css is niet aanwezig" #: lib/themeuploader.php:205 msgid "" diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po index dc166d820..9d1c47205 100644 --- a/locale/nn/LC_MESSAGES/statusnet.po +++ b/locale/nn/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:35+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:17+0000\n" "Language-Team: Norwegian Nynorsk\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nn\n" "X-Message-Group: out-statusnet\n" @@ -106,7 +106,7 @@ msgstr "Dette emneord finst ikkje." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -173,15 +173,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -215,7 +215,7 @@ msgstr "Oppdateringar frÃ¥ %1$s og vener pÃ¥ %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +266,7 @@ msgstr "Kan ikkje lagra profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -367,7 +367,8 @@ msgid "Could not delete favorite." msgstr "Kunne ikkje slette favoritt." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Fann ikkje brukaren, so han kan ikkje fylgjast" #: actions/apifriendshipscreate.php:118 @@ -385,8 +386,9 @@ msgstr "Fann ikkje brukaren, so han kan ikkje fylgjast" msgid "You cannot unfollow yourself." msgstr "Kan ikkje oppdatera brukar." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "To brukar IDer eller kallenamn er naudsynte." #: actions/apifriendshipsshow.php:134 @@ -519,6 +521,11 @@ msgstr "%s grupper" msgid "groups on %s" msgstr "Gruppe handlingar" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Last opp fil" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -665,22 +672,26 @@ msgstr "Lasta opp brukarbilete." msgid "No status with that ID found." msgstr "Fann ingen status med den ID-en." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Det er for langt! Ein notis kan berre innehalde 140 teikn." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Finst ikkje." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "Støttar ikkje bileteformatet." @@ -735,6 +746,10 @@ msgstr "Notisar merka med %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Oppdateringar frÃ¥ %1$s pÃ¥ %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-metoden er ikkje ferdig enno." + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -789,7 +804,7 @@ msgid "Preview" msgstr "Forhandsvis" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Slett" @@ -1082,7 +1097,7 @@ msgid "Do not delete this notice" msgstr "Kan ikkje sletta notisen." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Slett denne notisen" @@ -1382,7 +1397,8 @@ msgstr "Ugyldig merkelapp: %s" msgid "Could not update group." msgstr "Kann ikkje oppdatera gruppa." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "Kunne ikkje lagre favoritt." @@ -2560,8 +2576,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Alle oppdateringer frÃ¥ søket «%s»" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Denne brukaren tillét ikkje Ã¥ bli dytta, eller har ikkje stadfasta eller sat " "e-postadressa si enno." @@ -2642,8 +2659,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Ikkje eit støtta dataformat." @@ -3566,7 +3583,7 @@ msgstr "Du kan ikkje registrera deg om du ikkje godtek vilkÃ¥ra i lisensen." msgid "You already repeated that notice." msgstr "Du har allereie blokkert denne brukaren." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "Lag" @@ -3606,7 +3623,7 @@ msgstr "Notisstraum for %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3619,8 +3636,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3719,7 +3736,7 @@ msgstr "Paginering" msgid "Description" msgstr "Beskriving" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistikk" @@ -3805,16 +3822,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3873,7 +3890,7 @@ msgstr "Notisstraum for %s gruppa" msgid "FOAF for %s group" msgstr "Utboks for %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Medlemmar" @@ -3887,12 +3904,12 @@ msgstr "(Ingen)" msgid "All members" msgstr "Alle medlemmar" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "Lag" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3902,7 +3919,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, fuzzy, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3913,7 +3930,7 @@ msgstr "" "**%s** er ei brukargruppe pÃ¥ %%%%site.name%%%%, ei [mikroblogging](http://en." "wikipedia.org/wiki/Micro-blogging)-teneste" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 #, fuzzy msgid "Admins" msgstr "Administrator" @@ -3990,8 +4007,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4390,7 +4407,8 @@ msgstr "Avatar-innstillingar" msgid "You are not subscribed to that profile." msgstr "Du tingar ikkje oppdateringar til den profilen." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Kunne ikkje lagra abonnement." @@ -4563,10 +4581,6 @@ msgstr "" msgid "No such tag." msgstr "Dette emneord finst ikkje." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-metoden er ikkje ferdig enno." - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4878,83 +4892,130 @@ msgstr "Personleg" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. 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 "Ugyldig filnamn." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Gruppe profil" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Kann ikkje oppdatera gruppa." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Gruppe profil" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Kann ikkje oppdatera gruppa." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Kunne ikkje lagre favoritt." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "Ein feil oppstod ved sending av direkte melding." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Kunne ikkje lagre melding." -#: classes/Message.php:71 +#. 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 "Kunne ikkje oppdatere melding med ny 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Eit problem oppstod ved lagring av notis." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Feil ved lagring av notis. Ukjend brukar." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 #, fuzzy msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " @@ -4962,77 +5023,126 @@ msgid "" msgstr "" "For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Du kan ikkje lengre legge inn notisar pÃ¥ denne sida." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Eit problem oppstod ved lagring av notis." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Eit problem oppstod ved lagring av notis." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%1$s (%2$s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Brukaren har inga profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Klarte ikkje Ã¥ lagra Twitter-innstillingane dine!" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "Brukaren tillet deg ikkje Ã¥ tinga meldingane sine." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Brukar har blokkert deg." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Ikkje tinga." -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Kan ikkje sletta tinging." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Kan ikkje sletta tinging." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Kan ikkje sletta tinging." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, fuzzy, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Melding til %1$s pÃ¥ %2$s" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Kunne ikkje laga gruppa." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Kunne ikkje bli med i gruppa." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Kunne ikkje bli med i gruppa." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Kunne ikkje lagra abonnement." @@ -6417,7 +6527,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr " frÃ¥ " @@ -6473,25 +6583,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Kan ikkje hente offentleg straum." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6548,54 +6658,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "Nei" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "Ingen innhald." -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "Lag" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Svar pÃ¥ denne notisen" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Svar" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "Melding lagra" @@ -6866,9 +6976,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Systemfeil ved opplasting av fil." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po index 95146156b..fe0581a69 100644 --- a/locale/pl/LC_MESSAGES/statusnet.po +++ b/locale/pl/LC_MESSAGES/statusnet.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:44+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:20+0000\n" "Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n" "Language-Team: Polish <pl@li.org>\n" "MIME-Version: 1.0\n" @@ -20,7 +20,7 @@ msgstr "" "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 (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pl\n" "X-Message-Group: out-statusnet\n" @@ -103,7 +103,7 @@ msgstr "Nie ma takiej strony." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -174,21 +174,20 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Można spróbować [szturchnąć użytkownika %1$s](../%2$s) z jego profilu lub " -"[wysÅ‚ać coÅ› wymagajÄ…cego jego uwagi](%%%%action.newnotice%%%%?" -"status_textarea=%3$s)." +"[wysÅ‚ać mu coÅ›](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Dlaczego nie [zarejestrujesz konta](%%%%action.register%%%%) i wtedy " -"szturchniesz użytkownika %s lub wyÅ›lesz wpis wymagajÄ…cego jego uwagi." +"szturchniesz użytkownika %s lub wyÅ›lesz mu wpis." #. TRANS: H1 text #: actions/all.php:182 @@ -220,7 +219,7 @@ msgstr "Aktualizacje z %1$s i przyjaciół na %2$s." #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -269,7 +268,7 @@ msgstr "Nie można zapisać profilu." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -369,8 +368,8 @@ msgid "Could not delete favorite." msgstr "Nie można usunąć ulubionego wpisu." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Nie można obserwować użytkownika: nie odnaleziono użytkownika." +msgid "Could not follow user: profile not found." +msgstr "Nie można obserwować użytkownika: nie odnaleziono profilu." #: actions/apifriendshipscreate.php:118 #, php-format @@ -386,9 +385,10 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "Nie można zrezygnować z obserwacji samego siebie." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Należy dostarczyć dwa identyfikatory lub nazwy użytkowników." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "" +"Należy dostarczyć dwa prawidÅ‚owe identyfikatory lub nazwy użytkowników." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -515,6 +515,10 @@ msgstr "Grupy %s" msgid "groups on %s" msgstr "grupy na %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "WysÅ‚anie nie powiodÅ‚o siÄ™." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Nie podano parametru oauth_token." @@ -657,22 +661,26 @@ msgstr "UsuniÄ™to stan." msgid "No status with that ID found." msgstr "Nie odnaleziono stanów z tym identyfikatorem." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Klient musi dostarczać parametr \"stan\" z wartoÅ›ciÄ…." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Wpis jest za dÅ‚ugi. Maksymalna dÅ‚ugość wynosi %d znaków." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nie odnaleziono." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "Maksymalny rozmiar wpisu wynosi %d znaków, w tym adres URL zaÅ‚Ä…cznika." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "NieobsÅ‚ugiwany format." @@ -726,6 +734,10 @@ msgstr "Wpisy ze znacznikiem %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Aktualizacje ze znacznikiem %1$s na %2$s." +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Metoda API jest w trakcie tworzenia." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Nie ma takiego zaÅ‚Ä…cznika." @@ -778,7 +790,7 @@ msgid "Preview" msgstr "PodglÄ…d" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "UsuÅ„" @@ -1058,7 +1070,7 @@ msgid "Do not delete this notice" msgstr "Nie usuwaj tego wpisu" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "UsuÅ„ ten wpis" @@ -1334,7 +1346,8 @@ msgstr "NieprawidÅ‚owy alias: \"%s\"" msgid "Could not update group." msgstr "Nie można zaktualizować grupy." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Nie można utworzyć aliasów." @@ -2485,7 +2498,7 @@ msgstr "Aktualizacje pasujÄ…ce do wyszukiwanego terminu \"%1$s\" na %2$s." #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Ten użytkownik nie pozwala na szturchniÄ™cia albo nie potwierdziÅ‚ lub nie " "ustawiÅ‚ jeszcze swojego adresu e-mail." @@ -2562,8 +2575,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Dozwolone sÄ… tylko adresy URL %s przez zwykÅ‚y protokół HTTP." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "To nie jest obsÅ‚ugiwany format danych." @@ -3472,7 +3485,7 @@ msgstr "Nie można powtórzyć wÅ‚asnego wpisu." msgid "You already repeated that notice." msgstr "Już powtórzono ten wpis." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Powtórzono" @@ -3510,10 +3523,10 @@ msgstr "KanaÅ‚ odpowiedzi dla użytkownika %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "To jest oÅ› czasu wyÅ›wietlajÄ…ca odpowiedzi na wpisy użytkownika %1$s, ale %2" -"$s nie otrzymaÅ‚ jeszcze wpisów wymagajÄ…cych jego uwagi." +"$s nie otrzymaÅ‚ jeszcze wpisów." #: actions/replies.php:204 #, php-format @@ -3527,11 +3540,11 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Można spróbować [szturchnąć użytkownika %1$s](../%2$s) lub [wysÅ‚ać coÅ› " -"wymagajÄ…cego jego uwagi](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Można spróbować [szturchnąć użytkownika %1$s](../%2$s) lub [wysÅ‚ać mu coÅ›](%%" +"%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format @@ -3619,7 +3632,7 @@ msgstr "Organizacja" msgid "Description" msgstr "Opis" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statystyki" @@ -3709,8 +3722,8 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "Użytkownik %s nie dodaÅ‚ jeszcze żadnych wpisów do ulubionych. WyÅ›lij coÅ› " "interesujÄ…cego, aby chcieli dodać to do swoich ulubionych. :)" @@ -3718,9 +3731,9 @@ msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "Użytkownik %s nie dodaÅ‚ jeszcze żadnych wpisów do ulubionych. Dlaczego nie " "[zarejestrujesz konta](%%%%action.register%%%%) i wyÅ›lesz coÅ› " @@ -3782,7 +3795,7 @@ msgstr "KanaÅ‚ wpisów dla grupy %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF dla grupy %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "CzÅ‚onkowie" @@ -3796,11 +3809,11 @@ msgstr "(Brak)" msgid "All members" msgstr "Wszyscy czÅ‚onkowie" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Utworzono" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3816,7 +3829,7 @@ msgstr "" "action.register%%%%), aby stać siÄ™ częściÄ… tej grupy i wiele wiÄ™cej. " "([Przeczytaj wiÄ™cej](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3829,7 +3842,7 @@ msgstr "" "narzÄ™dziu [StatusNet](http://status.net/). Jej czÅ‚onkowie dzielÄ… siÄ™ " "krótkimi wiadomoÅ›ciami o swoim życiu i zainteresowaniach. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratorzy" @@ -3907,11 +3920,11 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"Można spróbować szturchnąć użytkownika %1$s lub [wysÅ‚ać coÅ›, co wymaga jego " -"uwagi](%%%%action.newnotice%%%%?status_textarea=%2$s)." +"Można spróbować szturchnąć użytkownika %1$s lub [wysÅ‚ać mu coÅ›](%%%%action." +"newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -4297,7 +4310,8 @@ msgstr "Zapisz ustawienia migawki" msgid "You are not subscribed to that profile." msgstr "Nie jesteÅ› subskrybowany do tego profilu." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Nie można zapisać subskrypcji." @@ -4478,10 +4492,6 @@ msgstr "" msgid "No such tag." msgstr "Nie ma takiego znacznika." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Metoda API jest w trakcie tworzenia." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Ten użytkownik nie zostaÅ‚ zablokowany." @@ -4791,83 +4801,130 @@ msgstr "Wersja" msgid "Author(s)" msgstr "Autorzy" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Nie można przetworzyć adresu URL \"%s\"" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin sÄ…dzi, że coÅ› jest niemożliwe." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Å»aden plik nie może być wiÄ™kszy niż %d bajty, a wysÅ‚any plik miaÅ‚ %d bajty. " -"Spróbuj wysÅ‚ać mniejszÄ… wersjÄ™." +"Å»aden plik nie może być wiÄ™kszy niż %1$d bajty, a wysÅ‚any plik miaÅ‚ %2$d " +"bajty. ProszÄ™ spróbować wysÅ‚ać mniejszÄ… wersjÄ™." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Plik tej wielkoÅ›ci przekroczyÅ‚by przydziaÅ‚ użytkownika wynoszÄ…cy %d bajty." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" "Plik tej wielkoÅ›ci przekroczyÅ‚by miesiÄ™czny przydziaÅ‚ użytkownika wynoszÄ…cy %" "d bajty." -#: classes/Group_member.php:41 +#. 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 "NieprawidÅ‚owa nazwa pliku." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "DoÅ‚Ä…czenie do grupy nie powiodÅ‚o siÄ™." -#: classes/Group_member.php:53 +#. 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 "Nie jest częściÄ… grupy." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Opuszczenie grupy nie powiodÅ‚o siÄ™." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Nie można zaktualizować lokalnej grupy." -#: classes/Login_token.php:76 +#. 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 "Nie można utworzyć tokenów loginów dla %s" -#: classes/Message.php:45 +#. 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 "Nigdzie nie odnaleziono nazwy lub DSN bazy danych." + +#. 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 "Zablokowano wysyÅ‚anie bezpoÅ›rednich wiadomoÅ›ci." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Nie można wprowadzić wiadomoÅ›ci." -#: classes/Message.php:71 +#. 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 "Nie można zaktualizować wiadomoÅ›ci za pomocÄ… nowego adresu URL." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Brak profilu (%1$d) dla wpisu (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "BÅ‚Ä…d bazy danych podczas wprowadzania znacznika mieszania: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problem podczas zapisywania wpisu. Za dÅ‚ugi." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problem podczas zapisywania wpisu. Nieznany użytkownik." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Za dużo wpisów w za krótkim czasie, weź gÅ‚Ä™boki oddech i wyÅ›lij ponownie za " "kilka minut." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4875,71 +4932,118 @@ msgstr "" "Za dużo takich samych wiadomoÅ›ci w za krótkim czasie, weź gÅ‚Ä™boki oddech i " "wyÅ›lij ponownie za kilka minut." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Zabroniono ci wysyÅ‚ania wpisów na tej witrynie." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problem podczas zapisywania wpisu." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "Podano bÅ‚Ä™dne dane do saveKnownGroups" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problem podczas zapisywania skrzynki odbiorczej grupy." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "Nie można unieważnić roli \"\"%1$s\" użytkownika #%2$d; nie istnieje." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Nie można unieważnić roli \"%1$s\" użytkownika #%2$d; bÅ‚Ä…d bazy danych." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Brak profilu." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Nie można zapisać etykiety." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Zablokowano subskrybowanie." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Już subskrybowane." -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Użytkownik zablokowaÅ‚ ciÄ™." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Niesubskrybowane." -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "Nie można usunąć autosubskrypcji." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." msgstr "Nie można usunąć tokenu subskrypcji OMB." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Nie można usunąć subskrypcji." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Witaj w %1$s, @%2$s." -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Nie można utworzyć grupy." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Nie można ustawić adresu URI grupy." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Nie można ustawić czÅ‚onkostwa w grupie." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Nie można zapisać informacji o lokalnej grupie." @@ -6417,7 +6521,7 @@ msgstr "" "rozmowÄ™ z innymi użytkownikami. Inni mogÄ… wysyÅ‚ać ci wiadomoÅ›ci tylko dla " "twoich oczu." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "z" @@ -6473,24 +6577,24 @@ msgstr "Zapisanie pliku na dysku nie powiodÅ‚o siÄ™." msgid "File upload stopped by extension." msgstr "WysÅ‚anie pliku zostaÅ‚o zatrzymane przez rozszerzenie." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Plik przekracza przydziaÅ‚ użytkownika." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Nie można przenieść pliku do katalogu docelowego." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Nie można okreÅ›lić typu MIME pliku." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Spróbuj innego formatu %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s nie jest obsÅ‚ugiwanym typem pliku na tym serwerze." @@ -6546,51 +6650,51 @@ msgstr "" "ponownie później" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "Północ" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "PoÅ‚udnie" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "Wschód" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "Zachód" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "w" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "w rozmowie" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Powtórzone przez" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Odpowiedz na ten wpis" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Odpowiedz" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Powtórzono wpis" @@ -6850,8 +6954,8 @@ msgstr "" "Ten serwer nie może obsÅ‚ugiwać wysyÅ‚ania motywu bez obsÅ‚ugi archiwów zip." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Brak wysÅ‚ania motywu lub nie powiodÅ‚o siÄ™." +msgid "The theme file is missing or the upload failed." +msgstr "Brak pliku motywu lub wysÅ‚anie nie powiodÅ‚o siÄ™." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po index d2b2720bb..f7e479154 100644 --- a/locale/pt/LC_MESSAGES/statusnet.po +++ b/locale/pt/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:48+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:22+0000\n" "Language-Team: Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt\n" "X-Message-Group: out-statusnet\n" @@ -100,7 +100,7 @@ msgstr "Página não foi encontrada." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,20 +170,20 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Pode tentar [dar um toque em %1$s](../%2$s) a partir do perfil ou [publicar " -"qualquer coisa à sua atenção](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Pode tentar [dar um toque em %1$s](../%2$s) a partir do perfil ou [endereçar-" +"lhe uma nota](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" -"Podia [registar uma conta](%%action.register%%) e depois tocar %s ou " -"publicar uma nota à sua atenção." +"Podia [registar uma conta](%%%%action.register%%%%) e depois dar um toque em " +"%s ou endereçar-lhe uma nota." #. TRANS: H1 text #: actions/all.php:182 @@ -215,7 +215,7 @@ msgstr "Actualizações de %1$s e amigos no %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -264,7 +264,7 @@ msgstr "Não foi possÃvel gravar o perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -363,8 +363,8 @@ msgid "Could not delete favorite." msgstr "Não foi possÃvel eliminar o favorito." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Não foi possÃvel seguir utilizador: Utilizador não encontrado." +msgid "Could not follow user: profile not found." +msgstr "Não foi possÃvel seguir o utilizador: o perfil não foi encontrado." #: actions/apifriendshipscreate.php:118 #, php-format @@ -380,9 +380,9 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "Não pode deixar de seguir-se a si próprio." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Devem ser fornecidos dois nomes de utilizador ou utilizadors." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Têm de ser fornecidos dois IDs ou nomes de utilizador válidos." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -509,6 +509,10 @@ msgstr "Grupos de %s" msgid "groups on %s" msgstr "Grupos em %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "O upload falhou." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Não foi fornecido o parâmetro oauth_token." @@ -650,22 +654,26 @@ msgstr "Estado apagado." msgid "No status with that ID found." msgstr "Não foi encontrado um estado com esse ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "O cliente tem de fornecer um parâmetro 'status' com um valor." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Demasiado longo. Tamanho máx. das notas é %d caracteres." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Não encontrado." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "Tamanho máx. das notas é %d caracteres, incluÃndo a URL do anexo." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formato não suportado." @@ -719,6 +727,10 @@ msgstr "Notas categorizadas com %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Actualizações categorizadas com %1$s em %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Método da API em desenvolvimento." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Anexo não foi encontrado." @@ -771,7 +783,7 @@ msgid "Preview" msgstr "Antevisão" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Apagar" @@ -1052,7 +1064,7 @@ msgid "Do not delete this notice" msgstr "Não apagar esta nota" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Apagar esta nota" @@ -1122,13 +1134,14 @@ msgid "Theme for the site." msgstr "O tema para o site." #: actions/designadminpanel.php:467 -#, fuzzy msgid "Custom theme" -msgstr "Tema do site" +msgstr "Tema personalizado" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." msgstr "" +"Pode fazer o upload de um tema personalizado para o StatusNet, na forma de " +"um arquivo .ZIP." #: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" @@ -1188,11 +1201,11 @@ msgstr "Links" #: actions/designadminpanel.php:651 msgid "Advanced" -msgstr "" +msgstr "Avançado" #: actions/designadminpanel.php:655 msgid "Custom CSS" -msgstr "" +msgstr "CSS personalizado" #: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" @@ -1331,7 +1344,8 @@ msgstr "Nome alternativo inválido: \"%s\"" msgid "Could not update group." msgstr "Não foi possÃvel actualizar o grupo." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Não foi possÃvel criar os nomes alternativos." @@ -2486,10 +2500,10 @@ msgstr "Actualizações que contêm o termo \"%1$s\" em %2$s!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"Este utilizador não aceita toques ou ainda não confirmou ou forneceu o " -"endereço electrónico." +"Este utilizador não aceita toques ou ainda não confirmou ou forneceu um " +"correio electrónico." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2564,8 +2578,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Só URLs %s sobre HTTP simples, por favor." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Formato de dados não suportado." @@ -2732,7 +2746,7 @@ msgstr "Sem acesso de escrita no directório do fundo: %s." #: actions/pathsadminpanel.php:177 #, php-format msgid "Locales directory not readable: %s." -msgstr "Sem acesso de leitura ao directório de idiomas: %s." +msgstr "Sem acesso de leitura ao directório das lÃnguas: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2760,11 +2774,11 @@ msgstr "Localização do site" #: actions/pathsadminpanel.php:246 msgid "Path to locales" -msgstr "Localização de idiomas" +msgstr "Localização das lÃnguas" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" -msgstr "Localização do directório de idiomas" +msgstr "Localização do directório das lÃnguas" #: actions/pathsadminpanel.php:250 msgid "Fancy URLs" @@ -3481,7 +3495,7 @@ msgstr "Não pode repetir a sua própria nota." msgid "You already repeated that notice." msgstr "Já repetiu essa nota." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repetida" @@ -3519,10 +3533,9 @@ msgstr "Fonte de respostas a %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" -"Estas são as notas de resposta a %1$s, mas %2$s ainda não recebeu nenhuma " -"resposta." +"Estas são as respostas a %1$s, mas ainda nenhuma nota foi endereçada a %2$s." #: actions/replies.php:204 #, php-format @@ -3536,11 +3549,11 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Pode tentar [dar um toque em %1$s](../%2$s) ou [publicar algo à sua atenção]" -"(%%%%action.newnotice%%%%?status_textarea=%3$s)." +"Pode tentar [dar um toque em %1$s](../%2$s) ou [endereçar-lhe uma nota](%%%%" +"action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format @@ -3628,7 +3641,7 @@ msgstr "Organização" msgid "Description" msgstr "Descrição" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "EstatÃsticas" @@ -3719,8 +3732,8 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s ainda não adicionou nenhuma nota à s favoritas. Publique algo interessante " "que mude este estado de coisas :)" @@ -3728,13 +3741,13 @@ msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s ainda não adicionou nenhuma nota à s favoritas. Que tal [registar uma " -"conta](%%action.register%%) e publicar algo interessante que mude este " -"estado de coisas :)" +"conta](%%%%action.register%%%%) e publicar algo tão interessante que mude " +"este estado de coisas :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3792,7 +3805,7 @@ msgstr "Fonte de notas do grupo %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF do grupo %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membros" @@ -3806,11 +3819,11 @@ msgstr "(Nenhum)" msgid "All members" msgstr "Todos os membros" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Criado" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3826,7 +3839,7 @@ msgstr "" "[Registe-se agora](%%action.register%%) para se juntar a este grupo e a " "muitos mais! ([Saber mais](%%doc.help%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3839,7 +3852,7 @@ msgstr "" "programa de Software Livre [StatusNet](http://status.net/). Os membros deste " "grupo partilham mensagens curtas acerca das suas vidas e interesses. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Gestores" @@ -3916,10 +3929,10 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"Pode tentar dar um toque em %1$s ou [publicar algo à sua atenção](%%%%action." +"Pode tentar dar um toque em %1$s ou [endereçar-lhe uma nota](%%%%action." "newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 @@ -4306,7 +4319,8 @@ msgstr "Gravar configurações do instantâneo" msgid "You are not subscribed to that profile." msgstr "Não subscreveu esse perfil." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Não foi possÃvel gravar a subscrição." @@ -4484,10 +4498,6 @@ msgstr "" msgid "No such tag." msgstr "Categoria não foi encontrada." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Método da API em desenvolvimento." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Não bloqueou esse utilizador." @@ -4797,81 +4807,128 @@ msgstr "Versão" msgid "Author(s)" msgstr "Autores" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Não é possÃvel processar a URL '$s'" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "o Robin acha que algo é impossÃvel." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Nenhum ficheiro pode ter mais de %d bytes e o que enviou tinha %d bytes. " -"Tente carregar uma versão menor." +"Nenhum ficheiro pode ter mais de %1$d bytes e o que enviou tinha %2$d bytes. " +"Tente enviar uma versão mais pequena." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" "Um ficheiro desta dimensão excederia a sua quota de utilizador de %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Um ficheiro desta dimensão excederia a sua quota mensal de %d bytes." -#: classes/Group_member.php:41 +#. 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 "Nome de ficheiro inválido." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Entrada no grupo falhou." -#: classes/Group_member.php:53 +#. 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 "Não faz parte do grupo." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "SaÃda do grupo falhou." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Não foi possÃvel actualizar o grupo local." -#: classes/Login_token.php:76 +#. 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 "Não foi possÃvel criar a chave de entrada para %s" -#: classes/Message.php:45 +#. 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 "Não foi encontrado nenhum nome de base de dados ou DSN." + +#. 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 "Está proibido de enviar mensagens directas." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Não foi possÃvel inserir a mensagem." -#: classes/Message.php:71 +#. 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 "Não foi possÃvel actualizar a mensagem com a 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Não existe o perfil (%1$d) para a nota (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" -msgstr "Erro na base de dados ao inserir a marca: %s" +msgstr "Erro na base de dados ao inserir o elemento criptográfico: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problema na gravação da nota. Demasiado longa." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problema na gravação da nota. Utilizador desconhecido." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Demasiadas notas, demasiado rápido; descanse e volte a publicar daqui a " "alguns minutos." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4879,71 +4936,120 @@ msgstr "" "Demasiadas mensagens duplicadas, demasiado rápido; descanse e volte a " "publicar daqui a alguns minutos." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Está proibido de publicar notas neste site." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problema na gravação da nota." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "O tipo fornecido ao método saveKnownGroups é incorrecto" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problema na gravação da caixa de entrada do grupo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"Não é possÃvel revogar a função \"%1$s\" do utilizador #%2$d; não existe." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Não é possÃvel revogar a função \"%1$s\" do utilizador #%2$d; erro na base " +"de dados." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Perfil não existe." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Não foi possÃvel gravar a categoria." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Foi bloqueado de fazer subscrições" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Já subscrito!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "O utilizador bloqueou-o." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Não subscrito!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "Não foi possÃvel apagar a auto-subscrição." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Não foi possÃvel apagar a chave de subscrição OMB." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." +msgstr "Não foi possÃvel apagar a chave OMB da subscrição." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Não foi possÃvel apagar a subscrição." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "%1$s dá-lhe as boas-vindas, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Não foi possÃvel criar o grupo." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Não foi possÃvel configurar a URI do grupo." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Não foi possÃvel configurar membros do grupo." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Não foi possÃvel gravar a informação do grupo local." @@ -6413,7 +6519,7 @@ msgstr "" "conversa com outros utilizadores. Outros podem enviar-lhe mensagens, a que " "só você terá acesso." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "de" @@ -6472,24 +6578,24 @@ msgstr "Não foi possÃvel gravar o ficheiro no disco." msgid "File upload stopped by extension." msgstr "Transferência do ficheiro interrompida pela extensão." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Ficheiro excede quota do utilizador." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Não foi possÃvel mover o ficheiro para o directório de destino." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Não foi possÃvel determinar o tipo MIME do ficheiro." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Tente usar outro tipo de %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s não é um tipo de ficheiro suportado neste servidor." @@ -6545,51 +6651,51 @@ msgstr "" "tente novamente mais tarde" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "O" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "coords." -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "no contexto" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetida por" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Responder a esta nota" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Nota repetida" @@ -6845,47 +6951,49 @@ msgstr "Nenhum" #: lib/themeuploader.php:50 msgid "This server cannot handle theme uploads without ZIP support." msgstr "" +"Este servidor não pode processar uploads de temas sem suporte do formato ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Ocorreu um erro de sistema ao transferir o ficheiro." +msgid "The theme file is missing or the upload failed." +msgstr "O ficheiro do tema não foi localizado ou o upload falhou." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 #: lib/themeuploader.php:265 lib/themeuploader.php:272 -#, fuzzy msgid "Failed saving theme." -msgstr "Falha ao actualizar avatar." +msgstr "Não foi possÃvel gravar o tema." #: lib/themeuploader.php:139 msgid "Invalid theme: bad directory structure." -msgstr "" +msgstr "Tema inválido: estrutura de directórios incorrecta." #: lib/themeuploader.php:166 #, php-format msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." msgstr "" +"O tema carregado é demasiado grande; tem de ter menos de %d bytes " +"descomprimido." #: lib/themeuploader.php:178 msgid "Invalid theme archive: missing file css/display.css" -msgstr "" +msgstr "Arquivo do tema inválido: falta o ficheiro css/display.css" #: lib/themeuploader.php:205 msgid "" "Theme contains invalid file or folder name. Stick with ASCII letters, " "digits, underscore, and minus sign." msgstr "" +"Tema contém um nome de ficheiro ou de directório inválido. Use somente " +"letras ASCII, algarismos, sublinhados e o sinal de menos." #: lib/themeuploader.php:216 #, php-format msgid "Theme contains file of type '.%s', which is not allowed." -msgstr "" +msgstr "Tema contém um ficheiro do tipo '.%s', o que não é permitido." #: lib/themeuploader.php:234 -#, fuzzy msgid "Error opening theme archive." -msgstr "Erro ao actualizar o perfil remoto." +msgstr "Ocorreu um erro ao abrir o arquivo do tema." #: lib/topposterssection.php:74 msgid "Top posters" diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po index a12a309f3..cb77836d4 100644 --- a/locale/pt_BR/LC_MESSAGES/statusnet.po +++ b/locale/pt_BR/LC_MESSAGES/statusnet.po @@ -2,6 +2,7 @@ # # Author@translatewiki.net: Aracnus # Author@translatewiki.net: Ewout +# Author@translatewiki.net: Giro720 # Author@translatewiki.net: Luckas Blade # Author@translatewiki.net: McDutchie # Author@translatewiki.net: Vuln @@ -12,12 +13,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:52+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:23+0000\n" "Language-Team: Brazilian Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt-br\n" "X-Message-Group: out-statusnet\n" @@ -101,7 +102,7 @@ msgstr "Esta página não existe." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -170,20 +171,20 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Você pode tentar [chamar a atenção de %1$s](../%2$s) em seu perfil ou " "[publicar alguma coisa que desperte seu interesse](%%%%action.newnotice%%%%?" "status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Por que não [registrar uma conta](%%%%action.register%%%%) e então chamar a " "atenção de %s ou publicar uma mensagem para sua atenção." @@ -218,7 +219,7 @@ msgstr "Atualizações de %1$s e amigos no %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -268,7 +269,7 @@ msgstr "Não foi possÃvel salvar o perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -368,7 +369,8 @@ msgid "Could not delete favorite." msgstr "Não foi possÃvel excluir a favorita." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Não é possÃvel seguir o usuário: Usuário não encontrado." #: actions/apifriendshipscreate.php:118 @@ -384,8 +386,9 @@ msgstr "Não é possÃvel deixar de seguir o usuário: Usuário não encontrado. msgid "You cannot unfollow yourself." msgstr "Você não pode deixar de seguir você mesmo!" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "Duas IDs de usuário ou screen_names devem ser informados." #: actions/apifriendshipsshow.php:134 @@ -515,6 +518,11 @@ msgstr "Grupos de %s" msgid "groups on %s" msgstr "grupos no %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Enviar arquivo" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Não foi fornecido nenhum parâmetro oauth_token" @@ -662,22 +670,26 @@ msgstr "A mensagem foi excluÃda." msgid "No status with that ID found." msgstr "Não foi encontrada nenhuma mensagem com esse ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Está muito extenso. O tamanho máximo é de %s caracteres." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Não encontrado." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "O tamanho máximo da mensagem é de %s caracteres" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Formato não suportado." @@ -731,6 +743,10 @@ msgstr "Mensagens etiquetadas como %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Mensagens etiquetadas como %1$s no %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "O método da API está em construção." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Este anexo não existe." @@ -784,7 +800,7 @@ msgid "Preview" msgstr "Visualização" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Excluir" @@ -1066,7 +1082,7 @@ msgid "Do not delete this notice" msgstr "Não excluir esta mensagem." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Excluir esta mensagem" @@ -1346,7 +1362,8 @@ msgstr "Apelido inválido: \"%s\"" msgid "Could not update group." msgstr "Não foi possÃvel atualizar o grupo." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Não foi possÃvel criar os apelidos." @@ -2511,8 +2528,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Mensagens correspondentes aos termos \"%1$s\" no %2$s!" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Esse usuário não permite ser chamado à atenção ou ainda não confirmou ou " "configurou seu e-mail." @@ -2591,8 +2609,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Por favor, somente URLs %s sobre HTTP puro." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Não é um formato de dados suportado." @@ -3508,7 +3526,7 @@ msgstr "Você não pode repetir sua própria mensagem." msgid "You already repeated that notice." msgstr "Você já repetiu essa mensagem." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Repetida" @@ -3543,10 +3561,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Fonte de respostas para %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Esse é o fluxo de mensagens de resposta para %1$s, mas %2$s ainda não " "recebeu nenhuma mensagem direcionada a ele(a)." @@ -3561,10 +3579,10 @@ msgstr "" "pessoas ou [associe-se a grupos](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Você pode tentar [chamar a atenção de %1$s](../%2$s) ou [publicar alguma " "coisa que desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%3" @@ -3656,7 +3674,7 @@ msgstr "Organização" msgid "Description" msgstr "Descrição" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "EstatÃsticas" @@ -3744,20 +3762,20 @@ msgstr "" "para destacar." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s não adicionou nenhuma mensagem à s suas favoritas. Publique alguma coisa " "interessante para para as pessoas marcarem como favorita. :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s não adicionou nenhuma mensagem à s suas favoritas. Por que você não " "[registra uma conta](%%%%action.register%%%%) e publica alguma coisa " @@ -3819,7 +3837,7 @@ msgstr "Fonte de mensagens do grupo %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF para o grupo %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Membros" @@ -3833,11 +3851,11 @@ msgstr "(Nenhum)" msgid "All members" msgstr "Todos os membros" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Criado" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3853,7 +3871,7 @@ msgstr "" "para se tornar parte deste grupo e muito mais! ([Saiba mais](%%%%doc.help%%%" "%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3866,7 +3884,7 @@ msgstr "" "[StatusNet](http://status.net/). Seus membros compartilham mensagens curtas " "sobre suas vidas e interesses. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administradores" @@ -3943,10 +3961,10 @@ msgstr "" "mensagem. Que tal começar agora? :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Você pode tentar chamar a atenção de %1$s ou [publicar alguma coisa que " "desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -4333,7 +4351,8 @@ msgstr "Salvar as configurações de estatÃsticas" msgid "You are not subscribed to that profile." msgstr "Você não está assinando esse perfil." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Não foi possÃvel salvar a assinatura." @@ -4511,10 +4530,6 @@ msgstr "" msgid "No such tag." msgstr "Esta etiqueta não existe." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "O método da API está em construção." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Você não bloqueou esse usuário." @@ -4828,80 +4843,128 @@ msgstr "Versão" msgid "Author(s)" msgstr "Autor(es)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "Nenhum arquivo pode ser maior que %d bytes e o arquivo que você enviou " "possui %d bytes. Experimente enviar uma versão menor." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "Um arquivo deste tamanho excederá a sua conta de %d bytes." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Um arquivo deste tamanho excederá a sua conta mensal de %d bytes." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Tamanho inválido." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Não foi possÃvel se unir ao grupo." -#: classes/Group_member.php:53 +#. 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 "Não é parte de um grupo." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Não foi possÃvel deixar o grupo." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Não foi possÃvel atualizar o grupo local." -#: classes/Login_token.php:76 +#. 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 "Não foi possÃvel criar o token de autenticação para %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "Você está proibido de enviar mensagens diretas." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Não foi possÃvel inserir a mensagem." -#: classes/Message.php:71 +#. 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 "Não foi possÃvel atualizar a mensagem com a 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Erro no banco de dados durante a inserção da hashtag: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problema no salvamento da mensagem. Ela é muito extensa." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problema no salvamento da mensagem. Usuário desconhecido." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Muitas mensagens em um perÃodo curto de tempo; dê uma respirada e publique " "novamente daqui a alguns minutos." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4909,71 +4972,122 @@ msgstr "" "Muitas mensagens duplicadas em um perÃodo curto de tempo; dê uma respirada e " "publique novamente daqui a alguns minutos." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Você está proibido de publicar mensagens neste site." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problema no salvamento da mensagem." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problema no salvamento das mensagens recebidas do grupo." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "O usuário não tem perfil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Não foi possÃvel salvar os avisos do site." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Você está proibido de assinar." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Já assinado!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "O usuário bloqueou você." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Não assinado!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "Não foi possÃvel excluir a auto-assinatura." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "Não foi possÃvel excluir o token de assinatura OMB." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Não foi possÃvel excluir a assinatura." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Bem vindo(a) a %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Não foi possÃvel criar o grupo." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Não foi possÃvel definir a URI do grupo." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Não foi possÃvel configurar a associação ao grupo." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Não foi possÃvel salvar a informação do grupo local." @@ -6447,7 +6561,7 @@ msgstr "" "privadas para envolver outras pessoas em uma conversa. Você também pode " "receber mensagens privadas." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "de" @@ -6508,24 +6622,24 @@ msgstr "Erro ao salvar o arquivo no disco." msgid "File upload stopped by extension." msgstr "O arquivo a ser enviado foi barrado por causa de sua extensão." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "O arquivo excede a quota do usuário." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Não foi possÃvel mover o arquivo para o diretório de destino." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Não foi possÃvel determinar o tipo MIME do arquivo." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Tente usar outro formato %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s não é um tipo de arquivo suportado neste servidor." @@ -6581,51 +6695,51 @@ msgstr "" "esperado. Por favor, tente novamente mais tarde." #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "L" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "O" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "em" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "no contexto" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Repetida por" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Responder a esta mensagem" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Mensagem repetida" @@ -6675,7 +6789,7 @@ msgstr "Respostas" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "Favoritas" +msgstr "Favoritos" #: lib/personalgroupnav.php:125 msgid "Inbox" @@ -6881,47 +6995,48 @@ msgstr "Nenhuma" #: lib/themeuploader.php:50 msgid "This server cannot handle theme uploads without ZIP support." msgstr "" +"Este servidor não pode processar o envio de temas sem suporte ao formato ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Erro no sistema durante o envio do arquivo." +msgid "The theme file is missing or the upload failed." +msgstr "O arquivo do tema não foi localizado ou ocorreu uma erro no envio." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 #: lib/themeuploader.php:265 lib/themeuploader.php:272 -#, fuzzy msgid "Failed saving theme." -msgstr "Não foi possÃvel atualizar o avatar." +msgstr "Não foi possÃvel salvar o tema." #: lib/themeuploader.php:139 msgid "Invalid theme: bad directory structure." -msgstr "" +msgstr "Tema inválido: estrutura de diretórios incorreta." #: lib/themeuploader.php:166 #, php-format msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." msgstr "" +"O tema enviado é muito grande; ele deve ter menos de %d bytes descomprimido." #: lib/themeuploader.php:178 msgid "Invalid theme archive: missing file css/display.css" -msgstr "" +msgstr "Arquivo de tema inválido: está faltando o arquivo css/display.css" #: lib/themeuploader.php:205 msgid "" "Theme contains invalid file or folder name. Stick with ASCII letters, " "digits, underscore, and minus sign." msgstr "" +"O tema contém um nome de arquivo ou de diretório inválido. Use somente " +"caracteres ASCII, números e os sinais de sublinhado e hÃfen." #: lib/themeuploader.php:216 #, php-format msgid "Theme contains file of type '.%s', which is not allowed." -msgstr "" +msgstr "O tema contém um arquivo do tipo '.%s', que não é permitido." #: lib/themeuploader.php:234 -#, fuzzy msgid "Error opening theme archive." -msgstr "Ocorreu um erro durante a atualização do perfil remoto." +msgstr "Ocorreu um erro ao abrir o arquivo do tema." #: lib/topposterssection.php:74 msgid "Top posters" diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po index d276b197a..869212945 100644 --- a/locale/ru/LC_MESSAGES/statusnet.po +++ b/locale/ru/LC_MESSAGES/statusnet.po @@ -12,12 +12,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:04:57+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:25+0000\n" "Language-Team: Russian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ru\n" "X-Message-Group: out-statusnet\n" @@ -103,7 +103,7 @@ msgstr "Ðет такой Ñтраницы." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -172,21 +172,20 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Ð’Ñ‹ можете попробовать [«подтолкнуть» %1$s](../%2$s) из Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¸Ð»Ð¸ [напиÑать " -"что-нибудь Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ](%%%%action.newnotice%%%%?" -"status_textarea=%3$s)." +"Ð’Ñ‹ можете попробовать «[подтолкнуть %1$s](../%2$s)» из их Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¸Ð»Ð¸ " +"[напиÑать им что-нибудь](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" -"Почему бы не [зарегиÑтрироватьÑÑ](%%action.register%%), чтобы «подтолкнуть» %" -"s или отправить запиÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ?" +"Почему бы не [зарегиÑтрироватьÑÑ](%%%%action.register%%%%), чтобы " +"«подтолкнуть» %s или оÑтавить запиÑÑŒ Ð´Ð»Ñ Ð½Ð¸Ñ…?" #. TRANS: H1 text #: actions/all.php:182 @@ -218,7 +217,7 @@ msgstr "Обновлено от %1$s и его друзей на %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -268,7 +267,7 @@ msgstr "Ðе удаётÑÑ Ñохранить профиль." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -368,10 +367,8 @@ msgid "Could not delete favorite." msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ любимую запиÑÑŒ." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" -"Ðе удаётÑÑ Ñледовать за пользователем, Ñ‚. к. такого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ " -"ÑущеÑтвует." +msgid "Could not follow user: profile not found." +msgstr "Ðе удаётÑÑ Ñледовать за пользователем: профиль не найден." #: actions/apifriendshipscreate.php:118 #, php-format @@ -388,9 +385,9 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "Ð’Ñ‹ не можете переÑтать Ñледовать за Ñобой." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Ðадо предÑтавить два имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ кода." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Ðеобходимо задать два идентификатора или screen_names." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -518,6 +515,10 @@ msgstr "Группы %s" msgid "groups on %s" msgstr "группы на %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Загрузка не удалаÑÑŒ." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Ðе задан параметр oauth_token." @@ -661,22 +662,26 @@ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÐ´Ð°Ð»Ñ‘Ð½." msgid "No status with that ID found." msgstr "Ðе найдено ÑтатуÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Клиент должен предоÑтавить параметр «status» Ñо значением." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Слишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° — %d знаков." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе найдено." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи — %d Ñимволов, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ URL вложениÑ." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Ðеподдерживаемый формат." @@ -730,6 +735,10 @@ msgstr "ЗапиÑи Ñ Ñ‚ÐµÐ³Ð¾Ð¼ %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ñ‚ÐµÐ³Ð¾Ð¼ %1$s на %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Метод API реконÑтруируетÑÑ." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Ðет такого вложениÑ." @@ -783,7 +792,7 @@ msgid "Preview" msgstr "ПроÑмотр" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Удалить" @@ -1064,7 +1073,7 @@ msgid "Do not delete this notice" msgstr "Ðе удалÑÑ‚ÑŒ Ñту запиÑÑŒ" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Удалить Ñту запиÑÑŒ" @@ -1342,7 +1351,8 @@ msgstr "Ðеверный алиаÑ: «%s»" msgid "Could not update group." msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ информацию о группе." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Ðе удаётÑÑ Ñоздать алиаÑÑ‹." @@ -2506,10 +2516,10 @@ msgstr "Ð’Ñе обновлениÑ, ÑоответÑтвующие поиÑко #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"Ðтот пользователь не разрешает \"подталкивать\" его, или ещё не подтверждён " -"или ещё не предÑтавил Ñвой Ñлектронный адреÑ." +"Ðтот пользователь не разрешает «подталкивать» его или ещё не указал Ñвой " +"email-адреÑ." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2583,8 +2593,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Только %s URL в проÑтом HTTP, пожалуйÑта." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Ðеподдерживаемый формат данных." @@ -3018,7 +3028,7 @@ msgstr "ЧаÑовой поÑÑ Ð½Ðµ выбран." #: actions/profilesettings.php:241 msgid "Language is too long (max 50 chars)." -msgstr "Слишком длинный Ñзык (более 50 Ñимволов). " +msgstr "Слишком длинный Ñзык (не может быть более 50 Ñимволов)." #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format @@ -3491,7 +3501,7 @@ msgstr "Ð’Ñ‹ не можете повторить ÑобÑтвенную запРmsgid "You already repeated that notice." msgstr "Ð’Ñ‹ уже повторили Ñту запиÑÑŒ." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Повторено" @@ -3529,9 +3539,10 @@ msgstr "Лента запиÑей Ð´Ð»Ñ %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" -"Ðта лента Ñодержит ответы на запиÑи %1$s, однако %2$s пока не получал их." +"Ðта лента Ñодержит ответы Ð´Ð»Ñ %1$s, однако %2$s пока не получил уведомление " +"о них." #: actions/replies.php:204 #, php-format @@ -3545,12 +3556,11 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" -"Ð’Ñ‹ можете попробовать [«подтолкнуть» %1$s](../%2$s) или [напиÑать что-нибудь " -"Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ](%%%%action.newnotice%%%%?" -"status_textarea=%3$s)." +"Ð’Ñ‹ можете попробовать «[подтолкнуть %1$s](../%2$s)» или [напиÑать им что-" +"нибудь](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format @@ -3639,7 +3649,7 @@ msgstr "ОрганизациÑ" msgid "Description" msgstr "ОпиÑание" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтика" @@ -3729,8 +3739,8 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s пока не выбрал ни одной любимой запиÑи. Ðапишите такую интереÑную запиÑÑŒ, " "которую он добавит её в чиÑло любимых :)" @@ -3738,11 +3748,11 @@ msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s пока не добавил ни одноз запиÑи в любимые. Почему бы не " +"%s пока не добавил ни одной запиÑи в любимые. Почему бы не " "[зарегиÑтрироватьÑÑ](%%%%action.register%%%%) и не напиÑать что-нибудь " "интереÑное, что понравилоÑÑŒ бы Ñтому пользователю? :)" @@ -3802,7 +3812,7 @@ msgstr "Лента запиÑей группы %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "УчаÑтники" @@ -3816,11 +3826,11 @@ msgstr "(пока ничего нет)" msgid "All members" msgstr "Ð’Ñе учаÑтники" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Создано" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3836,7 +3846,7 @@ msgstr "" "action.register%%%%), чтобы Ñтать учаÑтником группы и получить множеÑтво " "других возможноÑтей! ([Читать далее](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3849,7 +3859,7 @@ msgstr "" "обеÑпечении [StatusNet](http://status.net/). УчаÑтники обмениваютÑÑ " "короткими ÑообщениÑми о Ñвоей жизни и интереÑах. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтраторы" @@ -3926,12 +3936,11 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" -"Ð’Ñ‹ можете попробовать «подтолкнуть» %1$s или [напиÑать что-нибудь Ð´Ð»Ñ " -"Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ](%%%%action.newnotice%%%%?status_textarea=%2" -"$s)." +"Ð’Ñ‹ можете попробовать «подтолкнуть» %1$s или [напиÑать что-нибудь Ð´Ð»Ñ Ð½Ð¸Ñ…](%%%" +"%action.newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -3955,10 +3964,10 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s** ÑвлÑетÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированным учаÑтником %%%%site.name%%%% - Ñайта Ð´Ð»Ñ " +"**%s** ÑвлÑетÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированным учаÑтником %%%%site.name%%%% — Ñайта Ð´Ð»Ñ " "[микроблогинга](http://ru.wikipedia.org/wiki/Микроблоггинг), Ñозданного Ñ " "иÑпользованием Ñвободного программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ [StatusNet](http://status." -"net/)." +"net/). " #: actions/showstream.php:305 #, php-format @@ -4320,7 +4329,8 @@ msgstr "Сохранить наÑтройки Ñнимка" msgid "You are not subscribed to that profile." msgstr "Ð’Ñ‹ не подпиÑаны на Ñтот профиль." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Ðе удаётÑÑ Ñохранить подпиÑку." @@ -4501,10 +4511,6 @@ msgstr "" msgid "No such tag." msgstr "Ðет такого тега." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Метод API реконÑтруируетÑÑ." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Ð’Ñ‹ не заблокировали Ñтого пользователÑ." @@ -4814,80 +4820,127 @@ msgstr "ВерÑиÑ" msgid "Author(s)" msgstr "Ðвтор(Ñ‹)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Ðевозможно обработать URL «%s»" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Робин Ñчитает, что Ñто невозможно." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -"Файл не может быть больше %d байт, тогда как отправленный вами файл Ñодержал " -"%d байт. Попробуйте загрузить меньшую верÑию." +"Файл не может быть больше %1$d байт, тогда как отправленный вами файл " +"Ñодержал %2$d байт. Попробуйте загрузить меньшую верÑию." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "Файл такого размера превыÑит вашу пользовательÑкую квоту в %d байта." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Файл такого размера превыÑит вашу меÑÑчную квоту в %d байта." -#: classes/Group_member.php:41 +#. 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 "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Ðе удаётÑÑ Ð¿Ñ€Ð¸ÑоединитьÑÑ Ðº группе." -#: classes/Group_member.php:53 +#. 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 "Ðе ÑвлÑетÑÑ Ñ‡Ð°Ñтью группы." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Ðе удаётÑÑ Ð¿Ð¾ÐºÐ¸Ð½ÑƒÑ‚ÑŒ группу." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ локальную группу." -#: classes/Login_token.php:76 +#. 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 "Ðе удаётÑÑ Ñоздать токен входа Ð´Ð»Ñ %s" -#: classes/Message.php:45 +#. 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 "Ð˜Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных или DSN не найдено." + +#. 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 "Ð’Ñ‹ заблокированы от отправки прÑмых Ñообщений." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Ðе удаётÑÑ Ð²Ñтавить Ñообщение." -#: classes/Message.php:71 +#. 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 "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñообщение Ñ Ð½Ð¾Ð²Ñ‹Ð¼ 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Ðет такого Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ (%1$d) Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Ошибка баз данных при вÑтавке хеш-тегов: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Проблемы Ñ Ñохранением запиÑи. Слишком длинно." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Проблема при Ñохранении запиÑи. ÐеизвеÑтный пользователь." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Слишком много запиÑей за Ñтоль короткий Ñрок; передохните немного и " "попробуйте вновь через пару минут." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4895,71 +4948,120 @@ msgstr "" "Слишком много одинаковых запиÑей за Ñтоль короткий Ñрок; передохните немного " "и попробуйте вновь через пару минут." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Вам запрещено поÑтитьÑÑ Ð½Ð° Ñтом Ñайте (бан)" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Проблемы Ñ Ñохранением запиÑи." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "Ð”Ð»Ñ saveKnownGroups указан неверный тип" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"Ðе удаётÑÑ Ð¾Ñ‚Ð¾Ð·Ð²Ð°Ñ‚ÑŒ право «%1%s» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ #%2$d; пользователь не " +"ÑущеÑтвует." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Ðе удаётÑÑ Ð¾Ñ‚Ð¾Ð·Ð²Ð°Ñ‚ÑŒ право «%1$s» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ #%2$d; ошибка базы данных." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "ОтÑутÑтвующий профиль." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Ðе удаётÑÑ Ñохранить тег." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Ð’Ñ‹ заблокированы от подпиÑки." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Уже подпиÑаны!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Пользователь заблокировал ВаÑ." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Ðе подпиÑаны!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." -msgstr "Ðевозможно удалить ÑамоподпиÑку." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Ðевозможно удалить подпиÑку на Ñамого ÑебÑ." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ подпиÑочный жетон OMB." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ подпиÑку." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Добро пожаловать на %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Ðе удаётÑÑ Ñоздать группу." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Ðе удаётÑÑ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ URI группы." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Ðе удаётÑÑ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ членÑтво в группе." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Ðе удаётÑÑ Ñохранить информацию о локальной группе." @@ -6431,9 +6533,9 @@ msgstr "" "Ð²Ð¾Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей в разговор. СообщениÑ, получаемые от других " "людей, видите только вы." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" -msgstr "от " +msgstr "от" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6489,24 +6591,24 @@ msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿Ð¸Ñать файл на диÑк." msgid "File upload stopped by extension." msgstr "Загрузка файла оÑтановлена по раÑширению." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Файл превышает пользовательÑкую квоту." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Файл не может быть перемещён в целевую директорию." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ mime-тип файла." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Попробуйте иÑпользовать другой формат %s." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "Тип файла %s не поддерживаетÑÑ Ð½Ðµ Ñтом Ñервере." @@ -6562,51 +6664,51 @@ msgstr "" "времени, чем ожидалоÑÑŒ; повторите попытку позже" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "Ñ. ш." #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "ÑŽ. ш." #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "в. д." #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "з. д." -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\" %4$s %5$u°%6$u'%7$u\" %8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" -msgstr "на" +msgstr "из" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" -msgstr "в контекÑте" +msgstr "перепиÑка" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Повторено" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Ответить на Ñту запиÑÑŒ" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Ответить" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "ЗапиÑÑŒ повторена" @@ -6864,8 +6966,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "Ðтот Ñервер не может обработать загруженные темы без поддержки ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Ошибка при загрузке файла темы." +msgid "The theme file is missing or the upload failed." +msgstr "Файл темы отÑутÑтвует или произошёл Ñбой при загрузке." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/statusnet.pot b/locale/statusnet.pot index c81149288..961810055 100644 --- a/locale/statusnet.pot +++ b/locale/statusnet.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-21 18:15+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+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" @@ -95,7 +95,7 @@ msgstr "" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -162,15 +162,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -203,7 +203,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -251,7 +251,7 @@ msgstr "" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -347,7 +347,7 @@ msgid "Could not delete favorite." msgstr "" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +msgid "Could not follow user: profile not found." msgstr "" #: actions/apifriendshipscreate.php:118 @@ -363,8 +363,8 @@ msgstr "" msgid "You cannot unfollow yourself." msgstr "" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -492,6 +492,10 @@ msgstr "" msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -630,22 +634,26 @@ msgstr "" msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "" @@ -699,6 +707,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "" @@ -751,7 +763,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "" @@ -1024,7 +1036,7 @@ msgid "Do not delete this notice" msgstr "" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "" @@ -1298,7 +1310,8 @@ msgstr "" msgid "Could not update group." msgstr "" -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "" @@ -2367,7 +2380,7 @@ msgstr "" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2442,8 +2455,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3297,7 +3310,7 @@ msgstr "" msgid "You already repeated that notice." msgstr "" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "" @@ -3335,7 +3348,7 @@ msgstr "" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3348,8 +3361,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3438,7 +3451,7 @@ msgstr "" msgid "Description" msgstr "" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "" @@ -3523,16 +3536,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3591,7 +3604,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "" @@ -3605,11 +3618,11 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3619,7 +3632,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3628,7 +3641,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3703,8 +3716,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4071,7 +4084,8 @@ msgstr "" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "" @@ -4235,10 +4249,6 @@ msgstr "" msgid "No such tag." msgstr "" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "" @@ -4524,146 +4534,239 @@ msgstr "" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. 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 "" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "" -#: classes/Group_member.php:53 +#. 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 "" -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "" -#: classes/Login_token.php:76 +#. 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 "" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "" + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "" -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "" -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." msgstr "" -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "" @@ -5968,7 +6071,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "" @@ -6023,24 +6126,24 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6094,51 +6197,51 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "" diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po index 5d8461ca0..68ba9a6a9 100644 --- a/locale/sv/LC_MESSAGES/statusnet.po +++ b/locale/sv/LC_MESSAGES/statusnet.po @@ -1,6 +1,7 @@ # Translation of StatusNet to Swedish # # Author@translatewiki.net: Jamminjohn +# Author@translatewiki.net: Kjell # Author@translatewiki.net: McDutchie # -- # This file is distributed under the same license as the StatusNet package. @@ -9,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:03+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:26+0000\n" "Language-Team: Swedish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: sv\n" "X-Message-Group: out-statusnet\n" @@ -99,7 +100,7 @@ msgstr "Ingen sÃ¥dan sida" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -166,20 +167,20 @@ msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Du kan prova att [knuffa %1$s](../%2$s) frÃ¥n dennes profil eller [skriva " "nÃ¥gonting för hans eller hennes uppmärksamhet](%%%%action.newnotice%%%%?" "status_textarea=%3$s)." #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Varför inte [registrera ett konto](%%%%action.register%%%%) och sedan knuffa " "%s eller skriva en notis för hans eller hennes uppmärksamhet." @@ -214,7 +215,7 @@ msgstr "Uppdateringar frÃ¥n %1$s och vänner pÃ¥ %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -262,7 +263,7 @@ msgstr "Kunde inte spara profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -360,7 +361,8 @@ msgid "Could not delete favorite." msgstr "Kunde inte ta bort favoriten." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "Kunde inte följa användare: användare hittades inte." #: actions/apifriendshipscreate.php:118 @@ -376,8 +378,9 @@ msgstr "Kunde inte sluta följa användaren: användaren hittades inte." msgid "You cannot unfollow yourself." msgstr "Du kan inte sluta följa dig själv." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "TvÃ¥ användar-ID:n eller screen_names mÃ¥ste tillhandahÃ¥llas." #: actions/apifriendshipsshow.php:134 @@ -506,6 +509,11 @@ msgstr "%s grupper" msgid "groups on %s" msgstr "grupper pÃ¥ %s" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Ladda upp fil" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Ingen oauth_token-parameter angiven." @@ -647,22 +655,26 @@ msgstr "Status borttagen." msgid "No status with that ID found." msgstr "Ingen status med det ID:t hittades." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Det är för lÃ¥ngt. Maximal notisstorlek är %d tecken." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Hittades inte." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "Maximal notisstorlek är %d tecken, inklusive webbadress för bilaga." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Format som inte stödjs." @@ -716,6 +728,10 @@ msgstr "Notiser taggade med %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Uppdateringar taggade med %1$s pÃ¥ %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-metoden är under uppbyggnad." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Ingen sÃ¥dan bilaga." @@ -769,7 +785,7 @@ msgid "Preview" msgstr "Förhandsgranska" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Ta bort" @@ -1051,7 +1067,7 @@ msgid "Do not delete this notice" msgstr "Ta inte bort denna notis" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Ta bort denna notis" @@ -1121,13 +1137,12 @@ msgid "Theme for the site." msgstr "Tema för webbplatsen." #: actions/designadminpanel.php:467 -#, fuzzy msgid "Custom theme" -msgstr "Webbplatstema" +msgstr "Anpassat tema" #: actions/designadminpanel.php:471 msgid "You can upload a custom StatusNet theme as a .ZIP archive." -msgstr "" +msgstr "Du kan ladda upp ett eget StatusNet-tema som ett .ZIP-arkiv." #: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" @@ -1187,11 +1202,11 @@ msgstr "Länkar" #: actions/designadminpanel.php:651 msgid "Advanced" -msgstr "" +msgstr "Avancerat" #: actions/designadminpanel.php:655 msgid "Custom CSS" -msgstr "" +msgstr "Anpassad CSS" #: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" @@ -1330,7 +1345,8 @@ msgstr "Ogiltigt alias: \"%s\"" msgid "Could not update group." msgstr "Kunde inte uppdatera grupp." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Kunde inte skapa alias." @@ -2483,8 +2499,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "Uppdateringar som matchar söksträngen \"%1$s\" pÃ¥ %2$s!" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Denna användare har inte tillÃ¥tit knuffar eller har inte bekräftat eller " "angett sitt e-post än." @@ -2562,8 +2579,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "Endast %s-webbadresser över vanlig HTTP." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Ett dataformat som inte stödjs" @@ -3475,7 +3492,7 @@ msgstr "Du kan inte upprepa din egna notis." msgid "You already repeated that notice." msgstr "Du har redan upprepat denna notis." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Upprepad" @@ -3510,10 +3527,10 @@ msgid "Replies feed for %s (Atom)" msgstr "Flöde med svar för %s (Atom)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Detta är tidslinjen som visar svar till %s1$ men %2$s har inte tagit emot en " "notis för dennes uppmärksamhet än." @@ -3528,10 +3545,10 @@ msgstr "" "personer eller [gÃ¥ med i grupper](%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Du kan prova att [knuffa %1$s](../%2$s) eller [posta nÃ¥gonting för hans " "eller hennes uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3622,7 +3639,7 @@ msgstr "Organisation" msgid "Description" msgstr "Beskrivning" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistik" @@ -3711,20 +3728,20 @@ msgstr "" "att sätta strÃ¥lkastarljuset pÃ¥." #: actions/showfavorites.php:208 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" "%s har inte lagt till nÃ¥gra notiser till sina favoriter ännu. Posta nÃ¥got " "intressant de skulle lägga till sina favoriter :)" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" "%s har inte lagt till nÃ¥gra notiser till sina favoriter ännu. Varför inte " "[registrera ett konto](%%%%action.register%%%%) och posta nÃ¥got intressant " @@ -3786,7 +3803,7 @@ msgstr "Flöde av notiser för %s grupp (Atom)" msgid "FOAF for %s group" msgstr "FOAF för %s grupp" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Medlemmar" @@ -3800,11 +3817,11 @@ msgstr "(Ingen)" msgid "All members" msgstr "Alla medlemmar" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Skapad" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3819,7 +3836,7 @@ msgstr "" "sina liv och intressen. [GÃ¥ med nu](%%%%action.register%%%%) för att bli en " "del av denna grupp och mÃ¥nga fler! ([Läs mer](%%%%doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3832,7 +3849,7 @@ msgstr "" "[StatusNet](http://status.net/). Dess medlemmar delar korta meddelande om " "sina liv och intressen. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratörer" @@ -3907,10 +3924,10 @@ msgstr "" "inte börja nu?" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Du kan prova att knuffa %1$s eller [posta nÃ¥got för hans eller hennes " "uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -4296,7 +4313,8 @@ msgstr "Spara inställningar för ögonblicksbild" msgid "You are not subscribed to that profile." msgstr "Du är inte prenumerat hos den profilen." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Kunde inte spara prenumeration." @@ -4475,10 +4493,6 @@ msgstr "" msgid "No such tag." msgstr "Ingen sÃ¥dan tagg." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-metoden är under uppbyggnad." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Du har inte blockerat denna användared." @@ -4791,80 +4805,128 @@ msgstr "Version" msgid "Author(s)" msgstr "Författare" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 #, php-format +msgid "Cannot process URL '%s'" +msgstr "Webbadressen '%s' kan inte bearbeta" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin tycker att nÃ¥got är omöjligt" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 +#, fuzzy, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "Inga filer fÃ¥r vara större än %d byte och filen du skickade var %d byte. " "Prova att ladda upp en mindre version." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "En sÃ¥ här stor fil skulle överskrida din användarkvot pÃ¥ %d byte." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "En sÃ¥dan här stor fil skulle överskrida din mÃ¥natliga kvot pÃ¥ %d byte." -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Ogiltig storlek." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Gruppanslutning misslyckades." -#: classes/Group_member.php:53 +#. 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 "Inte med i grupp." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Grupputträde misslyckades." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Kunde inte uppdatera lokal grupp." -#: classes/Login_token.php:76 +#. 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 "Kunde inte skapa inloggnings-token för %s" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "Du är utestängd frÃ¥n att skicka direktmeddelanden." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Kunde inte infoga meddelande." -#: classes/Message.php:71 +#. 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 "Kunde inte uppdatera meddelande med ny 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Databasfel vid infogning av hashtag: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Problem vid sparande av notis. För lÃ¥ngt." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Problem vid sparande av notis. Okänd användare." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "För mÃ¥nga notiser för snabbt; ta en vilopaus och posta igen om ett par " "minuter." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4872,71 +4934,122 @@ msgstr "" "För mÃ¥nga duplicerade meddelanden för snabbt; ta en vilopaus och posta igen " "om ett par minuter." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Du är utestängd frÃ¥n att posta notiser pÃ¥ denna webbplats." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Problem med att spara notis." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." msgstr "Problem med att spara gruppinkorg." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Användaren har ingen profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Kunde inte spara webbplatsnotis." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Du har blivit utestängd frÃ¥n att prenumerera." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Redan prenumerant!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "Användaren har blockerat dig." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Inte prenumerant!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." msgstr "Kunde inte ta bort själv-prenumeration." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +#, fuzzy +msgid "Could not delete subscription OMB token." msgstr "Kunde inte radera OMB prenumerations-token." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Kunde inte ta bort prenumeration." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Välkommen till %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Kunde inte skapa grupp." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Kunde inte ställa in grupp-URI." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Kunde inte ställa in gruppmedlemskap." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Kunde inte spara lokal gruppinformation." @@ -6118,6 +6231,9 @@ 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 "" +"Om du anser att kontot används oriktigt kan du blockera det frÃ¥n listan över " +"dina prenumeranter och rapportera det som skräppost till administratörer pÃ¥ %" +"s" #. TRANS: Main body of new-subscriber notification e-mail #: lib/mail.php:254 @@ -6394,7 +6510,7 @@ msgstr "" "engagera andra användare i konversationen. Folk kan skicka meddelanden till " "dig som bara du ser." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "frÃ¥n" @@ -6453,24 +6569,24 @@ msgstr "Misslyckades att skriva fil till disk." msgid "File upload stopped by extension." msgstr "Filuppladdningen stoppad pga filändelse" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Fil överstiger användaren kvot." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Fil kunde inte flyttas till destinationskatalog." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Kunde inte fastställa filens MIME-typ." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "Försök använda ett annat %s-format." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s är en filtyp som saknar stöd pÃ¥ denna server." @@ -6526,51 +6642,51 @@ msgstr "" "god försök igen senare" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "Ö" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "V" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "pÃ¥" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "i sammanhang" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Upprepad av" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "Svara pÃ¥ denna notis" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Svara" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Notis upprepad" @@ -6825,48 +6941,48 @@ msgstr "Ingen" #: lib/themeuploader.php:50 msgid "This server cannot handle theme uploads without ZIP support." -msgstr "" +msgstr "Denna server kan inte hantera temauppladdningar utan ZIP-stöd." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Systemfel vid uppladdning av fil." +msgid "The theme file is missing or the upload failed." +msgstr "Temafilen saknas eller uppladdningen misslyckades." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 #: lib/themeuploader.php:265 lib/themeuploader.php:272 -#, fuzzy msgid "Failed saving theme." -msgstr "Misslyckades uppdatera avatar." +msgstr "Kunde inte spara tema." #: lib/themeuploader.php:139 msgid "Invalid theme: bad directory structure." -msgstr "" +msgstr "Ogiltigt tema: dÃ¥lig katalogstruktur." #: lib/themeuploader.php:166 #, php-format msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." msgstr "" +"Uppladdat tema är för stort, mÃ¥ste vara mindre än %d byte okomprimerat." #: lib/themeuploader.php:178 msgid "Invalid theme archive: missing file css/display.css" -msgstr "" +msgstr "Ogiltigt temaarkiv: filen css/display.css saknas" #: lib/themeuploader.php:205 msgid "" "Theme contains invalid file or folder name. Stick with ASCII letters, " "digits, underscore, and minus sign." msgstr "" +"Tema innehÃ¥ller ogiltigt fil- eller mappnamn. Använd bara ASCII-bokstäver, " +"siffror, understreck och minustecken." #: lib/themeuploader.php:216 #, php-format msgid "Theme contains file of type '.%s', which is not allowed." -msgstr "" +msgstr "Tema innehÃ¥ller fil av typen '.%s', vilket inte är tillÃ¥tet." #: lib/themeuploader.php:234 -#, fuzzy msgid "Error opening theme archive." -msgstr "Fel vid uppdatering av fjärrprofil." +msgstr "Fel vid öppning temaarkiv." #: lib/topposterssection.php:74 msgid "Top posters" diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po index c5d30c58a..e83ab4a30 100644 --- a/locale/te/LC_MESSAGES/statusnet.po +++ b/locale/te/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:08+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:28+0000\n" "Language-Team: Telugu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: te\n" "X-Message-Group: out-statusnet\n" @@ -98,7 +98,7 @@ msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ పేజీ లేదà±." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -163,18 +163,19 @@ msgstr "ఇతరà±à°²à°•à°¿ చందా చేరండి, [à°à°¦à±ˆà°¨à°¾ #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" #: actions/all.php:146 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" +"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." -msgstr "" +"post a notice to them." +msgstr "[à°’à°• ఖాతాని నమోదà±à°šà±‡à°¸à±à°•à±à°¨à°¿](%%action.register%%) మీరే మొదట à°µà±à°°à°¾à°¸à±‡à°µà°¾à°°à± à°Žà°‚à°¦à±à°•à± కాకూడదà±!" #. TRANS: H1 text #: actions/all.php:182 @@ -206,7 +207,7 @@ msgstr "%2$sలో %1$s మరియౠసà±à°¨à±‡à°¹à°¿à°¤à±à°² à°¨à±à°‚à°¡ #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -257,7 +258,7 @@ msgstr "à°ªà±à°°à±Šà°«à±ˆà°²à±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°²à±‡à°•à±à°¨à±à° #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -354,7 +355,8 @@ msgid "Could not delete favorite." msgstr "ఇషà±à°Ÿà°¾à°‚శానà±à°¨à°¿ తొలగించలేకపోయాం." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "వాడà±à°•à°°à°¿à°¨à°¿ à°…à°¨à±à°¸à°°à°¿à°‚చలేకపోయాం: వాడà±à°•à°°à°¿ కనబడలేదà±." #: actions/apifriendshipscreate.php:118 @@ -371,8 +373,8 @@ msgstr "ఓపెనà±à°à°¡à±€ ఫారమà±à°¨à± సృషà±à°Ÿà°¿à°‚à°šà msgid "You cannot unfollow yourself." msgstr "మిమà±à°®à°²à±à°¨à°¿ మీరే అననà±à°¸à°°à°¿à°‚చలేరà±." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -501,6 +503,11 @@ msgstr "%s à°—à±à°‚à°ªà±à°²à±" msgid "groups on %s" msgstr "%s పై à°—à±à°‚à°ªà±à°²à±" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ఫైలà±à°¨à°¿ à°Žà°•à±à°•à°¿à°‚à°šà±" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -642,22 +649,26 @@ msgstr "à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ తొలగించాం." msgid "No status with that ID found." msgstr "à°† IDతో ఠనోటీసౠకనబడలేదà±." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "అది చాలా పొడవà±à°‚ది. à°—à°°à°¿à°·à±à° నోటీసౠపరిమాణం %d à°…à°•à±à°·à°°à°¾à°²à±." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "కనబడలేదà±." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "à°—à°°à°¿à°·à±à° నోటీసౠపొడవౠ%d à°…à°•à±à°·à°°à°¾à°²à±, జోడింపౠURLని à°•à°²à±à°ªà±à°•à±à°¨à°¿." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "" @@ -711,6 +722,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 msgid "No such attachment." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ జోడింపౠలేదà±." @@ -765,7 +780,7 @@ msgid "Preview" msgstr "à°®à±à°¨à±à°œà±‚à°ªà±" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "తొలగించà±" @@ -1044,7 +1059,7 @@ msgid "Do not delete this notice" msgstr "à°ˆ నోటీసà±à°¨à°¿ తొలగించకà±" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "à°ˆ నోటీసà±à°¨à°¿ తొలగించà±" @@ -1178,7 +1193,7 @@ msgstr "లంకెలà±" #: actions/designadminpanel.php:651 msgid "Advanced" -msgstr "" +msgstr "ఉనà±à°¨à°¤" #: actions/designadminpanel.php:655 msgid "Custom CSS" @@ -1322,7 +1337,8 @@ msgstr "తపà±à°ªà±à°¡à± మారà±à°ªà±‡à°°à±: \"%s\"" msgid "Could not update group." msgstr "à°—à±à°‚à°ªà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "మారà±à°ªà±‡à°°à±à°²à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -2442,7 +2458,7 @@ msgstr "\"%s\"తో సరిపోలే à°…à°¨à±à°¨à°¿ తాజాకరణ #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2517,8 +2533,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3414,7 +3430,7 @@ msgstr "మీ నోటీసà±à°¨à°¿ మీరే à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿ msgid "You already repeated that notice." msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "సృషà±à°Ÿà°¿à°¤à°‚" @@ -3451,10 +3467,10 @@ msgid "Replies feed for %s (Atom)" msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(ఆటమà±)" #: actions/replies.php:199 -#, php-format +#, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "ఇది %1$sà°•à°¿ వచà±à°šà°¿à°¨ à°¸à±à°ªà°‚దనలని చూపించే కాలరేఖ కానీ %2$s దృషà±à°Ÿà°¿à°•à°¿ ఇంకా ఎవరూ à°à°®à±€ పంపించలేదà±." #: actions/replies.php:204 @@ -3467,11 +3483,12 @@ msgstr "" "(%%action.groups%%)." #: actions/replies.php:206 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" +"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!" #: actions/repliesrss.php:72 #, php-format @@ -3563,7 +3580,7 @@ msgstr "సంసà±à°§" msgid "Description" msgstr "వివరణ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "గణాంకాలà±" @@ -3650,17 +3667,19 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 -#, php-format +#, fuzzy, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" +"%sà°•à°¿ చందాదారà±à°²à± ఎవరూ లేరà±. [à°’à°• ఖాతాని నమోదౠచేసà±à°•à±à°¨à°¿](%%%%action.register%%%%) మీరౠ" +"à°Žà°‚à°¦à±à°•à± మొదటి చందాదారౠకాకూడదà±?" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3718,7 +3737,7 @@ msgstr "%s యొకà±à°• సందేశమà±à°² ఫీడà±" msgid "FOAF for %s group" msgstr "%s à°—à±à°‚à°ªà±" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "à°¸à°à±à°¯à±à°²à±" @@ -3732,11 +3751,11 @@ msgstr "(à°à°®à±€à°²à±‡à°¦à±)" msgid "All members" msgstr "అందరౠసà°à±à°¯à±à°²à±‚" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "సృషà±à°Ÿà°¿à°¤à°‚" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3752,7 +3771,7 @@ msgstr "" "చాల వాటిలో à°à°¾à°—à°¸à±à°¤à±à°²à°µà±à°µà°¡à°¾à°¨à°¿à°•à°¿ [ఇపà±à°ªà±à°¡à±‡ చేరండి](%%%%action.register%%%%)! ([మరింత చదవండి](%%%%" "doc.help%%%%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3761,7 +3780,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à±" @@ -3835,11 +3854,12 @@ msgstr "" "ఈమధà±à°¯à±‡ à°à°¦à±ˆà°¨à°¾ ఆసకà±à°¤à°¿à°•à°°à°®à±ˆà°¨à°¦à°¿ చూసారా? మీరౠఇంకా నోటీసà±à°²à±‡à°®à±€ à°µà±à°°à°¾à°¯à°²à±‡à°¦à±, మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¡à°¾à°¨à°¿à°•à°¿ ఇదే మంచి సమయం :)" #: actions/showstream.php:207 -#, php-format +#, fuzzy, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" +"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!" #: actions/showstream.php:243 #, php-format @@ -4215,7 +4235,8 @@ msgstr "సైటౠఅమరికలనౠà°à°¦à±à°°à°ªà°°à°šà±" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "చందాని సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -4385,10 +4406,6 @@ msgstr "" msgid "No such tag." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ à°Ÿà±à°¯à°¾à°—ౠలేదà±." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "మీరౠఆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించలేదà±." @@ -4679,151 +4696,247 @@ msgstr "సంచిక" msgid "Author(s)" msgstr "రచయిత(à°²à±)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. 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 "తపà±à°ªà±à°¡à± దసà±à°¤à±à°°à°ªà±à°ªà±‡à°°à±.." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "à°—à±à°‚à°ªà±à°²à±‹ చేరడం విఫలమైంది." -#: classes/Group_member.php:53 +#. 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 "à°—à±à°‚à°ªà±à°²à±‹ à°à°¾à°—à°‚ కాదà±." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "à°—à±à°‚పౠనà±à°‚à°¡à°¿ వైదొలగడం విఫలమైంది." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "à°¸à±à°¥à°¾à°¨à°¿à°• à°—à±à°‚à°ªà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "మారà±à°ªà±‡à°°à±à°²à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం." -#: classes/Message.php:45 +#. 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 "" + +#. 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 "నేరà±à°—à°¾ సందేశాలౠపంపడం à°¨à±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిషేధించారà±." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "నోటీసà±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±. చాలా పొడవà±à°—à°¾ ఉంది." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "నోటీసà±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±. à°—à±à°°à±à°¤à±à°¤à±†à°²à°¿à°¯à°¨à°¿ వాడà±à°•à°°à°¿." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "చాలా à°Žà°•à±à°•à±à°µ నోటీసà±à°²à± à°…à°‚à°¤ వేగంగా; కాసà±à°¤ ఊపిరి తీసà±à°•à±à°¨à°¿ మళà±à°³à±€ కొనà±à°¨à°¿ నిమిషాల తరà±à°µà°¾à°¤ à°µà±à°°à°¾à°¯à°‚à°¡à°¿." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "à°ˆ సైటà±à°²à±‹ నోటీసà±à°²à± రాయడం à°¨à±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిషేధించారà±." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "సందేశానà±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "సందేశానà±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "చందాచేరడం à°¨à±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిషేధించారà±." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "ఇపà±à°ªà°Ÿà°¿à°•à±‡ చందాచేరారà±!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "వాడà±à°•à°°à°¿ మిమà±à°®à°²à±à°¨à°¿ నిరోధించారà±." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "చందాదారà±à°²à±" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "చందాని తొలగించలేకపోయాం." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "చందాని తొలగించలేకపోయాం." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "చందాని తొలగించలేకపోయాం." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "@%2$s, %1$sà°•à°¿ à°¸à±à°µà°¾à°—తం!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "à°—à±à°‚à°ªà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "à°—à±à°‚పౠసà°à±à°¯à°¤à±à°µà°¾à°¨à±à°¨à°¿ అమరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "à°—à±à°‚పౠసà°à±à°¯à°¤à±à°µà°¾à°¨à±à°¨à°¿ అమరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "చందాని సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -6245,7 +6358,7 @@ msgstr "" "మీకౠఅంతరంగిక సందేశాలౠలేవà±. ఇతర వాడà±à°•à°°à±à°²à°¤à±‹ సంà°à°¾à°·à°£à°•à±ˆ మీరౠవారికి అంతరంగిక సందేశాలౠ" "పంపించవచà±à°šà±. మీ à°•à°‚à°Ÿà°¿à°•à°¿ మాతà±à°°à°®à±‡ కనబడేలా వారౠమీకౠసందేశాలౠపంపవచà±à°šà±." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "à°¨à±à°‚à°¡à°¿" @@ -6300,25 +6413,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6375,52 +6488,52 @@ msgstr "" "కాసేపాగి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "à°‰" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "à°¦" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "తూ" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "à°ª" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "సందరà±à°à°‚లో" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "సృషà±à°Ÿà°¿à°¤à°‚" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "à°ˆ నోటీసà±à°ªà±ˆ à°¸à±à°ªà°‚దించండి" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "à°¸à±à°ªà°‚దించండి" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±" @@ -6684,7 +6797,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po index 8f59d8476..18140c3e0 100644 --- a/locale/tr/LC_MESSAGES/statusnet.po +++ b/locale/tr/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:12+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:29+0000\n" "Language-Team: Turkish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: tr\n" "X-Message-Group: out-statusnet\n" @@ -106,7 +106,7 @@ msgstr "Böyle bir durum mesajı yok." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -173,15 +173,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -215,7 +215,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +266,7 @@ msgstr "Profil kaydedilemedi." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -366,8 +366,9 @@ msgid "Could not delete favorite." msgstr "" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "Sunucuya yönlendirme yapılamadı: %s" #: actions/apifriendshipscreate.php:118 #, php-format @@ -384,8 +385,8 @@ msgstr "Sunucuya yönlendirme yapılamadı: %s" msgid "You cannot unfollow yourself." msgstr "Kullanıcı güncellenemedi." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -520,6 +521,11 @@ msgstr "" msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Yükle" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -666,24 +672,28 @@ msgstr "Avatar güncellendi." msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" "Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "Ä°stek bulunamadı!" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "Desteklenmeyen görüntü dosyası biçemi." @@ -738,6 +748,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "%s adli kullanicinin durum mesajlari" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -793,7 +807,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "" @@ -1085,7 +1099,7 @@ msgid "Do not delete this notice" msgstr "Böyle bir durum mesajı yok." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "" @@ -1382,7 +1396,8 @@ msgstr "%s Geçersiz baÅŸlangıç sayfası" msgid "Could not update group." msgstr "Kullanıcı güncellenemedi." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "Avatar bilgisi kaydedilemedi" @@ -2527,7 +2542,7 @@ msgstr "\"%s\" kelimesinin geçtiÄŸi tüm güncellemeler" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2604,8 +2619,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3505,7 +3520,7 @@ msgstr "EÄŸer lisansı kabul etmezseniz kayıt olamazsınız." msgid "You already repeated that notice." msgstr "Zaten giriÅŸ yapmış durumdasıznız!" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "Yarat" @@ -3545,7 +3560,7 @@ msgstr "%s için durum RSS beslemesi" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3558,8 +3573,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3658,7 +3673,7 @@ msgstr "Yer" msgid "Description" msgstr "Abonelikler" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Ä°statistikler" @@ -3743,16 +3758,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3813,7 +3828,7 @@ msgstr "%s için durum RSS beslemesi" msgid "FOAF for %s group" msgstr "%s için durum RSS beslemesi" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 #, fuzzy msgid "Members" msgstr "Ãœyelik baÅŸlangıcı" @@ -3828,12 +3843,12 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "Yarat" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3843,7 +3858,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3852,7 +3867,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3928,8 +3943,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4317,7 +4332,8 @@ msgstr "Ayarlar" msgid "You are not subscribed to that profile." msgstr "Bize o profili yollamadınız" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "Abonelik oluÅŸturulamadı." @@ -4490,10 +4506,6 @@ msgstr "" msgid "No such tag." msgstr "Böyle bir durum mesajı yok." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4795,160 +4807,257 @@ msgstr "KiÅŸisel" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "Geçersiz büyüklük." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Böyle bir durum mesajı yok." -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Kullanıcı güncellenemedi." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Böyle bir durum mesajı yok." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Kullanıcı güncellenemedi." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Avatar bilgisi kaydedilemedi" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Cevap eklenirken veritabanı hatası: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Durum mesajını kaydederken hata oluÅŸtu." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 #, fuzzy msgid "Problem saving notice. Unknown user." msgstr "Durum mesajını kaydederken hata oluÅŸtu." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Durum mesajını kaydederken hata oluÅŸtu." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Durum mesajını kaydederken hata oluÅŸtu." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "Kullanıcının profili yok." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Durum mesajını kaydederken hata oluÅŸtu." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 #, fuzzy msgid "User has blocked you." msgstr "Kullanıcının profili yok." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "Bu kullanıcıyı zaten takip etmiyorsunuz!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Abonelik silinemedi." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Abonelik silinemedi." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Abonelik silinemedi." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 #, fuzzy msgid "Could not create group." msgstr "Avatar bilgisi kaydedilemedi" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Abonelik oluÅŸturulamadı." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "Abonelik oluÅŸturulamadı." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Abonelik oluÅŸturulamadı." @@ -6330,7 +6439,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "" @@ -6385,25 +6494,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Kullanıcı güncellenemedi." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6462,54 +6571,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "İçerik yok!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "Yarat" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 #, fuzzy msgid "Reply" msgstr "cevapla" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "Durum mesajları" @@ -6779,9 +6888,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Dosya yüklemede sistem hatası." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po index 93ef6b48a..73ae72166 100644 --- a/locale/uk/LC_MESSAGES/statusnet.po +++ b/locale/uk/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:17+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:31+0000\n" "Language-Team: Ukrainian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: uk\n" "X-Message-Group: out-statusnet\n" @@ -103,7 +103,7 @@ msgstr "Ðемає такої Ñторінки." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -172,8 +172,8 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" "Ви можете [«розштовхати» %1$s](../%2$s) зі Ñторінки його профілю або [щоÑÑŒ " "йому напиÑати](%%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -182,7 +182,7 @@ msgstr "" #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" "Чому б не [зареєÑтруватиÑÑŒ](%%%%action.register%%%%) Ñ– не Ñпробувати " "«розштовхати» %s або щоÑÑŒ йому напиÑати." @@ -217,7 +217,7 @@ msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %1$s та друзів на %2$s!" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -266,7 +266,7 @@ msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ профіль." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -365,7 +365,7 @@ msgid "Could not delete favorite." msgstr "Ðе можна видалити зі ÑпиÑку обраних." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +msgid "Could not follow user: profile not found." msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ кориÑтувача: кориÑтувача не знайдено." #: actions/apifriendshipscreate.php:118 @@ -381,9 +381,9 @@ msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ підпиÑку: кориÑтуРmsgid "You cannot unfollow yourself." msgstr "Ви не можете відпиÑатиÑÑŒ від Ñамого Ñебе." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Два ID або імені_у_мережі повинні підтримуватиÑÑŒ." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Два ID або імені у мережі мають бути предÑтавлені." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -512,6 +512,10 @@ msgstr "%s групи" msgid "groups on %s" msgstr "групи на %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Збій при завантаженні." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Жодного параметру oauth_token не забезпечено." @@ -657,24 +661,28 @@ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾." msgid "No status with that ID found." msgstr "Ðе знайдено жодних ÑтатуÑів з таким ID." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Клієнт муÑить надати параметр «ÑтатуÑ» зі значеннÑм." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Ðадто довго. МакÑимальний розмір допиÑу — %d знаків." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе знайдено." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" "МакÑимальна довжина допиÑу Ñтановить %d знаків, включно з URL-адреÑою " "вкладеннÑ." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "Формат не підтримуєтьÑÑ." @@ -728,6 +736,10 @@ msgstr "ДопиÑи позначені з %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ– з %1$s на %2$s!" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API метод наразі знаходитьÑÑ Ñƒ розробці." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "Такого Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ”." @@ -780,7 +792,7 @@ msgid "Preview" msgstr "ПереглÑд" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "Видалити" @@ -1059,7 +1071,7 @@ msgid "Do not delete this notice" msgstr "Ðе видалÑти цей допиÑ" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "Видалити допиÑ" @@ -1337,7 +1349,8 @@ msgstr "Помилкове додаткове ім’Ñ: «%s»" msgid "Could not update group." msgstr "Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ групу." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." msgstr "Ðеможна призначити додаткові імена." @@ -2493,7 +2506,7 @@ msgstr "Ð’ÑÑ– Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð° збігом з «%s» на %2$s!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" "Цей кориÑтувач не дозволив Ñебе «розштовхувати», або не підтвердив чи не " "налаштував преференції електронної пошти." @@ -2571,8 +2584,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "URL-адреÑа %s лише в проÑтому HTTP, будь лаÑка." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Такий формат даних не підтримуєтьÑÑ." @@ -2598,7 +2611,7 @@ msgstr " (вільний ÑервіÑ)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ URL-адреÑ" +msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ URL" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." @@ -3481,7 +3494,7 @@ msgstr "Ви не можете повторювати Ñвої влаÑні до msgid "You already repeated that notice." msgstr "Ви вже повторили цей допиÑ." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" msgstr "Повторено" @@ -3519,7 +3532,7 @@ msgstr "Стрічка відповідей до %s (Atom)" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" "Ð¦Ñ Ñтрічка допиÑів міÑтить відповіді Ð´Ð»Ñ %1$s, але %2$s поки що нічого не " "отримав у відповідь." @@ -3536,8 +3549,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" "Ви можете [«розштовхати» %1$s](../%2$s) або [напиÑати дещо варте його уваги](%" "%%%action.newnotice%%%%?status_textarea=%3$s)." @@ -3628,7 +3641,7 @@ msgstr "ОрганізаціÑ" msgid "Description" msgstr "ОпиÑ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтика" @@ -3718,20 +3731,20 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" -"%s поки що не вподобав жодних допиÑів. Може Ви б напиÑали йому щоÑÑŒ " +"%s поки що не вподобав жодного допиÑу. Може Ви б напиÑали йому щоÑÑŒ " "цікаве? :)" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" -"%s поки що не вподобав жодних допиÑів. Чому б не [зареєÑтруватиÑÑŒ](%%%%" +"%s поки що не вподобав жодного допиÑу. Чому б не [зареєÑтруватиÑÑŒ](%%%%" "action.register%%%%) Ñ– не напиÑати щоÑÑŒ цікаве, що мало б ÑподобатиÑÑŒ цьому " "кориÑтувачеві :)" @@ -3791,7 +3804,7 @@ msgstr "Стрічка допиÑів групи %s (Atom)" msgid "FOAF for %s group" msgstr "FOAF Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "УчаÑники" @@ -3805,11 +3818,11 @@ msgstr "(ПуÑто)" msgid "All members" msgstr "Ð’ÑÑ– учаÑники" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Створено" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3825,7 +3838,7 @@ msgstr "" "%%%%) зараз Ñ– долучітьÑÑ Ð´Ð¾ ÑпілкуваннÑ! ([ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ](%%%%doc.help%%%" "%))" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3838,7 +3851,7 @@ msgstr "" "програмному забезпеченні [StatusNet](http://status.net/). Члени цієї групи " "роблÑÑ‚ÑŒ короткі допиÑи про Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° інтереÑи. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Ðдміни" @@ -3915,8 +3928,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" "Ви можете «розштовхати» %1$s або [щоÑÑŒ йому напиÑати](%%%%action.newnotice%%%" "%?status_textarea=%2$s)." @@ -4307,7 +4320,8 @@ msgstr "Зберегти Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑƒ" msgid "You are not subscribed to that profile." msgstr "Ви не підпиÑані до цього профілю." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. 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 "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ підпиÑку." @@ -4485,10 +4499,6 @@ msgstr "СкориÑтайтеÑÑŒ цією формою, щоб додати Ñ‚ msgid "No such tag." msgstr "Такого теґу немає." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API метод наразі знаходитьÑÑ Ñƒ розробці." - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Цього кориÑтувача блокувати неможливо." @@ -4799,80 +4809,127 @@ msgstr "ВерÑÑ–Ñ" msgid "Author(s)" msgstr "Ðвтор(и)" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Ðеможливо обробити URL «%s»" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Робін вважає, що це неможливо." + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" "ÐÑ–, файл не може бути більшим за %d байтів, а те, що Ви хочете надіÑлати, " -"важить %d байтів. Спробуйте меншу верÑÑ–ÑŽ." +"важить %d байтів. Спробуйте завантажити меншу верÑÑ–ÑŽ." -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "Розміри цього файлу перевищують Вашу квоту на %d байтів." -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "Розміри цього файлу перевищують Вашу міÑÑчну квоту на %d байтів." -#: classes/Group_member.php:41 +#. 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 "Ðевірне Ñ–Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¸Ñ”Ð´Ð½Ð°Ñ‚Ð¸ÑÑŒ до групи." -#: classes/Group_member.php:53 +#. 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 "Ðе Ñ” чаÑтиною групи." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." msgstr "Ðе вдалоÑÑ Ð·Ð°Ð»Ð¸ÑˆÐ¸Ñ‚Ð¸ групу." -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." msgstr "Ðе вдаєтьÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ локальну групу." -#: classes/Login_token.php:76 +#. 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 "Ðе вдалоÑÑ Ñтворити токен входу Ð´Ð»Ñ %s" -#: classes/Message.php:45 +#. 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 "Ðемає імені бази даних або DSN ніде не знайдено" + +#. 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 "Вам заборонено надÑилати прÑмі повідомленнÑ." -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Ðе можна долучити повідомленнÑ." -#: classes/Message.php:71 +#. 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 "Ðе можна оновити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· новим 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Ðемає такого профілю (%1$d) Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Помилка бази даних при додаванні хеш-теґу: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." msgstr "Проблема при збереженні допиÑу. Ðадто довге." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 msgid "Problem saving notice. Unknown user." msgstr "Проблема при збереженні допиÑу. Ðевідомий кориÑтувач." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Дуже багато допиÑів за короткий термін; ходіть подихайте повітрÑм Ñ– " "повертайтеÑÑŒ за кілька хвилин." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4880,71 +4937,118 @@ msgstr "" "Дуже багато повідомлень за короткий термін; ходіть подихайте повітрÑм Ñ– " "повертайтеÑÑŒ за кілька хвилин." -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "Вам заборонено надÑилати допиÑи до цього Ñайту." -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Проблема при збереженні допиÑу." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "ЗадаєтьÑÑ Ð½ÐµÐ²Ñ–Ñ€Ð½Ð¸Ð¹ тип Ð´Ð»Ñ saveKnownGroups" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "Ðе вдалоÑÑ ÑкаÑувати роль «%s» Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача #%2$s; не Ñ–Ñнує." + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Ðе вдалоÑÑ ÑкаÑувати роль «%1$s» Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача #%2$s; помилка бази даних." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Загублений профіль." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Ðе вдаєтьÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ теґ." + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "Ð’Ð°Ñ Ð¿Ð¾Ð·Ð±Ð°Ð²Ð»ÐµÐ½Ð¾ можливоÑÑ‚Ñ– підпиÑатиÑÑŒ." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "Вже підпиÑаний!" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "КориÑтувач заблокував ВаÑ." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "Ðе підпиÑано!" -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." msgstr "Ðе можу видалити ÑамопідпиÑку." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 +msgid "Could not delete subscription OMB token." msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ токен підпиÑки OMB." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ підпиÑку." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Вітаємо на %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Ðе вдалоÑÑ Ñтворити нову групу." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Ðе вдалоÑÑ Ð²Ñтановити URI групи." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Ðе вдалоÑÑ Ð²Ñтановити членÑтво." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ інформацію про локальну групу." @@ -6413,7 +6517,7 @@ msgstr "" "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¸ долучити кориÑтувачів до розмови. Такі Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ð°Ñ‡Ð¸Ñ‚Ðµ " "лише Ви." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "від" @@ -6471,24 +6575,24 @@ msgstr "Ð—Ð°Ð¿Ð¸Ñ Ñ„Ð°Ð¹Ð»Ñƒ на диÑк ÑкаÑовано." msgid "File upload stopped by extension." msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ зупинено розширеннÑм." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "Файл перевищив квоту кориÑтувача." -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "Файл не може бути переміщений у директорію призначеннÑ." -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ MIME-тип файлу." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr " Спробуйте викориÑтати інший %s формат." -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "%s не підтримуєтьÑÑ Ñк тип файлів на цьому Ñервері." @@ -6544,51 +6648,51 @@ msgstr "" "чаÑу, ніж очікувалоÑÑŒ; будь лаÑка, Ñпробуйте пізніше" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "Півн." #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "Півд." #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "Сх." #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "Зах." -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "в" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 msgid "in context" msgstr "в контекÑÑ‚Ñ–" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 msgid "Repeated by" msgstr "Повторено" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "ВідповіÑти на цей допиÑ" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "ВідповіÑти" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð¸Ð»Ð¸" @@ -6692,7 +6796,7 @@ msgstr "РеєÑтраціÑ" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "Середньодобове" +msgstr "За добу" #: lib/profileaction.php:264 msgid "All groups" @@ -6846,8 +6950,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "Цей Ñервер не може опрацювати Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐ¼Ð¸ без підтримки ZIP." #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." -msgstr "Завантажити тему не вдалоÑÑ Ð°Ð±Ð¾ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾." +msgid "The theme file is missing or the upload failed." +msgstr "Файл теми відÑутній, або ÑтавÑÑ Ð·Ð±Ñ–Ð¹ при завантаженні." #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po index cc5899b9e..60164da4d 100644 --- a/locale/vi/LC_MESSAGES/statusnet.po +++ b/locale/vi/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Vietnamese # +# Author@translatewiki.net: Minh Nguyen # -- # This file is distributed under the same license as the StatusNet package. # @@ -7,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:22+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:32+0000\n" "Language-Team: Vietnamese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: vi\n" "X-Message-Group: out-statusnet\n" @@ -21,9 +22,8 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration #: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 -#, fuzzy msgid "Access" -msgstr "Chấp nháºn" +msgstr "Truy cáºp" #. TRANS: Page notice #: actions/accessadminpanel.php:67 @@ -33,7 +33,6 @@ msgstr "Thay đổi hình đại diện" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 -#, fuzzy msgid "Registration" msgstr "Äăng ký" @@ -44,7 +43,6 @@ msgstr "" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" msgstr "Riêng tÆ°" @@ -67,9 +65,8 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Ban user" +msgstr "Äóng" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 @@ -84,7 +81,6 @@ msgstr "Thay đổi hình đại diện" #: actions/accessadminpanel.php:203 actions/emailsettings.php:224 #: actions/imsettings.php:184 actions/smssettings.php:209 #: lib/applicationeditform.php:361 -#, fuzzy msgctxt "BUTTON" msgid "Save" msgstr "LÆ°u" @@ -105,7 +101,7 @@ msgstr "Không có tin nhắn nà o." #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -172,22 +168,21 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text #: actions/all.php:182 -#, fuzzy msgid "You and friends" -msgstr "%s và bạn bè" +msgstr "Bạn và bạn bè" #. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name. #. TRANS: Message is used as a subtitle. %1$s is a user nickname, %2$s is a site name. @@ -214,7 +209,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -265,7 +260,7 @@ msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -370,7 +365,7 @@ msgstr "Không thể tạo favorite." #: actions/apifriendshipscreate.php:109 #, fuzzy -msgid "Could not follow user: User not found." +msgid "Could not follow user: profile not found." msgstr "Không thể theo bạn nà y: %s đã có trong danh sách bạn bè của bạn rồi." #: actions/apifriendshipscreate.php:118 @@ -388,8 +383,8 @@ msgstr "Không thể theo bạn nà y: %s đã có trong danh sách bạn bè cá» msgid "You cannot unfollow yourself." msgstr "Không thể cáºp nháºt thà nh viên." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -470,9 +465,8 @@ msgstr "" #: actions/apigroupismember.php:96 actions/apigroupjoin.php:105 #: actions/apigroupleave.php:105 actions/apigroupmembership.php:92 #: actions/apigroupshow.php:83 actions/apitimelinegroup.php:92 -#, fuzzy msgid "Group not found." -msgstr "PhÆ°Æ¡ng thức API không tìm thấy!" +msgstr "Không tìm thấy nhóm." #: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy @@ -522,6 +516,11 @@ msgstr "%s và nhóm" msgid "groups on %s" msgstr "Mã nhóm" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "Tải file" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -606,9 +605,8 @@ msgstr "" #. TRANS: Main menu option when logged in for access to user settings #: actions/apioauthauthorize.php:310 lib/action.php:450 -#, fuzzy msgid "Account" -msgstr "Giá»›i thiệu" +msgstr "Tà i khoản" #: actions/apioauthauthorize.php:313 actions/login.php:252 #: actions/profilesettings.php:106 actions/register.php:431 @@ -668,23 +666,26 @@ msgstr "Hình đại diện đã được cáºp nháºt." msgid "No status with that ID found." msgstr "Không tìm thấy trạng thái nà o tÆ°Æ¡ng ứng vá»›i ID đó." -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Quá dà i. Tối Ä‘a là 140 ký tá»±." -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 -#, fuzzy +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." -msgstr "Không tìm thấy" +msgstr "Không tìm thấy." -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "Không há»— trợ kiểu file ảnh nà y." @@ -739,6 +740,10 @@ msgstr "Thông báo được gắn thẻ %s" msgid "Updates tagged with %1$s on %2$s!" msgstr "Dòng tin nhắn cho %s" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "PhÆ°Æ¡ng thức API dÆ°á»›i cấu trúc có sẵn." + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -795,10 +800,9 @@ msgid "Preview" msgstr "Xem trÆ°á»›c" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 -#, fuzzy +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" -msgstr "Xóa tin nhắn" +msgstr "Xóa" #: actions/avatarsettings.php:166 actions/grouplogo.php:236 msgid "Upload" @@ -841,9 +845,8 @@ msgid "You already blocked that user." msgstr "Bạn đã theo những ngÆ°á»i nà y:" #: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 -#, fuzzy msgid "Block user" -msgstr "Ban user" +msgstr "Chặn ngÆ°á»i dùng" #: actions/block.php:138 msgid "" @@ -1091,7 +1094,7 @@ msgid "Do not delete this notice" msgstr "Không thể xóa tin nhắn nà y." #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 #, fuzzy msgid "Delete this notice" msgstr "Xóa tin nhắn" @@ -1401,7 +1404,8 @@ msgstr "Trang chủ '%s' không hợp lệ" msgid "Could not update group." msgstr "Không thể cáºp nháºt thà nh viên." -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "Không thể tạo favorite." @@ -2614,7 +2618,7 @@ msgstr "Các thay đổi phù hợp vá»›i từ \"%s\"" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2694,8 +2698,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "Không há»— trợ định dạng dữ liệu nà y." @@ -3625,7 +3629,7 @@ msgstr "Bạn không thể đăng ký nếu không đồng ý các Ä‘iá»u khoẠmsgid "You already repeated that notice." msgstr "Bạn đã theo những ngÆ°á»i nà y:" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "Tạo" @@ -3665,7 +3669,7 @@ msgstr "Dòng tin nhắn cho %s" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3678,8 +3682,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3778,7 +3782,7 @@ msgstr "ThÆ° má»i đã gá»i" msgid "Description" msgstr "Mô tả" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Số liệu thống kê" @@ -3864,16 +3868,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3935,7 +3939,7 @@ msgstr "Dòng tin nhắn cho %s" msgid "FOAF for %s group" msgstr "Há»™p thÆ° Ä‘i của %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Thà nh viên" @@ -3950,12 +3954,12 @@ msgstr "" msgid "All members" msgstr "Thà nh viên" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "Tạo" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3965,7 +3969,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3974,7 +3978,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -4051,8 +4055,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4458,7 +4462,8 @@ msgstr "Thay đổi hình đại diện" msgid "You are not subscribed to that profile." msgstr "Bạn chÆ°a cáºp nháºt thông tin riêng" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "Không thể tạo đăng nháºn." @@ -4632,10 +4637,6 @@ msgstr "" msgid "No such tag." msgstr "Không có tin nhắn nà o." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "PhÆ°Æ¡ng thức API dÆ°á»›i cấu trúc có sẵn." - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4946,163 +4947,260 @@ msgstr "Cá nhân" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "KÃch thÆ°á»›c không hợp lệ." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "Thông tin nhóm" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "Không thể cáºp nháºt thà nh viên." -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "Thông tin nhóm" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "Không thể cáºp nháºt thà nh viên." -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "Không thể tạo favorite." -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "ThÆ° bạn đã gá»i" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 #, fuzzy msgid "Could not insert message." msgstr "Không thể chèn thêm và o đăng nháºn." -#: classes/Message.php:71 +#. TRANS: Message given when a message could not be updated on the server. +#: classes/Message.php:74 #, fuzzy msgid "Could not update message with new URI." msgstr "Không thể cáºp nháºt thông tin user vá»›i địa chỉ email đã được xác nháºn." +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Lá»—i cÆ¡ sở dữ liệu khi chèn trả lá»i: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 #, fuzzy msgid "Problem saving notice. Unknown user." msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." #. 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%s (%s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "NgÆ°á»i dùng không có thông tin." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Không thể lÆ°u thông tin Twitter của bạn!" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 #, fuzzy msgid "User has blocked you." msgstr "NgÆ°á»i dùng không có thông tin." -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "ChÆ°a đăng nháºn!" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "Không thể xóa đăng nháºn." -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "Không thể xóa đăng nháºn." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "Không thể xóa đăng nháºn." -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, fuzzy, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "%s chà o mừng bạn " -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 #, fuzzy msgid "Could not create group." msgstr "Không thể tạo favorite." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "Không thể tạo đăng nháºn." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "Không thể tạo đăng nháºn." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "Không thể tạo đăng nháºn." @@ -6553,7 +6651,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr " từ " @@ -6610,25 +6708,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "Không thể lấy lại các tin nhắn Æ°a thÃch" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6688,55 +6786,55 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "Không" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "Không có ná»™i dung!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "Tạo" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 #, fuzzy msgid "Reply to this notice" msgstr "Trả lá»i tin nhắn nà y" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "Trả lá»i" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "Tin đã gá»i" @@ -7018,9 +7116,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "Hệ thống xảy ra lá»—i trong khi tải file." +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po index d9afdf9e9..bd331de65 100644 --- a/locale/zh_CN/LC_MESSAGES/statusnet.po +++ b/locale/zh_CN/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Simplified Chinese # +# Author@translatewiki.net: Chenxiaoqino # Author@translatewiki.net: Shizhao # -- # Messages of identi.ca @@ -10,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:26+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:34+0000\n" "Language-Team: Simplified Chinese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hans\n" "X-Message-Group: out-statusnet\n" @@ -108,7 +109,7 @@ msgstr "没有该页é¢" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -175,15 +176,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -216,7 +217,7 @@ msgstr "æ¥è‡ª%2$s 上 %1$s 和好å‹çš„æ›´æ–°ï¼" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -267,7 +268,7 @@ msgstr "æ— æ³•ä¿å˜ä¸ªäººä¿¡æ¯ã€‚" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -368,7 +369,8 @@ msgid "Could not delete favorite." msgstr "æ— æ³•åˆ é™¤æ”¶è—。" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼šæœªæ‰¾åˆ°ã€‚" #: actions/apifriendshipscreate.php:118 @@ -386,8 +388,9 @@ msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼šæœªæ‰¾åˆ°ã€‚" msgid "You cannot unfollow yourself." msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +#, fuzzy +msgid "Two valid IDs or screen_names must be supplied." msgstr "å¿…é¡»æ供两个用户å¸å·æˆ–昵称。" #: actions/apifriendshipsshow.php:134 @@ -435,7 +438,7 @@ msgstr "å…¨å过长(ä¸èƒ½è¶…过 255 个å—符)。" #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." -msgstr "æ述过长(ä¸èƒ½è¶…过140å—符)。" +msgstr "æ述过长(ä¸èƒ½è¶…过%d 个å—符)。" #: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 @@ -447,7 +450,7 @@ msgstr "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个å—符)。" #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." -msgstr "" +msgstr "太多化å了ï¼æœ€å¤š%d 个。" #: actions/apigroupcreate.php:267 #, fuzzy, php-format @@ -458,19 +461,18 @@ msgstr "主页'%s'ä¸æ£ç¡®" #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." -msgstr "昵称已被使用,æ¢ä¸€ä¸ªå§ã€‚" +msgstr "昵称%s已被使用,æ¢ä¸€ä¸ªå§ã€‚" #: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." -msgstr "" +msgstr "昵称ä¸èƒ½å’ŒåŒ–å相åŒã€‚" #: actions/apigroupismember.php:96 actions/apigroupjoin.php:105 #: actions/apigroupleave.php:105 actions/apigroupmembership.php:92 #: actions/apigroupshow.php:83 actions/apitimelinegroup.php:92 -#, fuzzy msgid "Group not found." -msgstr "API 方法未实现ï¼" +msgstr "å°ç»„未找到。" #: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy @@ -520,6 +522,11 @@ msgstr "%s 群组" msgid "groups on %s" msgstr "组动作" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ä¸Šä¼ " + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -666,23 +673,27 @@ msgstr "头åƒå·²æ›´æ–°ã€‚" msgid "No status with that ID found." msgstr "没有找到æ¤IDçš„ä¿¡æ¯ã€‚" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, fuzzy, php-format msgid "That's too long. Max notice size is %d chars." msgstr "超出长度é™åˆ¶ã€‚ä¸èƒ½è¶…过 140 个å—符。" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "未找到" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 #, fuzzy msgid "Unsupported format." msgstr "ä¸æ”¯æŒè¿™ç§å›¾åƒæ ¼å¼ã€‚" @@ -737,6 +748,10 @@ msgstr "带 %s æ ‡ç¾çš„通告" msgid "Updates tagged with %1$s on %2$s!" msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API 方法尚未实现。" + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -791,7 +806,7 @@ msgid "Preview" msgstr "预览" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 #, fuzzy msgid "Delete" msgstr "åˆ é™¤" @@ -1089,7 +1104,7 @@ msgid "Do not delete this notice" msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 #, fuzzy msgid "Delete this notice" msgstr "åˆ é™¤é€šå‘Š" @@ -1391,7 +1406,8 @@ msgstr "主页'%s'ä¸æ£ç¡®" msgid "Could not update group." msgstr "æ— æ³•æ›´æ–°ç»„" -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "æ— æ³•åˆ›å»ºæ”¶è—。" @@ -2566,8 +2582,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!" msgstr "所有匹é…æœç´¢æ¡ä»¶\"%s\"的消æ¯" #: actions/nudge.php:85 +#, fuzzy msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "æ¤ç”¨æˆ·ä¸å…许振铃呼å«æˆ–者还没有确认或设置TA的电å邮件。" #: actions/nudge.php:94 @@ -2646,8 +2663,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "ä¸æ”¯æŒçš„æ•°æ®æ ¼å¼ã€‚" @@ -3561,7 +3578,7 @@ msgstr "您必须åŒæ„æ¤æŽˆæƒæ–¹å¯æ³¨å†Œã€‚" msgid "You already repeated that notice." msgstr "您已æˆåŠŸé˜»æ¢è¯¥ç”¨æˆ·ï¼š" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "创建" @@ -3601,7 +3618,7 @@ msgstr "%s 的通告èšåˆ" #, fuzzy, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "这是 %s 和好å‹çš„时间线,但是没有任何人å‘布内容。" #: actions/replies.php:204 @@ -3614,8 +3631,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3715,7 +3732,7 @@ msgstr "分页" msgid "Description" msgstr "æè¿°" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "统计" @@ -3801,16 +3818,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3871,7 +3888,7 @@ msgstr "%s 的通告èšåˆ" msgid "FOAF for %s group" msgstr "%s çš„å‘件箱" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 #, fuzzy msgid "Members" msgstr "注册于" @@ -3886,12 +3903,12 @@ msgstr "(没有)" msgid "All members" msgstr "所有æˆå‘˜" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "创建" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3901,7 +3918,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, fuzzy, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3912,7 +3929,7 @@ msgstr "" "**%s** 是一个 %%%%site.name%%%% 的用户组,一个微åšå®¢æœåŠ¡ [micro-blogging]" "(http://en.wikipedia.org/wiki/Micro-blogging)" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 #, fuzzy msgid "Admins" msgstr "admin管ç†å‘˜" @@ -3989,8 +4006,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4389,7 +4406,8 @@ msgstr "头åƒè®¾ç½®" msgid "You are not subscribed to that profile." msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" @@ -4564,10 +4582,6 @@ msgstr "ä½¿ç”¨è¿™ä¸ªè¡¨æ ¼ç»™ä½ çš„å…³æ³¨è€…æˆ–ä½ çš„è®¢é˜…åŠ æ³¨æ ‡ç¾ã€‚" msgid "No such tag." msgstr "未找到æ¤æ¶ˆæ¯ã€‚" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API 方法尚未实现。" - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4876,162 +4890,259 @@ msgstr "个人" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "大å°ä¸æ£ç¡®ã€‚" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "组资料" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "æ— æ³•æ›´æ–°ç»„" -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "组资料" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "æ— æ³•æ›´æ–°ç»„" -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "æ— æ³•åˆ›å»ºæ”¶è—。" -#: classes/Message.php:45 +#. 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 "" + +#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them. +#: classes/Message.php:46 #, fuzzy msgid "You are banned from sending direct messages." msgstr "å‘é€æ¶ˆæ¯å‡ºé”™ã€‚" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "æ— æ³•æ·»åŠ ä¿¡æ¯ã€‚" -#: classes/Message.php:71 +#. 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 "æ— æ³•æ·»åŠ æ–°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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "æ·»åŠ æ ‡ç¾æ—¶æ•°æ®åº“出错:%s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "ä¿å˜é€šå‘Šæ—¶å‡ºé”™ã€‚" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 #, fuzzy msgid "Problem saving notice. Unknown user." msgstr "ä¿å˜é€šå‘Šæ—¶å‡ºé”™ã€‚" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "ä½ åœ¨çŸæ—¶é—´é‡Œå‘布了过多的消æ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ 分钟å†å‘消æ¯ã€‚" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 #, fuzzy msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "ä½ åœ¨çŸæ—¶é—´é‡Œå‘布了过多的消æ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ 分钟å†å‘消æ¯ã€‚" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "åœ¨è¿™ä¸ªç½‘ç«™ä½ è¢«ç¦æ¢å‘布消æ¯ã€‚" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "ä¿å˜é€šå‘Šæ—¶å‡ºé”™ã€‚" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, fuzzy, php-format msgid "RT @%1$s %2$s" msgstr "%1$s (%2$s)" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "用户没有个人信æ¯ã€‚" + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "æ— æ³•ä¿å˜ Twitter 设置ï¼" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 #, fuzzy msgid "You have been banned from subscribing." msgstr "那个用户阻æ¢äº†ä½ 的订阅。" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 #, fuzzy msgid "User has blocked you." msgstr "用户没有个人信æ¯ã€‚" -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "未订阅ï¼" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, fuzzy, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "å‘é€ç»™ %1$s çš„ %2$s 消æ¯" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "æ— æ³•åˆ›å»ºç»„ã€‚" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" @@ -6430,7 +6541,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 #, fuzzy msgid "from" msgstr " 从 " @@ -6486,25 +6597,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "æ— æ³•èŽ·å–收è—的通告。" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6564,56 +6675,56 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 #, fuzzy msgid "N" msgstr "å¦" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "没有内容ï¼" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "创建" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 #, fuzzy msgid "Reply to this notice" msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 #, fuzzy msgid "Reply" msgstr "回å¤" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "消æ¯å·²å‘布。" @@ -6890,9 +7001,8 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -#, fuzzy -msgid "Theme upload missing or failed." -msgstr "ä¸Šä¼ æ–‡ä»¶æ—¶å‡ºé”™ã€‚" +msgid "The theme file is missing or the upload failed." +msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 #: lib/themeuploader.php:253 lib/themeuploader.php:257 diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po index e002fd55d..1e5b44ae6 100644 --- a/locale/zh_TW/LC_MESSAGES/statusnet.po +++ b/locale/zh_TW/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-16 22:18+0000\n" -"PO-Revision-Date: 2010-06-21 18:05:30+0000\n" +"POT-Creation-Date: 2010-08-03 13:21+0000\n" +"PO-Revision-Date: 2010-08-03 13:22:35+0000\n" "Language-Team: Traditional Chinese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n" +"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hant\n" "X-Message-Group: out-statusnet\n" @@ -102,7 +102,7 @@ msgstr "ç„¡æ¤é€šçŸ¥" #: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113 #: actions/apigroupismember.php:91 actions/apigroupjoin.php:100 #: actions/apigroupleave.php:100 actions/apigrouplist.php:73 -#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87 +#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87 #: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174 #: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80 #: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75 @@ -169,15 +169,15 @@ msgstr "" #: actions/all.php:146 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211 #, php-format msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " -"post a notice to his or her attention." +"post a notice to them." msgstr "" #. TRANS: H1 text @@ -211,7 +211,7 @@ msgstr "" #: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141 #: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111 #: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271 -#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175 +#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175 #: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241 #: actions/apitimelineretweetedtome.php:121 #: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 @@ -262,7 +262,7 @@ msgstr "無法儲å˜å€‹äººè³‡æ–™" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257 +#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257 #: actions/designadminpanel.php:123 actions/editapplication.php:118 #: actions/newapplication.php:101 actions/newnotice.php:94 #: lib/designsettings.php:283 @@ -360,8 +360,9 @@ msgid "Could not delete favorite." msgstr "" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #: actions/apifriendshipscreate.php:118 #, php-format @@ -378,8 +379,8 @@ msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" msgid "You cannot unfollow yourself." msgstr "無法更新使用者" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -511,6 +512,11 @@ msgstr "" msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "ç„¡æ¤é€šçŸ¥" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -657,23 +663,27 @@ msgstr "更新個人圖åƒ" msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:241 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:155 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" -#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "ç›®å‰ç„¡è«‹æ±‚" -#: actions/apistatusesupdate.php:305 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "" @@ -727,6 +737,10 @@ msgstr "" msgid "Updates tagged with %1$s on %2$s!" msgstr "&s的微型部è½æ ¼" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" + #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." @@ -781,7 +795,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:648 +#: lib/deleteuserform.php:66 lib/noticelist.php:656 msgid "Delete" msgstr "" @@ -1071,7 +1085,7 @@ msgid "Do not delete this notice" msgstr "ç„¡æ¤é€šçŸ¥" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:648 +#: actions/deletenotice.php:158 lib/noticelist.php:656 msgid "Delete this notice" msgstr "" @@ -1366,7 +1380,8 @@ msgstr "個人首é 連çµ%s無效" msgid "Could not update group." msgstr "無法更新使用者" -#: actions/editgroup.php:264 classes/User_group.php:496 +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 #, fuzzy msgid "Could not create aliases." msgstr "無法å˜å–個人圖åƒè³‡æ–™" @@ -2477,7 +2492,7 @@ msgstr "æ‰€æœ‰ç¬¦åˆ \"%s\"çš„æ›´æ–°" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2554,8 +2569,8 @@ msgid "Only %s URLs over plain HTTP please." msgstr "" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179 -#: lib/apiaction.php:1208 lib/apiaction.php:1325 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 msgid "Not a supported data format." msgstr "" @@ -3432,7 +3447,7 @@ msgstr "" msgid "You already repeated that notice." msgstr "ç„¡æ¤ä½¿ç”¨è€…" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 #, fuzzy msgid "Repeated" msgstr "新增" @@ -3472,7 +3487,7 @@ msgstr "發é€çµ¦%s好å‹çš„訂閱" #, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" #: actions/replies.php:204 @@ -3485,8 +3500,8 @@ msgstr "" #: actions/replies.php:206 #, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/repliesrss.php:72 @@ -3582,7 +3597,7 @@ msgstr "地點" msgid "Description" msgstr "所有訂閱" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "" @@ -3667,16 +3682,16 @@ msgstr "" #: actions/showfavorites.php:208 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" +"%s hasn't added any favorite notices yet. Post something interesting they " +"would add to their favorites :)" msgstr "" #: actions/showfavorites.php:212 #, php-format msgid "" -"%s hasn't added any notices to his favorites yet. Why not [register an " -"account](%%%%action.register%%%%) and then post something interesting they " -"would add to their favorites :)" +"%s hasn't added any favorite notices yet. Why not [register an account](%%%%" +"action.register%%%%) and then post something interesting they would add to " +"their favorites :)" msgstr "" #: actions/showfavorites.php:243 @@ -3736,7 +3751,7 @@ msgstr "" msgid "FOAF for %s group" msgstr "ç„¡æ¤é€šçŸ¥" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 #, fuzzy msgid "Members" msgstr "ä½•æ™‚åŠ å…¥æœƒå“¡çš„å‘¢ï¼Ÿ" @@ -3751,12 +3766,12 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" msgstr "新增" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3766,7 +3781,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3775,7 +3790,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3851,8 +3866,8 @@ msgstr "" #: actions/showstream.php:207 #, php-format msgid "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:243 @@ -4235,7 +4250,8 @@ msgstr "線上å³æ™‚通è¨å®š" msgid "You are not subscribed to that profile." msgstr "" -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 #, fuzzy msgid "Could not save subscription." msgstr "註冊失敗" @@ -4407,10 +4423,6 @@ msgstr "" msgid "No such tag." msgstr "ç„¡æ¤é€šçŸ¥" -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 #, fuzzy msgid "You haven't blocked that user." @@ -4703,159 +4715,256 @@ msgstr "地點" msgid "Author(s)" msgstr "" -#: classes/File.php:185 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "" + +#. TRANS: Message given if an upload is larger than the configured maximum. +#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file. +#: classes/File.php:190 #, php-format msgid "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. " +"Try to upload a smaller version." msgstr "" -#: classes/File.php:195 +#. TRANS: Message given if an upload would exceed user quota. +#. TRANS: %d (number) is the user quota in bytes. +#: classes/File.php:202 #, php-format msgid "A file this large would exceed your user quota of %d bytes." msgstr "" -#: classes/File.php:202 +#. TRANS: Message given id an upload would exceed a user's monthly quota. +#. TRANS: $d (number) is the monthly user quota in bytes. +#: classes/File.php:211 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." msgstr "" -#: classes/Group_member.php:41 +#. TRANS: Client exception thrown if a file upload does not have a valid name. +#: classes/File.php:248 classes/File.php:263 +#, fuzzy +msgid "Invalid filename." +msgstr "尺寸錯誤" + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 #, fuzzy msgid "Group join failed." msgstr "ç„¡æ¤é€šçŸ¥" -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 #, fuzzy msgid "Not part of group." msgstr "無法更新使用者" -#: classes/Group_member.php:60 +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 #, fuzzy msgid "Group leave failed." msgstr "ç„¡æ¤é€šçŸ¥" -#: classes/Local_group.php:41 +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 #, fuzzy msgid "Could not update local group." msgstr "無法更新使用者" -#: classes/Login_token.php:76 +#. 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 #, fuzzy, php-format msgid "Could not create login token for %s" msgstr "無法å˜å–個人圖åƒè³‡æ–™" -#: classes/Message.php:45 +#. 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 "" + +#. 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 "" -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "" -#: classes/Message.php:71 +#. 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 "" +#. 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). +#: classes/Notice.php:98 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "" + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:182 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "å¢žåŠ å›žè¦†æ™‚,資料庫發生錯誤: %s" -#: classes/Notice.php:251 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 #, fuzzy msgid "Problem saving notice. Too long." msgstr "儲å˜ä½¿ç”¨è€…發生錯誤" -#: classes/Notice.php:255 +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:265 #, fuzzy msgid "Problem saving notice. Unknown user." msgstr "儲å˜ä½¿ç”¨è€…發生錯誤" -#: classes/Notice.php:260 +#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame. +#: classes/Notice.php:271 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:278 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:272 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:338 classes/Notice.php:364 +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:353 classes/Notice.php:380 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:973 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:892 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 #, fuzzy msgid "Problem saving group inbox." 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. -#: classes/Notice.php:1564 +#: classes/Notice.php:1614 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:740 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" + +#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query. +#. TRANS: %1$s is the role name, %2$s is the user ID (number). +#: classes/Profile.php:749 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +#, fuzzy +msgid "Missing profile." +msgstr "ç„¡æ¤é€šçŸ¥" + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "新訊æ¯" + +#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing. +#: classes/Subscription.php:75 lib/oauthstore.php:465 msgid "You have been banned from subscribing." msgstr "" -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" msgstr "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "" -#: classes/Subscription.php:167 +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 #, fuzzy msgid "Not subscribed!" msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" -#: classes/Subscription.php:173 +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 #, fuzzy -msgid "Couldn't delete self-subscription." +msgid "Could not delete self-subscription." msgstr "無法刪除帳號" -#: classes/Subscription.php:200 +#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server. +#: classes/Subscription.php:206 #, fuzzy -msgid "Couldn't delete subscription OMB token." +msgid "Could not delete subscription OMB token." msgstr "無法刪除帳號" -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." msgstr "無法刪除帳號" -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 #, fuzzy msgid "Could not create group." msgstr "無法å˜å–個人圖åƒè³‡æ–™" -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 #, fuzzy msgid "Could not set group URI." msgstr "註冊失敗" -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 #, fuzzy msgid "Could not set group membership." msgstr "註冊失敗" -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 #, fuzzy msgid "Could not save local group info." msgstr "註冊失敗" @@ -6214,7 +6323,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "" @@ -6269,25 +6378,25 @@ msgstr "" msgid "File upload stopped by extension." msgstr "" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." msgstr "" -#: lib/mediafile.php:196 lib/mediafile.php:233 +#: lib/mediafile.php:197 lib/mediafile.php:234 msgid "File could not be moved to destination directory." msgstr "" -#: lib/mediafile.php:201 lib/mediafile.php:237 +#: lib/mediafile.php:202 lib/mediafile.php:238 #, fuzzy msgid "Could not determine file's MIME type." msgstr "無法更新使用者" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6345,53 +6454,53 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" msgstr "" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" msgstr "" -#: lib/noticelist.php:438 +#: lib/noticelist.php:444 #, php-format msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "" -#: lib/noticelist.php:559 +#: lib/noticelist.php:567 #, fuzzy msgid "in context" msgstr "無內容" -#: lib/noticelist.php:594 +#: lib/noticelist.php:602 #, fuzzy msgid "Repeated by" msgstr "新增" -#: lib/noticelist.php:621 +#: lib/noticelist.php:629 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" msgstr "" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 #, fuzzy msgid "Notice repeated" msgstr "更新個人圖åƒ" @@ -6658,7 +6767,7 @@ msgid "This server cannot handle theme uploads without ZIP support." msgstr "" #: lib/themeuploader.php:58 lib/themeuploader.php:61 -msgid "Theme upload missing or failed." +msgid "The theme file is missing or the upload failed." msgstr "" #: lib/themeuploader.php:91 lib/themeuploader.php:102 diff --git a/plugins/Adsense/AdsensePlugin.php b/plugins/Adsense/AdsensePlugin.php index ab2b9a6fb..cd6fc3503 100644 --- a/plugins/Adsense/AdsensePlugin.php +++ b/plugins/Adsense/AdsensePlugin.php @@ -83,6 +83,21 @@ class AdsensePlugin extends UAPPlugin public $adScript = 'http://pagead2.googlesyndication.com/pagead/show_ads.js'; public $client = null; + function initialize() + { + parent::initialize(); + + // A little bit of chicanery so we avoid overwriting values that + // are passed in with the constructor + + foreach (array('mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper', 'adScript', 'client') as $setting) { + $value = common_config('adsense', strtolower($setting)); + if (!empty($value)) { // not found + $this->$setting = $value; + } + } + } + /** * Show a medium rectangle 'ad' * @@ -157,4 +172,37 @@ class AdsensePlugin extends UAPPlugin $action->script($this->adScript); } + + function onRouterInitialized($m) + { + $m->connect('admin/adsense', + array('action' => 'adsenseadminpanel')); + + return true; + } + + function onAutoload($cls) + { + $dir = dirname(__FILE__); + + switch ($cls) + { + case 'AdsenseadminpanelAction': + require_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; + return false; + default: + return true; + } + } + + function onEndAdminPanelNav($menu) { + if (AdminPanelAction::canAdmin('adsense')) { + // TRANS: Menu item title/tooltip + $menu_title = _('Adsense configuration'); + // TRANS: Menu item for site administration + $menu->out->menuItem(common_local_url('adsenseadminpanel'), _('Adsense'), + $menu_title, $action_name == 'adsenseadminpanel', 'nav_adsense_admin_panel'); + } + return true; + } }
\ No newline at end of file diff --git a/plugins/Adsense/adsenseadminpanel.php b/plugins/Adsense/adsenseadminpanel.php new file mode 100644 index 000000000..7b99cf805 --- /dev/null +++ b/plugins/Adsense/adsenseadminpanel.php @@ -0,0 +1,223 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Adsense 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 Adsense + * @package StatusNet + * @author Evan Prodromou <evan@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); +} + +/** + * Administer adsense settings + * + * @category Adsense + * @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/ + */ + +class AdsenseadminpanelAction extends AdminPanelAction +{ + /** + * Returns the page title + * + * @return string page title + */ + + function title() + { + return _('Adsense'); + } + + /** + * Instructions for using this form. + * + * @return string instructions + */ + + function getInstructions() + { + return _('Adsense settings for this StatusNet site'); + } + + /** + * Show the site admin panel form + * + * @return void + */ + + function showForm() + { + $form = new AdsenseAdminPanelForm($this); + $form->show(); + return; + } + + /** + * Save settings from the form + * + * @return void + */ + + function saveSettings() + { + static $settings = array('adsense' => array('adScript', 'client', 'mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper')); + + $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; + } + + function validate(&$values) + { + } +} + +/** + * Form for the adsense admin panel + */ + +class AdsenseAdminPanelForm extends AdminForm +{ + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'form_adsense_admin_panel'; + } + + /** + * class of the form + * + * @return string class of the form + */ + + function formClass() + { + return 'form_adsense'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('adsenseadminpanel'); + } + + /** + * Data elements of the form + * + * @return void + */ + + function formData() + { + $this->out->elementStart('fieldset', array('id' => 'adsense_admin')); + $this->out->elementStart('ul', 'form_data'); + $this->li(); + $this->input('client', + _('Client ID'), + _('Google client ID'), + 'adsense'); + $this->unli(); + $this->li(); + $this->input('adScript', + _('Ad Script URL'), + _('Script URL (advanced)'), + 'adsense'); + $this->unli(); + $this->li(); + $this->input('mediumRectangle', + _('Medium rectangle'), + _('Medium rectangle slot code'), + 'adsense'); + $this->unli(); + $this->li(); + $this->input('rectangle', + _('Rectangle'), + _('Rectangle slot code'), + 'adsense'); + $this->unli(); + $this->li(); + $this->input('leaderboard', + _('Leaderboard'), + _('Leaderboard slot code'), + 'adsense'); + $this->unli(); + $this->li(); + $this->input('wideSkyscraper', + _('Skyscraper'), + _('Wide skyscraper slot code'), + 'adsense'); + $this->unli(); + $this->out->elementEnd('ul'); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit('submit', _('Save'), 'submit', null, _('Save AdSense settings')); + } +} diff --git a/plugins/Aim/AimPlugin.php b/plugins/Aim/AimPlugin.php new file mode 100644 index 000000000..30da1dbc7 --- /dev/null +++ b/plugins/Aim/AimPlugin.php @@ -0,0 +1,169 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2009, StatusNet, Inc. + * + * Send and receive notices using the AIM network + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category IM + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @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); +} +// We bundle the phptoclib library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/phptoclib'); + +/** + * Plugin for AIM + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class AimPlugin extends ImPlugin +{ + public $user = null; + public $password = null; + public $publicFeed = array(); + + public $transport = 'aim'; + + function getDisplayName() + { + return _m('AIM'); + } + + function normalize($screenname) + { + $screenname = str_replace(" ","", $screenname); + return strtolower($screenname); + } + + function daemon_screenname() + { + return $this->user; + } + + function validate($screenname) + { + if(preg_match('/^[a-z]\w{2,15}$/i', $screenname)) { + return true; + }else{ + return false; + } + } + + /** + * Load related modules when needed + * + * @param string $cls Name of the class to be loaded + * + * @return boolean hook value; true means continue processing, false means stop. + */ + function onAutoload($cls) + { + $dir = dirname(__FILE__); + + switch ($cls) + { + case 'Aim': + require_once(INSTALLDIR.'/plugins/Aim/extlib/phptoclib/aimclassw.php'); + return false; + case 'AimManager': + include_once $dir . '/'.strtolower($cls).'.php'; + return false; + case 'Fake_Aim': + include_once $dir . '/'. $cls .'.php'; + return false; + default: + return true; + } + } + + function onStartImDaemonIoManagers(&$classes) + { + parent::onStartImDaemonIoManagers(&$classes); + $classes[] = new AimManager($this); // handles sending/receiving + return true; + } + + function microiduri($screenname) + { + return 'aim:' . $screenname; + } + + function send_message($screenname, $body) + { + $this->fake_aim->sendIm($screenname, $body); + $this->enqueue_outgoing_raw($this->fake_aim->would_be_sent); + return true; + } + + /** + * Accept a queued input message. + * + * @return true if processing completed, false if message should be reprocessed + */ + function receive_raw_message($message) + { + $info=Aim::getMessageInfo($message); + $from = $info['from']; + $user = $this->get_user($from); + $notice_text = $info['message']; + + $this->handle_incoming($from, $notice_text); + + return true; + } + + function initialize(){ + if(!isset($this->user)){ + throw new Exception("must specify a user"); + } + if(!isset($this->password)){ + throw new Exception("must specify a password"); + } + + $this->fake_aim = new Fake_Aim($this->user,$this->password,4); + return true; + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'AIM', + 'version' => STATUSNET_VERSION, + 'author' => 'Craig Andrews', + 'homepage' => 'http://status.net/wiki/Plugin:AIM', + 'rawdescription' => + _m('The AIM plugin allows users to send and receive notices over the AIM network.')); + return true; + } +} + diff --git a/plugins/Aim/Fake_Aim.php b/plugins/Aim/Fake_Aim.php new file mode 100644 index 000000000..139b68f82 --- /dev/null +++ b/plugins/Aim/Fake_Aim.php @@ -0,0 +1,43 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Instead of sending AIM messages, retrieve the raw data that would be sent + * + * 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 Network + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @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') && !defined('LACONICA')) { + exit(1); +} + +class Fake_Aim extends Aim +{ + public $would_be_sent = null; + + function sflapSend($sflap_type, $sflap_data, $no_null, $formatted) + { + $this->would_be_sent = array($sflap_type, $sflap_data, $no_null, $formatted); + } +} + diff --git a/plugins/Aim/README b/plugins/Aim/README new file mode 100644 index 000000000..7d486a036 --- /dev/null +++ b/plugins/Aim/README @@ -0,0 +1,27 @@ +The AIM plugin allows users to send and receive notices over the AIM network. + +Installation +============ +add "addPlugin('aim', + array('setting'=>'value', 'setting2'=>'value2', ...);" +to the bottom of your config.php + +scripts/imdaemon.php included with StatusNet must be running. It will be started by +the plugin along with their other daemons when you run scripts/startdaemons.sh. +See the StatusNet README for more about queuing and daemons. + +Settings +======== +user*: username (screenname) to use when logging into AIM +password*: password for that user + +* required +default values are in (parenthesis) + +Example +======= +addPlugin('aim', array( + 'user=>'...', + 'password'=>'...' +)); + diff --git a/plugins/Aim/aimmanager.php b/plugins/Aim/aimmanager.php new file mode 100644 index 000000000..d9b7421fb --- /dev/null +++ b/plugins/Aim/aimmanager.php @@ -0,0 +1,100 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * AIM background connection manager for AIM-using queue handlers, + * allowing them to send outgoing messages on the right connection. + * + * Input is handled during socket select loop, keepalive pings during idle. + * Any incoming messages will be handled. + * + * In a multi-site queuedaemon.php run, one connection will be instantiated + * for each site being handled by the current process that has XMPP enabled. + */ + +class AimManager extends ImManager +{ + + public $conn = null; + /** + * Initialize connection to server. + * @return boolean true on success + */ + public function start($master) + { + if(parent::start($master)) + { + $this->connect(); + return true; + }else{ + return false; + } + } + + public function getSockets() + { + $this->connect(); + if($this->conn){ + return array($this->conn->myConnection); + }else{ + return array(); + } + } + + /** + * Process AIM events that have come in over the wire. + * @param resource $socket + */ + public function handleInput($socket) + { + common_log(LOG_DEBUG, "Servicing the AIM queue."); + $this->stats('aim_process'); + $this->conn->receive(); + } + + function connect() + { + if (!$this->conn) { + $this->conn=new Aim($this->plugin->user,$this->plugin->password,4); + $this->conn->registerHandler("IMIn",array($this,"handle_aim_message")); + $this->conn->myServer="toc.oscar.aol.com"; + $this->conn->signon(); + $this->conn->setProfile(_m('Send me a message to post a notice'),false); + } + return $this->conn; + } + + function handle_aim_message($data) + { + $this->plugin->enqueue_incoming_raw($data); + return true; + } + + function send_raw_message($data) + { + $this->connect(); + if (!$this->conn) { + return false; + } + $this->conn->sflapSend($data[0],$data[1],$data[2],$data[3]); + return true; + } +} diff --git a/plugins/Aim/extlib/phptoclib/README.txt b/plugins/Aim/extlib/phptoclib/README.txt new file mode 100755 index 000000000..0eec13af8 --- /dev/null +++ b/plugins/Aim/extlib/phptoclib/README.txt @@ -0,0 +1,169 @@ +phpTOCLib version 1.0 RC1
+
+This is released under the LGPL. AIM,TOC,OSCAR, and all other related protocols/terms are
+copyright AOL/Time Warner. This project is in no way affiliated with them, nor is this
+project supported by them.
+
+Some of the code is loosely based off of a script by Jeffrey Grafton. Mainly the decoding of packets, and the
+function for roasting passwords is entirly his.
+
+TOC documentation used is available at http://simpleaim.sourceforge.net/docs/TOC.txt
+
+
+About:
+phpTOCLib aims to be a PHP equivalent to the PERL module NET::AIM. Due to some limitations,
+this is difficult. Many features have been excluded in the name of simplicity, and leaves
+you alot of room to code with externally, providing function access to the variables that
+need them.
+
+I have aimed to make this extensible, and easy to use, therefore taking away some built in
+functionality that I had originally out in. This project comes after several months of
+researching the TOC protocol.
+
+example.php is included with the class. It needs to be executed from the command line
+(ie:php -q testscript.php) and you need to call php.exe with the -q
+example is provided as a demonstaration only. Though it creats a very simple, functional bot, it lacks any sort of commands, it merely resends the message it recieves in reverse.
+
+
+Revisions:
+
+-----------------------------------
+by Rajiv Makhijani
+(02/24/04)
+ - Fixed Bug in Setting Permit/Deny Mode
+ - Fixes so Uninitialized string offset notice doesn't appear
+ - Replaced New Lines Outputed for Each Flap Read with " . " so
+ that you can still tell it is active but it does not take so much space
+ - Removed "eh?" message
+ - Added MySQL Database Connection Message
+ - New Functions:
+ update_profile(profile data string, powered by boolean)
+ * The profile data string is the text that goes in the profile.
+ * The powered by boolean if set to true displays a link to the
+ sourceforge page of the script.
+(02/28/04)
+ - Silent option added to set object not to output any information
+ - To follow silent rule use sEcho function instead of Echo
+-----------------------------------
+by Jeremy (pickleman78)
+(05/26/04) beta 1 release
+ -Complete overhaul of class design and message handling
+ -Fixed bug involving sign off after long periods of idling
+ -Added new function $Aim->registerHandler
+ -Added the capability to handle all AIM messages
+ -Processing the messages is still the users responsibility
+ -Did a little bit of code cleanup
+ -Added a few internal functions to make the classes internal life easier
+ -Improved AIM server error message processing
+ -Updated this document (hopefully Rajiv will clean it up some, since I'm a terrible documenter)
+-------------------------------------------------------------------------------------------------------------
+
+
+
+Functions:
+
+Several methods are provided in the class that allow for simple access to some of the
+common features of AIM. Below are details.
+
+$Aim->Aim($sn,$password,$pdmode, $silent=false)
+The constructor, it takes 4 arguments.
+$sn is your screen name
+$password is you password, in plain text
+$pdmode is the permit deny mode. This can be as follows:
+1 - Allow All
+2 - Deny All
+3 - Permit only those on your permit list
+4 - Permit all those not on your deny list
+$silent if set to true prints out nothing
+
+So, if your screen-name is JohnDoe746 and your password is fertu, and you want to allow
+all users of the AIM server to contact you, you would code as follows
+$myaim=new Aim("JohnDoe746","fertu",1);
+
+
+$Aim->add_permit($buddy)
+This adds the buddy passed to the function to your permit list.
+ie: $myaim->add_permit("My friend22");
+
+$Aim->block_buddy($buddy)
+Blocks a user. This will switch your pd mode to 4. After using this, for the user to remain
+out of contact with you, it is required to provide the constructor with a pd mode of 4
+ie:$myaim->block_buddy("Annoying guy 4");
+
+$Aim->send_im($to,$message,$auto=false)
+Sends $message to $user. If you set the 3rd argument to true, then the recipient will receive it in
+the same format as an away message. (Auto Response from me:)
+A message longer than 65535 will be truncated
+ie:$myaim->send_im("myfriend","This is a happy message");
+
+$Aim->set_my_info()
+Sends an update buddy command to the server and allows some internal values about yourself
+to be set.
+ie:$myaim->set_my_info();
+
+$Aim->signon()
+Call this to connect to the server. This must be called before any other methods will work
+properly
+ie:$mybot->signon();
+
+$Aim->getLastReceived()
+Returns $this->myLastReceived['decoded']. This should be the only peice of the gotten data
+you need to concern yourself with. This is a preferred method of accessing this variable to prevent
+accidental modification of $this->myLastReceived. Accidently modifying this variable can
+cause some internal failures.
+
+$Aim->read_from_aim()
+This is a wrapper for $Aim->sflap_read(), and only returns the $this->myLastReceived['data']
+portion of the message. It is preferred that you do not call $Aim->sflap_read() and use this
+function instead. This function has a return value. Calling this prevents the need to call
+$Aim->getLastReceived()
+
+$Aim->setWarning($wl)
+This allows you to update the bots warning level when warned.
+
+$Aim->getBuddies()
+Returns the $this->myBuddyList array. Use this instead of modifying the internal variable
+
+$Aim->getPermit()
+Returns the $this->myPermitList array. Use this instead of modifying the internal variable
+
+$Aim->getBlocked()
+Returns the $this->myBlockedList array. Use this instead of modifying the internal variable
+
+$Aim->warn_user($user,$anon=false)
+Warn $user. If anon is set to true, then it warns the user anonomously
+
+$Aim->update_profile($information, $poweredby=false)
+Updates Profile to $information. If $poweredby is true a link to
+sourceforge page for this script is appended to profile
+
+$Aim->registerHandler($function_name,$command)
+This is by far the best thing about the new release.
+For more information please reas supplement.txt. It is not included here because of the sheer size of the document.
+supplement.txt contains full details on using registerHandler and what to expect for each input.
+
+
+For convenience, I have provided some functions to simplify message processing.
+
+They can be read about in the file "supplement.txt". I chose not to include the text here because it
+is a huge document
+
+
+
+There are a few things you should note about AIM
+1)An incoming message has HTML tags in it. You are responsible for stripping those tags
+2)Outgoing messages can have HTML tags, but will work fine if they don't. To include things
+ in the time feild next to the users name, send it as a comment
+
+Conclusion:
+The class is released under the LGPL. If you have any bug reports, comments, questions
+feature requests, or want to help/show me what you've created with this(I am very interested in this),
+please drop me an email: pickleman78@users.sourceforge.net. This code was written by
+Jeremy(a.k.a pickleman78) and Rajiv M (a.k.a compwiz562).
+
+
+Special thanks:
+I'd like to thank all of the people who have contributed ideas, testing, bug reports, and code additions to
+this project. I'd like to especially thank Rajiv, who has done do much for the project, and has kept this documnet
+looking nice. He also has done alot of testing of this script too. I'd also like to thank SpazLink for his help in
+testing. And finally I'd like to thank Jeffery Grafton, whose script inspired me to start this project.
diff --git a/plugins/Aim/extlib/phptoclib/aimclassw.php b/plugins/Aim/extlib/phptoclib/aimclassw.php new file mode 100755 index 000000000..0657910d9 --- /dev/null +++ b/plugins/Aim/extlib/phptoclib/aimclassw.php @@ -0,0 +1,2370 @@ +<?php +/* +* PHPTOCLIB: A library for AIM connectivity through PHP using the TOC protocal. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library 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 +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +*/ +/** +* The version of PHPTOCLIB we are running right now +* +* @access private +* @var int +*/ +define("PHPTOCLIB_VERSION","1.0.0 RC1"); + +// Prevents Script from Timing Out +//set_time_limit(0); + +// Constant Declarations + +/** +* Maximum size for a direct connection IM in bytes +* +* @access private +* @var int +*/ + +define("MAX_DIM_SIZE",3072); //Default to 3kb + +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_WARN",74); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_MSG",75); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_UPDATEBUDDY",76); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_SIGNON",77); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_NICK",78); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_ERROR",79); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_CHATJ",80); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_CHATI",81); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_CHATUPDBUD",82); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_CHATINV",83); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_CHATLE",84); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_URL",85); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_NICKSTAT",86); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_PASSSTAT",87); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_RVOUSP",88); +/** +* Internally used for message type +* +* @access private +* @var int +*/ +define("AIM_TYPE_NOT_IMPLEMENTED",666); + + + +/** +* Internally used for connection type +* +* Internal type for a normal connection +* +* @access private +* @var int +*/ +define("CONN_TYPE_NORMAL",1); +/** +* Internally used for connection type +* +* Internal type of a Dirct Connection +* +* @access private +* @var int +*/ +define("CONN_TYPE_DC",2); +/** +* Internally used for connection type +* +*Internal type for a file transfer connection +* +* @access private +* @var int +*/ +define("CONN_TYPE_FT",3); +/** +* Internally used for connection type +* +*Internal type for a file get connection +* +* @access private +* @var int +*/ +define("CONN_TYPE_FTG",4); + +/** +* Maximum size for a TOC packet +* +* @access private +* @var int +*/ +define("MAX_PACKLENGTH",2048); + +/** +* TOC packet type +* +* @access private +* @var int +*/ +define("SFLAP_TYPE_SIGNON",1); +/** +* TOC packet type +* +* @access private +* @var int +*/ +define("SFLAP_TYPE_DATA",2); +/** +* TOC packet type +* +* @access private +* @var int +*/ +define("SFLAP_TYPE_ERROR",3); +/** +* TOC packet type +* +* @access private +* @var int +*/ +define("SFLAP_TYPE_SIGNOFF",4); +/** +* TOC packet type +* +* @access private +* @var int +*/ +define("SFLAP_TYPE_KEEPALIVE",5); +/** +* TOC packet type +* +* @access private +* @var int +*/ +define("SFLAP_MAX_LENGTH",1024); + + + +/** +* Service UID for a voice connection +* +* @access private +* @var int +*/ +define('VOICE_UID', '09461341-4C7F-11D1-8222-444553540000'); +/** +* Service UID for file sending +* +* @access private +* @var int +*/ +define('FILE_SEND_UID', '09461343-4C7F-11D1-8222-444553540000'); +/** +* Service UID for file getting +* +* @access private +* @var int +*/ +define('FILE_GET_UID', '09461348-4C7F-11D1-8222-444553540000'); +/** +* Service UID for Direct connections +* +* @access private +* @var int +*/ +define('IMAGE_UID', '09461345-4C7F-11D1-8222-444553540000'); +/** +* Service UID for Buddy Icons +* +* @access private +* @var int +*/ +define('BUDDY_ICON_UID', '09461346-4C7F-11D1-8222-444553540000'); +/** +* Service UID for stocks +* +* @access private +* @var int +*/ +define('STOCKS_UID', '09461347-4C7F-11D1-8222-444553540000'); +/** +* Service UID for games +* +* @access private +* @var int +*/ +define('GAMES_UID', '0946134a-4C7F-11D1-8222-444553540000'); + +/** +* FLAP return code +* +* @access private +* @var int +*/ +define("SFLAP_SUCCESS",0); +/** +* FLAP return code +* +* @access private +* @var int +*/ +define("SFLAP_ERR_UNKNOWN",1); +/** +* FLAP return code +* +* @access private +* @var int +*/ +define("SFLAP_ERR_ARGS",2); +/** +* FLAP return code +* +* @access private +* @var int +*/ +define("SFLAP_ERR_LENGTH",3); +/** +* FLAP return code +* +* @access private +* @var int +*/ +define("SFLAP_ERR_READ",4); +/** +* FLAP return code +* +* @access private +* @var int +*/ +define("SFLAP_ERR_SEND",5); + +/** +* FLAP version number +* +* @access private +* @var int +*/ +define("SFLAP_FLAP_VERSION",1); +/** +* FLAP TLV code +* +* @access private +* @var int +*/ +define("SFLAP_TLV_TAG",1); +/** +* Bytes in a FLAP header +* +* @access private +* @var int +*/ +define("SFLAP_HEADER_LEN",6); + +/** + * PHPTocLib AIM Class + * + * @author Jeremy Bryant <pickleman78@users.sourceforge.net> + * @author Rajiv Makhijani <rajiv@blue-tech.org> + * @package phptoclib + * @version 1.0RC1 + * @copyright 2005 + * @access public + * + */ +class Aim +{ + /** + * AIM ScreenName + * + * @var String + * @access private + */ + var $myScreenName; + + /** + * AIM Password (Plain Text) + * + * @var String + * @access private + */ + var $myPassword; + + + /** + * AIM TOC Server + * + * @var String + * @access public + */ + var $myServer="toc.oscar.aol.com"; + + /** + * AIM Formatted ScreenName + * + * @var String + * @access private + */ + var $myFormatSN; + + /** + * AIM TOC Server Port + * + * @var String + * @access public + */ + var $myPort="5190"; + + /** + * Profile Data + * Use setProfile() to update + * + * @var String + * @access private + */ + var $myProfile="Powered by phpTOCLib. Please visit http://sourceforge.net/projects/phptoclib for more information"; //The profile of the bot + + /** + * Socket Connection Resource ID + * + * @var Resource + * @access private + */ + var $myConnection; //Connection resource ID + + /** + * Roasted AIM Password + * + * @var String + * @access private + */ + var $myRoastedPass; + + /** + * Last Message Recieved From Server + * + * @var String + * @access private + */ + var $myLastReceived; + + /** + * Current Seq Number Used to Communicate with Server + * + * @var Integer + * @access private + */ + var $mySeqNum; + + /** + * Current Warning Level + * Getter: getWarning() + * Setter: setWarning() + * + * @var Integer + * @access private + */ + var $myWarnLevel; //Warning Level of the bot + + /** + * Auth Code + * + * @var Integer + * @access private + */ + var $myAuthCode; + + /** + * Buddies + * Getter: getBuddies() + * + * @var Array + * @access private + */ + var $myBuddyList; + + /** + * Blocked Buddies + * Getter: getBlocked() + * + * @var Array + * @access private + */ + var $myBlockedList; + + /** + * Permited Buddies + * Getter: getBlocked() + * + * @var Array + * @access private + */ + var $myPermitList; + + /** + * Permit/Deny Mode + * 1 - Allow All + * 2 - Deny All + * 3 - Permit only those on your permit list + * 4 - Permit all those not on your deny list + * + * @var Integer + * @access private + */ + var $myPdMode; + + //Below variables added 4-29 by Jeremy: Implementing chat + + /** + * Contains Chat Room Info + * $myChatRooms['roomid'] = people in room + * + * @var Array + * @access private + */ + var $myChatRooms; + + //End of chat implementation + + + /** + * Event Handler Functions + * + * @var Array + * @access private + */ + var $myEventHandlers = array(); + + /** + * Array of direct connection objects(including file transfers) + * + * @var Array + * @access private + */ + var $myDirectConnections = array(); + + /** + * Array of the actual connections + * + * @var Array + * @access private + */ + var $myConnections = array(); + + /** + * The current state of logging + * + * @var Boolean + * @access private + */ + + var $myLogging = false; + + /** + * Constructor + * + * Permit/Deny Mode Options + * 1 - Allow All + * 2 - Deny All + * 3 - Permit only those on your permit list + * 4 - Permit all those not on your deny list + * + * @param String $sn AIM Screenname + * @param String $password AIM Password + * @param Integer $pdmode Permit/Deny Mode + * @access public + */ + function Aim($sn, $password, $pdmode) + { + //Constructor assignment + $this->myScreenName = $this->normalize($sn); + $this->myPassword = $password; + $this->myRoastedPass = $this->roastPass($password); + $this->mySeqNum = 1; + $this->myConnection = 0; + $this->myWarnLevel = 0; + $this->myAuthCode = $this->makeCode(); + $this->myPdMode = $pdmode; + $this->myFormatSN = $this->myScreenName; + + $this->log("PHPTOCLIB v" . PHPTOCLIB_VERSION . " Object Created"); + + } + + /** + * Enables debug logging (Logging is disabled by default) + * + * + * @access public + * @return void + */ + + function setLogging($enable) + { + $this->myLogging=$enable; + } + + function log($data) + { + if($this->myLogging){ + error_log($data); + } + } + + /** + * Logs a packet + * + * + * @access private + * @param Array $packary Packet + * @param String $in Prepend + * @return void + */ + function logPacket($packary,$in) + { + if(!$this->myLogging || sizeof($packary)<=0 || (@strlen($packary['decoded'])<=0 && @isset($packary['decoded']))) + return; + $towrite=$in . ": "; + foreach($packary as $k=>$d) + { + $towrite.=$k . ":" . $d . "\r\n"; + } + $towrite.="\r\n\r\n"; + $this->log($towrite); + } + /** + * Roasts/Hashes Password + * + * @param String $password Password + * @access private + * @return String Roasted Password + */ + function roastPass($password) + { + $roaststring = 'Tic/Toc'; + $roasted_password = '0x'; + for ($i = 0; $i < strlen($password); $i++) + $roasted_password .= bin2hex($password[$i] ^ $roaststring[($i % 7)]); + return $roasted_password; + } + + /** + * Access Method for myScreenName + * + * @access public + * @param $formated Returns formatted Screenname if true as returned by server + * @return String Screenname + */ + function getMyScreenName($formated = false) + { + if ($formated) + { + return $this->myFormatSN; + } + else + { + return $this->normalize($this->myScreenName); + } + } + + /** + * Generated Authorization Code + * + * @access private + * @return Integer Auth Code + */ + function makeCode() + { + $sn = ord($this->myScreenName[0]) - 96; + $pw = ord($this->myPassword[0]) - 96; + $a = $sn * 7696 + 738816; + $b = $sn * 746512; + $c = $pw * $a; + + return $c - $a + $b + 71665152; + } + + + /** + * Reads from Socket + * + * @access private + * @return String Data + */ + function sflapRead() + { + if ($this->socketcheck($this->myConnection)) + { + $this->log("Disconnected.... Reconnecting in 60 seconds"); + sleep(60); + $this->signon(); + } + + $header = fread($this->myConnection,SFLAP_HEADER_LEN); + + if (strlen($header) == 0) + { + $this->myLastReceived = ""; + return ""; + } + $header_data = unpack("aast/Ctype/nseq/ndlen", $header); + $this->log(" . ", false); + $packet = fread($this->myConnection, $header_data['dlen']); + if (strlen($packet) <= 0 && $sockinfo['blocked']) + $this->derror("Could not read data"); + + if ($header_data['type'] == SFLAP_TYPE_SIGNON) + { + $packet_data=unpack("Ndecoded", $packet); + } + + if ($header_data['type'] == SFLAP_TYPE_KEEPALIVE) + { + $this->myLastReceived = ''; + return 0; + } + else if (strlen($packet)>0) + { + $packet_data = unpack("a*decoded", $packet); + } + $this->log("socketcheck check now"); + if ($this->socketcheck($this->myConnection)) + { + $this->derror("Connection ended unexpectedly"); + } + + $data = array_merge($header_data, $packet_data); + $this->myLastReceived = $data; + $this->logPacket($data,"in"); + return $data; + } + + /** + * Sends Data on Socket + * + * @param String $sflap_type Type + * @param String $sflap_data Data + * @param boolean $no_null No Null + * @param boolean $formatted Format + * @access private + * @return String Roasted Password + */ + function sflapSend($sflap_type, $sflap_data, $no_null, $formatted) + { + $packet = ""; + if (strlen($sflap_data) >= MAX_PACKLENGTH) + $sflap_data = substr($sflap_data,0,MAX_PACKLENGTH); + + if ($formatted) + { + $len = strlen($sflap_len); + $sflap_header = pack("aCnn",'*', $sflap_type, $this->mySeqNum, $len); + $packet = $sflap_header . $sflap_data; + } else { + if (!$no_null) + { + $sflap_data = str_replace("\0","", trim($sflap_data)); + $sflap_data .= "\0"; + } + $data = pack("a*", $sflap_data); + $len = strlen($sflap_data); + $header = pack("aCnn","*", $sflap_type, $this->mySeqNum, $len); + $packet = $header . $data; + } + + //Make sure we are still connected + if ($this->socketcheck($this->myConnection)) + { + $this->log("Disconnected.... reconnecting in 60 seconds"); + sleep(60); + $this->signon(); + } + $sent = fputs($this->myConnection, $packet) or $this->derror("Error sending packet to AIM"); + $this->mySeqNum++; + sleep(ceil($this->myWarnLevel/10)); + $this->logPacket(array($sflap_type,$sflap_data),"out"); + } + + /** + * Escape the thing that TOC doesn't like,that would be + * ",', $,{,},[,] + * + * @param String $data Data to Escape + * @see decodeData + * @access private + * @return String $data Escaped Data + */ + function encodeData($data) + { + $data = str_replace('"','\"', $data); + $data = str_replace('$','\$', $data); + $data = str_replace("'","\'", $data); + $data = str_replace('{','\{', $data); + $data = str_replace('}','\}', $data); + $data = str_replace('[','\[', $data); + $data = str_replace(']','\]', $data); + return $data; + } + + /** + * Unescape data TOC has escaped + * ",', $,{,},[,] + * + * @param String $data Data to Unescape + * @see encodeData + * @access private + * @return String $data Unescape Data + */ + function decodeData($data) + { + $data = str_replace('\"','"', $data); + $data = str_replace('\$','$', $data); + $data = str_replace("\'","'", $data); + $data = str_replace('\{','{', $data); + $data = str_replace('\}','}', $data); + $data = str_replace('\[','[', $data); + $data = str_replace('\]',']', $data); + $data = str_replace('"','"', $data); + $data = str_replace('&','&', $data); + return $data; + } + + /** + * Normalize ScreenName + * no spaces and all lowercase + * + * @param String $nick ScreenName + * @access public + * @return String $nick Normalized ScreenName + */ + function normalize($nick) + { + $nick = str_replace(" ","", $nick); + $nick = strtolower($nick); + return $nick; + } + + /** + * Sets internal info with update buddy + * Currently only sets warning level + * + * @access public + * @return void + */ + function setMyInfo() + { + //Sets internal values bvase on the update buddy command + $this->log("Setting my warning level ..."); + $this->sflapSend(SFLAP_TYPE_DATA,"toc_get_status " . $this->normalize($this->myScreenName),0,0); + //The rest of this will now be handled by the other functions. It is assumed + //that we may have other data queued in the socket, do we should just add this + //message to the queue instead of trying to set it in here + } + + /** + * Connects to AIM and Signs On Using Info Provided in Constructor + * + * @access public + * @return void + */ + function signon() + { + $this->log("Ready to sign on to the server"); + $this->myConnection = fsockopen($this->myServer, $this->myPort, $errno, $errstr,10) or die("$errorno:$errstr"); + $this->log("Connected to server"); + $this->mySeqNum = (time() % 65536); //Select an arbitrary starting point for + //sequence numbers + if (!$this->myConnection) + $this->derror("Error connecting to toc.oscar.aol.com"); + $this->log("Connected to AOL"); + //Send the flapon packet + fputs($this->myConnection,"FLAPON\r\n\n\0"); //send the initial handshake + $this->log("Sent flapon"); + $this->sflapRead(); //Make sure the server responds with what we expect + if (!$this->myLastReceived) + $this->derror("Error sending the initialization string"); + + //send the FLAP SIGNON packet back with what it needs + //There are 2 parts to the signon packet. They are sent in succession, there + //is no indication if either packet was correctly sent + $signon_packet = pack("Nnna".strlen($this->myScreenName),1,1,strlen($this->myScreenName), $this->myScreenName); + $this->sflapSend(SFLAP_TYPE_SIGNON, $signon_packet,1,0); + $this->log("sent signon packet part one"); + + $signon_packet_part2 = 'toc2_signon login.oscar.aol.com 29999 ' . $this->myScreenName . ' ' . $this->myRoastedPass . ' english-US "TIC:TOC2:REVISION" 160 ' . $this->myAuthCode; + $this->log($signon_packet_part2 . ""); + $this->sflapSend(SFLAP_TYPE_DATA, $signon_packet_part2,0,0); + $this->log("Sent signon packet part 2... Awaiting response..."); + + $this->sflapRead(); + $this->log("Received Sign on packet, beginning initilization..."); + $message = $this->getLastReceived(); + $this->log($message . "\n"); + if (strstr($message,"ERROR:")) + { + $this->onError($message); + die("Fatal signon error"); + } + stream_set_timeout($this->myConnection,2); + //The information sent before the config2 command is utterly useless to us + //So we will just skim through them until we reach it + + //Add the first entry to the connection array + $this->myConnections[] = $this->myConnection; + + + //UPDATED 4/12/03: Now this will use the receive function and send the + //received messaged to the assigned handlers. This is where the signon + //method has no more use + + $this->log("Done with signon proccess"); + //socket_set_blocking($this->myConnection,false); + } + + /** + * Sends Instant Message + * + * @param String $to Message Recipient SN + * @param String $message Message to Send + * @param boolean $auto Sent as Auto Response / Away Message Style + * @access public + * @return void + */ + function sendIM($to, $message, $auto = false) + { + if ($auto) $auto = "auto"; + else $auto = ""; + $to = $this->normalize($to); + $message = $this->encodeData($message); + $command = 'toc2_send_im "' . $to . '" "' . $message . '" ' . $auto; + $this->sflapSend(SFLAP_TYPE_DATA, trim($command),0,0); + $cleanedmessage = str_replace("<br>", " ", $this->decodeData($message)); + $cleanedmessage = strip_tags($cleanedmessage); + $this->log("TO - " . $to . " : " . $cleanedmessage); + } + + /** + * Set Away Message + * + * @param String $message Away message (some HTML supported). + * Use null to remove the away message + * @access public + * @return void + */ + function setAway($message) + { + $message = $this->encodeData($message); + $command = 'toc_set_away "' . $message . '"'; + $this->sflapSend(SFLAP_TYPE_DATA, trim($command),0,0); + $this->log("SET AWAY MESSAGE - " . $this->decodeData($message)); + } + + /** + * Fills Buddy List + * Not implemented fully yet + * + * @access public + * @return void + */ + function setBuddyList() + { + //This better be the right message + $message = $this->myLastReceived['decoded']; + if (strpos($message,"CONFIG2:") === false) + { + $this->log("setBuddyList cannot be called at this time because I got $message"); + return false; + } + $people = explode("\n",trim($message,"\n")); + //The first 3 elements of the array are who knows what, element 3 should be + //a letter followed by a person + for($i = 1; $i<sizeof($people); $i++) + { + @list($mode, $name) = explode(":", $people[$i]); + switch($mode) + { + case 'p': + $this->myPermitList[] = $name; + break; + case 'd': + $this->myBlockedList[] = $name; + break; + case 'b': + $this->myBuddyList[] = $name; + break; + case 'done': + break; + default: + // + } + } + } + + /** + * Adds buddy to Permit list + * + * @param String $buddy Buddy's Screenname + * @access public + * @return void + */ + function addPermit($buddy) + { + $this->sflapSend(SFLAP_TYPE_DATA,"toc2_add_permit " . $this->normalize($buddy),0,0); + $this->myPermitList[] = $this->normalize($buddy); + return 1; + } + + /** + * Blocks buddy + * + * @param String $buddy Buddy's Screenname + * @access public + * @return void + */ + function blockBuddy($buddy) + { + $this->sflapSend(SFLAP_TYPE_DATA,"toc2_add_deny " . $this->normalize($buddy),0,0); + $this->myBlockedList[] = $this->normalize($buddy); + return 1; + } + + /** + * Returns last message received from server + * + * @access private + * @return String Last Message from Server + */ + function getLastReceived() + { + if (@$instuff = $this->myLastReceived['decoded']){ + return $this->myLastReceived['decoded']; + }else{ + return; + } + } + + /** + * Returns Buddy List + * + * @access public + * @return array Buddy List + */ + function getBuddies() + { + return $this->myBuddyList; + } + + /** + * Returns Permit List + * + * @access public + * @return array Permit List + */ + function getPermit() + { + return $this->myPermitList; + } + + /** + * Returns Blocked Buddies + * + * @access public + * @return array Blocked List + */ + function getBlocked() + { + return $this->myBlockedList; + } + + + + + /** + * Reads and returns data from server + * + * This is a wrapper for $Aim->sflap_read(), and only returns the $this->myLastReceived['data'] + * portion of the message. It is preferred that you do not call $Aim->sflap_read() and use this + * function instead. This function has a return value. Calling this prevents the need to call + * $Aim->getLastReceived() + * + * @access public + * @return String Data recieved from server + */ + function read_from_aim() + { + $this->sflapRead(); + $returnme = $this->getLastReceived(); + return $returnme; + } + + /** + * Sets current internal warning level + * + * This allows you to update the bots warning level when warned. + * + * @param int Warning Level % + * @access private + * @return void + */ + function setWarningLevel($warnlevel) + { + $this->myWarnLevel = $warnlevel; + } + + /** + * Warns / "Evils" a User + * + * To successfully warn another user they must have sent you a message. + * There is a limit on how much and how often you can warn another user. + * Normally when you warn another user they are aware who warned them, + * however there is the option to warn anonymously. When warning anon. + * note that the warning is less severe. + * + * @param String $to Screenname to warn + * @param boolean $anon Warn's anonymously if true. (default = false) + * @access public + * @return void + */ + function warnUser($to, $anon = false) + { + if (!$anon) + $anon = '"norm"'; + + else + $anon = '"anon"'; + $this->sflapSend(SFLAP_TYPE_DATA,"toc_evil " . $this->normalize($to) . " $anon",0,0); + } + + /** + * Returns warning level of bot + * + * @access public + * @return void + */ + function getWarningLevel() + { + return $this->myWarningLevel; + } + + /** + * Sets bot's profile/info + * + * Limited to 1024 bytes. + * + * @param String $profiledata Profile Data (Can contain limited html: br,hr,font,b,i,u etc) + * @param boolean $poweredby If true, appends link to phpTOCLib project to profile + * @access public + * @return void + */ + function setProfile($profiledata, $poweredby = false) + { + if ($poweredby == false){ + $this->myProfile = $profiledata; + }else{ + $this->myProfile = $profiledata . "<font size=1 face=tahoma><br><br>Powered by phpTOCLib<br>http://sourceforge.net/projects/phptoclib</font>"; + } + + $this->sflapSend(SFLAP_TYPE_DATA,"toc_set_info \"" . $this->encodeData($this->myProfile) . "\"",0,0); + $this->setMyInfo(); + $this->log("Profile has been updated..."); + } + + //6/29/04 by Jeremy: + //Added mthod to accept a rvous,decline it, and + //read from the rvous socket + + //Decline + + /** + * Declines a direct connection request (rvous) + * + * @param String $nick ScreenName request was from + * @param String $cookie Request cookie (from server) + * @param String $uuid UUID + * + * @access public + * @return void + */ + function declineRvous($nick, $cookie, $uuid) + { + $nick = $this->normalize($nick); + $this->sflapSend(SFLAP_TYPE_DATA,"toc_rvous_cancel $nick $cookie $uuid",0,0); + } + + /** + * Accepts a direct connection request (rvous) + * + * @param String $nick ScreenName request was from + * @param String $cookie Request cookie (from server) + * @param String $uuid UUID + * @param String $vip IP of User DC with + * @param int $port Port number to connect to + * + * @access public + * @return void + */ + function acceptRvous($nick, $cookie, $uuid, $vip, $port) + { + $this->sflapSend(SFLAP_TYPE_DATA,"toc_rvous_accept $nick $cookie $uuid",0,0); + + //Now open the connection to that user + if ($uuid == IMAGE_UID) + { + $dcon = new Dconnect($vip, $port); + } + else if ($uuid == FILE_SEND_UID) + { + $dcon = new FileSendConnect($vip, $port); + } + if (!$dcon->connected) + { + $this->log("The connection failed"); + return false; + } + + //Place this dcon object inside the array + $this->myDirectConnections[] = $dcon; + //Place the socket in an array to + $this->myConnections[] = $dcon->sock; + + + //Get rid of the first packet because its worthless + //and confusing + $dcon->readDIM(); + //Assign the cookie + $dcon->cookie = $dcon->lastReceived['cookie']; + $dcon->connectedTo = $this->normalize($nick); + return $dcon; + } + + /** + * Sends a Message over a Direct Connection + * + * Only works if a direct connection is already established with user + * + * @param String $to Message Recipient SN + * @param String $message Message to Send + * + * @access public + * @return void + */ + function sendDim($to, $message) + { + //Find the connection + for($i = 0;$i<sizeof($this->myDirectConnections);$i++) + { + if ($this->normalize($to) == $this->myDirectConnections[$i]->connectedTo && $this->myDirectConnections[$i]->type == CONN_TYPE_DC) + { + $dcon = $this->myDirectConnections[$i]; + break; + } + } + if (!$dcon) + { + $this->log("Could not find a direct connection to $to"); + return false; + } + $dcon->sendMessage($message, $this->normalize($this->myScreenName)); + return true; + } + + /** + * Closes an established Direct Connection + * + * @param DConnect $dcon Direct Connection Object to Close + * + * @access public + * @return void + */ + function closeDcon($dcon) + { + + $nary = array(); + for($i = 0;$i<sizeof($this->myConnections);$i++) + { + if ($dcon->sock == $this->myConnections[$i]) + unset($this->myConnections[$i]); + } + + $this->myConnections = array_values($this->myConnections); + unset($nary); + $nary2 = array(); + + for($i = 0;$i<sizeof($this->myDirectConnections);$i++) + { + if ($dcon == $this->myDirectConnections[$i]) + unset($this->myDirectConnections[$i]); + } + $this->myDirectConnections = array_values($this->myDirectConnections); + $dcon->close(); + unset($dcon); + } + + //Added 4/29/04 by Jeremy: + //Various chat related methods + + /** + * Accepts a Chat Room Invitation (Joins room) + * + * @param String $chatid ID of Chat Room + * + * @access public + * @return void + */ + function joinChat($chatid) + { + $this->sflapSend(SFLAP_TYPE_DATA,"toc_chat_accept " . $chatid,0,0); + } + + /** + * Leaves a chat room + * + * @param String $chatid ID of Chat Room + * + * @access public + * @return void + */ + function leaveChat($chatid) + { + $this->sflapSend(SFLAP_TYPE_DATA,"toc_chat_leave " . $chatid,0,0); + } + + /** + * Sends a message in a chat room + * + * @param String $chatid ID of Chat Room + * @param String $message Message to send + * + * @access public + * @return void + */ + function chatSay($chatid, $message) + { + $this->sflapSend(SFLAP_TYPE_DATA,"toc_chat_send " . $chatid . " \"" . $this->encodeData($message) . "\"",0,0); + } + + /** + * Invites a user to a chat room + * + * @param String $chatid ID of Chat Room + * @param String $who Screenname of user + * @param String $message Note to include with invitiation + * + * @access public + * @return void + */ + function chatInvite($chatid, $who, $message) + { + $who = $this->normalize($who); + $this->sflapSend(SFLAP_TYPE_DATA,"toc_chat_invite " . $chatid . " \"" . $this->encodeData($message) . "\" " . $who,0,0); + } + + /** + * Joins/Creates a new chat room + * + * @param String $name Name of the new chat room + * @param String $exchange Exchange of new chat room + * + * @access public + * @return void + */ + function joinNewChat($name, $exchange) + { + //Creates a new chat + $this->sflapSend(SFLAP_TYPE_DATA,"toc_chat_join " . $exchange . " \"" . $name . "\"",0,0); + } + + /** + * Disconnect error handler, attempts to reconnect in 60 seconds + * + * @param String $message Error message (desc of where error encountered etc) + * + * @access private + * @return void + */ + function derror($message) + { + $this->log($message); + $this->log("Error"); + fclose($this->myConnection); + if ((time() - $GLOBALS['errortime']) < 600){ + $this->log("Reconnecting in 60 Seconds"); + sleep(60); + } + $this->signon(); + $GLOBALS['errortime'] = time(); + } + + /** + * Returns connection type of socket (main or rvous etc) + * + * Helper method for recieve() + * + * @param Resource $sock Socket to determine type for + * + * @access private + * @return void + * @see receive + */ + function connectionType($sock) + { + //Is it the main connection? + if ($sock == $this->myConnection) + return CONN_TYPE_NORMAL; + else + { + for($i = 0;$i<sizeof($this->myDirectConnections);$i++) + { + if ($sock == $this->myDirectConnections[$i]->sock) + return $this->myDirectConnections[$i]->type; + } + } + return false; + } + + /** + * Checks for new data and calls appropriate methods + * + * This method is usually called in an infinite loop to keep checking for new data + * + * @access public + * @return void + * @see connectionType + */ + function receive() + { + //This function will be used to get the incoming data + //and it will be used to call the event handlers + + //First, get an array of sockets that have data that is ready to be read + $ready = array(); + $ready = $this->myConnections; + $numrdy = stream_select($ready, $w = NULL, $x = NULL,NULL); + + //Now that we've waited for something, go through the $ready + //array and read appropriately + + for($i = 0;$i<sizeof($ready);$i++) + { + //Get the type + $type = $this->connectionType($ready[$i]); + if ($type == CONN_TYPE_NORMAL) + { + //Next step:Get the data sitting in the socket + $message = $this->read_from_aim(); + if (strlen($message) <= 0) + { + return; + } + + //Third step: Get the command from the server + @list($cmd, $rest) = explode(":", $message); + + //Fourth step, take the command, test the type, and pass it off + //to the correct internal handler. The internal handler will + //do what needs to be done on the class internals to allow + //it to work, then proceed to pass it off to the user created handle + //if there is one + $this->log($cmd); + switch($cmd) + { + case 'SIGN_ON': + $this->onSignOn($message); + break; + case 'CONFIG2': + $this->onConfig($message); + break; + case 'ERROR': + $this->onError($message); + break; + case 'NICK': + $this->onNick($message); + break; + case 'IM_IN2': + $this->onImIn($message); + break; + case 'UPDATE_BUDDY2': + $this->onUpdateBuddy($message); + break; + case 'EVILED': + $this->onWarn($message); + break; + case 'CHAT_JOIN': + $this->onChatJoin($message); + break; + case 'CHAT_IN': + $this->onChatIn($message); + break; + case 'CHAT_UPDATE_BUDDY': + $this->onChatUpdate($message); + break; + case 'CHAT_INVITE': + $this->onChatInvite($message); + break; + case 'CHAT_LEFT': + $this->onChatLeft($message); + break; + case 'GOTO_URL': + $this->onGotoURL($message); + break; + case 'DIR_STATUS': + $this->onDirStatus($message); + break; + case 'ADMIN_NICK_STATUS': + $this->onAdminNick($message); + break; + case 'ADMIN_PASSWD_STATUS': + $this->onAdminPasswd($message); + break; + case 'PAUSE': + $this->onPause($message); + break; + case 'RVOUS_PROPOSE': + $this->onRvous($message); + break; + default: + $this->log("Fell through: $message"); + $this->CatchAll($message); + break; + } + } + else + { + for($j = 0;$j<sizeof($this->myDirectConnections);$j++) + { + if ($this->myDirectConnections[$j]->sock == $ready[$i]) + { + $dcon = $this->myDirectConnections[$j]; + break; + } + } + //Now read from the dcon + if ($dcon->type == CONN_TYPE_DC) + { + if ($dcon->readDIM() == false) + { + $this->closeDcon($dcon); + continue; + } + + $message['message'] = $dcon->lastMessage; + if ($message['message'] == "too big") + { + $this->sendDim("Connection dropped because you sent a message larger that " . MAX_DCON_SIZE . " bytes.", $dcon->connectedTo); + $this->closeDcon($dcon); + continue; + } + $message['from'] = $dcon->connectedTo; + $this->onDimIn($message); + } + } + } + $this->conn->myLastReceived=""; + //Now get out of this function because the handlers should take care + //of everything + } + + //The next block of code is all the event handlers needed by the class + //Some are left blank and only call the users handler because the class + //either does not support the command, or cannot do anything with it + // --------------------------------------------------------------------- + + /** + * Direct IM In Event Handler + * + * Called when Direct IM is received. + * Call's user handler (if available) for DimIn. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onDimIn($data) + { + $this->callHandler("DimIn", $data); + } + + /** + * Sign On Event Handler + * + * Called when Sign On event occurs. + * Call's user handler (if available) for SIGN_ON. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onSignOn($data) + { + $this->callHandler("SignOn", $data); + } + + /** + * Config Event Handler + * + * Called when Config data received. + * Call's user handler (if available) for Config. + * + * Loads buddy list and other info + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onConfig($data) + { + $this->log("onConfig Message: " . $data); + + if (strpos($data,"CONFIG2:") === false) + { + $this->log("get_buddy_list cannot be called at this time because I got $data"); + //return false; + } + $people = explode("\n",trim($data,"\n")); + //The first 3 elements of the array are who knows what, element 3 should be + //a letter followed by a person + + //AIM decided to add this wonderful new feature, the recent buddy thing, this kind of + //messes this funtion up, so we need to adapt it... unfortuneately, its not really + //clear how this works, so we are just going to add their name to the permit list. + + //Recent buddies I believe are in the format + //number:name:number.... I think the first number counts down from 25 how long its + //been... but I don't know the second number,,,, + + //TODO: Figure out the new recent buddies system + + //Note: adding that at the bottom is a quick hack and may have adverse consequences... + for($i = 1;$i<sizeof($people);$i++) + { + @list($mode, $name) = explode(":", $people[$i]); + switch($mode) + { + case 'p': + $this->myPermitList[] = $name; + break; + case 'd': + $this->myBlockedList[] = $name; + break; + case 'b': + $this->myBuddyList[] = $name; + break; + case 'done': + break; + default: + //This is assumed to be recent buddies... + $this->myPermitList[]=$name; + } + } + + //We only get the config message once, so now we should send our pd mode + + $this->sflapSend(SFLAP_TYPE_DATA,"toc2_set_pdmode " . $this->myPdMode,0,0); + //Adds yourself to the permit list + //This is to fix an odd behavior if you have nobody on your list + //the server won't send the config command... so this takes care of it + $this->sflapSend(SFLAP_TYPE_DATA,"toc2_add_permit " . $this->normalize($this->myScreenName),0,0); + + //Now we allow the user to send a list, update anything they want, etc + $this->callHandler("Config", $data); + //Now that we have taken care of what the user wants, send the init_done message + $this->sflapSend(SFLAP_TYPE_DATA,"toc_init_done",0,0); + //'VOICE_UID' + //'FILE_GET_UID' + //'IMAGE_UID' + //'BUDDY_ICON_UID' + //'STOCKS_UID' + //'GAMES_UID' + $this->sflapSend(SFLAP_TYPE_DATA, "toc_set_caps " . IMAGE_UID . " " . FILE_SEND_UID ." " . FILE_GET_UID . " " . BUDDY_ICON_UID . "",0,0); + } + + + /** + * Error Event Handler + * + * Called when an Error occurs. + * Call's user handler (if available) for Error. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onError($data) + { + static $errarg = ''; + static $ERRORS = array(
+ 0=>'Success',
+ 901 =>'$errarg not currently available',
+ 902 =>'Warning of $errarg not currently available',
+ 903 =>'A message has been dropped, you are exceeding
+ the server speed limit',
+ 911 =>'Error validating input',
+ 912 =>'Invalid account',
+ 913 =>'Error encountered while processing request',
+ 914 =>'Service unavailable',
+ 950 =>'Chat in $errarg is unavailable.',
+ 960 =>'You are sending message too fast to $errarg',
+ 961 =>'You missed an im from $errarg because it was too big.',
+ 962 =>'You missed an im from $errarg because it was sent too fast.',
+ 970 =>'Failure',
+ 971 =>'Too many matches',
+ 972 =>'Need more qualifiers',
+ 973 =>'Dir service temporarily unavailable',
+ 974 =>'Email lookup restricted',
+ 975 =>'Keyword Ignored',
+ 976 =>'No Keywords',
+ 977 =>'Language not supported',
+ 978 =>'Country not supported',
+ 979 =>'Failure unknown $errarg',
+ 980 =>'Incorrect nickname or password.',
+ 981 =>'The service is temporarily unavailable.',
+ 982 =>'Your warning level is currently too high to sign on.',
+ 983 =>'You have been connecting and
+ disconnecting too frequently. Wait 10 minutes and try again.
+ If you continue to try, you will need to wait even longer.',
+ 989 =>'An unknown signon error has occurred $errarg'
+ ); + $data_array = explode(":", $data); + for($i=0; $i<count($data_array); $i++) + { + switch($i) + { + case 0: + $cmd = $data_array[$i]; + break; + case 1: + $errornum = $data_array[$i]; + break; + case 2: + $errargs = $data_array[$i]; + break; + } + } + eval("\$errorstring=\"\$ERRORS[" . $errornum . "]\";"); + $string = "\$errorstring=\"\$ERRORS[$errornum]\";"; + //This is important information! We need + // a A different outputter for errors + // b Just to echo it + //I'm just going to do a straight echo here, becuse we assume that + //the user will NEED to see this error. An option to supress it will + //come later I think. Perhaps if we did an error reporting level, similar + //to PHP's, and we could probably even use PHP's error outputting system + //I think that may be an idea.... + + $this->log($errorstring . "\n"); + + $this->callHandler("Error", $data); + } + + /** + * Nick Event Handler + * + * Called when formatted own ScreenName is receieved + * Call's user handler (if available) for Nick. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onNick($data) + { + //This is our nick, so set a field called "myFormatSN" which will represent + //the actual name given by the server to us, NOT the normalized screen name + @list($cmd, $nick) = explode(":", $data); + $this->myFormatSN = $nick; + + $this->callHandler("Nick", $data); + } + + /** + * IM In Event Handler + * + * Called when an Instant Message is received. + * Call's user handler (if available) for IMIn. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onImIn($data) + { + //Perhaps we should add an internal log for debugging purposes?? + //But now, this should probably be handled by the user purely + + $this->callHandler("IMIn", $data); + } + + /** + * UpdateBuddy Event Handler + * + * Called when a Buddy Update is receieved. + * Call's user handler (if available) for UpdateBuddy. + * If info is about self, updates self info (Currently ownly warning). + * + * ToDo: Keep track of idle, warning etc on Buddy List + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onUpdateBuddy($data) + { + //Again, since our class currently does not deal with other people without + //outside help, then this is also probably best left to the user. Though + //we should probably allow this to replace the setMyInfo function above + //by handling the input if and only if it is us + //Check and see that this is the command expected + if (strpos($data,"UPDATE_BUDDY2:") == -1) + { + $this->log("A different message than expected was received"); + return false; + } + + //@list($cmd, $info['sn'], $info['online'], $info['warnlevel'], $info['signon'], $info['idle'], $info['uc']) = explode(":", $command['incoming']); + + //@list($cmd, $sn, $online, $warning, $starttime, $idletime, $uc) = explode(":", $data); + $info = $this->getMessageInfo($data); + if ($this->normalize($info['sn']) == $this->normalize($this->myScreenName)) + { + $warning = rtrim($info['warnlevel'],"%"); + $this->myWarnLevel = $warning; + $this->log("My warning level is $this->myWarnLevel %"); + } + + $this->callHandler("UpdateBuddy", $data); + } + + /** + * Warning Event Handler + * + * Called when bot is warned. + * Call's user handler (if available) for Warn. + * Updates internal warning level + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onWarn($data) + { + /* + For reference: + $command['incoming'] .= ":0"; + $it = explode(":", $command['incoming']); + $info['warnlevel'] = $it[1]; + $info['from'] = $it[2]; + */ + //SImply update our warning level + //@list($cmd, $newwarn, $user) = explode(":", $data); + + $info = $this->getMessageInfo($data); + + $this->setWarningLevel(trim($info['warnlevel'],"%")); + $this->log("My warning level is $this->myWarnLevel %"); + + $this->callHandler("Warned", $data); + } + + /** + * Chat Join Handler + * + * Called when bot joins a chat room. + * Call's user handler (if available) for ChatJoin. + * Adds chat room to internal chat room list. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onChatJoin($data) + { + @list($cmd, $rmid, $rmname) = explode(":", $data); + $this->myChatRooms[$rmid] = 0; + + $this->callHandler("ChatJoin", $data); + } + + /** + * Returns number of chat rooms bot is in + * + * @access public + * @param String $data Raw message from server + * @return int + */ + function getNumChats() + { + return count($this->myChatRooms); + } + + /** + * Chat Update Handler + * + * Called when bot received chat room data (user update). + * Call's user handler (if available) for ChatUpdate. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onChatUpdate($data) + { + $stuff = explode(":", $data); + $people = sizeof($stuff); + $people -= 2; + + $this->callHandler("ChatUpdate", $data); + } + + /** + * Chat Message In Handler + * + * Called when chat room message is received. + * Call's user handler (if available) for ChatIn. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onChatIn($data) + { + $this->callHandler("ChatIn", $data); + } + + + /** + * Chat Invite Handler + * + * Called when bot is invited to a chat room. + * Call's user handler (if available) for ChatInvite. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onChatInvite($data) + { + //@list($cmd, $name, $id, $from, $data) = explode(":", $data,6); + //$data = explode(":",$data,6); + //$nm = array(); + //@list($nm['cmd'],$nm['name'],$nm['id'],$nm['from'],$nm['message']) = $data; + + + $this->callHandler("ChatInvite", $data); + } + + /** + * Chat Left Handler + * + * Called when bot leaves a chat room + * Call's user handler (if available) for ChatLeft. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onChatLeft($data) + { + $info = $this->getMessageInfo($data); + unset($this->myChatRooms[$info['chatid']]); + $this->callHandler("ChatLeft", $data); + } + + /** + * Goto URL Handler + * + * Called on GotoURL. + * Call's user handler (if available) for GotoURL. + * No detailed info available for this / Unsupported. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onGotoURL($data) + { + //This is of no use to the internal class + + $this->callHandler("GotoURL", $data); + } + + /** + * Dir Status Handler + * + * Called on DirStatus. + * Call's user handler (if available) for DirStatus. + * No detailed info available for this / Unsupported. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onDirStatus($data) + { + //This is not currently suported + + $this->callHandler("DirStatus", $data); + } + + /** + * AdminNick Handler + * + * Called on AdminNick. + * Call's user handler (if available) for AdminNick. + * No detailed info available for this / Unsupported. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onAdminNick($data) + { + //NOt particularly useful to us + $this->callHandler("AdminNick", $data); + } + + /** + * AdminPasswd Handler + * + * Called on AdminPasswd. + * Call's user handler (if available) for AdminPasswd. + * No detailed info available for this / Unsupported. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onAdminPasswd($data) + { + //Also not particlualry useful to the internals + $this->callHandler("AdminPasswd", $data); + } + + /** + * Pause Handler + * + * Called on Pause. + * Call's user handler (if available) for Pause. + * No detailed info available for this / Unsupported. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onPause($data) + { + //This is pretty useless to us too... + + $this->callHandler("Pause", $data); + } + + /** + * Direct Connection Handler + * + * Called on Direct Connection Request(Rvous). + * Call's user handler (if available) for Rvous. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function onRvous($data) + { + $this->callHandler("Rvous", $data); + } + + /** + * CatchAll Handler + * + * Called for unrecognized commands. + * Logs unsupported messages to array. + * Call's user handler (if available) for CatchAll. + * + * @access private + * @param String $data Raw message from server + * @return void + */ + function CatchAll($data) + { + //Add to a log of unsupported messages. + + $this->unsupported[] = $data; + //$this->log($data); + //print_r($data); + + $this->callHandler("CatchAll", $data); + } + + /** + * Calls User Handler + * + * Calls registered handler for a specific event. + * + * @access private + * @param String $event Command (event) name (Rvous etc) + * @param String $data Raw message from server + * @see registerHandler + * @return void + */ + function callHandler($event, $data) + { + + if (isset($this->myEventHandlers[$event])) + { + //$function = $this->myEventHandlers[$event] . "(\$data);"; + //eval($function); + call_user_func($this->myEventHandlers[$event], $data); + } + else + { + $this->noHandler($data); + } + } + + /** + * Registers a user handler + * + * Handler List + * SignOn, Config, ERROR, NICK, IMIn, UpdateBuddy, Eviled, Warned, ChatJoin + * ChatIn, ChatUpdate, ChatInvite, ChatLeft, GotoURL, DirStatus, AdminNick + * AdminPasswd, Pause, Rvous, DimIn, CatchAll + * + * @access private + * @param String $event Event name + * @param String $handler User function to call + * @see callHandler + * @return boolean Returns true if successful + */ + function registerHandler($event, $handler) + { + if (is_callable($handler)) + { + $this->myEventHandlers[$event] = $handler; + return true; + } + else + { + return false; + } + } + + /** + * No user handler method fall back. + * + * Does nothing with message. + * + * @access public + * @param String $message Raw server message + * @return void + */ + function noHandler($message) + { + //This function intentionally left blank + //This is where the handlers will fall to for now. I plan on including a more + //efficent check to avoid the apparent stack jumps that this code will produce + //But for now, just fall into here, and be happy + return; + } + + //GLOBAL FUNCTIONS + + /** + * Finds type, and returns as part of array ['type'] + * Puts message in ['incoming'] + * + * Helper method for getMessageInfo. + * + * @access public + * @param String $message Raw server message + * @see msg_parse + * @see getMessageInfo + * @return array + */ + static function msg_type($message) + { + $command = array(); + @list($cmd, $rest) = explode(":", $message); + switch($cmd) + { + case 'IM_IN2': + $type = AIM_TYPE_MSG; + break; + + case 'UPDATE_BUDDY2': + $type = AIM_TYPE_UPDATEBUDDY; + break; + + case 'EVILED': + $type = AIM_TYPE_WARN; + break; + + case 'SIGN_ON': + $type = AIM_TYPE_SIGNON; + break; + + case 'NICK': + $type = AIM_TYPE_NICK; + break; + + case 'ERROR': + $type = AIM_TYPE_ERROR; + break; + + case 'CHAT_JOIN': + $type = AIM_TYPE_CHATJ; + break; + + case 'CHAT_IN': + $type = AIM_TYPE_CHATI; + break; + + case 'CHAT_UPDATE_BUDDY': + $type = AIM_TYPE_CHATUPDBUD; + break; + + case 'CHAT_INVITE': + $type = AIM_TYPE_CHATINV; + break; + + case 'CHAT_LEFT': + $type = AIM_TYPE_CHATLE; + break; + + case 'GOTO_URL': + $type = AIM_TYPE_URL; + break; + + case 'ADMIN_NICK_STATUS': + $type = AIM_TYPE_NICKSTAT; + break; + + case 'ADMIN_PASSWD_STATUS': + $type = AIM_TYPE_PASSSTAT; + break; + + case 'RVOUS_PROPOSE': + $type = AIM_TYPE_RVOUSP; + break; + + default: + $type = AIM_TYPE_NOT_IMPLEMENTED; + break; + } + $command['type'] = $type; + $command['incoming'] = $message; + return $command; + } + + /** + * Parses message and splits into info array + * + * Helper method for getMessageInfo. + * + * @access public + * @param String $command Message and type (after msg_type) + * @see msg_type + * @see getMessageInfo + * @return array + */ + static function msg_parse($command) + { + $info = array(); + switch($command['type']) + { + case AIM_TYPE_WARN: + $command['incoming'] .= ":0"; + $it = explode(":", $command['incoming']); + $info['warnlevel'] = $it[1]; + $info['from'] = $it[2]; + + break; + + case AIM_TYPE_MSG: + $it = explode(":", $command['incoming'],5); + $info['auto'] = $it[2]; + $info['from'] = $it[1]; + $info['message'] = $it[4]; + break; + + case AIM_TYPE_UPDATEBUDDY: + @list($cmd, $info['sn'], $info['online'], $info['warnlevel'], $info['signon'], $info['idle'], $info['uc']) = explode(":", $command['incoming']); + break; + + case AIM_TYPE_SIGNON: + @list($cmd, $info['version']) = explode(":", $command['incoming']); + break; + + case AIM_TYPE_NICK: + @list($cmd, $info['nickname']) = explode(":", $command['incoming']); + break; + case AIM_TYPE_ERROR: + @list($cmd, $info['errorcode'], $info['args']) = explode(":", $command['incoming']); + break; + + case AIM_TYPE_CHATJ: + @list($cmd, $info['chatid'], $info['chatname']) = explode(":", $command['incoming']); + break; + + case AIM_TYPE_CHATI: + @list($cmd, $info['chatid'], $info['user'], $info['whisper'], $info['message']) = explode(":", $command['incoming'],5); + break; + + case AIM_TYPE_CHATUPDBUD: + @list($cmd, $info['chatid'], $info['inside'], $info['userlist']) = explode(":", $command['incoming'],3); + break; + + case AIM_TYPE_CHATINV: + @list($cmd, $info['chatname'], $info['chatid'], $info['from'], $info['message']) = explode(":", $command['incoming'],5); + break; + + case AIM_TYPE_CHATLE: + @list($cmd, $info['chatid']) = explode(":", $command['incoming']); + break; + + case AIM_TYPE_URL: + @list($cmd, $info['windowname'], $info['url']) = explode(":", $command['incoming'],3); + break; + + case AIM_TYPE_RVOUSP: + @list($cmd,$info['user'],$info['uuid'],$info['cookie'],$info['seq'],$info['rip'],$info['pip'],$info['vip'],$info['port'],$info['tlvs']) = explode(":",$command['incoming'],10); + break; + + case AIM_TYPE_NICKSTAT: + case AIM_TYPE_PASSSTAT: + @list($cmd, $info['returncode'], $info['opt']) = explode(":", $command['incoming'],3); + break; + + default: + $info['command'] = $command['incoming']; + } + return $info; + } + + /** + * Returns a parsed message + * + * Calls msg_parse(msg_type( to first determine message type and then parse accordingly + * + * @access public + * @param String $command Raw server message + * @see msg_type + * @see msg_parse + * @return array + */ + static function getMessageInfo($message) + { + return self::msg_parse(self::msg_type($message)); + } + + /** + * Checks socket for end of file + * + * @access public + * @param Resource $socket Socket to check + * @return boolean true if end of file (socket) + */ + static function socketcheck($socket){ + $info = stream_get_meta_data($socket); + return $info['eof']; + //return(feof($socket)); + } +} + +?> diff --git a/plugins/Aim/extlib/phptoclib/dconnection.php b/plugins/Aim/extlib/phptoclib/dconnection.php new file mode 100755 index 000000000..c6be25ffb --- /dev/null +++ b/plugins/Aim/extlib/phptoclib/dconnection.php @@ -0,0 +1,229 @@ +<?php + +//The following class was created June 30th 2004 by Jeremy(pickle) +//This class is designed to handle a direct connection + +class Dconnect +{ + var $sock; + var $lastReceived; + var $lastMessage; + var $connected; + var $cookie; + var $type=2; + var $connectedTo; + + + function Dconnect($ip,$port) + { + if(!$this->connect($ip,$port)) + { + sEcho("Connection failed constructor"); + $this->connected=false; + } + else + $this->connected=true; + + $this->lastMessage=""; + $this->lastReceived=""; + } + + function readDIM() + { + /* + if(!$this->stuffToRead()) + { + sEcho("Nothing to read"); + $this->lastMessage=$this->lastReceived=""; + return false; + } + */ + $head=fread($this->sock,6); + if(strlen($head)<=0) + { + sEcho("The direct connection has been closed"); + return false; + } + $minihead=unpack("a4ver/nsize",$head); + if($minihead['size'] <=0) + return; + $headerinfo=unpack("nchan/nsix/nzero/a6cookie/Npt1/Npt2/npt3/Nlen/Npt/npt0/ntype/Nzerom/a*sn",fread($this->sock,($minihead['size']-6))); + $allheader=array_merge($minihead,$headerinfo); + sEcho($allheader); + if($allheader['len']>0 && $allheader['len'] <= MAX_DIM_SIZE) + { + $left=$allheader['len']; + $stuff=""; + $nonin=0; + while(strlen($stuff) < $allheader['len'] && $nonin<3) + { + $stuffg=fread($this->sock,$left); + if(strlen($stuffg)<0) + { + $nonin++; + continue; + } + $left=$left - strlen($stuffg); + $stuff.=$stuffg; + } + $data=unpack("a*decoded",$stuff); + } + + else if($allheader['len'] > MAX_DIM_SIZE) + { + $data['decoded']="too big"; + } + + else + $data['decoded']=""; + $all=array_merge($allheader,$data); + + $this->lastReceived=$all; + $this->lastMessage=$all['decoded']; + + //$function=$this->DimInf . "(\$all);"; + //eval($function); + + return $all; + } + + function sendMessage($message,$sn) + { + //Make the "mini header" + $minihead=pack("a4n","ODC2",76); + $header=pack("nnna6NNnNNnnNa*",1,6,0,$this->cookie,0,0,0,strlen($message),0,0,96,0,$sn); + $bighead=$minihead . $header; + while(strlen($bighead)<76) + $bighead.=pack("c",0); + + $tosend=$bighead . pack("a*",$message); + $w=array($this->sock); + stream_select($r=NULL,$w,$e=NULL,NULL); + //Now send it all + fputs($this->sock,$tosend,strlen($tosend)); + } + function stuffToRead() + { + //$info=stream_get_meta_data($this->sock); + //sEcho($info); + $s=array($this->sock); + $changed=stream_select($s,$fds=NULL,$m=NULL,0,20000); + return ($changed>0); + } + + function close() + { + $this->connected=false; + return fclose($this->sock); + } + + function connect($ip,$port) + { + $this->sock=fsockopen($ip,$port,$en,$es,3); + if(!$this->sock) + { sEcho("Connection failed"); + $this->sock=null; + return false; + } + return true; + } +} + + +class FileSendConnect +{ + var $sock; + var $lastReceived; + var $lastMessage; + var $connected; + var $cookie; + var $tpye=3; + + + function FileSendConnect($ip,$port) + { + if(!$this->connect($ip,$port)) + { + sEcho("Connection failed constructor"); + $this->connected=false; + } + else + $this->connected=true; + + $this->lastMessage=""; + $this->lastReceived=""; + } + + function readDIM() + { + + if(!$this->stuffToRead()) + { + sEcho("Nothing to read"); + $this->lastMessage=$this->lastReceived=""; + return; + } + + $minihead=unpack("a4ver/nsize",fread($this->sock,6)); + if($minihead['size'] <=0) + return; + $headerinfo=unpack("nchan/nsix/nzero/a6cookie/Npt1/Npt2/npt3/Nlen/Npt/npt0/ntype/Nzerom/a*sn",fread($this->sock,($minihead['size']-6))); + $allheader=array_merge($minihead,$headerinfo); + sEcho($allheader); + if($allheader['len']>0) + $data=unpack("a*decoded",fread($this->sock,$allheader['len'])); + else + $data['decoded']=""; + $all=array_merge($allheader,$data); + + $this->lastReceived=$all; + $this->lastMessage=$all['decoded']; + + //$function=$this->DimInf . "(\$all);"; + //eval($function); + + return $all; + } + + function sendMessage($message,$sn) + { + //Make the "mini header" + $minihead=pack("a4n","ODC2",76); + $header=pack("nnna6NNnNNnnNa*",1,6,0,$this->cookie,0,0,0,strlen($message),0,0,96,0,$sn); + $bighead=$minihead . $header; + while(strlen($bighead)<76) + $bighead.=pack("c",0); + + $tosend=$bighead . pack("a*",$message); + + //Now send it all + fwrite($this->sock,$tosend,strlen($tosend)); + } + function stuffToRead() + { + //$info=stream_get_meta_data($this->sock); + //sEcho($info); + $s=array($this->sock); + $changed=stream_select($s,$fds=NULL,$m=NULL,1); + return ($changed>0); + } + + function close() + { + $this->connected=false; + fclose($this->sock); + unset($this->sock); + return true; + } + + function connect($ip,$port) + { + $this->sock=fsockopen($ip,$port,$en,$es,3); + if(!$this->sock) + { sEcho("Connection failed to" . $ip . ":" . $port); + $this->sock=null; + return false; + } + return true; + } +} diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php index 11e3c0b84..38c821636 100644 --- a/plugins/BitlyUrl/BitlyUrlPlugin.php +++ b/plugins/BitlyUrl/BitlyUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class BitlyUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/ClientSideShorten/ClientSideShortenPlugin.php b/plugins/ClientSideShorten/ClientSideShortenPlugin.php index 57f5ad89e..3da08e05d 100644 --- a/plugins/ClientSideShorten/ClientSideShortenPlugin.php +++ b/plugins/ClientSideShorten/ClientSideShortenPlugin.php @@ -51,8 +51,10 @@ class ClientSideShortenPlugin extends Plugin } function onEndShowScripts($action){ - $action->inlineScript('var Notice_maxContent = ' . Notice::maxContent()); if (common_logged_in()) { + $user = common_current_user(); + $action->inlineScript('var maxNoticeLength = ' . User_urlshortener_prefs::maxNoticeLength($user)); + $action->inlineScript('var maxUrlLength = ' . User_urlshortener_prefs::maxUrlLength($user)); $action->script('plugins/ClientSideShorten/shorten.js'); } } diff --git a/plugins/ClientSideShorten/shorten.js b/plugins/ClientSideShorten/shorten.js index 856c7f05f..bdffb81e2 100644 --- a/plugins/ClientSideShorten/shorten.js +++ b/plugins/ClientSideShorten/shorten.js @@ -31,10 +31,21 @@ })(jQuery,'smartkeypress'); + function longestWordInString(string) + { + var words = string.split(/\s/); + var longestWord = 0; + for(var i=0;i<words.length;i++) + if(words[i].length > longestWord) longestWord = words[i].length; + return longestWord; + } + function shorten() { - $noticeDataText = $('#'+SN.C.S.NoticeDataText); - if(Notice_maxContent > 0 && $noticeDataText.val().length > Notice_maxContent){ + var $noticeDataText = $('#'+SN.C.S.NoticeDataText); + var noticeText = $noticeDataText.val(); + + if(noticeText.length > maxNoticeLength || longestWordInString(noticeText) > maxUrlLength) { var original = $noticeDataText.val(); shortenAjax = $.ajax({ url: $('address .url')[0].href+'/plugins/ClientSideShorten/shorten', diff --git a/plugins/Gravatar/GravatarPlugin.php b/plugins/Gravatar/GravatarPlugin.php index 580852072..8a9721ea9 100644 --- a/plugins/Gravatar/GravatarPlugin.php +++ b/plugins/Gravatar/GravatarPlugin.php @@ -30,11 +30,13 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { class GravatarPlugin extends Plugin { - function onInitializePlugin() { + function onInitializePlugin() + { return true; } - function onStartAvatarFormData($action) { + function onStartAvatarFormData($action) + { $user = common_current_user(); $hasGravatar = $this->hasGravatar($user->id); @@ -43,7 +45,8 @@ class GravatarPlugin extends Plugin } } - function onEndAvatarFormData(&$action) { + function onEndAvatarFormData($action) + { $user = common_current_user(); $hasGravatar = $this->hasGravatar($user->id); @@ -89,7 +92,8 @@ class GravatarPlugin extends Plugin } } - function onStartAvatarSaveForm($action) { + function onStartAvatarSaveForm($action) + { if ($action->arg('add')) { $result = $this->gravatar_save(); @@ -178,7 +182,8 @@ class GravatarPlugin extends Plugin 'success' => true); } - function gravatar_url($email, $size) { + function gravatar_url($email, $size) + { $url = "http://www.gravatar.com/avatar.php?gravatar_id=". md5(strtolower($email)). "&default=".urlencode(Avatar::defaultImage($size)). @@ -197,4 +202,4 @@ class GravatarPlugin extends Plugin return true; } -} +}
\ No newline at end of file diff --git a/plugins/Imap/imapmanager.php b/plugins/Imap/imapmanager.php index 0bbd42e78..cfc08c1ee 100644 --- a/plugins/Imap/imapmanager.php +++ b/plugins/Imap/imapmanager.php @@ -59,12 +59,14 @@ class ImapManager extends IoManager } /** - * Tell the i/o master we need one instance for each supporting site - * being handled in this process. + * Tell the i/o master we need one instance globally. + * Since this is a plugin manager, the plugin class itself will + * create one instance per site. This prevents the IoMaster from + * making more instances. */ public static function multiSite() { - return IoManager::INSTANCE_PER_SITE; + return IoManager::GLOBAL_SINGLE_ONLY; } /** diff --git a/plugins/LilUrl/LilUrlPlugin.php b/plugins/LilUrl/LilUrlPlugin.php index 1c3d6f84b..06ea49ff5 100644 --- a/plugins/LilUrl/LilUrlPlugin.php +++ b/plugins/LilUrl/LilUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class LilUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/MobileProfile/mp-screen.css b/plugins/MobileProfile/mp-screen.css index 0fc801612..1f70b5612 100644 --- a/plugins/MobileProfile/mp-screen.css +++ b/plugins/MobileProfile/mp-screen.css @@ -2,7 +2,7 @@ * * @package StatusNet * @author Sarven Capadisli <csarven@status.net> - * @copyright 2009 StatusNet, Inc. + * @copyright 2009-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/ */ @@ -195,10 +195,6 @@ width:43px; margin-right:1%; } -.notice-options form { -width:16px; -height:16px; -} .notice-options form.processing { background-image:none; } diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index c61e2cc5f..70971c5b3 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -158,6 +158,9 @@ class OStatusPlugin extends Plugin // Also, we'll add in the salmon link $salmon = common_local_url($salmonAction, array('id' => $id)); + $feed->addLink($salmon, array('rel' => Salmon::REL_SALMON)); + + // XXX: these are deprecated $feed->addLink($salmon, array('rel' => Salmon::NS_REPLIES)); $feed->addLink($salmon, array('rel' => Salmon::NS_MENTIONS)); } @@ -953,4 +956,16 @@ class OStatusPlugin extends Plugin } return false; } + + public function onStartProfileGetAtomFeed($profile, &$feed) + { + $oprofile = Ostatus_profile::staticGet('profile_id', $profile->id); + + if (empty($oprofile)) { + return true; + } + + $feed = $oprofile->feeduri; + return false; + } } diff --git a/plugins/OStatus/actions/hostmeta.php b/plugins/OStatus/actions/hostmeta.php index 6d35ada6c..8ca07f916 100644 --- a/plugins/OStatus/actions/hostmeta.php +++ b/plugins/OStatus/actions/hostmeta.php @@ -36,13 +36,12 @@ class HostMetaAction extends Action $url.= '?uri={uri}'; $xrd = new XRD(); - - $xrd = new XRD(); $xrd->host = $domain; $xrd->links[] = array('rel' => Discovery::LRDD_REL, 'template' => $url, 'title' => array('Resource Descriptor')); + header('Content-type: application/xrd+xml'); print $xrd->toXML(); } } diff --git a/plugins/OStatus/lib/magicenvelope.php b/plugins/OStatus/lib/magicenvelope.php index f39686b71..3bdf24b31 100644 --- a/plugins/OStatus/lib/magicenvelope.php +++ b/plugins/OStatus/lib/magicenvelope.php @@ -97,24 +97,18 @@ class MagicEnvelope } public function toXML($env) { - $dom = new DOMDocument(); - - $envelope = $dom->createElementNS(MagicEnvelope::NS, 'me:env'); - $envelope->setAttribute('xmlns:me', MagicEnvelope::NS); - $data = $dom->createElementNS(MagicEnvelope::NS, 'me:data', $env['data']); - $data->setAttribute('type', $env['data_type']); - $envelope->appendChild($data); - $enc = $dom->createElementNS(MagicEnvelope::NS, 'me:encoding', $env['encoding']); - $envelope->appendChild($enc); - $alg = $dom->createElementNS(MagicEnvelope::NS, 'me:alg', $env['alg']); - $envelope->appendChild($alg); - $sig = $dom->createElementNS(MagicEnvelope::NS, 'me:sig', $env['sig']); - $envelope->appendChild($sig); - - $dom->appendChild($envelope); + $xs = new XMLStringer(); + $xs->startXML(); + $xs->elementStart('me:env', array('xmlns:me' => MagicEnvelope::NS)); + $xs->element('me:data', array('type' => $env['data_type']), $env['data']); + $xs->element('me:encoding', null, $env['encoding']); + $xs->element('me:alg', null, $env['alg']); + $xs->element('me:sig', null, $env['sig']); + $xs->elementEnd('me:env'); - - return $dom->saveXML(); + $string = $xs->getString(); + common_debug($string); + return $string; } diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php index 3d3341bc6..ef7719a40 100644 --- a/plugins/OStatus/lib/salmon.php +++ b/plugins/OStatus/lib/salmon.php @@ -28,9 +28,11 @@ */ class Salmon { + const REL_SALMON = 'salmon'; + const REL_MENTIONED = 'mentioned'; + // XXX: these are deprecated const NS_REPLIES = "http://salmon-protocol.org/ns/salmon-replies"; - const NS_MENTIONS = "http://salmon-protocol.org/ns/salmon-mention"; /** diff --git a/plugins/OStatus/lib/xrd.php b/plugins/OStatus/lib/xrd.php index 34b28790b..a10b9f427 100644 --- a/plugins/OStatus/lib/xrd.php +++ b/plugins/OStatus/lib/xrd.php @@ -106,44 +106,43 @@ class XRD public function toXML() { - $dom = new DOMDocument('1.0', 'UTF-8'); - $dom->formatOutput = true; - - $xrd_dom = $dom->createElementNS(XRD::XRD_NS, 'XRD'); - $dom->appendChild($xrd_dom); + $xs = new XMLStringer(); + + $xs->startXML(); + $xs->elementStart('XRD', array('xmlns' => XRD::XRD_NS)); if ($this->host) { - $host_dom = $dom->createElement('hm:Host', $this->host); - $xrd_dom->setAttributeNS(XRD::XML_NS, 'xmlns:hm', XRD::HOST_META_NS); - $xrd_dom->appendChild($host_dom); + $xs->element('hm:Host', array('xmlns:hm' => XRD::HOST_META_NS), $this->host); } - if ($this->expires) { - $expires_dom = $dom->createElement('Expires', $this->expires); - $xrd_dom->appendChild($expires_dom); - } - - if ($this->subject) { - $subject_dom = $dom->createElement('Subject', $this->subject); - $xrd_dom->appendChild($subject_dom); - } - - foreach ($this->alias as $alias) { - $alias_dom = $dom->createElement('Alias', $alias); - $xrd_dom->appendChild($alias_dom); - } - - foreach ($this->types as $type) { - $type_dom = $dom->createElement('Type', $type); - $xrd_dom->appendChild($type_dom); - } - - foreach ($this->links as $link) { - $link_dom = $this->saveLink($dom, $link); - $xrd_dom->appendChild($link_dom); - } - - return $dom->saveXML(); + if ($this->expires) { + $xs->element('Expires', null, $this->expires); + } + + if ($this->subject) { + $xs->element('Subject', null, $this->subject); + } + + foreach ($this->alias as $alias) { + $xs->element('Alias', null, $alias); + } + + foreach ($this->links as $link) { + $titles = array(); + if (isset($link['title'])) { + $titles = $link['title']; + unset($link['title']); + } + $xs->elementStart('Link', $link); + foreach ($titles as $title) { + $xs->element('Title', null, $title); + } + $xs->elementEnd('Link'); + } + + $xs->elementEnd('XRD'); + + return $xs->getString(); } function parseType($element) @@ -169,32 +168,5 @@ class XRD return $link; } - - function saveLink($doc, $link) - { - $link_element = $doc->createElement('Link'); - if (!empty($link['rel'])) { - $link_element->setAttribute('rel', $link['rel']); - } - if (!empty($link['type'])) { - $link_element->setAttribute('type', $link['type']); - } - if (!empty($link['href'])) { - $link_element->setAttribute('href', $link['href']); - } - if (!empty($link['template'])) { - $link_element->setAttribute('template', $link['template']); - } - - if (!empty($link['title']) && is_array($link['title'])) { - foreach($link['title'] as $title) { - $title = $doc->createElement('Title', $title); - $link_element->appendChild($title); - } - } - - - return $link_element; - } } diff --git a/plugins/OStatus/lib/xrdaction.php b/plugins/OStatus/lib/xrdaction.php index f1a56e0a8..d8cf648d6 100644 --- a/plugins/OStatus/lib/xrdaction.php +++ b/plugins/OStatus/lib/xrdaction.php @@ -76,6 +76,9 @@ class XrdAction extends Action $salmon_url = common_local_url('usersalmon', array('id' => $this->user->id)); + $xrd->links[] = array('rel' => Salmon::REL_SALMON, + 'href' => $salmon_url); + // XXX : Deprecated - to be removed. $xrd->links[] = array('rel' => Salmon::NS_REPLIES, 'href' => $salmon_url); @@ -98,7 +101,7 @@ class XrdAction extends Action $xrd->links[] = array('rel' => 'http://ostatus.org/schema/1.0/subscribe', 'template' => $url ); - header('Content-type: text/xml'); + header('Content-type: application/xrd+xml'); print $xrd->toXML(); } diff --git a/plugins/PtitUrl/PtitUrlPlugin.php b/plugins/PtitUrl/PtitUrlPlugin.php index 2963e8997..25a463c0b 100644 --- a/plugins/PtitUrl/PtitUrlPlugin.php +++ b/plugins/PtitUrl/PtitUrlPlugin.php @@ -30,7 +30,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; class PtitUrlPlugin extends UrlShortenerPlugin { diff --git a/plugins/Recaptcha/RecaptchaPlugin.php b/plugins/Recaptcha/RecaptchaPlugin.php index 7cc34c568..b7a0e92c7 100644 --- a/plugins/Recaptcha/RecaptchaPlugin.php +++ b/plugins/Recaptcha/RecaptchaPlugin.php @@ -41,7 +41,8 @@ class RecaptchaPlugin extends Plugin var $failed; var $ssl; - function onInitializePlugin(){ + function onInitializePlugin() + { if(!isset($this->private_key)) { common_log(LOG_ERR, 'Recaptcha: Must specify private_key in config.php'); } @@ -50,7 +51,8 @@ class RecaptchaPlugin extends Plugin } } - function checkssl(){ + function checkssl() + { if(common_config('site', 'ssl') === 'sometimes' || common_config('site', 'ssl') === 'always') { return true; } @@ -102,7 +104,7 @@ class RecaptchaPlugin extends Plugin if($this->display_errors) { $action->showForm ("(reCAPTCHA error: " . $resp->error . ")"); } - $action->showForm("Captcha does not match!"); + $action->showForm(_m("Captcha does not match!")); return false; } } @@ -118,4 +120,4 @@ class RecaptchaPlugin extends Plugin 'captcha to the registration page.')); return true; } -} +}
\ No newline at end of file diff --git a/plugins/SimpleUrl/SimpleUrlPlugin.php b/plugins/SimpleUrl/SimpleUrlPlugin.php index 5e2e85878..24250f4d0 100644 --- a/plugins/SimpleUrl/SimpleUrlPlugin.php +++ b/plugins/SimpleUrl/SimpleUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class SimpleUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/TightUrl/TightUrlPlugin.php b/plugins/TightUrl/TightUrlPlugin.php index b8e5addb1..8fd645945 100644 --- a/plugins/TightUrl/TightUrlPlugin.php +++ b/plugins/TightUrl/TightUrlPlugin.php @@ -31,8 +31,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/plugins/UrlShortener/UrlShortenerPlugin.php'; - class TightUrlPlugin extends UrlShortenerPlugin { public $serviceUrl; diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index 65b3a6b38..0505a328f 100644 --- a/plugins/TwitterBridge/TwitterBridgePlugin.php +++ b/plugins/TwitterBridge/TwitterBridgePlugin.php @@ -50,6 +50,7 @@ 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. @@ -322,5 +323,17 @@ class TwitterBridgePlugin extends Plugin return true; } + /** + * Expose the adminImportControl setting to the administration panel code. + * This allows us to disable the import bridge enabling checkbox for administrators, + * since on a bulk farm site we can't yet automate the import daemon setup. + * + * @return boolean hook value; + */ + function onTwitterBridgeAdminImportControl() + { + return (bool)$this->adminImportControl; + } + } diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php index 7c624fdb3..03a4bd3f3 100755 --- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php +++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php @@ -186,7 +186,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon $timeline = null; try { - $timeline = $client->statusesFriendsTimeline(); + $timeline = $client->statusesHomeTimeline(); } catch (Exception $e) { common_log(LOG_WARNING, $this->name() . ' - Twitter client unable to get friends timeline for user ' . diff --git a/plugins/TwitterBridge/twitteradminpanel.php b/plugins/TwitterBridge/twitteradminpanel.php index a78a92c66..69f8da078 100644 --- a/plugins/TwitterBridge/twitteradminpanel.php +++ b/plugins/TwitterBridge/twitteradminpanel.php @@ -92,9 +92,11 @@ class TwitteradminpanelAction extends AdminPanelAction ); static $booleans = array( - 'twitter' => array('signin'), - 'twitterimport' => array('enabled') + 'twitter' => array('signin') ); + if (Event::handle('TwitterBridgeAdminImportControl')) { + $booleans['twitterimport'] = array('enabled'); + } $values = array(); @@ -155,6 +157,13 @@ class TwitteradminpanelAction extends AdminPanelAction ); } } + + function isImportEnabled() + { + // Since daemon setup isn't automated yet... + // @todo: if merged into main queues, detect presence of daemon config + return true; + } } class TwitterAdminPanelForm extends AdminForm @@ -263,13 +272,15 @@ class TwitterAdminPanelForm extends AdminForm ); $this->unli(); - $this->li(); - $this->out->checkbox( - 'enabled', _m('Enable Twitter import'), - (bool) $this->value('enabled', 'twitterimport'), - _m('Allow users to import their Twitter friends\' timelines') - ); - $this->unli(); + if (Event::handle('TwitterBridgeAdminImportControl')) { + $this->li(); + $this->out->checkbox( + 'enabled', _m('Enable Twitter import'), + (bool) $this->value('enabled', 'twitterimport'), + _m('Allow users to import their Twitter friends\' timelines. Requires daemons to be manually configured.') + ); + $this->unli(); + } $this->out->elementEnd('ul'); diff --git a/plugins/TwitterBridge/twitterbasicauthclient.php b/plugins/TwitterBridge/twitterbasicauthclient.php index 2c18c9469..23828ed4a 100644 --- a/plugins/TwitterBridge/twitterbasicauthclient.php +++ b/plugins/TwitterBridge/twitterbasicauthclient.php @@ -2,7 +2,7 @@ /** * StatusNet, the distributed open-source microblogging tool * - * Class for doing OAuth calls against Twitter + * Class for doing HTTP basic auth calls against Twitter * * PHP version 5 * @@ -126,6 +126,35 @@ class TwitterBasicAuthClient } /** + * Calls Twitter's /statuses/home_timeline API method + * + * @param int $since_id show statuses after this id + * @param int $max_id show statuses before this id + * @param int $cnt number of statuses to show + * @param int $page page number + * + * @return mixed an array of statuses similar to friends timeline but including retweets + */ + function statusesHomeTimeline($since_id = null, $max_id = null, + $cnt = null, $page = null) + { + $url = 'https://twitter.com/statuses/home_timeline.json'; + $params = array('since_id' => $since_id, + 'max_id' => $max_id, + 'count' => $cnt, + 'page' => $page); + $qry = http_build_query($params); + + if (!empty($qry)) { + $url .= "?$qry"; + } + + $response = $this->httpRequest($url); + $statuses = json_decode($response); + return $statuses; + } + + /** * Calls Twitter's /statuses/friends API method * * @param int $id id of the user whom you wish to see friends of diff --git a/plugins/TwitterBridge/twitteroauthclient.php b/plugins/TwitterBridge/twitteroauthclient.php index d895d8c73..f6ef78675 100644 --- a/plugins/TwitterBridge/twitteroauthclient.php +++ b/plugins/TwitterBridge/twitteroauthclient.php @@ -218,6 +218,36 @@ class TwitterOAuthClient extends OAuthClient } /** + * Calls Twitter's /statuses/home_timeline API method + * + * @param int $since_id show statuses after this id + * @param int $max_id show statuses before this id + * @param int $cnt number of statuses to show + * @param int $page page number + * + * @return mixed an array of statuses, similar to friends_timeline but including retweets + */ + function statusesHomeTimeline($since_id = null, $max_id = null, + $cnt = null, $page = null) + { + + $url = 'https://twitter.com/statuses/home_timeline.json'; + $params = array('since_id' => $since_id, + 'max_id' => $max_id, + 'count' => $cnt, + 'page' => $page); + $qry = http_build_query($params); + + if (!empty($qry)) { + $url .= "?$qry"; + } + + $response = $this->oAuthGet($url); + $statuses = json_decode($response); + return $statuses; + } + + /** * Calls Twitter's /statuses/friends API method * * @param int $id id of the user whom you wish to see friends of diff --git a/plugins/UrlShortener/UrlShortenerPlugin.php b/plugins/UrlShortener/UrlShortenerPlugin.php deleted file mode 100644 index 41f64bb26..000000000 --- a/plugins/UrlShortener/UrlShortenerPlugin.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * StatusNet, the distributed open-source microblogging tool - * - * Superclass for plugins that do URL shortening - * - * PHP version 5 - * - * LICENCE: This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * @category Plugin - * @package StatusNet - * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -/** - * Superclass for plugins that do URL shortening - * - * @category Plugin - * @package StatusNet - * @author Craig Andrews <candrews@integralblue.com> - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -abstract class UrlShortenerPlugin extends Plugin -{ - public $shortenerName; - public $freeService=false; - //------------Url Shortener plugin should implement some (or all) of these methods------------\\ - - /** - * Short a URL - * @param url - * @return string shortened version of the url, or null if URL shortening failed - */ - protected abstract function shorten($url); - - //------------These methods may help you implement your plugin------------\\ - protected function http_get($url) - { - $request = HTTPClient::start(); - $response = $request->get($url); - return $response->getBody(); - } - - protected function http_post($url,$data) - { - $request = HTTPClient::start(); - $response = $request->post($url, null, $data); - return $response->getBody(); - } - - //------------Below are the methods that connect StatusNet to the implementing Url Shortener plugin------------\\ - - function onInitializePlugin(){ - if(!isset($this->shortenerName)){ - throw new Exception("must specify a shortenerName"); - } - } - - function onGetUrlShorteners(&$shorteners) - { - $shorteners[$this->shortenerName]=array('freeService'=>$this->freeService); - } - - function onStartShortenUrl($url,$shortenerName,&$shortenedUrl) - { - if($shortenerName == $this->shortenerName && strlen($url) >= common_config('site', 'shorturllength')){ - $result = $this->shorten($url); - if(isset($result) && $result != null && $result !== false){ - $shortenedUrl=$result; - common_log(LOG_INFO, __CLASS__ . ": $this->shortenerName shortened $url to $shortenedUrl"); - return false; - } - } - } -} diff --git a/lib/queued_xmpp.php b/plugins/Xmpp/Queued_XMPP.php index f6bccfd5b..73eff2246 100644 --- a/lib/queued_xmpp.php +++ b/plugins/Xmpp/Queued_XMPP.php @@ -31,13 +31,17 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } -require_once INSTALLDIR . '/lib/jabber.php'; - class Queued_XMPP extends XMPPHP_XMPP { + /** + * Reference to the XmppPlugin object we're hooked up to. + */ + public $plugin; + /** * Constructor * + * @param XmppPlugin $plugin * @param string $host * @param integer $port * @param string $user @@ -47,8 +51,10 @@ class Queued_XMPP extends XMPPHP_XMPP * @param boolean $printlog * @param string $loglevel */ - public function __construct($host, $port, $user, $password, $resource, $server = null, $printlog = false, $loglevel = null) + public function __construct($plugin, $host, $port, $user, $password, $resource, $server = null, $printlog = false, $loglevel = null) { + $this->plugin = $plugin; + parent::__construct($host, $port, $user, $password, $resource, $server, $printlog, $loglevel); // We use $host to connect, but $server to build JIDs if specified. @@ -73,55 +79,43 @@ class Queued_XMPP extends XMPPHP_XMPP */ public function send($msg, $timeout=NULL) { - $qm = QueueManager::get('xmppout'); - $qm->enqueue(strval($msg), 'xmppout'); - } - - /** - * Since we'll be getting input through a queue system's run loop, - * we'll process one standalone message at a time rather than our - * own XMPP message pump. - * - * @param string $message - */ - public function processMessage($message) { - $frame = array_shift($this->frames); - xml_parse($this->parser, $frame->body, false); + $this->plugin->enqueue_outgoing_raw($msg); } //@{ /** - * Stream i/o functions disabled; push input through processMessage() + * Stream i/o functions disabled; only do output */ public function connect($timeout = 30, $persistent = false, $sendinit = true) { - throw new Exception("Can't connect to server from XMPP queue proxy."); + throw new Exception("Can't connect to server from fake XMPP."); } public function disconnect() { - throw new Exception("Can't connect to server from XMPP queue proxy."); + throw new Exception("Can't connect to server from fake XMPP."); } public function process() { - throw new Exception("Can't read stream from XMPP queue proxy."); + throw new Exception("Can't read stream from fake XMPP."); } public function processUntil($event, $timeout=-1) { - throw new Exception("Can't read stream from XMPP queue proxy."); + throw new Exception("Can't read stream from fake XMPP."); } public function read() { - throw new Exception("Can't read stream from XMPP queue proxy."); + throw new Exception("Can't read stream from fake XMPP."); } public function readyToProcess() { - throw new Exception("Can't read stream from XMPP queue proxy."); + throw new Exception("Can't read stream from fake XMPP."); } //@} + } diff --git a/plugins/Xmpp/README b/plugins/Xmpp/README new file mode 100644 index 000000000..9bd71e980 --- /dev/null +++ b/plugins/Xmpp/README @@ -0,0 +1,35 @@ +The XMPP plugin allows users to send and receive notices over the XMPP/Jabber/GTalk network. + +Installation +============ +add "addPlugin('xmpp', + array('setting'=>'value', 'setting2'=>'value2', ...);" +to the bottom of your config.php + +The daemon included with this plugin must be running. It will be started by +the plugin along with their other daemons when you run scripts/startdaemons.sh. +See the StatusNet README for more about queuing and daemons. + +Settings +======== +user*: user part of the jid +server*: server part of the jid +resource: resource part of the jid +port (5222): port on which to connect to the server +encryption (true): use encryption on the connection +host (same as server): host to connect to. Usually, you won't set this. +debug (false): log extra debug info +public: list of jid's that should get the public feed (firehose) + +* required +default values are in (parenthesis) + +Example +======= +addPlugin('xmpp', array( + 'user=>'update', + 'server=>'identi.ca', + 'password'=>'...', + 'public'=>array('bob@aol.com', 'sue@google.com') +)); + diff --git a/plugins/Xmpp/Sharing_XMPP.php b/plugins/Xmpp/Sharing_XMPP.php new file mode 100644 index 000000000..4b69125da --- /dev/null +++ b/plugins/Xmpp/Sharing_XMPP.php @@ -0,0 +1,43 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2009, StatusNet, Inc. + * + * Send and receive notices using the Jabber network + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Jabber + * @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); +} + +class Sharing_XMPP extends XMPPHP_XMPP +{ + function getSocket() + { + return $this->socket; + } +} diff --git a/plugins/Xmpp/XmppPlugin.php b/plugins/Xmpp/XmppPlugin.php new file mode 100644 index 000000000..66468b5f2 --- /dev/null +++ b/plugins/Xmpp/XmppPlugin.php @@ -0,0 +1,433 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2009, StatusNet, Inc. + * + * Send and receive notices using the XMPP network + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category IM + * @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); +} + +/** + * Plugin for XMPP + * + * @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 AGPL 3.0 + * @link http://status.net/ + */ + +class XmppPlugin extends ImPlugin +{ + public $server = null; + public $port = 5222; + public $user = 'update'; + public $resource = null; + public $encryption = true; + public $password = null; + public $host = null; // only set if != server + public $debug = false; // print extra debug info + + public $transport = 'xmpp'; + + function getDisplayName(){ + return _m('XMPP/Jabber/GTalk'); + } + + /** + * Splits a Jabber ID (JID) into node, domain, and resource portions. + * + * Based on validation routine submitted by: + * @copyright 2009 Patrick Georgi <patrick@georgi-clan.de> + * @license Licensed under ISC-L, which is compatible with everything else that keeps the copyright notice intact. + * + * @param string $jid string to check + * + * @return array with "node", "domain", and "resource" indices + * @throws Exception if input is not valid + */ + + protected function splitJid($jid) + { + $chars = ''; + /* the following definitions come from stringprep, Appendix C, + which is used in its entirety by nodeprop, Chapter 5, "Prohibited Output" */ + /* C1.1 ASCII space characters */ + $chars .= "\x{20}"; + /* C1.2 Non-ASCII space characters */ + $chars .= "\x{a0}\x{1680}\x{2000}-\x{200b}\x{202f}\x{205f}\x{3000a}"; + /* C2.1 ASCII control characters */ + $chars .= "\x{00}-\x{1f}\x{7f}"; + /* C2.2 Non-ASCII control characters */ + $chars .= "\x{80}-\x{9f}\x{6dd}\x{70f}\x{180e}\x{200c}\x{200d}\x{2028}\x{2029}\x{2060}-\x{2063}\x{206a}-\x{206f}\x{feff}\x{fff9}-\x{fffc}\x{1d173}-\x{1d17a}"; + /* C3 - Private Use */ + $chars .= "\x{e000}-\x{f8ff}\x{f0000}-\x{ffffd}\x{100000}-\x{10fffd}"; + /* C4 - Non-character code points */ + $chars .= "\x{fdd0}-\x{fdef}\x{fffe}\x{ffff}\x{1fffe}\x{1ffff}\x{2fffe}\x{2ffff}\x{3fffe}\x{3ffff}\x{4fffe}\x{4ffff}\x{5fffe}\x{5ffff}\x{6fffe}\x{6ffff}\x{7fffe}\x{7ffff}\x{8fffe}\x{8ffff}\x{9fffe}\x{9ffff}\x{afffe}\x{affff}\x{bfffe}\x{bffff}\x{cfffe}\x{cffff}\x{dfffe}\x{dffff}\x{efffe}\x{effff}\x{ffffe}\x{fffff}\x{10fffe}\x{10ffff}"; + /* C5 - Surrogate codes */ + $chars .= "\x{d800}-\x{dfff}"; + /* C6 - Inappropriate for plain text */ + $chars .= "\x{fff9}-\x{fffd}"; + /* C7 - Inappropriate for canonical representation */ + $chars .= "\x{2ff0}-\x{2ffb}"; + /* C8 - Change display properties or are deprecated */ + $chars .= "\x{340}\x{341}\x{200e}\x{200f}\x{202a}-\x{202e}\x{206a}-\x{206f}"; + /* C9 - Tagging characters */ + $chars .= "\x{e0001}\x{e0020}-\x{e007f}"; + + /* Nodeprep forbids some more characters */ + $nodeprepchars = $chars; + $nodeprepchars .= "\x{22}\x{26}\x{27}\x{2f}\x{3a}\x{3c}\x{3e}\x{40}"; + + $parts = explode("/", $jid, 2); + if (count($parts) > 1) { + $resource = $parts[1]; + if ($resource == '') { + // Warning: empty resource isn't legit. + // But if we're normalizing, we may as well take it... + } + } else { + $resource = null; + } + + $node = explode("@", $parts[0]); + if ((count($node) > 2) || (count($node) == 0)) { + throw new Exception("Invalid JID: too many @s"); + } else if (count($node) == 1) { + $domain = $node[0]; + $node = null; + } else { + $domain = $node[1]; + $node = $node[0]; + if ($node == '') { + throw new Exception("Invalid JID: @ but no node"); + } + } + + // Length limits per http://xmpp.org/rfcs/rfc3920.html#addressing + if ($node !== null) { + if (strlen($node) > 1023) { + throw new Exception("Invalid JID: node too long."); + } + if (preg_match("/[".$nodeprepchars."]/u", $node)) { + throw new Exception("Invalid JID node '$node'"); + } + } + + if (strlen($domain) > 1023) { + throw new Exception("Invalid JID: domain too long."); + } + if (!common_valid_domain($domain)) { + throw new Exception("Invalid JID domain name '$domain'"); + } + + if ($resource !== null) { + if (strlen($resource) > 1023) { + throw new Exception("Invalid JID: resource too long."); + } + if (preg_match("/[".$chars."]/u", $resource)) { + throw new Exception("Invalid JID resource '$resource'"); + } + } + + return array('node' => is_null($node) ? null : mb_strtolower($node), + 'domain' => is_null($domain) ? null : mb_strtolower($domain), + 'resource' => $resource); + } + + /** + * Checks whether a string is a syntactically valid Jabber ID (JID), + * either with or without a resource. + * + * Note that a bare domain can be a valid JID. + * + * @param string $jid string to check + * @param bool $check_domain whether we should validate that domain... + * + * @return boolean whether the string is a valid JID + */ + protected function validateFullJid($jid, $check_domain=false) + { + try { + $parts = $this->splitJid($jid); + if ($check_domain) { + if (!$this->checkDomain($parts['domain'])) { + return false; + } + } + return $parts['resource'] !== ''; // missing or present; empty ain't kosher + } catch (Exception $e) { + return false; + } + } + + /** + * Checks whether a string is a syntactically valid base Jabber ID (JID). + * A base JID won't include a resource specifier on the end; since we + * take it off when reading input we can't really use them reliably + * to direct outgoing messages yet (sorry guys!) + * + * Note that a bare domain can be a valid JID. + * + * @param string $jid string to check + * @param bool $check_domain whether we should validate that domain... + * + * @return boolean whether the string is a valid JID + */ + protected function validateBaseJid($jid, $check_domain=false) + { + try { + $parts = $this->splitJid($jid); + if ($check_domain) { + if (!$this->checkDomain($parts['domain'])) { + return false; + } + } + return ($parts['resource'] === null); // missing; empty ain't kosher + } catch (Exception $e) { + return false; + } + } + + /** + * Normalizes a Jabber ID for comparison, dropping the resource component if any. + * + * @param string $jid JID to check + * @param bool $check_domain if true, reject if the domain isn't findable + * + * @return string an equivalent JID in normalized (lowercase) form + */ + + function normalize($jid) + { + try { + $parts = $this->splitJid($jid); + if ($parts['node'] !== null) { + return $parts['node'] . '@' . $parts['domain']; + } else { + return $parts['domain']; + } + } catch (Exception $e) { + return null; + } + } + + /** + * Check if this domain's got some legit DNS record + */ + protected function checkDomain($domain) + { + if (checkdnsrr("_xmpp-server._tcp." . $domain, "SRV")) { + return true; + } + if (checkdnsrr($domain, "ANY")) { + return true; + } + return false; + } + + function daemon_screenname() + { + $ret = $this->user . '@' . $this->server; + if($this->resource) + { + return $ret . '/' . $this->resource; + }else{ + return $ret; + } + } + + function validate($screenname) + { + return $this->validateBaseJid($screenname, common_config('email', 'check_domain')); + } + + /** + * Load related modules when needed + * + * @param string $cls Name of the class to be loaded + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onAutoload($cls) + { + $dir = dirname(__FILE__); + + switch ($cls) + { + case 'XMPPHP_XMPP': + require_once $dir . '/extlib/XMPPHP/XMPP.php'; + return false; + case 'Sharing_XMPP': + case 'Queued_XMPP': + require_once $dir . '/'.$cls.'.php'; + return false; + case 'XmppManager': + require_once $dir . '/'.strtolower($cls).'.php'; + return false; + default: + return true; + } + } + + function onStartImDaemonIoManagers(&$classes) + { + parent::onStartImDaemonIoManagers(&$classes); + $classes[] = new XmppManager($this); // handles pings/reconnects + return true; + } + + function microiduri($screenname) + { + return 'xmpp:' . $screenname; + } + + function send_message($screenname, $body) + { + $this->queuedConnection()->message($screenname, $body, 'chat'); + } + + function send_notice($screenname, $notice) + { + $msg = $this->format_notice($notice); + $entry = $this->format_entry($notice); + + $this->queuedConnection()->message($screenname, $msg, 'chat', null, $entry); + return true; + } + + /** + * extra information for XMPP messages, as defined by Twitter + * + * @param Profile $profile Profile of the sending user + * @param Notice $notice Notice being sent + * + * @return string Extra information (Atom, HTML, addresses) in string format + */ + + function format_entry($notice) + { + $profile = $notice->getProfile(); + + $entry = $notice->asAtomEntry(true, true); + + $xs = new XMLStringer(); + $xs->elementStart('html', array('xmlns' => 'http://jabber.org/protocol/xhtml-im')); + $xs->elementStart('body', array('xmlns' => 'http://www.w3.org/1999/xhtml')); + $xs->element('a', array('href' => $profile->profileurl), + $profile->nickname); + $xs->text(": "); + if (!empty($notice->rendered)) { + $xs->raw($notice->rendered); + } else { + $xs->raw(common_render_content($notice->content, $notice)); + } + $xs->text(" "); + $xs->element('a', array( + 'href'=>common_local_url('conversation', + array('id' => $notice->conversation)).'#notice-'.$notice->id + ),sprintf(_('[%s]'),$notice->id)); + $xs->elementEnd('body'); + $xs->elementEnd('html'); + + $html = $xs->getString(); + + return $html . ' ' . $entry; + } + + function receive_raw_message($pl) + { + $from = $this->normalize($pl['from']); + + if ($pl['type'] != 'chat') { + $this->log(LOG_WARNING, "Ignoring message of type ".$pl['type']." from $from: " . $pl['xml']->toString()); + return; + } + + if (mb_strlen($pl['body']) == 0) { + $this->log(LOG_WARNING, "Ignoring message with empty body from $from: " . $pl['xml']->toString()); + return; + } + + $this->handle_incoming($from, $pl['body']); + + return true; + } + + /** + * Build a queue-proxied XMPP interface object. Any outgoing messages + * will be run back through us for enqueing rather than sent directly. + * + * @return Queued_XMPP + * @throws Exception if server settings are invalid. + */ + function queuedConnection(){ + if(!isset($this->server)){ + throw new Exception("must specify a server"); + } + if(!isset($this->port)){ + throw new Exception("must specify a port"); + } + if(!isset($this->user)){ + throw new Exception("must specify a user"); + } + if(!isset($this->password)){ + throw new Exception("must specify a password"); + } + + return new Queued_XMPP($this, $this->host ? + $this->host : + $this->server, + $this->port, + $this->user, + $this->password, + $this->resource, + $this->server, + $this->debug ? + true : false, + $this->debug ? + XMPPHP_Log::LEVEL_VERBOSE : null + ); + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'XMPP', + 'version' => STATUSNET_VERSION, + 'author' => 'Craig Andrews, Evan Prodromou', + 'homepage' => 'http://status.net/wiki/Plugin:XMPP', + 'rawdescription' => + _m('The XMPP plugin allows users to send and receive notices over the XMPP/Jabber network.')); + return true; + } +} + diff --git a/extlib/XMPPHP/BOSH.php b/plugins/Xmpp/extlib/XMPPHP/BOSH.php index befaf60a7..befaf60a7 100644 --- a/extlib/XMPPHP/BOSH.php +++ b/plugins/Xmpp/extlib/XMPPHP/BOSH.php diff --git a/extlib/XMPPHP/Exception.php b/plugins/Xmpp/extlib/XMPPHP/Exception.php index da59bc791..da59bc791 100644 --- a/extlib/XMPPHP/Exception.php +++ b/plugins/Xmpp/extlib/XMPPHP/Exception.php diff --git a/extlib/XMPPHP/Log.php b/plugins/Xmpp/extlib/XMPPHP/Log.php index a9bce3d84..a9bce3d84 100644 --- a/extlib/XMPPHP/Log.php +++ b/plugins/Xmpp/extlib/XMPPHP/Log.php diff --git a/extlib/XMPPHP/Roster.php b/plugins/Xmpp/extlib/XMPPHP/Roster.php index 2e459e2a2..2e459e2a2 100644 --- a/extlib/XMPPHP/Roster.php +++ b/plugins/Xmpp/extlib/XMPPHP/Roster.php diff --git a/extlib/XMPPHP/XMLObj.php b/plugins/Xmpp/extlib/XMPPHP/XMLObj.php index 0d3e21991..0d3e21991 100644 --- a/extlib/XMPPHP/XMLObj.php +++ b/plugins/Xmpp/extlib/XMPPHP/XMLObj.php diff --git a/extlib/XMPPHP/XMLStream.php b/plugins/Xmpp/extlib/XMPPHP/XMLStream.php index d33411ec5..d33411ec5 100644 --- a/extlib/XMPPHP/XMLStream.php +++ b/plugins/Xmpp/extlib/XMPPHP/XMLStream.php diff --git a/extlib/XMPPHP/XMPP.php b/plugins/Xmpp/extlib/XMPPHP/XMPP.php index c0f896339..c0f896339 100644 --- a/extlib/XMPPHP/XMPP.php +++ b/plugins/Xmpp/extlib/XMPPHP/XMPP.php diff --git a/extlib/XMPPHP/XMPP_Old.php b/plugins/Xmpp/extlib/XMPPHP/XMPP_Old.php index 43f56b154..43f56b154 100644 --- a/extlib/XMPPHP/XMPP_Old.php +++ b/plugins/Xmpp/extlib/XMPPHP/XMPP_Old.php diff --git a/plugins/Xmpp/xmppmanager.php b/plugins/Xmpp/xmppmanager.php new file mode 100644 index 000000000..87d818668 --- /dev/null +++ b/plugins/Xmpp/xmppmanager.php @@ -0,0 +1,279 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * XMPP background connection manager for XMPP-using queue handlers, + * allowing them to send outgoing messages on the right connection. + * + * Input is handled during socket select loop, keepalive pings during idle. + * Any incoming messages will be handled. + * + * In a multi-site queuedaemon.php run, one connection will be instantiated + * for each site being handled by the current process that has XMPP enabled. + */ + +class XmppManager extends ImManager +{ + protected $lastping = null; + protected $pingid = null; + + public $conn = null; + + const PING_INTERVAL = 120; + + + /** + * Initialize connection to server. + * @return boolean true on success + */ + public function start($master) + { + if(parent::start($master)) + { + $this->connect(); + return true; + }else{ + return false; + } + } + + function send_raw_message($data) + { + $this->connect(); + if (!$this->conn || $this->conn->isDisconnected()) { + return false; + } + $this->conn->send($data); + return true; + } + + /** + * Message pump is triggered on socket input, so we only need an idle() + * call often enough to trigger our outgoing pings. + */ + function timeout() + { + return self::PING_INTERVAL; + } + + /** + * Process XMPP events that have come in over the wire. + * @fixme may kill process on XMPP error + * @param resource $socket + */ + public function handleInput($socket) + { + # Process the queue for as long as needed + try { + common_log(LOG_DEBUG, "Servicing the XMPP queue."); + $this->stats('xmpp_process'); + $this->conn->processTime(0); + } catch (XMPPHP_Exception $e) { + common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); + die($e->getMessage()); + } + } + + /** + * Lists the IM connection socket to allow i/o master to wake + * when input comes in here as well as from the queue source. + * + * @return array of resources + */ + public function getSockets() + { + $this->connect(); + if($this->conn){ + return array($this->conn->getSocket()); + }else{ + return array(); + } + } + + /** + * Idle processing for io manager's execution loop. + * Send keepalive pings to server. + * + * Side effect: kills process on exception from XMPP library. + * + * @fixme non-dying error handling + */ + public function idle($timeout=0) + { + $now = time(); + if (empty($this->lastping) || $now - $this->lastping > self::PING_INTERVAL) { + try { + $this->send_ping(); + } catch (XMPPHP_Exception $e) { + common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); + die($e->getMessage()); + } + } + } + + function connect() + { + if (!$this->conn || $this->conn->isDisconnected()) { + $resource = 'queue' . posix_getpid(); + $this->conn = new Sharing_XMPP($this->plugin->host ? + $this->plugin->host : + $this->plugin->server, + $this->plugin->port, + $this->plugin->user, + $this->plugin->password, + $this->plugin->resource, + $this->plugin->server, + $this->plugin->debug ? + true : false, + $this->plugin->debug ? + XMPPHP_Log::LEVEL_VERBOSE : null + ); + + if (!$this->conn) { + return false; + } + $this->conn->addEventHandler('message', 'handle_xmpp_message', $this); + $this->conn->addEventHandler('reconnect', 'handle_xmpp_reconnect', $this); + $this->conn->setReconnectTimeout(600); + + $this->conn->autoSubscribe(); + $this->conn->useEncryption($this->plugin->encryption); + + try { + $this->conn->connect(true); // true = persistent connection + } catch (XMPPHP_Exception $e) { + common_log(LOG_ERR, $e->getMessage()); + return false; + } + + $this->conn->processUntil('session_start'); + $this->send_presence(_m('Send me a message to post a notice'), 'available', null, 'available', 100); + } + return $this->conn; + } + + function send_ping() + { + $this->connect(); + if (!$this->conn || $this->conn->isDisconnected()) { + return false; + } + $now = time(); + if (!isset($this->pingid)) { + $this->pingid = 0; + } else { + $this->pingid++; + } + + common_log(LOG_DEBUG, "Sending ping #{$this->pingid}"); + $this->conn->send("<iq from='{" . $this->plugin->daemon_screenname() . "}' to='{$this->plugin->server}' id='ping_{$this->pingid}' type='get'><ping xmlns='urn:xmpp:ping'/></iq>"); + $this->lastping = $now; + return true; + } + + function handle_xmpp_message(&$pl) + { + $this->plugin->enqueue_incoming_raw($pl); + return true; + } + + /** + * Callback for Jabber reconnect event + * @param $pl + */ + function handle_xmpp_reconnect(&$pl) + { + common_log(LOG_NOTICE, 'XMPP reconnected'); + + $this->conn->processUntil('session_start'); + $this->send_presence(_m('Send me a message to post a notice'), 'available', null, 'available', 100); + } + + /** + * sends a presence stanza on the XMPP network + * + * @param string $status current status, free-form string + * @param string $show structured status value + * @param string $to recipient of presence, null for general + * @param string $type type of status message, related to $show + * @param int $priority priority of the presence + * + * @return boolean success value + */ + + function send_presence($status, $show='available', $to=null, + $type = 'available', $priority=null) + { + $this->connect(); + if (!$this->conn || $this->conn->isDisconnected()) { + return false; + } + $this->conn->presence($status, $show, $to, $type, $priority); + return true; + } + + /** + * sends a "special" presence stanza on the XMPP network + * + * @param string $type Type of presence + * @param string $to JID to send presence to + * @param string $show show value for presence + * @param string $status status value for presence + * + * @return boolean success flag + * + * @see send_presence() + */ + + function special_presence($type, $to=null, $show=null, $status=null) + { + // FIXME: why use this instead of send_presence()? + $this->connect(); + if (!$this->conn || $this->conn->isDisconnected()) { + return false; + } + + $to = htmlspecialchars($to); + $status = htmlspecialchars($status); + + $out = "<presence"; + if ($to) { + $out .= " to='$to'"; + } + if ($type) { + $out .= " type='$type'"; + } + if ($show == 'available' and !$status) { + $out .= "/>"; + } else { + $out .= ">"; + if ($show && ($show != 'available')) { + $out .= "<show>$show</show>"; + } + if ($status) { + $out .= "<status>$status</status>"; + } + $out .= "</presence>"; + } + $this->conn->send($out); + return true; + } +} diff --git a/scripts/fixup_status_network.php b/scripts/fixup_status_network.php new file mode 100644 index 000000000..def1eaa88 --- /dev/null +++ b/scripts/fixup_status_network.php @@ -0,0 +1,37 @@ +#!/usr/bin/env php +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +common_log(LOG_INFO, 'Beginning status_network conversion...'); + +$sn = new Status_network(); +$sn->find(); +while ($sn->fetch()) { + try { + $sn->setTags(explode('|', $sn->tags)); + } catch (Exception $e) { + common_log(LOG_ERR, $e->getMessage()); + } +} + +common_log(LOG_INFO, 'Completed status_network conversion...'); diff --git a/scripts/getvaliddaemons.php b/scripts/getvaliddaemons.php index a332e06b5..80c21bce5 100755 --- a/scripts/getvaliddaemons.php +++ b/scripts/getvaliddaemons.php @@ -39,9 +39,7 @@ $daemons = array(); $daemons[] = INSTALLDIR.'/scripts/queuedaemon.php'; -if(common_config('xmpp','enabled')) { - $daemons[] = INSTALLDIR.'/scripts/xmppdaemon.php'; -} +$daemons[] = INSTALLDIR.'/scripts/imdaemon.php'; if (Event::handle('GetValidDaemons', array(&$daemons))) { foreach ($daemons as $daemon) { diff --git a/scripts/xmppdaemon.php b/scripts/imdaemon.php index abd7cc22b..0ce74667c 100755 --- a/scripts/xmppdaemon.php +++ b/scripts/imdaemon.php @@ -23,21 +23,19 @@ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); $shortoptions = 'fi::a'; $longoptions = array('id::', 'foreground', 'all'); -$helptext = <<<END_OF_XMPP_HELP -Daemon script for receiving new notices from Jabber users. +$helptext = <<<END_OF_IM_HELP +Daemon script for receiving new notices from IM users. -i --id Identity (default none) -a --all Handle XMPP for all local sites (requires Stomp queue handler, status_network setup) -f --foreground Stay in the foreground (default background) -END_OF_XMPP_HELP; +END_OF_IM_HELP; require_once INSTALLDIR.'/scripts/commandline.inc'; -require_once INSTALLDIR . '/lib/jabber.php'; - -class XMPPDaemon extends SpawningDaemon +class ImDaemon extends SpawningDaemon { protected $allsites = false; @@ -45,7 +43,7 @@ class XMPPDaemon extends SpawningDaemon { if ($threads != 1) { // This should never happen. :) - throw new Exception("XMPPDaemon can must run single-threaded"); + throw new Exception("IMDaemon can must run single-threaded"); } parent::__construct($id, $daemonize, $threads); $this->allsites = $allsites; @@ -53,9 +51,9 @@ class XMPPDaemon extends SpawningDaemon function runThread() { - common_log(LOG_INFO, 'Waiting to listen to XMPP and queues'); + common_log(LOG_INFO, 'Waiting to listen to IM connections and queues'); - $master = new XmppMaster($this->get_id(), $this->processManager()); + $master = new ImMaster($this->get_id(), $this->processManager()); $master->init($this->allsites); $master->service(); @@ -66,7 +64,7 @@ class XMPPDaemon extends SpawningDaemon } -class XmppMaster extends IoMaster +class ImMaster extends IoMaster { protected $processManager; @@ -82,25 +80,20 @@ class XmppMaster extends IoMaster */ function initManagers() { - if (common_config('xmpp', 'enabled')) { + $classes = array(); + if (Event::handle('StartImDaemonIoManagers', array(&$classes))) { $qm = QueueManager::get(); - $qm->setActiveGroup('xmpp'); - $this->instantiate($qm); - $this->instantiate(XmppManager::get()); - $this->instantiate($this->processManager); + $qm->setActiveGroup('im'); + $classes[] = $qm; + $classes[] = $this->processManager; + } + Event::handle('EndImDaemonIoManagers', array(&$classes)); + foreach ($classes as $class) { + $this->instantiate($class); } } } -// Abort immediately if xmpp is not enabled, otherwise the daemon chews up -// lots of CPU trying to connect to unconfigured servers -// @fixme do this check after we've run through the site list so we -// don't have to find an XMPP site to start up when using --all mode. -if (common_config('xmpp','enabled')==false) { - print "Aborting daemon - xmpp is disabled\n"; - exit(1); -} - if (version_compare(PHP_VERSION, '5.2.6', '<')) { $arch = php_uname('m'); if ($arch == 'x86_64' || $arch == 'amd64') { @@ -120,6 +113,6 @@ if (have_option('i', 'id')) { $foreground = have_option('f', 'foreground'); $all = have_option('a') || have_option('--all'); -$daemon = new XMPPDaemon($id, !$foreground, 1, $all); +$daemon = new ImDaemon($id, !$foreground, 1, $all); $daemon->runOnce(); diff --git a/scripts/settag.php b/scripts/settag.php index d1b06ff10..ca260f7bf 100644 --- a/scripts/settag.php +++ b/scripts/settag.php @@ -39,11 +39,10 @@ if (count($args) < 1) { } $nickname = $args[0]; - $sn = Status_network::memGet('nickname', $nickname); if (empty($sn)) { - print "No such site.\n"; + print "No such site ($nickname).\n"; exit(-1); } @@ -54,16 +53,13 @@ if (count($args) == 1) { exit(0); } $tag = $args[1]; - $i = array_search($tag, $tags); if ($i !== false) { if (have_option('d', 'delete')) { // Delete unset($tags[$i]); - $orig = clone($sn); - $sn->tags = implode('|', $tags); - $result = $sn->update($orig); + $result = $sn->setTags($tags); if (!$result) { print "Couldn't update.\n"; exit(-1); @@ -78,9 +74,7 @@ if ($i !== false) { exit(-1); } else { $tags[] = $tag; - $orig = clone($sn); - $sn->tags = implode('|', $tags); - $result = $sn->update($orig); + $result = $sn->setTags($tags); if (!$result) { print "Couldn't update.\n"; exit(-1); diff --git a/scripts/setup_status_network.sh b/scripts/setup_status_network.sh index 4ebb696c7..3dd739030 100755 --- a/scripts/setup_status_network.sh +++ b/scripts/setup_status_network.sh @@ -44,8 +44,8 @@ mysql -h $DBHOST -u $ADMIN --password=$ADMINPASS $SITEDB << ENDOFCOMMANDS GRANT ALL ON $database.* TO '$username'@'localhost' IDENTIFIED BY '$password'; GRANT ALL ON $database.* TO '$username'@'%' IDENTIFIED BY '$password'; -INSERT INTO status_network (nickname, dbhost, dbuser, dbpass, dbname, sitename, created, tags) -VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now(), '$tags'); +INSERT INTO status_network (nickname, dbhost, dbuser, dbpass, dbname, sitename, created) +VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now()); ENDOFCOMMANDS @@ -56,6 +56,8 @@ done php $PHPBASE/scripts/checkschema.php -s"$server" +php $PHPBASE/scripts/settag.php -s"$server" "$nickname" "$tags" + php $PHPBASE/scripts/registeruser.php \ -s"$server" \ -n"$nickname" \ diff --git a/scripts/stopdaemons.sh b/scripts/stopdaemons.sh index c790f1f34..bc1230e64 100755 --- a/scripts/stopdaemons.sh +++ b/scripts/stopdaemons.sh @@ -23,8 +23,8 @@ SDIR=`dirname $0` DIR=`php $SDIR/getpiddir.php` -for f in jabberhandler ombhandler publichandler smshandler pinghandler \ - xmppconfirmhandler xmppdaemon twitterhandler facebookhandler \ +for f in ombhandler smshandler pinghandler \ + twitterhandler facebookhandler \ twitterstatusfetcher synctwitterfriends pluginhandler rsscloudhandler; do FILES="$DIR/$f.*.pid" diff --git a/tests/ActivityGenerationTests.php b/tests/ActivityGenerationTests.php new file mode 100644 index 000000000..b9e74a570 --- /dev/null +++ b/tests/ActivityGenerationTests.php @@ -0,0 +1,592 @@ +<?php + +if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { + print "This script must be run from the command line\n"; + exit(); +} + +// XXX: we should probably have some common source for this stuff + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); +define('STATUSNET', true); + +require_once INSTALLDIR . '/lib/common.php'; + +class ActivityGenerationTests extends PHPUnit_Framework_TestCase +{ + var $author1 = null; + var $author2 = null; + + var $targetUser1 = null; + var $targetUser2 = null; + + var $targetGroup1 = null; + var $targetGroup2 = null; + + function __construct() + { + parent::__construct(); + + $authorNick1 = 'activitygenerationtestsuser' . common_good_rand(4); + $authorNick2 = 'activitygenerationtestsuser' . common_good_rand(4); + + $targetNick1 = 'activitygenerationteststarget' . common_good_rand(4); + $targetNick2 = 'activitygenerationteststarget' . common_good_rand(4); + + $groupNick1 = 'activitygenerationtestsgroup' . common_good_rand(4); + $groupNick2 = 'activitygenerationtestsgroup' . common_good_rand(4); + + $this->author1 = User::register(array('nickname' => $authorNick1, + 'email' => $authorNick1 . '@example.net', + 'email_confirmed' => true)); + + $this->author2 = User::register(array('nickname' => $authorNick2, + 'email' => $authorNick2 . '@example.net', + 'email_confirmed' => true)); + + $this->targetUser1 = User::register(array('nickname' => $targetNick1, + 'email' => $targetNick1 . '@example.net', + 'email_confirmed' => true)); + + $this->targetUser2 = User::register(array('nickname' => $targetNick2, + 'email' => $targetNick2 . '@example.net', + 'email_confirmed' => true)); + + $this->targetGroup1 = User_group::register(array('nickname' => $groupNick1, + 'userid' => $this->author1->id, + 'aliases' => array(), + 'local' => true, + 'location' => null, + 'description' => null, + 'fullname' => null, + 'homepage' => null, + 'mainpage' => null)); + $this->targetGroup2 = User_group::register(array('nickname' => $groupNick2, + 'userid' => $this->author1->id, + 'aliases' => array(), + 'local' => true, + 'location' => null, + 'description' => null, + 'fullname' => null, + 'homepage' => null, + 'mainpage' => null)); + } + + public function testBasicNoticeActivity() + { + $notice = $this->_fakeNotice(); + + $entry = $notice->asAtomEntry(true); + + $element = $this->_entryToElement($entry, false); + + $this->assertEquals($notice->uri, ActivityUtils::childContent($element, 'id')); + $this->assertEquals($notice->content, ActivityUtils::childContent($element, 'title')); + $this->assertEquals($notice->rendered, ActivityUtils::childContent($element, 'content')); + $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'published'))); + $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'updated'))); + $this->assertEquals(ActivityVerb::POST, ActivityUtils::childContent($element, 'verb', Activity::SPEC)); + $this->assertEquals(ActivityObject::NOTE, ActivityUtils::childContent($element, 'object-type', Activity::SPEC)); + } + + public function testNamespaceFlag() + { + $notice = $this->_fakeNotice(); + + $entry = $notice->asAtomEntry(true); + + $element = $this->_entryToElement($entry, false); + + $this->assertTrue($element->hasAttribute('xmlns')); + $this->assertTrue($element->hasAttribute('xmlns:thr')); + $this->assertTrue($element->hasAttribute('xmlns:georss')); + $this->assertTrue($element->hasAttribute('xmlns:activity')); + $this->assertTrue($element->hasAttribute('xmlns:media')); + $this->assertTrue($element->hasAttribute('xmlns:poco')); + $this->assertTrue($element->hasAttribute('xmlns:ostatus')); + $this->assertTrue($element->hasAttribute('xmlns:statusnet')); + + $entry = $notice->asAtomEntry(false); + + $element = $this->_entryToElement($entry, true); + + $this->assertFalse($element->hasAttribute('xmlns')); + $this->assertFalse($element->hasAttribute('xmlns:thr')); + $this->assertFalse($element->hasAttribute('xmlns:georss')); + $this->assertFalse($element->hasAttribute('xmlns:activity')); + $this->assertFalse($element->hasAttribute('xmlns:media')); + $this->assertFalse($element->hasAttribute('xmlns:poco')); + $this->assertFalse($element->hasAttribute('xmlns:ostatus')); + $this->assertFalse($element->hasAttribute('xmlns:statusnet')); + } + + public function testSourceFlag() + { + $notice = $this->_fakeNotice(); + + // Test with no source + + $entry = $notice->asAtomEntry(false, false); + + $element = $this->_entryToElement($entry, true); + + $source = ActivityUtils::child($element, 'source'); + + $this->assertNull($source); + + // Test with source + + $entry = $notice->asAtomEntry(false, true); + + $element = $this->_entryToElement($entry, true); + + $source = ActivityUtils::child($element, 'source'); + + $this->assertNotNull($source); + } + + public function testSourceContent() + { + $notice = $this->_fakeNotice(); + // make a time difference! + sleep(2); + $notice2 = $this->_fakeNotice(); + + $entry = $notice->asAtomEntry(false, true); + + $element = $this->_entryToElement($entry, true); + + $source = ActivityUtils::child($element, 'source'); + + $atomUrl = common_local_url('ApiTimelineUser', array('id' => $this->author1->id, 'format' => 'atom')); + + $profile = $this->author1->getProfile(); + + $this->assertEquals($atomUrl, ActivityUtils::childContent($source, 'id')); + $this->assertEquals($atomUrl, ActivityUtils::getLink($source, 'self', 'application/atom+xml')); + $this->assertEquals($profile->profileurl, ActivityUtils::getPermalink($source)); + $this->assertEquals(strtotime($notice2->created), strtotime(ActivityUtils::childContent($source, 'updated'))); + // XXX: do we care here? + $this->assertFalse(is_null(ActivityUtils::childContent($source, 'title'))); + $this->assertEquals(common_config('license', 'url'), ActivityUtils::getLink($source, 'license')); + } + + public function testAuthorFlag() + { + $notice = $this->_fakeNotice(); + + // Test with no author + + $entry = $notice->asAtomEntry(false, false, false); + + $element = $this->_entryToElement($entry, true); + + $this->assertNull(ActivityUtils::child($element, 'author')); + $this->assertNull(ActivityUtils::child($element, 'actor', Activity::SPEC)); + + // Test with source + + $entry = $notice->asAtomEntry(false, false, true); + + $element = $this->_entryToElement($entry, true); + + $author = ActivityUtils::child($element, 'author'); + $actor = ActivityUtils::child($element, 'actor', Activity::SPEC); + + $this->assertFalse(is_null($author)); + $this->assertFalse(is_null($actor)); + } + + public function testAuthorContent() + { + $notice = $this->_fakeNotice(); + + // Test with author + + $entry = $notice->asAtomEntry(false, false, true); + + $element = $this->_entryToElement($entry, true); + + $author = ActivityUtils::child($element, 'author'); + + $this->assertEquals($this->author1->nickname, ActivityUtils::childContent($author, 'name')); + $this->assertEquals($this->author1->uri, ActivityUtils::childContent($author, 'uri')); + } + + public function testActorContent() + { + $notice = $this->_fakeNotice(); + + // Test with author + + $entry = $notice->asAtomEntry(false, false, true); + + $element = $this->_entryToElement($entry, true); + + $actor = ActivityUtils::child($element, 'actor', Activity::SPEC); + + $this->assertEquals($this->author1->uri, ActivityUtils::childContent($actor, 'id')); + $this->assertEquals($this->author1->nickname, ActivityUtils::childContent($actor, 'title')); + } + + public function testReplyLink() + { + $orig = $this->_fakeNotice($this->targetUser1); + + $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4); + + $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); + + $entry = $reply->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $irt = ActivityUtils::child($element, 'in-reply-to', 'http://purl.org/syndication/thread/1.0'); + + $this->assertNotNull($irt); + $this->assertEquals($orig->uri, $irt->getAttribute('ref')); + $this->assertEquals($orig->bestUrl(), $irt->getAttribute('href')); + } + + public function testReplyAttention() + { + $orig = $this->_fakeNotice($this->targetUser1); + + $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4); + + $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); + + $entry = $reply->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $this->assertEquals($this->targetUser1->uri, ActivityUtils::getLink($element, 'ostatus:attention')); + $this->assertEquals($this->targetUser1->uri, ActivityUtils::getLink($element, 'mentioned')); + } + + public function testMultipleReplyAttention() + { + $orig = $this->_fakeNotice($this->targetUser1); + + $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4); + + $reply = Notice::saveNew($this->targetUser2->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); + + $text = "@" . $this->targetUser1->nickname . " @" . $this->targetUser2->nickname . " reply text " . common_good_rand(4); + + $reply2 = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $reply->id)); + + $entry = $reply2->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $links = ActivityUtils::getLinks($element, 'ostatus:attention'); + + $this->assertEquals(2, count($links)); + + $hrefs = array(); + + foreach ($links as $link) { + $hrefs[] = $link->getAttribute('href'); + } + + $this->assertTrue(in_array($this->targetUser1->uri, $hrefs)); + $this->assertTrue(in_array($this->targetUser2->uri, $hrefs)); + + $links = ActivityUtils::getLinks($element, 'mentioned'); + + $this->assertEquals(2, count($links)); + + $hrefs = array(); + + foreach ($links as $link) { + $hrefs[] = $link->getAttribute('href'); + } + + $this->assertTrue(in_array($this->targetUser1->uri, $hrefs)); + $this->assertTrue(in_array($this->targetUser2->uri, $hrefs)); + } + + public function testGroupPostAttention() + { + $text = "!" . $this->targetGroup1->nickname . " reply text " . common_good_rand(4); + + $notice = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null)); + + $entry = $notice->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $this->assertEquals($this->targetGroup1->uri, ActivityUtils::getLink($element, 'ostatus:attention')); + $this->assertEquals($this->targetGroup1->uri, ActivityUtils::getLink($element, 'mentioned')); + } + + public function testMultipleGroupPostAttention() + { + $text = "!" . $this->targetGroup1->nickname . " !" . $this->targetGroup2->nickname . " reply text " . common_good_rand(4); + + $notice = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null)); + + $entry = $notice->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $links = ActivityUtils::getLinks($element, 'ostatus:attention'); + + $this->assertEquals(2, count($links)); + + $hrefs = array(); + + foreach ($links as $link) { + $hrefs[] = $link->getAttribute('href'); + } + + $this->assertTrue(in_array($this->targetGroup1->uri, $hrefs)); + $this->assertTrue(in_array($this->targetGroup2->uri, $hrefs)); + + $links = ActivityUtils::getLinks($element, 'mentioned'); + + $this->assertEquals(2, count($links)); + + $hrefs = array(); + + foreach ($links as $link) { + $hrefs[] = $link->getAttribute('href'); + } + + $this->assertTrue(in_array($this->targetGroup1->uri, $hrefs)); + $this->assertTrue(in_array($this->targetGroup2->uri, $hrefs)); + } + + public function testRepeatLink() + { + $notice = $this->_fakeNotice($this->author1); + $repeat = $notice->repeat($this->author2->id, 'test'); + + $entry = $repeat->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $forward = ActivityUtils::child($element, 'forward', "http://ostatus.org/schema/1.0"); + + $this->assertNotNull($forward); + $this->assertEquals($notice->uri, $forward->getAttribute('ref')); + $this->assertEquals($notice->bestUrl(), $forward->getAttribute('href')); + } + + public function testTag() + { + $tag1 = common_good_rand(4); + + $notice = $this->_fakeNotice($this->author1, '#' . $tag1); + + $entry = $notice->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $category = ActivityUtils::child($element, 'category'); + + $this->assertNotNull($category); + $this->assertEquals($tag1, $category->getAttribute('term')); + } + + public function testMultiTag() + { + $tag1 = common_good_rand(4); + $tag2 = common_good_rand(4); + + $notice = $this->_fakeNotice($this->author1, '#' . $tag1 . ' #' . $tag2); + + $entry = $notice->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $categories = $element->getElementsByTagName('category'); + + $this->assertNotNull($categories); + $this->assertEquals(2, $categories->length); + + $terms = array(); + + for ($i = 0; $i < $categories->length; $i++) { + $cat = $categories->item($i); + $terms[] = $cat->getAttribute('term'); + } + + $this->assertTrue(in_array($tag1, $terms)); + $this->assertTrue(in_array($tag2, $terms)); + } + + public function testGeotaggedActivity() + { + $notice = Notice::saveNew($this->author1->id, common_good_rand(4), 'test', array('uri' => null, 'lat' => 45.5, 'lon' => -73.6)); + + $entry = $notice->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $this->assertEquals('45.5 -73.6', ActivityUtils::childContent($element, 'point', "http://www.georss.org/georss")); + } + + public function testNoticeInfo() + { + $notice = $this->_fakeNotice(); + + $entry = $notice->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/"); + + $this->assertEquals($notice->id, $noticeInfo->getAttribute('local_id')); + $this->assertEquals($notice->source, $noticeInfo->getAttribute('source')); + $this->assertEquals('', $noticeInfo->getAttribute('repeat_of')); + $this->assertEquals('', $noticeInfo->getAttribute('repeated')); + $this->assertEquals('', $noticeInfo->getAttribute('favorite')); + $this->assertEquals('', $noticeInfo->getAttribute('source_link')); + } + + public function testNoticeInfoRepeatOf() + { + $notice = $this->_fakeNotice(); + + $repeat = $notice->repeat($this->author2->id, 'test'); + + $entry = $repeat->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/"); + + $this->assertEquals($notice->id, $noticeInfo->getAttribute('repeat_of')); + } + + public function testNoticeInfoRepeated() + { + $notice = $this->_fakeNotice(); + + $repeat = $notice->repeat($this->author2->id, 'test'); + + $entry = $notice->asAtomEntry(false, false, false, $this->author2); + + $element = $this->_entryToElement($entry, true); + + $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/"); + + $this->assertEquals('true', $noticeInfo->getAttribute('repeated')); + + $entry = $notice->asAtomEntry(false, false, false, $this->targetUser1); + + $element = $this->_entryToElement($entry, true); + + $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/"); + + $this->assertEquals('false', $noticeInfo->getAttribute('repeated')); + } + + public function testNoticeInfoFave() + { + $notice = $this->_fakeNotice(); + + $fave = Fave::addNew($this->author2->getProfile(), $notice); + + // Should be set if user has faved + + $entry = $notice->asAtomEntry(false, false, false, $this->author2); + + $element = $this->_entryToElement($entry, true); + + $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/"); + + $this->assertEquals('true', $noticeInfo->getAttribute('favorite')); + + // Shouldn't be set if user has not faved + + $entry = $notice->asAtomEntry(false, false, false, $this->targetUser1); + + $element = $this->_entryToElement($entry, true); + + $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/"); + + $this->assertEquals('false', $noticeInfo->getAttribute('favorite')); + } + + public function testConversationLink() + { + $orig = $this->_fakeNotice($this->targetUser1); + + $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4); + + $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); + + $conv = Conversation::staticGet('id', $reply->conversation); + + $entry = $reply->asAtomEntry(); + + $element = $this->_entryToElement($entry, true); + + $this->assertEquals($conv->uri, ActivityUtils::getLink($element, 'ostatus:conversation')); + } + + function __destruct() + { + if (!is_null($this->author1)) { + $this->author1->delete(); + } + + if (!is_null($this->author2)) { + $this->author2->delete(); + } + + if (!is_null($this->targetUser1)) { + $this->targetUser1->delete(); + } + + if (!is_null($this->targetUser2)) { + $this->targetUser2->delete(); + } + + if (!is_null($this->targetGroup1)) { + $this->targetGroup1->delete(); + } + + if (!is_null($this->targetGroup2)) { + $this->targetGroup2->delete(); + } + } + + private function _fakeNotice($user = null, $text = null) + { + if (empty($user)) { + $user = $this->author1; + } + + if (empty($text)) { + $text = "fake-o text-o " . common_good_rand(32); + } + + return Notice::saveNew($user->id, $text, 'test', array('uri' => null)); + } + + private function _entryToElement($entry, $namespace = false) + { + $xml = '<?xml version="1.0" encoding="utf-8"?>'."\n\n"; + $xml .= '<feed'; + if ($namespace) { + $xml .= ' xmlns="http://www.w3.org/2005/Atom"'; + $xml .= ' xmlns:thr="http://purl.org/syndication/thread/1.0"'; + $xml .= ' xmlns:georss="http://www.georss.org/georss"'; + $xml .= ' xmlns:activity="http://activitystrea.ms/spec/1.0/"'; + $xml .= ' xmlns:media="http://purl.org/syndication/atommedia"'; + $xml .= ' xmlns:poco="http://portablecontacts.net/spec/1.0"'; + $xml .= ' xmlns:ostatus="http://ostatus.org/schema/1.0"'; + $xml .= ' xmlns:statusnet="http://status.net/schema/api/1/"'; + } + $xml .= '>' . "\n" . $entry . "\n" . '</feed>' . "\n"; + $doc = DOMDocument::loadXML($xml); + $feed = $doc->documentElement; + $entries = $feed->getElementsByTagName('entry'); + + return $entries->item(0); + } +} |