Merge branch '1.0.x' of git://gitorious.org/statusnet/mainline
This commit is contained in:
commit
e0da393800
245
EVENTS.txt
245
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
|
||||
|
20
README
20
README
@ -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
|
||||
=======
|
||||
|
||||
|
@ -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');
|
||||
|
@ -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);
|
||||
|
367
actions/apigroupprofileupdate.php
Normal file
367
actions/apigroupprofileupdate.php
Normal file
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
$orig_user = clone($cur);
|
||||
|
||||
$cur->$type = $confirm->address;
|
||||
$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);
|
||||
}
|
||||
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);
|
||||
$result = $cur->updateKeys($orig_user);
|
||||
|
||||
if (!$result) {
|
||||
common_log_db_error($cur, 'UPDATE', __FILE__);
|
||||
$this->serverError(_('Couldn\'t update user.'));
|
||||
return;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
$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'));
|
||||
} 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'));
|
||||
}
|
||||
}
|
||||
$this->elementEnd('fieldset');
|
||||
$user_im_prefs_by_transport = array();
|
||||
|
||||
$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');
|
||||
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',
|
||||
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 {
|
||||
$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');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -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_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);
|
||||
|
||||
$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;
|
||||
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'));
|
||||
$this->showForm(_('Not a valid screenname'));
|
||||
return;
|
||||
} else if ($user->jabber == $jabber) {
|
||||
// TRANS: Message given saving IM address that is already set.
|
||||
$this->showForm(_('That is already your Jabber ID.'));
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
78
actions/plugindisable.php
Normal file
78
actions/plugindisable.php
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
166
actions/pluginenable.php
Normal file
166
actions/pluginenable.php
Normal file
@ -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);
|
||||
}
|
||||
}
|
110
actions/pluginsadminpanel.php
Normal file
110
actions/pluginsadminpanel.php
Normal file
@ -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.'));
|
||||
}
|
||||
}
|
||||
}
|
@ -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');
|
||||
|
@ -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(
|
||||
|
@ -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');
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
function _userMakeShort($long_url) {
|
||||
$short_url = common_shorten_url($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, $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
|
||||
|
@ -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."));
|
||||
}
|
||||
|
||||
|
@ -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.'));
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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.');
|
||||
}
|
||||
|
||||
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
$xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
|
||||
$xs->element('updated', null, common_date_w3dtf($this->created));
|
||||
Event::handle('EndActivitySource', array(&$this, &$xs));
|
||||
}
|
||||
|
||||
if ($source) {
|
||||
$xs->elementEnd('source');
|
||||
$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));
|
||||
}
|
||||
|
||||
$xs->element('title', null, common_xml_safe_str($this->content));
|
||||
$atomAuthor = '';
|
||||
|
||||
if ($author) {
|
||||
$xs->raw($profile->asAtomAuthor($cur));
|
||||
$xs->raw($profile->asActivityActor());
|
||||
$atomAuthor = $profile->asAtomAuthor($cur);
|
||||
}
|
||||
|
||||
$xs->element('link', array('rel' => 'alternate',
|
||||
'type' => 'text/html',
|
||||
'href' => $this->bestUrl()));
|
||||
|
||||
$xs->element('id', null, $this->uri);
|
||||
|
||||
$xs->element('published', null, common_date_w3dtf($this->created));
|
||||
$xs->element('updated', null, common_date_w3dtf($this->created));
|
||||
|
||||
$source = null;
|
||||
|
||||
$ns = $this->getSource();
|
||||
|
||||
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;
|
||||
if (Event::handle('StartActivityAuthor', array(&$this, &$xs, &$atomAuthor))) {
|
||||
if (!empty($atomAuthor)) {
|
||||
$xs->raw($atomAuthor);
|
||||
Event::handle('EndActivityAuthor', array(&$this, &$xs, &$atomAuthor));
|
||||
}
|
||||
}
|
||||
|
||||
$noticeInfoAttr = array(
|
||||
'local_id' => $this->id, // local notice ID (useful to clients for ordering)
|
||||
'source' => $source, // the client name (source attribution)
|
||||
);
|
||||
$actor = '';
|
||||
|
||||
if ($author) {
|
||||
$actor = $profile->asActivityActor();
|
||||
}
|
||||
|
||||
if (Event::handle('StartActivityActor', array(&$this, &$xs, &$actor))) {
|
||||
if (!empty($actor)) {
|
||||
$xs->raw($actor);
|
||||
Event::handle('EndActivityActor', array(&$this, &$xs, &$actor));
|
||||
}
|
||||
}
|
||||
|
||||
$url = $this->bestUrl();
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
$id = $this->uri;
|
||||
|
||||
if (Event::handle('StartActivityId', array(&$this, &$xs, &$id))) {
|
||||
$xs->element('id', null, $id);
|
||||
Event::handle('EndActivityId', array(&$this, &$xs, $id));
|
||||
}
|
||||
|
||||
$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)
|
||||
|
||||
$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));
|
||||
}
|
||||
}
|
||||
|
||||
$conv = null;
|
||||
|
||||
if (!empty($this->conversation)) {
|
||||
|
||||
$conv = Conversation::staticGet('id', $this->conversation);
|
||||
|
||||
if (!empty($conv)) {
|
||||
$xs->element(
|
||||
'link', array(
|
||||
'rel' => 'ostatus:conversation',
|
||||
'href' => $conv->uri
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (Event::handle('StartActivityConversation', array(&$this, &$xs, &$conv))) {
|
||||
if (!empty($conv)) {
|
||||
$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 (!empty($this->lat) && !empty($this->lon)) {
|
||||
$xs->element('georss:point', null, $this->lat . ' ' . $this->lon);
|
||||
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));
|
||||
}
|
||||
|
||||
$xs->elementEnd('entry');
|
||||
$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));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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."));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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,9 +308,63 @@ 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
|
||||
|
69
classes/Status_network_tag.php
Normal file
69
classes/Status_network_tag.php
Normal file
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
@ -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()
|
||||
{
|
||||
|
||||
|
@ -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.'));
|
||||
}
|
||||
}
|
||||
|
94
classes/User_im_prefs.php
Normal file
94
classes/User_im_prefs.php
Normal file
@ -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;
|
||||
}
|
||||
|
||||
}
|
105
classes/User_urlshortener_prefs.php
Executable file
105
classes/User_urlshortener_prefs.php
Executable file
@ -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;
|
||||
}
|
||||
}
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
14
db/site.sql
14
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;
|
||||
|
||||
|
13
db/site_093to094.sql
Normal file
13
db/site_093to094.sql
Normal file
@ -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;
|
||||
|
@ -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;
|
||||
|
82
extlib/Mail.php
Normal file → Executable file
82
extlib/Mail.php
Normal file → Executable file
@ -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;
|
||||
}
|
||||
|
||||
|
83
extlib/Mail/RFC822.php
Normal file → Executable file
83
extlib/Mail/RFC822.php
Normal file → Executable file
@ -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;
|
||||
}
|
||||
|
63
extlib/Mail/mail.php
Normal file → Executable file
63
extlib/Mail/mail.php
Normal file → Executable file
@ -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 {
|
||||
|
||||
|
64
extlib/Mail/mock.php
Normal file → Executable file
64
extlib/Mail/mock.php
Normal file → Executable file
@ -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 {
|
||||
|
||||
|
64
extlib/Mail/null.php
Normal file → Executable file
64
extlib/Mail/null.php
Normal file → Executable file
@ -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 {
|
||||
|
||||
|
7
extlib/Mail/sendmail.php
Normal file → Executable file
7
extlib/Mail/sendmail.php
Normal file → Executable file
@ -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.');
|
||||
|
73
extlib/Mail/smtp.php
Normal file → Executable file
73
extlib/Mail/smtp.php
Normal file → Executable file
@ -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();
|
||||
|
44
extlib/Mail/smtpmx.php
Normal file → Executable file
44
extlib/Mail/smtpmx.php
Normal file → Executable file
@ -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 {
|
||||
|
||||
|
@ -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';
|
||||
@ -91,6 +91,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
|
||||
@ -112,6 +119,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
|
||||
@ -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)) {
|
||||
@ -319,6 +351,20 @@ class Net_SMTP
|
||||
return array($this->_code, join("\n", $this->_arguments));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
@ -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;
|
||||
}
|
||||
|
103
index.php
103
index.php
@ -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();
|
||||
|
39
js/util.js
39
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;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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');
|
||||
|
@ -98,6 +98,8 @@ if (!defined('STATUSNET')) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
class ApiValidationException extends Exception { }
|
||||
|
||||
/**
|
||||
* Contains most of the Twitter-compatible API output functions.
|
||||
*
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
@ -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) {
|
||||
|
@ -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)'));
|
||||
|
@ -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')
|
||||
),
|
||||
|
293
lib/designform.php
Normal file
293
lib/designform.php
Normal file
@ -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'));
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
|
104
lib/imchannel.php
Normal file
104
lib/imchannel.php
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
56
lib/immanager.php
Normal file
56
lib/immanager.php
Normal file
@ -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');
|
||||
}
|
||||
}
|
631
lib/implugin.php
Normal file
631
lib/implugin.php
Normal file
@ -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');
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
43
lib/imsenderqueuehandler.php
Normal file
43
lib/imsenderqueuehandler.php
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
640
lib/jabber.php
640
lib/jabber.php
@ -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 . ']';
|
||||
}
|
@ -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'),
|
||||
|
@ -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
|
||||
|
93
lib/plugindisableform.php
Normal file
93
lib/plugindisableform.php
Normal file
@ -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'));
|
||||
}
|
||||
|
||||
}
|
114
lib/pluginenableform.php
Normal file
114
lib/pluginenableform.php
Normal file
@ -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'));
|
||||
}
|
||||
}
|
213
lib/pluginlist.php
Normal file
213
lib/pluginlist.php
Normal file
@ -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;
|
||||
}
|
||||
}
|
@ -36,20 +36,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
|
||||
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.
|
||||
|
@ -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');
|
||||
}
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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'),
|
||||
|
@ -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();
|
||||
if (is_null($conn)) {
|
||||
// XXX: there should be an easier way to do this.
|
||||
$user = new User();
|
||||
$conn = $user->getDatabaseConnection();
|
||||
$user->free();
|
||||
unset($user);
|
||||
}
|
||||
|
||||
$this->conn = $user->getDatabaseConnection();
|
||||
|
||||
$user->free();
|
||||
|
||||
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)
|
||||
{
|
||||
$type = common_config('db', 'type');
|
||||
if (empty(self::$_single)) {
|
||||
$schemaClass = ucfirst($type).'Schema';
|
||||
self::$_single = new $schemaClass();
|
||||
if (is_null($conn)) {
|
||||
$key = 'default';
|
||||
} else {
|
||||
$key = md5(serialize($conn->dsn));
|
||||
}
|
||||
return self::$_single;
|
||||
|
||||
$type = common_config('db', 'type');
|
||||
if (empty(self::$_static[$key])) {
|
||||
$schemaClass = ucfirst($type).'Schema';
|
||||
self::$_static[$key] = new $schemaClass($conn);
|
||||
}
|
||||
return self::$_static[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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']
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
155
lib/urlshortenerplugin.php
Normal file
155
lib/urlshortenerplugin.php
Normal file
@ -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;
|
||||
}
|
||||
}
|
106
lib/util.php
106
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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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"
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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 ""
|
||||
|
||||
#: classes/Subscription.php:200
|
||||
#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
|
||||
#: classes/Subscription.php:178
|
||||
#, fuzzy
|
||||
msgid "Couldn't delete subscription OMB token."
|
||||
msgstr "Diposubl eo dilemel ar postel kadarnadur."
|
||||
|
||||
#: classes/Subscription.php:211
|
||||
msgid "Couldn't delete subscription."
|
||||
msgid "Could not delete self-subscription."
|
||||
msgstr "Dibosupl eo paouez gant ar c'houmanant."
|
||||
|
||||
#: classes/User.php:363
|
||||
#. 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 "Diposubl eo dilemel ar postel kadarnadur."
|
||||
|
||||
#. 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."
|
||||
|
||||
#. 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
|
||||
|
@ -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."
|
||||
|
||||
#: 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 "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 ""
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
6737
locale/da/LC_MESSAGES/statusnet.po
Normal file
6737
locale/da/LC_MESSAGES/statusnet.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -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."
|
||||
#. 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."
|
||||
|
||||
#. 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."
|
||||
|
||||
#. 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/Subscription.php:200
|
||||
msgid "Couldn't delete subscription OMB token."
|
||||
msgstr "Konnte OMB-Abonnement nicht löschen."
|
||||
|
||||
#: classes/Subscription.php:211
|
||||
msgid "Couldn't 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"
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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
|
||||
|
@ -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 ""
|
||||
"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
|
||||
"to upload a smaller version."
|
||||
msgid "Cannot process URL '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: classes/File.php:195
|
||||
#. 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 ""
|
||||
|
||||
#: 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
|
||||
|
@ -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
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user