Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x

This commit is contained in:
Zach Copley 2010-02-15 21:14:01 +00:00
commit 82033b3773
147 changed files with 6498 additions and 3013 deletions

View File

@ -100,11 +100,11 @@ class ApiTimelineFavoritesAction extends ApiBareAuthAction
function showTimeline()
{
$profile = $this->user->getProfile();
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
$profile = $this->user->getProfile();
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
$sitename = common_config('site', 'name');
$title = sprintf(
$sitename = common_config('site', 'name');
$title = sprintf(
_('%1$s / Favorites from %2$s'),
$sitename,
$this->user->nickname
@ -112,32 +112,69 @@ class ApiTimelineFavoritesAction extends ApiBareAuthAction
$taguribase = common_config('integration', 'taguri');
$id = "tag:$taguribase:Favorites:" . $this->user->id;
$link = common_local_url(
'favorites',
array('nickname' => $this->user->nickname)
);
$subtitle = sprintf(
$subtitle = sprintf(
_('%1$s updates favorited by %2$s / %2$s.'),
$sitename,
$profile->getBestName(),
$this->user->nickname
);
$logo = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
$logo = !empty($avatar)
? $avatar->displayUrl()
: Avatar::defaultImage(AVATAR_PROFILE_SIZE);
switch($this->format) {
case 'xml':
$this->showXmlTimeline($this->notices);
break;
case 'rss':
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
$link = common_local_url(
'showfavorites',
array('nickname' => $this->user->nickname)
);
$this->showRssTimeline(
$this->notices,
$title,
$link,
$subtitle,
null,
$logo
);
break;
case 'atom':
$selfuri = common_root_url() .
ltrim($_SERVER['QUERY_STRING'], 'p=');
$this->showAtomTimeline(
$this->notices, $title, $id, $link, $subtitle,
null, $selfuri, $logo
header('Content-Type: application/atom+xml; charset=utf-8');
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'showfavorites',
array('nickname' => $this->user->nickname)
)
);
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$atom->addLink(
$this->getSelfUri('ApiTimelineFavorites', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -114,39 +114,71 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction
$title = sprintf(_("%s and friends"), $this->user->nickname);
$taguribase = common_config('integration', 'taguri');
$id = "tag:$taguribase:FriendsTimeline:" . $this->user->id;
$link = common_local_url(
'all', array('nickname' => $this->user->nickname)
);
$subtitle = sprintf(
_('Updates from %1$s and friends on %2$s!'),
$this->user->nickname, $sitename
);
$logo = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
$subtitle = sprintf(
_('Updates from %1$s and friends on %2$s!'),
$this->user->nickname, $sitename
);
$logo = (!empty($avatar))
? $avatar->displayUrl()
: Avatar::defaultImage(AVATAR_PROFILE_SIZE);
switch($this->format) {
case 'xml':
$this->showXmlTimeline($this->notices);
break;
case 'rss':
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
$link = common_local_url(
'all', array(
'nickname' => $this->user->nickname
)
);
$this->showRssTimeline(
$this->notices,
$title,
$link,
$subtitle,
null,
$logo
);
break;
case 'atom':
$target_id = $this->arg('id');
header('Content-Type: application/atom+xml; charset=utf-8');
if (isset($target_id)) {
$selfuri = common_root_url() .
'api/statuses/friends_timeline/' .
$target_id . '.atom';
} else {
$selfuri = common_root_url() .
'api/statuses/friends_timeline.atom';
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'all',
array('nickname' => $this->user->nickname)
)
);
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$this->showAtomTimeline(
$this->notices, $title, $id, $link,
$subtitle, null, $selfuri, $logo
);
$atom->addLink(
$this->getSelfUri('ApiTimelineFriends', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -109,38 +109,70 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
$title = sprintf(_("%s timeline"), $this->group->nickname);
$taguribase = common_config('integration', 'taguri');
$id = "tag:$taguribase:GroupTimeline:" . $this->group->id;
$link = common_local_url(
'showgroup',
array('nickname' => $this->group->nickname)
);
$subtitle = sprintf(
_('Updates from %1$s on %2$s!'),
$this->group->nickname,
$sitename
);
$logo = ($avatar) ? $avatar : User_group::defaultLogo(AVATAR_PROFILE_SIZE);
$logo = ($avatar) ? $avatar : User_group::defaultLogo(AVATAR_PROFILE_SIZE);
switch($this->format) {
case 'xml':
$this->showXmlTimeline($this->notices);
break;
case 'rss':
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
break;
case 'atom':
$selfuri = common_root_url() .
'api/statusnet/groups/timeline/' .
$this->group->nickname . '.atom';
$this->showAtomTimeline(
$this->showRssTimeline(
$this->notices,
$title,
$id,
$link,
$this->group->homeUrl(),
$subtitle,
null,
$selfuri,
$logo
);
break;
case 'atom':
header('Content-Type: application/atom+xml; charset=utf-8');
try {
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addAuthorRaw($this->group->asAtomAuthor());
$atom->setActivitySubject($this->group->asActivitySubject());
$atom->addLink($this->group->homeUrl());
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$atom->addLink(
$this->getSelfUri('ApiTimelineGroup', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
} catch (Atom10FeedException $e) {
$this->serverError(
'Could not generate feed for group - ' . $e->getMessage()
);
return;
}
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -115,39 +115,67 @@ class ApiTimelineHomeAction extends ApiBareAuthAction
$title = sprintf(_("%s and friends"), $this->user->nickname);
$taguribase = common_config('integration', 'taguri');
$id = "tag:$taguribase:HomeTimeline:" . $this->user->id;
$link = common_local_url(
'all', array('nickname' => $this->user->nickname)
);
$subtitle = sprintf(
_('Updates from %1$s and friends on %2$s!'),
$this->user->nickname, $sitename
);
$logo = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE);
$logo = (!empty($avatar))
? $avatar->displayUrl()
: Avatar::defaultImage(AVATAR_PROFILE_SIZE);
switch($this->format) {
case 'xml':
$this->showXmlTimeline($this->notices);
break;
case 'rss':
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
$link = common_local_url(
'all',
array('nickname' => $this->user->nickname)
);
$this->showRssTimeline(
$this->notices,
$title,
$link,
$subtitle,
null,
$logo
);
break;
case 'atom':
$target_id = $this->arg('id');
header('Content-Type: application/atom+xml; charset=utf-8');
if (isset($target_id)) {
$selfuri = common_root_url() .
'api/statuses/home_timeline/' .
$target_id . '.atom';
} else {
$selfuri = common_root_url() .
'api/statuses/home_timeline.atom';
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'all',
array('nickname' => $this->user->nickname)
)
);
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$this->showAtomTimeline(
$this->notices, $title, $id, $link,
$subtitle, null, $selfuri, $logo
$atom->addLink(
$this->getSelfUri('ApiTimelineHome', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -137,12 +137,36 @@ class ApiTimelineMentionsAction extends ApiBareAuthAction
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $logo);
break;
case 'atom':
$selfuri = common_root_url() .
ltrim($_SERVER['QUERY_STRING'], 'p=');
$this->showAtomTimeline(
$this->notices, $title, $id, $link, $subtitle,
null, $selfuri, $logo
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'replies',
array('nickname' => $this->user->nickname)
)
);
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$atom->addLink(
$this->getSelfUri('ApiTimelineMentions', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -75,6 +75,10 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
$this->notices = $this->getNotices();
if ($this->since) {
throw new ServerException("since parameter is disabled for performance; use since_id", 403);
}
return true;
}
@ -118,11 +122,28 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $sitelogo);
break;
case 'atom':
$selfuri = common_root_url() . 'api/statuses/public_timeline.atom';
$this->showAtomTimeline(
$this->notices, $title, $id, $link,
$subtitle, null, $selfuri, $sitelogo
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($sitelogo);
$atom->setUpdated('now');
$atom->addLink(common_local_url('public'));
$atom->addLink(
$this->getSelfUri(
'ApiTimelinePublic', array('format' => 'atom')
),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);
@ -145,7 +166,7 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction
$notice = Notice::publicStream(
($this->page - 1) * $this->count, $this->count, $this->since_id,
$this->max_id, $this->since
$this->max_id
);
while ($notice->fetch()) {

View File

@ -99,6 +99,8 @@ class ApiTimelineRetweetsOfMeAction extends ApiAuthAction
$strm = $this->auth_user->repeatsOfMe($offset, $limit, $this->since_id, $this->max_id);
common_debug(var_export($strm, true));
switch ($this->format) {
case 'xml':
$this->showXmlTimeline($strm);
@ -112,10 +114,38 @@ class ApiTimelineRetweetsOfMeAction extends ApiAuthAction
$title = sprintf(_("Repeats of %s"), $this->auth_user->nickname);
$taguribase = common_config('integration', 'taguri');
$id = "tag:$taguribase:RepeatsOfMe:" . $this->auth_user->id;
$link = common_local_url('showstream',
array('nickname' => $this->auth_user->nickname));
$this->showAtomTimeline($strm, $title, $id, $link);
header('Content-Type: application/atom+xml; charset=utf-8');
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'showstream',
array('nickname' => $this->auth_user->nickname)
)
);
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$atom->addLink(
$this->getSelfUri('ApiTimelineRetweetsOfMe', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($strm);
$this->raw($atom->getString());
break;
default:

View File

@ -100,10 +100,6 @@ class ApiTimelineTagAction extends ApiPrivateAuthAction
$sitename = common_config('site', 'name');
$sitelogo = (common_config('site', 'logo')) ? common_config('site', 'logo') : Theme::path('logo.png');
$title = sprintf(_("Notices tagged with %s"), $this->tag);
$link = common_local_url(
'tag',
array('tag' => $this->tag)
);
$subtitle = sprintf(
_('Updates tagged with %1$s on %2$s!'),
$this->tag,
@ -117,22 +113,51 @@ class ApiTimelineTagAction extends ApiPrivateAuthAction
$this->showXmlTimeline($this->notices);
break;
case 'rss':
$this->showRssTimeline($this->notices, $title, $link, $subtitle, null, $sitelogo);
break;
case 'atom':
$selfuri = common_root_url() .
'api/statusnet/tags/timeline/' .
$this->tag . '.atom';
$this->showAtomTimeline(
$link = common_local_url(
'tag',
array('tag' => $this->tag)
);
$this->showRssTimeline(
$this->notices,
$title,
$id,
$link,
$subtitle,
null,
$selfuri,
$sitelogo
);
break;
case 'atom':
header('Content-Type: application/atom+xml; charset=utf-8');
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'tag',
array('tag' => $this->tag)
)
);
$aargs = array('format' => 'atom');
if (!empty($this->tag)) {
$aargs['tag'] = $this->tag;
}
$atom->addLink(
$this->getSelfUri('ApiTimelineTag', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -145,18 +145,47 @@ class ApiTimelineUserAction extends ApiBareAuthAction
);
break;
case 'atom':
if (isset($apidata['api_arg'])) {
$selfuri = common_root_url() .
'api/statuses/user_timeline/' .
$apidata['api_arg'] . '.atom';
} else {
$selfuri = common_root_url() .
'api/statuses/user_timeline.atom';
}
$this->showAtomTimeline(
$this->notices, $title, $id, $link,
$subtitle, $suplink, $selfuri, $logo
header('Content-Type: application/atom+xml; charset=utf-8');
$atom = new AtomNoticeFeed();
$atom->setId($id);
$atom->setTitle($title);
$atom->setSubtitle($subtitle);
$atom->setLogo($logo);
$atom->setUpdated('now');
$atom->addLink(
common_local_url(
'showstream',
array('nickname' => $this->user->nickname)
)
);
$id = $this->arg('id');
$aargs = array('format' => 'atom');
if (!empty($id)) {
$aargs['id'] = $id;
}
$atom->addLink(
$this->getSelfUri('ApiTimelineUser', $aargs),
array('rel' => 'self', 'type' => 'application/atom+xml')
);
$atom->addLink(
$suplink,
array(
'rel' => 'http://api.friendfeed.com/2008/03#sup',
'type' => 'application/json'
)
);
$atom->addEntryFromNotices($this->notices);
$this->raw($atom->getString());
break;
case 'json':
$this->showJsonTimeline($this->notices);

View File

@ -277,7 +277,7 @@ class EditApplicationAction extends OwnerDesignAction
function nameExists($name)
{
$newapp = Oauth_application::staticGet('name', $name);
if (!$newapp) {
if (empty($newapp)) {
return false;
} else {
return $newapp->id != $this->app->id;

View File

@ -192,7 +192,9 @@ class GroupMemberListItem extends ProfileListItem
{
$user = common_current_user();
if (!empty($user) && $user->id != $this->profile->id && $user->isAdmin($this->group) &&
if (!empty($user) &&
$user->id != $this->profile->id &&
($user->isAdmin($this->group) || $user->hasRight(Right::MAKEGROUPADMIN)) &&
!$this->profile->isAdmin($this->group)) {
$this->out->elementStart('li', 'entity_make_admin');
$maf = new MakeAdminForm($this->out, $this->profile, $this->group,

View File

@ -87,7 +87,8 @@ class MakeadminAction extends Action
return false;
}
$user = common_current_user();
if (!$user->isAdmin($this->group)) {
if (!$user->isAdmin($this->group) &&
!$user->hasRight(Right::MAKEGROUPADMIN)) {
$this->clientError(_('Only an admin can make another user an admin.'), 401);
return false;
}

View File

@ -290,7 +290,7 @@ class NewApplicationAction extends OwnerDesignAction
function nameExists($name)
{
$app = Oauth_application::staticGet('name', $name);
return ($app !== false);
return !empty($app);
}
}

View File

@ -330,13 +330,13 @@ class ShowgroupAction extends GroupDesignAction
new Feed(Feed::RSS2,
common_local_url('ApiTimelineGroup',
array('format' => 'rss',
'id' => $this->group->nickname)),
'id' => $this->group->id)),
sprintf(_('Notice feed for %s group (RSS 2.0)'),
$this->group->nickname)),
new Feed(Feed::ATOM,
common_local_url('ApiTimelineGroup',
array('format' => 'atom',
'id' => $this->group->nickname)),
'id' => $this->group->id)),
sprintf(_('Notice feed for %s group (Atom)'),
$this->group->nickname)),
new Feed(Feed::FOAF,

View File

@ -131,14 +131,14 @@ class ShowstreamAction extends ProfileAction
new Feed(Feed::RSS2,
common_local_url('ApiTimelineUser',
array(
'id' => $this->user->nickname,
'id' => $this->user->id,
'format' => 'rss')),
sprintf(_('Notice feed for %s (RSS 2.0)'),
$this->user->nickname)),
new Feed(Feed::ATOM,
common_local_url('ApiTimelineUser',
array(
'id' => $this->user->nickname,
'id' => $this->user->id,
'format' => 'atom')),
sprintf(_('Notice feed for %s (Atom)'),
$this->user->nickname)),

View File

@ -363,7 +363,7 @@ class Memcached_DataObject extends DB_DataObject
$cached[] = clone($inst);
}
$inst->free();
$c->set($ckey, $cached, MEMCACHE_COMPRESSED, $expiry);
$c->set($ckey, $cached, Cache::COMPRESSED, $expiry);
return new ArrayWrapper($cached);
}

View File

@ -22,4 +22,19 @@ class Nonce extends Memcached_DataObject
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
/**
* Compatibility hack for PHP 5.3
*
* The statusnet.links.ini entry cannot be read because "," is no longer
* allowed in key names when read by parse_ini_file().
*
* @return array
* @access public
*/
function links()
{
return array('consumer_key,token' => 'token:consumer_key,token');
}
}

View File

@ -783,7 +783,7 @@ class Notice extends Memcached_DataObject
$result = $gi->insert();
if (!result) {
if (!$result) {
common_log_db_error($gi, 'INSERT', __FILE__);
throw new ServerException(_('Problem saving group inbox.'));
}
@ -917,7 +917,7 @@ class Notice extends Memcached_DataObject
/**
* Same calculation as saveGroups but without the saving
* @fixme merge the functions
* @return array of Group objects
* @return array of Group_inbox objects
*/
function getGroups()
{
@ -957,7 +957,10 @@ class Notice extends Memcached_DataObject
if ($namespace) {
$attrs = array('xmlns' => 'http://www.w3.org/2005/Atom',
'xmlns:thr' => 'http://purl.org/syndication/thread/1.0');
'xmlns:thr' => 'http://purl.org/syndication/thread/1.0',
'xmlns:georss' => 'http://www.georss.org/georss',
'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/',
'xmlns:ostatus' => 'http://ostatus.org/schema/1.0');
} else {
$attrs = array();
}
@ -983,11 +986,6 @@ class Notice extends Memcached_DataObject
$xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
}
$xs->elementStart('author');
$xs->element('name', null, $profile->nickname);
$xs->element('uri', null, $profile->profileurl);
$xs->elementEnd('author');
if ($source) {
$xs->elementEnd('source');
}
@ -995,6 +993,9 @@ class Notice extends Memcached_DataObject
$xs->element('title', null, $this->content);
$xs->element('summary', null, $this->content);
$xs->raw($profile->asAtomAuthor());
$xs->raw($profile->asActivityActor());
$xs->element('link', array('rel' => 'alternate',
'href' => $this->bestUrl()));
@ -1014,6 +1015,43 @@ class Notice extends Memcached_DataObject
}
}
if (!empty($this->conversation)
&& $this->conversation != $this->id) {
$xs->element(
'link', array(
'rel' => 'ostatus:conversation',
'href' => common_local_url(
'conversation',
array('id' => $this->conversation)
)
)
);
}
$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->getAcctUri()
)
);
}
}
if (!empty($this->repeat_of)) {
$repeat = Notice::staticGet('id', $this->repeat_of);
if (!empty($repeat)) {
$xs->element(
'ostatus:forward',
array('ref' => $repeat->uri, 'href' => $repeat->bestUrl())
);
}
}
$xs->element('content', array('type' => 'html'), $this->rendered);
$tag = new Notice_tag();
@ -1041,9 +1079,7 @@ class Notice extends Memcached_DataObject
}
if (!empty($this->lat) && !empty($this->lon)) {
$xs->elementStart('geo', array('xmlns:georss' => 'http://www.georss.org/georss'));
$xs->element('georss:point', null, $this->lat . ' ' . $this->lon);
$xs->elementEnd('geo');
}
$xs->elementEnd('entry');
@ -1176,6 +1212,10 @@ class Notice extends Memcached_DataObject
// Figure out who that is.
$sender = Profile::staticGet('id', $profile_id);
if (empty($sender)) {
return null;
}
$recipient = common_relative_profile($sender, $nickname, common_sql_now());
if (empty($recipient)) {

View File

@ -716,6 +716,7 @@ class Profile extends Memcached_DataObject
switch ($right)
{
case Right::DELETEOTHERSNOTICE:
case Right::MAKEGROUPADMIN:
case Right::SANDBOXUSER:
case Right::SILENCEUSER:
case Right::DELETEUSER:
@ -753,4 +754,89 @@ class Profile extends Memcached_DataObject
return !empty($notice);
}
/**
* Returns an XML string fragment with limited profile information
* as an Atom <author> element.
*
* Assumes that Atom has been previously set up as the base namespace.
*
* @return string
*/
function asAtomAuthor()
{
$xs = new XMLStringer(true);
$xs->elementStart('author');
$xs->element('name', null, $this->nickname);
$xs->element('uri', null, $this->profileurl);
$xs->elementEnd('author');
return $xs->getString();
}
/**
* Returns an XML string fragment with profile information as an
* Activity Streams <activity:actor> element.
*
* Assumes that 'activity' namespace has been previously defined.
*
* @return string
*/
function asActivityActor()
{
return $this->asActivityNoun('actor');
}
/**
* Returns an XML string fragment with profile information as an
* Activity Streams noun object with the given element type.
*
* Assumes that 'activity' namespace has been previously defined.
*
* @param string $element one of 'actor', 'subject', 'object', 'target'
* @return string
*/
function asActivityNoun($element)
{
$xs = new XMLStringer(true);
$xs->elementStart('activity:' . $element);
$xs->element(
'activity:object-type',
null,
'http://activitystrea.ms/schema/1.0/person'
);
$xs->element(
'id',
null,
common_local_url(
'userbyid',
array('id' => $this->id)
)
);
$xs->element('title', null, $this->getBestName());
$avatar = $this->getAvatar(AVATAR_PROFILE_SIZE);
$xs->element(
'link', array(
'type' => empty($avatar) ? 'image/png' : $avatar->mediatype,
'href' => empty($avatar)
? Avatar::defaultImage(AVATAR_PROFILE_SIZE)
: $avatar->displayUrl()
),
''
);
$xs->elementEnd('activity:' . $element);
return $xs->getString();
}
function getAcctUri()
{
return $this->nickname . '@' . common_config('site', 'server');
}
}

View File

@ -49,12 +49,12 @@ class User_group extends Memcached_DataObject
array('id' => $this->id));
}
function getNotices($offset, $limit)
function getNotices($offset, $limit, $since_id=null, $max_id=null)
{
$ids = Notice::stream(array($this, '_streamDirect'),
array(),
'user_group:notice_ids:' . $this->id,
$offset, $limit);
$offset, $limit, $since_id, $max_id);
return Notice::getStreamByIds($ids);
}
@ -355,6 +355,39 @@ class User_group extends Memcached_DataObject
return $xs->getString();
}
function asAtomAuthor()
{
$xs = new XMLStringer(true);
$xs->elementStart('author');
$xs->element('name', null, $this->nickname);
$xs->element('uri', null, $this->permalink());
$xs->elementEnd('author');
return $xs->getString();
}
function asActivitySubject()
{
$xs = new XMLStringer(true);
$xs->elementStart('activity:subject');
$xs->element('activity:object', null, 'http://activitystrea.ms/schema/1.0/group');
$xs->element('id', null, $this->permalink());
$xs->element('title', null, $this->getBestName());
$xs->element(
'link', array(
'rel' => 'avatar',
'href' => empty($this->homepage_logo)
? User_group::defaultLogo(AVATAR_PROFILE_SIZE)
: $this->homepage_logo
)
);
$xs->elementEnd('activity:subject');
return $xs->getString();
}
static function register($fields) {
// MAGICALLY put fields into current scope

View File

@ -19,8 +19,11 @@ profile_id = profile:id
[token]
consumer_key = consumer:consumer_key
[nonce]
consumer_key,token = token:consumer_key,token
; Compatibility hack for PHP 5.3
; This entry has been moved to the class definition, as commas are no longer
; considered valid in keys, causing parse_ini_file() to reject the whole file.
;[nonce]
;consumer_key,token = token:consumer_key,token
[confirm_address]
user_id = user:id

View File

@ -356,42 +356,44 @@ var SN = { // StatusNet
},
NoticeRepeat: function() {
$('.form_repeat').live('click', function() {
SN.U.FormXHR($(this));
$('.form_repeat').live('click', function(e) {
e.preventDefault();
SN.U.NoticeRepeatConfirmation($(this));
return false;
});
},
NoticeRepeatConfirmation: function(form) {
function NRC() {
form.closest('.notice-options').addClass('opaque');
form.addClass('dialogbox');
var submit_i = form.find('.submit');
form.append('<button class="close">&#215;</button>');
form.find('button.close').click(function(){
$(this).remove();
var submit = submit_i.clone();
submit
.addClass('submit_dialogbox')
.removeClass('submit');
form.append(submit);
submit.bind('click', function() { SN.U.FormXHR(form); return false; });
form.closest('.notice-options').removeClass('opaque');
form.removeClass('dialogbox');
form.find('.submit_dialogbox').remove();
form.find('.submit').show();
submit_i.hide();
return false;
});
};
form
.addClass('dialogbox')
.append('<button class="close">&#215;</button>')
.closest('.notice-options')
.addClass('opaque');
form.find('.submit').bind('click', function(e) {
e.preventDefault();
form.find('button.close').click(function(){
$(this).remove();
var submit = form.find('.submit').clone();
submit.addClass('submit_dialogbox');
submit.removeClass('submit');
form.append(submit);
form
.removeClass('dialogbox')
.closest('.notice-options')
.removeClass('opaque');
$(this).hide();
form.find('.submit_dialogbox').remove();
form.find('.submit').show();
NRC();
return false;
});
},

View File

@ -77,6 +77,7 @@ class ApiAction extends Action
function prepare($args)
{
StatusNet::setApi(true); // reduce exception reports to aid in debugging
parent::prepare($args);
$this->format = $this->arg('format');
@ -1103,7 +1104,7 @@ class ApiAction extends Action
}
}
function serverError($msg, $code = 500, $content_type = 'json')
function serverError($msg, $code = 500, $content_type = 'xml')
{
$action = $this->trimmed('action');
@ -1321,4 +1322,22 @@ class ApiAction extends Action
}
}
function getSelfUri($action, $aargs)
{
parse_str($_SERVER['QUERY_STRING'], $params);
$pstring = '';
if (!empty($params)) {
unset($params['p']);
$pstring = http_build_query($params);
}
$uri = common_local_url($action, $aargs);
if (!empty($pstring)) {
$uri .= '?' . $pstring;
}
return $uri;
}
}

106
lib/atom10entry.php Normal file
View File

@ -0,0 +1,106 @@
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Class for building / manipulating an Atom entry in memory
*
* 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 Feed
* @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);
}
class Atom10EntryException extends Exception
{
}
/**
* Class for manipulating an Atom entry in memory. Get the entry as an XML
* string with Atom10Entry::getString().
*
* @category Feed
* @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 Atom10Entry extends XMLStringer
{
private $namespaces;
private $categories;
private $content;
private $contributors;
private $id;
private $links;
private $published;
private $rights;
private $source;
private $summary;
private $title;
function __construct($indent = true) {
parent::__construct($indent);
$this->namespaces = array();
}
function addNamespace($namespace, $uri)
{
$ns = array($namespace => $uri);
$this->namespaces = array_merge($this->namespaces, $ns);
}
function initEntry()
{
}
function endEntry()
{
}
/**
* Check that all required elements have been set, etc.
* Throws an Atom10EntryException if something's missing.
*
* @return void
*/
function validate
{
}
function getString()
{
$this->validate();
$this->initEntry();
$this->renderEntries();
$this->endEntry();
return $this->xw->outputMemory();
}
}

293
lib/atom10feed.php Normal file
View File

@ -0,0 +1,293 @@
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Class for building an Atom feed in memory
*
* 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 Feed
* @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);
}
class Atom10FeedException extends Exception
{
}
/**
* Class for building an Atom feed in memory. Get the finished doc
* as a string with Atom10Feed::getString().
*
* @category Feed
* @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 Atom10Feed extends XMLStringer
{
public $xw;
private $namespaces;
private $authors;
private $subject;
private $categories;
private $contributors;
private $generator;
private $icon;
private $links;
private $logo;
private $rights;
private $subtitle;
private $title;
private $published;
private $updated;
private $entries;
/**
* Constructor
*
* @param boolean $indent flag to turn indenting on or off
*
* @return void
*/
function __construct($indent = true) {
parent::__construct($indent);
$this->namespaces = array();
$this->authors = array();
$this->links = array();
$this->entries = array();
$this->addNamespace('xmlns', 'http://www.w3.org/2005/Atom');
}
/**
* Add another namespace to the feed
*
* @param string $namespace the namespace
* @param string $uri namspace uri
*
* @return void
*/
function addNamespace($namespace, $uri)
{
$ns = array($namespace => $uri);
$this->namespaces = array_merge($this->namespaces, $ns);
}
function addAuthor($name, $uri = null, $email = null)
{
$xs = new XMLStringer(true);
$xs->elementStart('author');
if (!empty($name)) {
$xs->element('name', null, $name);
} else {
throw new Atom10FeedException(
'author element must contain a name element.'
);
}
if (!is_null($uri)) {
$xs->element('uri', null, $uri);
}
if (!is_null(email)) {
$xs->element('email', null, $email);
}
$xs->elementEnd('author');
array_push($this->authors, $xs->getString());
}
/**
* Add an Author to the feed via raw XML string
*
* @param string $xmlAuthor An XML string representation author
*
* @return void
*/
function addAuthorRaw($xmlAuthor)
{
array_push($this->authors, $xmlAuthor);
}
function renderAuthors()
{
foreach ($this->authors as $author) {
$this->raw($author);
}
}
/**
* Add a activity feed subject via raw XML string
*
* @param string $xmlSubject An XML string representation of the subject
*
* @return void
*/
function setActivitySubject($xmlSubject)
{
$this->subject = $xmlSubject;
}
function getNamespaces()
{
return $this->namespaces;
}
function initFeed()
{
$this->xw->startDocument('1.0', 'UTF-8');
$commonAttrs = array('xml:lang' => 'en-US');
$commonAttrs = array_merge($commonAttrs, $this->namespaces);
$this->elementStart('feed', $commonAttrs);
$this->element('id', null, $this->id);
$this->element('title', null, $this->title);
$this->element('subtitle', null, $this->subtitle);
if (!empty($this->logo)) {
$this->element('logo', null, $this->logo);
}
$this->element('updated', null, $this->updated);
$this->renderLinks();
}
/**
* Check that all required elements have been set, etc.
* Throws an Atom10FeedException if something's missing.
*
* @return void
*/
function validate()
{
}
function renderLinks()
{
foreach ($this->links as $attrs)
{
$this->element('link', $attrs, null);
}
}
function addEntryRaw($xmlEntry)
{
array_push($this->entries, $xmlEntry);
}
function addEntry($entry)
{
array_push($this->entries, $entry->getString());
}
function renderEntries()
{
foreach ($this->entries as $entry) {
$this->raw($entry);
}
}
function endFeed()
{
$this->elementEnd('feed');
$this->xw->endDocument();
}
function getString()
{
$this->validate();
$this->initFeed();
$this->renderAuthors();
if (!empty($this->subject)) {
$this->raw($this->subject);
}
$this->renderEntries();
$this->endFeed();
return $this->xw->outputMemory();
}
function setId($id)
{
$this->id = $id;
}
function setTitle($title)
{
$this->title = $title;
}
function setSubtitle($subtitle)
{
$this->subtitle = $subtitle;
}
function setLogo($logo)
{
$this->logo = $logo;
}
function setUpdated($dt)
{
$this->updated = common_date_iso8601($dt);
}
function setPublished($dt)
{
$this->published = common_date_iso8601($dt);
}
/**
* Adds a link element into the Atom document
*
* Assumes you want rel="alternate" and type="text/html" unless
* you send in $otherAttrs.
*
* @param string $uri the uri the href needs to point to
* @param array $otherAttrs other attributes to stick in
*
* @return void
*/
function addLink($uri, $otherAttrs = null) {
$attrs = array('href' => $uri);
if (is_null($otherAttrs)) {
$attrs['rel'] = 'alternate';
$attrs['type'] = 'text/html';
} else {
$attrs = array_merge($attrs, $otherAttrs);
}
array_push($this->links, $attrs);
}
}

103
lib/atomnoticefeed.php Normal file
View File

@ -0,0 +1,103 @@
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Class for building and Atom feed from a collection of notices
*
* 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 Feed
* @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);
}
/**
* Class for creating a feed that represents a collection of notices. Builds the
* feed in memory. Get the feed as a string with AtomNoticeFeed::getString().
*
* @category Feed
* @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 AtomNoticeFeed extends Atom10Feed
{
function __construct($indent = true) {
parent::__construct($indent);
// Feeds containing notice info use these namespaces
$this->addNamespace(
'xmlns:thr',
'http://purl.org/syndication/thread/1.0'
);
$this->addNamespace(
'xmlns:georss',
'http://www.georss.org/georss'
);
$this->addNamespace(
'xmlns:activity',
'http://activitystrea.ms/spec/1.0/'
);
// XXX: What should the uri be?
$this->addNamespace(
'xmlns:ostatus',
'http://ostatus.org/schema/1.0'
);
}
/**
* Add more than one Notice to the feed
*
* @param mixed $notices an array of Notice objects or handle
*
*/
function addEntryFromNotices($notices)
{
if (is_array($notices)) {
foreach ($notices as $notice) {
$this->addEntryFromNotice($notice);
}
} else {
while ($notices->fetch()) {
$this->addEntryFromNotice($notices);
}
}
}
/**
* Add a single Notice to the feed
*
* @param Notice $notice a Notice to add
*/
function addEntryFromNotice($notice)
{
$this->addEntryRaw($notice->asAtomEntry());
}
}

View File

@ -47,6 +47,8 @@ class Cache
var $_items = array();
static $_inst = null;
const COMPRESSED = 1;
/**
* Singleton constructor
*
@ -133,7 +135,7 @@ class Cache
*
* @param string $key The key to use for lookups
* @param string $value The value to store
* @param integer $flag Flags to use, mostly ignored
* @param integer $flag Flags to use, may include Cache::COMPRESSED
* @param integer $expiry Expiry value, mostly ignored
*
* @return boolean success flag

View File

@ -88,6 +88,7 @@ $default =
'stomp_manual_failover' => true, // if multiple servers are listed, treat them as separate (enqueue on one randomly, listen on all)
'monitor' => null, // URL to monitor ping endpoint (work in progress)
'softlimit' => '90%', // total size or % of memory_limit at which to restart queue threads gracefully
'spawndelay' => 1, // Wait at least N seconds between (re)spawns of child processes to avoid slamming the queue server with subscription startup
'debug_memory' => false, // true to spit memory usage to log
'inboxes' => true, // true to do inbox distribution & output queueing from in background via 'distrib' queue
),

View File

@ -56,6 +56,7 @@ class ErrorAction extends Action
$this->code = $code;
$this->message = $message;
$this->minimal = StatusNet::isApi();
// XXX: hack alert: usually we aren't going to
// call this page directly, but because it's
@ -102,7 +103,14 @@ class ErrorAction extends Action
function showPage()
{
parent::showPage();
if ($this->minimal) {
// Even more minimal -- we're in a machine API
// and don't want to flood the output.
$this->extraHeaders();
$this->showContent();
} else {
parent::showPage();
}
// We don't want to have any more output after this
exit();

View File

@ -81,12 +81,13 @@ class HTTPResponse extends HTTP_Request2_Response
}
/**
* Check if the response is OK, generally a 200 status code.
* Check if the response is OK, generally a 200 or other 2xx status code.
* @return bool
*/
function isOk()
{
return ($this->getStatus() == 200);
$status = $this->getStatus();
return ($status >= 200 && $status < 300);
}
}

View File

@ -213,6 +213,7 @@ class MysqlSchema extends Schema
$sql .= "); ";
common_log(LOG_INFO, $sql);
$res = $this->conn->query($sql);
if (PEAR::isError($res)) {

View File

@ -155,26 +155,26 @@ abstract class QueueManager extends IoManager
}
/**
* Encode an object for queued storage.
* Next gen may use serialization.
* Encode an object or variable for queued storage.
* Notice objects are currently stored as an id reference;
* other items are serialized.
*
* @param mixed $object
* @param mixed $item
* @return string
*/
protected function encode($object)
protected function encode($item)
{
if ($object instanceof Notice) {
return $object->id;
} else if (is_string($object)) {
return $object;
if ($item instanceof Notice) {
// Backwards compat
return $item->id;
} else {
throw new ServerException("Can't queue this type", 500);
return serialize($item);
}
}
/**
* Decode an object from queued storage.
* Accepts back-compat notice reference entries and strings for now.
* Accepts notice reference entries and serialized items.
*
* @param string
* @return mixed
@ -182,9 +182,23 @@ abstract class QueueManager extends IoManager
protected function decode($frame)
{
if (is_numeric($frame)) {
// Back-compat for notices...
return Notice::staticGet(intval($frame));
} else {
} 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;
}
}

View File

@ -57,5 +57,6 @@ class Right
const EMAILONREPLY = 'emailonreply';
const EMAILONSUBSCRIBE = 'emailonsubscribe';
const EMAILONFAVE = 'emailonfave';
const MAKEGROUPADMIN = 'makegroupadmin';
}

View File

@ -83,6 +83,7 @@ abstract class SpawningDaemon extends Daemon
$this->log(LOG_INFO, "Spawned thread $i as pid $pid");
$children[$i] = $pid;
}
sleep(common_config('queue', 'spawndelay'));
}
$this->log(LOG_INFO, "Waiting for children to complete.");
@ -111,6 +112,7 @@ abstract class SpawningDaemon extends Daemon
$this->log(LOG_INFO, "Respawned thread $i as pid $pid");
$children[$i] = $pid;
}
sleep(common_config('queue', 'spawndelay'));
} else {
$this->log(LOG_INFO, "Thread $i pid $pid exited with status $exitCode; closing out thread.");
}

View File

@ -30,6 +30,7 @@ global $config, $_server, $_path;
class StatusNet
{
protected static $have_config;
protected static $is_api;
/**
* Configure and instantiate a plugin into the current configuration.
@ -147,6 +148,16 @@ class StatusNet
return self::$have_config;
}
public function isApi()
{
return self::$is_api;
}
public function setApi($mode)
{
self::$is_api = $mode;
}
/**
* Build default configuration array
* @return array

View File

@ -107,9 +107,10 @@ class StompQueueManager extends QueueManager
$message .= ':' . $param;
}
$this->_connect();
$result = $this->_send($this->control,
$message,
array ('created' => common_sql_now()));
$con = $this->cons[$this->defaultIdx];
$result = $con->send($this->control,
$message,
array ('created' => common_sql_now()));
if ($result) {
$this->_log(LOG_INFO, "Sent control ping to queue daemons: $message");
return true;
@ -368,17 +369,10 @@ class StompQueueManager extends QueueManager
foreach ($this->cons as $i => $con) {
if ($con) {
$this->rollback($i);
$con->unsubscribe($this->control);
$con->disconnect();
$this->cons[$i] = null;
}
}
if ($this->sites) {
foreach ($this->sites as $server) {
StatusNet::init($server);
$this->doUnsubscribe();
}
} else {
$this->doUnsubscribe();
}
return true;
}
@ -555,26 +549,14 @@ class StompQueueManager extends QueueManager
}
$host = $this->cons[$idx]->getServer();
if (is_numeric($frame->body)) {
$id = intval($frame->body);
$info = "notice $id posted at {$frame->headers['created']} in queue $queue from $host";
$notice = Notice::staticGet('id', $id);
if (empty($notice)) {
$this->_log(LOG_WARNING, "Skipping missing $info");
$this->ack($idx, $frame);
$this->commit($idx);
$this->begin($idx);
$this->stats('badnotice', $queue);
return false;
}
$item = $notice;
} else {
// @fixme should we serialize, or json, or what here?
$info = "string posted at {$frame->headers['created']} in queue $queue from $host";
$item = $frame->body;
$item = $this->decode($frame->body);
if (empty($item)) {
$this->_log(LOG_ERR, "Skipping empty or deleted item in queue $queue from $host");
return true;
}
$info = $this->logrep($item) . " posted at " .
$frame->headers['created'] . " in queue $queue from $host";
$this->_log(LOG_DEBUG, "Dequeued $info");
$handler = $this->getHandler($queue);
if (!$handler) {

View File

@ -367,7 +367,8 @@ function common_current_user()
if ($_cur === false) {
if (isset($_REQUEST[session_name()]) || (isset($_SESSION['userid']) && $_SESSION['userid'])) {
if (isset($_COOKIE[session_name()]) || isset($_GET[session_name()])
|| (isset($_SESSION['userid']) && $_SESSION['userid'])) {
common_ensure_session();
$id = isset($_SESSION['userid']) ? $_SESSION['userid'] : false;
if ($id) {
@ -658,6 +659,9 @@ function common_valid_profile_tag($str)
function common_at_link($sender_id, $nickname)
{
$sender = Profile::staticGet($sender_id);
if (!$sender) {
return $nickname;
}
$recipient = common_relative_profile($sender, common_canonical_nickname($nickname));
if ($recipient) {
$user = User::staticGet('id', $recipient->id);
@ -687,7 +691,7 @@ function common_group_link($sender_id, $nickname)
{
$sender = Profile::staticGet($sender_id);
$group = User_group::getForNickname($nickname);
if ($group && $sender->isMember($group)) {
if ($sender && $group && $sender->isMember($group)) {
$attrs = array('href' => $group->permalink(),
'class' => 'url');
if (!empty($group->fullname)) {

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:32+0000\n"
"POT-Creation-Date: 2010-02-14 20:05+0000\n"
"PO-Revision-Date: 2010-02-14 20:05:58+0000\n"
"Language-Team: Arabic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62476); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ar\n"
"X-Message-Group: out-statusnet\n"
@ -26,14 +26,12 @@ msgid "Access"
msgstr "نفاذ"
#: actions/accessadminpanel.php:65
#, fuzzy
msgid "Site access settings"
msgstr "اذف إعدادت الموقع"
msgstr "إعدادات الوصول إلى الموقع"
#: actions/accessadminpanel.php:158
#, fuzzy
msgid "Registration"
msgstr "سجّل"
msgstr "تسجيل"
#: actions/accessadminpanel.php:161
msgid "Private"
@ -72,9 +70,8 @@ msgid "Save"
msgstr "أرسل"
#: actions/accessadminpanel.php:189
#, fuzzy
msgid "Save access settings"
msgstr "اذف إعدادت الموقع"
msgstr "حفظ إعدادت الوصول"
#: actions/all.php:63 actions/public.php:97 actions/replies.php:92
#: actions/showfavorites.php:137 actions/tag.php:51
@ -165,8 +162,8 @@ msgstr ""
msgid "You and friends"
msgstr "أنت والأصدقاء"
#: actions/allrss.php:119 actions/apitimelinefriends.php:121
#: actions/apitimelinehome.php:122
#: actions/allrss.php:119 actions/apitimelinefriends.php:119
#: actions/apitimelinehome.php:120
#, php-format
msgid "Updates from %1$s and friends on %2$s!"
msgstr ""
@ -187,12 +184,12 @@ msgstr ""
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:137
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:146 actions/apitimelinefriends.php:155
#: actions/apitimelinegroup.php:150 actions/apitimelinehome.php:156
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelinefavorites.php:183 actions/apitimelinefriends.php:187
#: actions/apitimelinegroup.php:182 actions/apitimelinehome.php:184
#: actions/apitimelinementions.php:175 actions/apitimelinepublic.php:152
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166
#: actions/apitimelineuser.php:194 actions/apiusershow.php:101
msgid "API method not found."
msgstr "لم يتم العثور على وسيلة API."
@ -280,7 +277,7 @@ msgstr "رسائل مباشرة من %s"
#: actions/apidirectmessage.php:93
#, php-format
msgid "All the direct messages sent from %s"
msgstr ""
msgstr "جميع الرسائل المرسلة من %s"
#: actions/apidirectmessage.php:101
#, php-format
@ -353,7 +350,7 @@ msgstr ""
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
msgstr ""
msgstr "تعذّر تحديد المستخدم المصدر."
#: actions/apifriendshipsshow.php:142
msgid "Could not find target user."
@ -369,7 +366,7 @@ msgstr ""
#: actions/newgroup.php:130 actions/profilesettings.php:238
#: actions/register.php:208
msgid "Nickname already in use. Try another one."
msgstr ""
msgstr "الاسم المستعار مستخدم بالفعل. جرّب اسمًا آخرًا."
#: actions/apigroupcreate.php:180 actions/editgroup.php:189
#: actions/newgroup.php:133 actions/profilesettings.php:218
@ -406,7 +403,7 @@ msgstr ""
#: actions/newgroup.php:159
#, php-format
msgid "Too many aliases! Maximum %d."
msgstr ""
msgstr "كنيات كيرة! العدد الأقصى هو %d."
#: actions/apigroupcreate.php:264 actions/editgroup.php:224
#: actions/newgroup.php:168
@ -446,7 +443,7 @@ msgstr "لم يمكن ضم المستخدم %1$s إلى المجموعة %2$s."
#: actions/apigroupleave.php:114
msgid "You are not a member of this group."
msgstr ""
msgstr "لست عضوًا في هذه المجموعة"
#: actions/apigroupleave.php:124 actions/leavegroup.php:119
#, php-format
@ -628,7 +625,7 @@ msgstr "نسق غير مدعوم."
msgid "%1$s / Favorites from %2$s"
msgstr ""
#: actions/apitimelinefavorites.php:120
#: actions/apitimelinefavorites.php:117
#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
msgstr ""
@ -639,7 +636,7 @@ msgstr ""
msgid "%s timeline"
msgstr "مسار %s الزمني"
#: actions/apitimelinegroup.php:117 actions/apitimelineuser.php:126
#: actions/apitimelinegroup.php:114 actions/apitimelineuser.php:126
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
@ -655,12 +652,12 @@ msgstr ""
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr ""
#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
#, php-format
msgid "%s public timeline"
msgstr "مسار %s الزمني العام"
#: actions/apitimelinepublic.php:111 actions/publicrss.php:105
#: actions/apitimelinepublic.php:115 actions/publicrss.php:105
#, php-format
msgid "%s updates from everyone!"
msgstr ""
@ -670,7 +667,7 @@ msgstr ""
msgid "Repeated to %s"
msgstr "كرر إلى %s"
#: actions/apitimelineretweetsofme.php:112
#: actions/apitimelineretweetsofme.php:114
#, php-format
msgid "Repeats of %s"
msgstr "تكرارات %s"
@ -680,7 +677,7 @@ msgstr "تكرارات %s"
msgid "Notices tagged with %s"
msgstr "الإشعارات الموسومة ب%s"
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
#: actions/apitimelinetag.php:104 actions/tagrss.php:64
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
@ -804,7 +801,7 @@ msgstr "لا تمنع هذا المستخدم"
msgid "Yes"
msgstr "نعم"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "امنع هذا المستخدم"
@ -1217,7 +1214,7 @@ msgstr ""
msgid "Could not update group."
msgstr "تعذر تحديث المجموعة."
#: actions/editgroup.php:259 classes/User_group.php:390
#: actions/editgroup.php:259 classes/User_group.php:423
msgid "Could not create aliases."
msgstr "تعذّر إنشاء الكنى."
@ -1550,7 +1547,7 @@ msgstr ""
msgid "User is not a member of group."
msgstr "المستخدم ليس عضوًا في المجموعة."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "امنع المستخدم من المجموعة"
@ -1645,19 +1642,19 @@ msgstr "قائمة بمستخدمي هذه المجموعة."
msgid "Admin"
msgstr "إداري"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "امنع"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "اجعل هذا المستخدم إداريًا"
@ -2005,21 +2002,21 @@ msgid ""
"(%%action.register%%) a new account."
msgstr ""
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr ""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "لم يمكن الحصول على تسجيل العضوية ل%1$s في المجموعة %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "لم يمكن جعل %1$s إداريا للمجموعة %2$s."
@ -2214,8 +2211,8 @@ msgstr "نوع المحتوى "
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "ليس نسق بيانات مدعوم."
@ -2544,7 +2541,7 @@ msgstr "إعدادات الملف الشخصي"
#: actions/profilesettings.php:71
msgid ""
"You can update your personal profile info here so people know more about you."
msgstr ""
msgstr "بإمكانك تحديث بيانات ملفك الشخصي ليعرف عنك الناس أكثر."
#: actions/profilesettings.php:99
msgid "Profile information"
@ -2567,12 +2564,12 @@ msgstr "الصفحة الرئيسية"
#: actions/profilesettings.php:117 actions/register.php:455
msgid "URL of your homepage, blog, or profile on another site"
msgstr ""
msgstr "مسار صفحتك الرئيسية أو مدونتك أو ملفك الشخصي على موقع آخر"
#: actions/profilesettings.php:122 actions/register.php:461
#, php-format
msgid "Describe yourself and your interests in %d chars"
msgstr ""
msgstr "تكلم عن نفسك واهتمامتك في %d حرف"
#: actions/profilesettings.php:125 actions/register.php:464
msgid "Describe yourself and your interests"
@ -2591,7 +2588,7 @@ msgstr "الموقع"
#: actions/profilesettings.php:134 actions/register.php:473
msgid "Where you are, like \"City, State (or Region), Country\""
msgstr ""
msgstr "مكان تواجدك، على سبيل المثال \"المدينة، الولاية (أو المنطقة)، الدولة\""
#: actions/profilesettings.php:138
msgid "Share my current location when posting notices"
@ -2607,6 +2604,7 @@ msgstr "الوسوم"
msgid ""
"Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
msgstr ""
"سِم نفسك (حروف وأرقام و \"-\" و \".\" و \"_\")، افصلها بفاصلة (',') أو مسافة."
#: actions/profilesettings.php:151 actions/siteadminpanel.php:280
msgid "Language"
@ -2627,7 +2625,7 @@ msgstr "ما المنطقة الزمنية التي تتواجد فيها عاد
#: actions/profilesettings.php:167
msgid ""
"Automatically subscribe to whoever subscribes to me (best for non-humans)"
msgstr ""
msgstr "اشترك تلقائيًا بأي شخص يشترك بي (يفضل أن يستخدم لغير البشر)"
#: actions/profilesettings.php:228 actions/register.php:223
#, php-format
@ -4246,7 +4244,7 @@ msgstr "مشكلة أثناء حفظ الإشعار."
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1271
#, php-format
msgid "RT @%1$s %2$s"
msgstr "آر تي @%1$s %2$s"
@ -4256,11 +4254,11 @@ msgstr "آر تي @%1$s %2$s"
msgid "Welcome to %1$s, @%2$s!"
msgstr "أهلا بكم في %1$s يا @%2$s!"
#: classes/User_group.php:380
#: classes/User_group.php:413
msgid "Could not create group."
msgstr "تعذّر إنشاء المجموعة."
#: classes/User_group.php:409
#: classes/User_group.php:442
msgid "Could not set group membership."
msgstr "تعذّر ضبط عضوية المجموعة."
@ -5802,47 +5800,47 @@ msgstr "رسالة"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:871
msgid "a few seconds ago"
msgstr "قبل لحظات قليلة"
#: lib/util.php:869
#: lib/util.php:873
msgid "about a minute ago"
msgstr "قبل دقيقة تقريبًا"
#: lib/util.php:871
#: lib/util.php:875
#, php-format
msgid "about %d minutes ago"
msgstr ""
#: lib/util.php:873
#: lib/util.php:877
msgid "about an hour ago"
msgstr "قبل ساعة تقريبًا"
#: lib/util.php:875
#: lib/util.php:879
#, php-format
msgid "about %d hours ago"
msgstr ""
#: lib/util.php:877
#: lib/util.php:881
msgid "about a day ago"
msgstr "قبل يوم تقريبا"
#: lib/util.php:879
#: lib/util.php:883
#, php-format
msgid "about %d days ago"
msgstr ""
#: lib/util.php:881
#: lib/util.php:885
msgid "about a month ago"
msgstr "قبل شهر تقريبًا"
#: lib/util.php:883
#: lib/util.php:887
#, php-format
msgid "about %d months ago"
msgstr ""
#: lib/util.php:885
#: lib/util.php:889
msgid "about a year ago"
msgstr "قبل سنة تقريبًا"

View File

@ -1,5 +1,6 @@
# Translation of StatusNet to Egyptian Spoken Arabic
#
# Author@translatewiki.net: Dudi
# Author@translatewiki.net: Ghaly
# Author@translatewiki.net: Meno25
# --
@ -9,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:37+0000\n"
"POT-Creation-Date: 2010-02-14 20:05+0000\n"
"PO-Revision-Date: 2010-02-14 20:06:01+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.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62476); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: arz\n"
"X-Message-Group: out-statusnet\n"
@ -110,7 +111,7 @@ msgstr "لا مستخدم كهذا."
#: actions/all.php:84
#, php-format
msgid "%1$s and friends, page %2$d"
msgstr "%1$s والأصدقاء, الصفحه %2$d"
msgstr "%1$s و الصحاب, صفحه %2$d"
#: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
@ -165,8 +166,8 @@ msgstr ""
msgid "You and friends"
msgstr "أنت والأصدقاء"
#: actions/allrss.php:119 actions/apitimelinefriends.php:121
#: actions/apitimelinehome.php:122
#: actions/allrss.php:119 actions/apitimelinefriends.php:119
#: actions/apitimelinehome.php:120
#, php-format
msgid "Updates from %1$s and friends on %2$s!"
msgstr ""
@ -187,12 +188,12 @@ msgstr ""
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:137
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:146 actions/apitimelinefriends.php:155
#: actions/apitimelinegroup.php:150 actions/apitimelinehome.php:156
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelinefavorites.php:183 actions/apitimelinefriends.php:187
#: actions/apitimelinegroup.php:182 actions/apitimelinehome.php:184
#: actions/apitimelinementions.php:175 actions/apitimelinepublic.php:152
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166
#: actions/apitimelineuser.php:194 actions/apiusershow.php:101
msgid "API method not found."
msgstr "لم يتم العثور على وسيله API."
@ -316,7 +317,7 @@ msgstr ""
#: actions/apifavoritecreate.php:119
msgid "This status is already a favorite."
msgstr "هذه الحاله مفضله بالفعل."
msgstr "الحاله دى موجوده فعلا فى التفضيلات."
#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176
msgid "Could not create favorite."
@ -324,7 +325,7 @@ msgstr "تعذّر إنشاء مفضله."
#: actions/apifavoritedestroy.php:122
msgid "That status is not a favorite."
msgstr "تلك الحاله ليست مفضله."
msgstr "الحاله دى مش محطوطه فى التفضيلات."
#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
msgid "Could not delete favorite."
@ -345,7 +346,7 @@ msgstr ""
#: actions/apifriendshipsdestroy.php:120
msgid "You cannot unfollow yourself."
msgstr "لا يمكنك عدم متابعه نفسك."
msgstr "ما ينفعش عدم متابعة نفسك."
#: actions/apifriendshipsexists.php:94
msgid "Two user ids or screen_names must be supplied."
@ -442,7 +443,7 @@ msgstr ""
#: actions/apigroupjoin.php:138 actions/joingroup.php:124
#, php-format
msgid "Could not join user %1$s to group %2$s."
msgstr "لم يمكن ضم المستخدم %1$s إلى المجموعه %2$s."
msgstr "ما نفعش يضم %1$s للجروپ %2$s."
#: actions/apigroupleave.php:114
msgid "You are not a member of this group."
@ -451,7 +452,7 @@ msgstr ""
#: actions/apigroupleave.php:124 actions/leavegroup.php:119
#, php-format
msgid "Could not remove user %1$s from group %2$s."
msgstr "لم يمكن إزاله المستخدم %1$s من المجموعه %2$s."
msgstr "ما نفعش يتشال اليوزر %1$s من الجروپ %2$s."
#: actions/apigrouplist.php:95
#, php-format
@ -497,7 +498,7 @@ msgstr ""
#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "اسم/كلمه سر غير صحيحة!"
msgstr "نيكنيم / پاسوورد مش مظبوطه!"
#: actions/apioauthauthorize.php:159
#, fuzzy
@ -628,7 +629,7 @@ msgstr "نسق غير مدعوم."
msgid "%1$s / Favorites from %2$s"
msgstr ""
#: actions/apitimelinefavorites.php:120
#: actions/apitimelinefavorites.php:117
#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
msgstr ""
@ -639,7 +640,7 @@ msgstr ""
msgid "%s timeline"
msgstr "مسار %s الزمني"
#: actions/apitimelinegroup.php:117 actions/apitimelineuser.php:126
#: actions/apitimelinegroup.php:114 actions/apitimelineuser.php:126
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
@ -655,12 +656,12 @@ msgstr ""
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr ""
#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
#, php-format
msgid "%s public timeline"
msgstr "مسار %s الزمنى العام"
#: actions/apitimelinepublic.php:111 actions/publicrss.php:105
#: actions/apitimelinepublic.php:115 actions/publicrss.php:105
#, php-format
msgid "%s updates from everyone!"
msgstr ""
@ -670,7 +671,7 @@ msgstr ""
msgid "Repeated to %s"
msgstr "كرر إلى %s"
#: actions/apitimelineretweetsofme.php:112
#: actions/apitimelineretweetsofme.php:114
#, php-format
msgid "Repeats of %s"
msgstr "تكرارات %s"
@ -680,7 +681,7 @@ msgstr "تكرارات %s"
msgid "Notices tagged with %s"
msgstr "الإشعارات الموسومه ب%s"
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
#: actions/apitimelinetag.php:104 actions/tagrss.php:64
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
@ -804,7 +805,7 @@ msgstr "لا تمنع هذا المستخدم"
msgid "Yes"
msgstr "نعم"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "امنع هذا المستخدم"
@ -830,7 +831,7 @@ msgstr ""
#: actions/blockedfromgroup.php:93
#, php-format
msgid "%1$s blocked profiles, page %2$d"
msgstr "%1$s ملفات ممنوعة, الصفحه %2$d"
msgstr "%1$s فايلات معمول ليها بلوك, الصفحه %2$d"
#: actions/blockedfromgroup.php:108
msgid "A list of the users blocked from joining this group."
@ -888,7 +889,7 @@ msgstr "تعذّر حذف تأكيد البريد الإلكترونى."
#: actions/confirmaddress.php:144
msgid "Confirm address"
msgstr "أكد العنوان"
msgstr "اكد العنوان"
#: actions/confirmaddress.php:159
#, php-format
@ -917,7 +918,7 @@ msgstr "لم يوجد رمز التأكيد."
#: actions/deleteapplication.php:78 actions/editapplication.php:77
#: actions/showapplication.php:94
msgid "You are not the owner of this application."
msgstr "أنت لست مالك هذا التطبيق."
msgstr "انت مش بتملك الapplication دى."
#: actions/deleteapplication.php:102 actions/editapplication.php:127
#: actions/newapplication.php:110 actions/showapplication.php:118
@ -1131,16 +1132,16 @@ msgstr "تطبيقات OAuth"
#: actions/editapplication.php:66
msgid "You must be logged in to edit an application."
msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
msgstr "لازم يكون متسجل دخولك علشان تعدّل application."
#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "لا تطبيق كهذا."
msgstr "ما فيش application زى كده."
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "استخدم النموذج ده علشان تعدل تطبيقك."
msgstr "استعمل الفورمه دى علشان تعدّل الapplication بتاعتك."
#: actions/editapplication.php:177 actions/newapplication.php:159
msgid "Name is required."
@ -1148,7 +1149,7 @@ msgstr "الاسم مطلوب."
#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "الاسم طويل جدا (الأقصى 255 حرفا)."
msgstr "الاسم طويل جدا (اكتر حاجه 255 رمز)."
#: actions/editapplication.php:183 actions/newapplication.php:162
msgid "Name already in use. Try another one."
@ -1164,7 +1165,7 @@ msgstr ""
#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "مسار المصدر ليس صحيحا."
msgstr "الSource URL مش مظبوط."
#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
@ -1172,7 +1173,7 @@ msgstr ""
#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "المنظمه طويله جدا (الأقصى 255 حرفا)."
msgstr "المنظمه طويله جدا (اكتر حاجه 255 رمز)."
#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
@ -1188,7 +1189,7 @@ msgstr ""
#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "لم يمكن تحديث التطبيق."
msgstr "ما نفعش تحديث الapplication."
#: actions/editgroup.php:56
#, php-format
@ -1202,7 +1203,7 @@ msgstr "يجب أن تكون والجًا لتنشئ مجموعه."
#: actions/editgroup.php:103 actions/editgroup.php:168
#: actions/groupdesignsettings.php:104 actions/grouplogo.php:106
msgid "You must be an admin to edit the group."
msgstr "يجب أن تكون إداريا لتعدل المجموعه."
msgstr "لازم تكون ادارى علشان تعدّل الجروپ."
#: actions/editgroup.php:154
msgid "Use this form to edit the group."
@ -1217,7 +1218,7 @@ msgstr ""
msgid "Could not update group."
msgstr "تعذر تحديث المجموعه."
#: actions/editgroup.php:259 classes/User_group.php:390
#: actions/editgroup.php:259 classes/User_group.php:423
msgid "Could not create aliases."
msgstr "تعذّر إنشاء الكنى."
@ -1227,7 +1228,7 @@ msgstr "حُفظت الخيارات."
#: actions/emailsettings.php:60
msgid "Email settings"
msgstr "إعدادات البريد الإلكتروني"
msgstr "تظبيطات الايميل"
#: actions/emailsettings.php:71
#, php-format
@ -1263,7 +1264,7 @@ msgstr "ألغِ"
#: actions/emailsettings.php:121
msgid "Email address"
msgstr "عنوان البريد الإلكتروني"
msgstr "عنوان الايميل"
#: actions/emailsettings.php:123
msgid "Email address, like \"UserName@example.org\""
@ -1550,7 +1551,7 @@ msgstr ""
msgid "User is not a member of group."
msgstr "المستخدم ليس عضوًا فى المجموعه."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "امنع المستخدم من المجموعة"
@ -1613,7 +1614,7 @@ msgstr ""
#: actions/grouplogo.php:178
msgid "User without matching profile."
msgstr "المستخدم بدون ملف مطابق."
msgstr "يوزر من-غير پروفايل زيّه."
#: actions/grouplogo.php:362
msgid "Pick a square area of the image to be the logo."
@ -1635,7 +1636,7 @@ msgstr "أعضاء مجموعه %s"
#: actions/groupmembers.php:96
#, php-format
msgid "%1$s group members, page %2$d"
msgstr "%1$s أعضاء المجموعة, الصفحه %2$d"
msgstr "%1$s اعضاء الجروپ, صفحه %2$d"
#: actions/groupmembers.php:111
msgid "A list of the users in this group."
@ -1645,19 +1646,19 @@ msgstr "قائمه بمستخدمى هذه المجموعه."
msgid "Admin"
msgstr "إداري"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "امنع"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "اجعل هذا المستخدم إداريًا"
@ -1734,7 +1735,7 @@ msgstr "خطأ أثناء منع الحجب."
#: actions/imsettings.php:59
msgid "IM settings"
msgstr "إعدادات المراسله الفورية"
msgstr "تظبيطات بعت الرسايل الفوريه"
#: actions/imsettings.php:70
#, php-format
@ -1760,7 +1761,7 @@ msgstr ""
#: actions/imsettings.php:124
msgid "IM address"
msgstr "عنوان المراسله الفورية"
msgstr "عنوان الرساله الفوريه"
#: actions/imsettings.php:126
#, php-format
@ -1944,7 +1945,7 @@ msgstr ""
#: actions/joingroup.php:131
#, php-format
msgid "%1$s joined group %2$s"
msgstr "%1$s انضم للمجموعه %2$s"
msgstr "%1$s دخل جروپ %2$s"
#: actions/leavegroup.php:60
msgid "You must be logged in to leave a group."
@ -1957,7 +1958,7 @@ msgstr "لست عضوا فى تلك المجموعه."
#: actions/leavegroup.php:127
#, php-format
msgid "%1$s left group %2$s"
msgstr "%1$s ترك المجموعه %2$s"
msgstr "%1$s ساب جروپ %2$s"
#: actions/login.php:80 actions/otp.php:62 actions/register.php:137
msgid "Already logged in."
@ -2005,24 +2006,24 @@ msgid ""
"(%%action.register%%) a new account."
msgstr ""
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr ""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "لم يمكن الحصول على تسجيل العضويه ل%1$s فى المجموعه %2$s."
msgstr "مش نافع يتجاب سجل العضويه لـ%1$s فى جروپ %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "لم يمكن جعل %1$s إداريا للمجموعه %2$s."
msgstr "%1$s مش نافع يبقى ادارى لجروپ %2$s."
#: actions/microsummary.php:69
msgid "No current status"
@ -2035,11 +2036,11 @@ msgstr "لا تطبيق كهذا."
#: actions/newapplication.php:64
msgid "You must be logged in to register an application."
msgstr "يجب أن تكون مسجل الدخول لتسجل تطبيقا."
msgstr "لازم تكون مسجل دخوللك علشان تسجل application."
#: actions/newapplication.php:143
msgid "Use this form to register a new application."
msgstr "استخدم هذا النموذج لتسجل تطبيقا جديدا."
msgstr "استعمل الفورمه دى علشان تسجل application جديد."
#: actions/newapplication.php:176
msgid "Source URL is required."
@ -2047,7 +2048,7 @@ msgstr ""
#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "مش ممكن إنشاء التطبيق."
msgstr "مش ممكن إنشاء الapplication."
#: actions/newgroup.php:53
msgid "New group"
@ -2086,7 +2087,7 @@ msgstr "أُرسلت الرسالة"
#: actions/newmessage.php:185
#, php-format
msgid "Direct message to %s sent."
msgstr "رساله مباشره ل%s تم إرسالها."
msgstr "رساله مباشره اتبعتت لـ%s."
#: actions/newmessage.php:210 actions/newnotice.php:245 lib/channel.php:170
msgid "Ajax Error"
@ -2114,7 +2115,7 @@ msgstr "بحث فى النصوص"
#: actions/noticesearch.php:91
#, php-format
msgid "Search results for \"%1$s\" on %2$s"
msgstr "نتائج البحث ل\"%1$s\" على %2$s"
msgstr "نتايج التدوير لـ\"%1$s\" على %2$s"
#: actions/noticesearch.php:121
#, php-format
@ -2155,11 +2156,11 @@ msgstr "أُرسل التنبيه!"
#: actions/oauthappssettings.php:59
msgid "You must be logged in to list your applications."
msgstr "يجب أن تكون مسجل الدخول لعرض تطبيقاتك."
msgstr "لازم تكون مسجل دخولك علشان تشوف ليستة الapplications بتاعتك."
#: actions/oauthappssettings.php:74
msgid "OAuth applications"
msgstr "تطبيقات OAuth"
msgstr "OAuth applications"
#: actions/oauthappssettings.php:85
msgid "Applications you have registered"
@ -2180,7 +2181,7 @@ msgstr ""
#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "أنت لست مستخدما لهذا التطبيق."
msgstr "انت مش يوزر للapplication دى."
#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
@ -2212,8 +2213,8 @@ msgstr "نوع المحتوى "
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr " مش نظام بيانات مدعوم."
@ -2227,7 +2228,7 @@ msgstr "بحث الإشعارات"
#: actions/othersettings.php:60
msgid "Other settings"
msgstr "إعدادات تانيه"
msgstr "تظبيطات تانيه"
#: actions/othersettings.php:71
msgid "Manage various other options."
@ -2259,23 +2260,23 @@ msgstr ""
#: actions/otp.php:69
msgid "No user ID specified."
msgstr "لا هويه مستخدم محدده."
msgstr "ما فيش ID متحدد لليوزر."
#: actions/otp.php:83
msgid "No login token specified."
msgstr "لا محتوى دخول محدد."
msgstr "ما فيش امارة دخول متحدده."
#: actions/otp.php:90
msgid "No login token requested."
msgstr "لا طلب استيثاق."
msgstr "ما فيش طلب تسجيل دخول مطلوب."
#: actions/otp.php:95
msgid "Invalid login token specified."
msgstr "توكن دخول غير صحيح محدد."
msgstr "امارة تسجيل الدخول اللى اتحطت مش موجوده."
#: actions/otp.php:104
msgid "Login token expired."
msgstr "توكن الدخول انتهى."
msgstr "تاريخ صلاحية الاماره خلص."
#: actions/outbox.php:58
#, php-format
@ -2495,7 +2496,7 @@ msgstr ""
#: actions/pathsadminpanel.php:335
msgid "SSL server"
msgstr "خادم SSL"
msgstr "SSL server"
#: actions/pathsadminpanel.php:336
msgid "Server to direct SSL requests to"
@ -3118,7 +3119,7 @@ msgstr ""
#: actions/rsd.php:146 actions/version.php:157
msgid "StatusNet"
msgstr "ستاتس نت"
msgstr "StatusNet"
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
@ -3161,7 +3162,7 @@ msgstr "اذف إعدادت الموقع"
#: actions/showapplication.php:82
msgid "You must be logged in to view an application."
msgstr "يجب أن تكون مسجل الدخول لرؤيه تطبيق."
msgstr "لازم تكون مسجل دخولك علشان تشوف اى application."
#: actions/showapplication.php:157
msgid "Application profile"
@ -3178,7 +3179,7 @@ msgstr "الاسم"
#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "المنظمة"
msgstr "المنظمه"
#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
@ -3225,7 +3226,7 @@ msgstr ""
#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "اسمح بالمسار"
msgstr "اسمح للURL"
#: actions/showapplication.php:288
msgid ""
@ -3499,12 +3500,12 @@ msgstr "يجب ألا يكون طول اسم الموقع صفرًا."
#: actions/siteadminpanel.php:140
msgid "You must have a valid contact email address."
msgstr "يجب أن تملك عنوان بريد إلكترونى صحيح."
msgstr "لازم يكون عندك عنوان ايميل صالح."
#: actions/siteadminpanel.php:158
#, php-format
msgid "Unknown language \"%s\"."
msgstr "لغه غير معروفه \"%s\"."
msgstr "لغه مش معروفه \"%s\"."
#: actions/siteadminpanel.php:165
msgid "Invalid snapshot report URL."
@ -3632,7 +3633,7 @@ msgstr ""
#: actions/smssettings.php:58
msgid "SMS settings"
msgstr "إعدادات الرسائل القصيرة"
msgstr "تظبيطات الـSMS"
#: actions/smssettings.php:69
#, php-format
@ -3661,7 +3662,7 @@ msgstr ""
#: actions/smssettings.php:138
msgid "SMS phone number"
msgstr "رقم هاتف SMS"
msgstr "نمرة تليفون الـSMS"
#: actions/smssettings.php:140
msgid "Phone number, no punctuation or spaces, with area code"
@ -3746,7 +3747,7 @@ msgstr "مشتركو %s"
#: actions/subscribers.php:52
#, php-format
msgid "%1$s subscribers, page %2$d"
msgstr "مشتركو %1$s, الصفحه %2$d"
msgstr "%1$s مشتركين, صفحه %2$d"
#: actions/subscribers.php:63
msgid "These are the people who listen to your notices."
@ -3783,7 +3784,7 @@ msgstr "اشتراكات %s"
#: actions/subscriptions.php:54
#, php-format
msgid "%1$s subscriptions, page %2$d"
msgstr "اشتراكات%1$s, الصفحه %2$d"
msgstr "%1$s اشتراكات, صفحه %2$d"
#: actions/subscriptions.php:65
msgid "These are the people whose notices you listen to."
@ -4108,7 +4109,7 @@ msgstr ""
#: actions/version.php:73
#, php-format
msgid "StatusNet %s"
msgstr "ستاتس نت %s"
msgstr "StatusNet %s"
#: actions/version.php:153
#, php-format
@ -4150,11 +4151,11 @@ msgstr ""
#: actions/version.php:196 lib/action.php:747
msgid "Version"
msgstr "النسخة"
msgstr "النسخه"
#: actions/version.php:197
msgid "Author(s)"
msgstr "المؤلف(ون)"
msgstr "المؤلف/ين"
#: classes/File.php:144
#, php-format
@ -4175,15 +4176,15 @@ msgstr ""
#: classes/Group_member.php:41
msgid "Group join failed."
msgstr "الانضمام للمجموعه فشل."
msgstr "دخول الجروپ فشل."
#: classes/Group_member.php:53
msgid "Not part of group."
msgstr "ليس جزءا من المجموعه."
msgstr "مش جزء من الجروپ."
#: classes/Group_member.php:60
msgid "Group leave failed."
msgstr "ترك المجموعه فشل."
msgstr "الخروج من الجروپ فشل."
#: classes/Login_token.php:76
#, php-format
@ -4244,7 +4245,7 @@ msgstr "مشكله أثناء حفظ الإشعار."
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1271
#, php-format
msgid "RT @%1$s %2$s"
msgstr "آر تى @%1$s %2$s"
@ -4254,11 +4255,11 @@ msgstr "آر تى @%1$s %2$s"
msgid "Welcome to %1$s, @%2$s!"
msgstr "أهلا بكم فى %1$s يا @%2$s!"
#: classes/User_group.php:380
#: classes/User_group.php:413
msgid "Could not create group."
msgstr "تعذّر إنشاء المجموعه."
#: classes/User_group.php:409
#: classes/User_group.php:442
msgid "Could not set group membership."
msgstr "تعذّر ضبط عضويه المجموعه."
@ -4485,7 +4486,7 @@ msgstr ""
#: lib/adminpanelaction.php:107
msgid "Changes to that panel are not allowed."
msgstr "التغييرات لهذه اللوحه غير مسموح بها."
msgstr "التغييرات مش مسموحه للـ لوحه دى."
#: lib/adminpanelaction.php:206
msgid "showForm() not implemented."
@ -4550,11 +4551,11 @@ msgstr ""
#: lib/applicationeditform.php:207
msgid "Describe your application"
msgstr "اوصف تطبيقك"
msgstr "اوصف الapplication بتاعتك"
#: lib/applicationeditform.php:216
msgid "Source URL"
msgstr "مسار المصدر"
msgstr "Source URL"
#: lib/applicationeditform.php:218
msgid "URL of the homepage of this application"
@ -4598,7 +4599,7 @@ msgstr ""
#: lib/applicationlist.php:154
msgid "Revoke"
msgstr "اسحب"
msgstr "بطّل"
#: lib/attachmentlist.php:87
msgid "Attachments"
@ -4622,11 +4623,11 @@ msgstr "وسوم هذا المرفق"
#: lib/authenticationplugin.php:218 lib/authenticationplugin.php:223
msgid "Password changing failed"
msgstr "تغيير كلمه السر فشل"
msgstr "تغيير الپاسوورد فشل"
#: lib/authenticationplugin.php:233
msgid "Password changing is not allowed"
msgstr "تغيير كلمه السر غير مسموح به"
msgstr "تغيير الپاسوورد مش مسموح"
#: lib/channel.php:138 lib/channel.php:158
msgid "Command results"
@ -4647,7 +4648,7 @@ msgstr ""
#: lib/command.php:88
#, php-format
msgid "Could not find a user with nickname %s"
msgstr "لم يمكن إيجاد مستخدم بالاسم %s"
msgstr "ما نفعش يلاقى يوزر بإسم %s"
#: lib/command.php:92
msgid "It does not make a lot of sense to nudge yourself!"
@ -4656,7 +4657,7 @@ msgstr ""
#: lib/command.php:99
#, php-format
msgid "Nudge sent to %s"
msgstr "التنبيه تم إرساله إلى %s"
msgstr "Nudge اتبعتت لـ %s"
#: lib/command.php:126
#, php-format
@ -4671,7 +4672,7 @@ msgstr ""
#: lib/command.php:152 lib/command.php:390 lib/command.php:451
msgid "Notice with that id does not exist"
msgstr "الملاحظه بهذا الرقم غير موجودة"
msgstr "الملاحظه بالـID ده مالهاش وجود"
#: lib/command.php:168 lib/command.php:406 lib/command.php:467
#: lib/command.php:523
@ -4684,12 +4685,12 @@ msgstr ""
#: lib/command.php:217
msgid "You are already a member of that group"
msgstr "أنت بالفعل عضو فى هذه المجموعة"
msgstr "انت اصلا عضو فى الجروپ ده"
#: lib/command.php:231
#, php-format
msgid "Could not join user %s to group %s"
msgstr "لم يمكن ضم المستخدم %s إلى المجموعه %s"
msgstr "ما نفعش يدخل اليوزر %s لجروپ %s"
#: lib/command.php:236
#, php-format
@ -4699,12 +4700,12 @@ msgstr "%s انضم إلى مجموعه %s"
#: lib/command.php:275
#, php-format
msgid "Could not remove user %s to group %s"
msgstr "لم يمكن إزاله المستخدم %s من المجموعه %s"
msgstr "ما نفعش يشيل اليوزر %s لجروپ %s"
#: lib/command.php:280
#, php-format
msgid "%s left group %s"
msgstr "%s ترك المجموعه %s"
msgstr "%s ساب الجروپ %s"
#: lib/command.php:309
#, php-format
@ -4734,7 +4735,7 @@ msgstr ""
#: lib/command.php:367
#, php-format
msgid "Direct message to %s sent"
msgstr "رساله مباشره إلى %s تم إرسالها"
msgstr "رساله مباشره اتبعتت لـ %s"
#: lib/command.php:369
msgid "Error sending direct message."
@ -4742,7 +4743,7 @@ msgstr ""
#: lib/command.php:413
msgid "Cannot repeat your own notice"
msgstr "لا يمكنك تكرار ملاحظتك الخاصة"
msgstr "الملاحظه بتاعتك مش نافعه تتكرر"
#: lib/command.php:418
msgid "Already repeated that notice"
@ -4931,7 +4932,7 @@ msgstr ""
#: lib/connectsettingsaction.php:120
msgid "Connections"
msgstr "اتصالات"
msgstr "كونيكشونات (Connections)"
#: lib/connectsettingsaction.php:121
msgid "Authorized connected applications"
@ -5127,7 +5128,7 @@ msgstr "[%s]"
#: lib/jabber.php:400
#, php-format
msgid "Unknown inbox source %d."
msgstr "مصدر صندوق وارد غير معروف %d."
msgstr "مصدر الـinbox مش معروف %d."
#: lib/joinform.php:114
msgid "Join"
@ -5189,7 +5190,7 @@ msgstr ""
#: lib/mail.php:258
#, php-format
msgid "Bio: %s"
msgstr "السيرة: %s"
msgstr "عن نفسك: %s"
#: lib/mail.php:286
#, php-format
@ -5342,7 +5343,7 @@ msgstr ""
#: lib/mailhandler.php:228
#, php-format
msgid "Unsupported message type: %s"
msgstr "نوع رساله غير مدعوم: %s"
msgstr "نوع رساله مش مدعوم: %s"
#: lib/mediafile.php:98 lib/mediafile.php:123
msgid "There was a database error while saving your file. Please try again."
@ -5384,7 +5385,7 @@ msgstr ""
#: lib/mediafile.php:201 lib/mediafile.php:237
msgid "Could not determine file's MIME type."
msgstr "لم يمكن تحديد نوع MIME للملف."
msgstr "مش نافع يتحدد نوع الـMIME بتاع الفايل."
#: lib/mediafile.php:270
#, php-format
@ -5427,11 +5428,11 @@ msgstr "أرفق ملفًا"
#: lib/noticeform.php:212
msgid "Share my location"
msgstr "شارك موقعى"
msgstr "اعمل مشاركه لمكانى"
#: lib/noticeform.php:215
msgid "Do not share my location"
msgstr "لا تشارك موقعي"
msgstr "ما تعملش مشاركه لمكانى"
#: lib/noticeform.php:216
msgid ""
@ -5555,7 +5556,7 @@ msgstr ""
#: lib/plugin.php:114
msgid "Unknown"
msgstr "غير معروف"
msgstr "مش معروف"
#: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82
msgid "Subscriptions"
@ -5790,47 +5791,47 @@ msgstr "رسالة"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:871
msgid "a few seconds ago"
msgstr "قبل لحظات قليلة"
#: lib/util.php:869
#: lib/util.php:873
msgid "about a minute ago"
msgstr "قبل دقيقه تقريبًا"
#: lib/util.php:871
#: lib/util.php:875
#, php-format
msgid "about %d minutes ago"
msgstr ""
#: lib/util.php:873
#: lib/util.php:877
msgid "about an hour ago"
msgstr "قبل ساعه تقريبًا"
#: lib/util.php:875
#: lib/util.php:879
#, php-format
msgid "about %d hours ago"
msgstr ""
#: lib/util.php:877
#: lib/util.php:881
msgid "about a day ago"
msgstr "قبل يوم تقريبا"
#: lib/util.php:879
#: lib/util.php:883
#, php-format
msgid "about %d days ago"
msgstr ""
#: lib/util.php:881
#: lib/util.php:885
msgid "about a month ago"
msgstr "قبل شهر تقريبًا"
#: lib/util.php:883
#: lib/util.php:887
#, php-format
msgid "about %d months ago"
msgstr ""
#: lib/util.php:885
#: lib/util.php:889
msgid "about a year ago"
msgstr "قبل سنه تقريبًا"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:40+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:17+0000\n"
"Language-Team: Bulgarian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: bg\n"
"X-Message-Group: out-statusnet\n"
@ -30,7 +30,6 @@ msgid "Site access settings"
msgstr "Запазване настройките на сайта"
#: actions/accessadminpanel.php:158
#, fuzzy
msgid "Registration"
msgstr "Регистриране"
@ -107,9 +106,9 @@ msgid "No such user."
msgstr "Няма такъв потребител"
#: actions/all.php:84
#, fuzzy, php-format
#, php-format
msgid "%1$s and friends, page %2$d"
msgstr "Блокирани за %s, страница %d"
msgstr "%1$s и приятели, страница %2$d"
#: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
@ -191,7 +190,7 @@ msgstr "Бележки от %1$s и приятели в %2$s."
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "Не е открит методът в API."
@ -425,9 +424,9 @@ msgstr "Неправилен псевдоним: \"%s\""
#: actions/apigroupcreate.php:273 actions/editgroup.php:228
#: actions/newgroup.php:172
#, fuzzy, php-format
#, php-format
msgid "Alias \"%s\" already in use. Try another one."
msgstr "Опитайте друг псевдоним, този вече е зает."
msgstr "Псевдонимът \"%s\" вече е зает. Опитайте друг."
#: actions/apigroupcreate.php:286 actions/editgroup.php:234
#: actions/newgroup.php:178
@ -817,7 +816,7 @@ msgstr "Да не се блокира този потребител"
msgid "Yes"
msgstr "Да"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Блокиране на потребителя"
@ -902,9 +901,8 @@ msgid "Couldn't delete email confirmation."
msgstr "Грешка при изтриване потвърждението по е-поща."
#: actions/confirmaddress.php:144
#, fuzzy
msgid "Confirm address"
msgstr "Потвърждаване на адреса"
msgstr "Потвърждаване на адрес"
#: actions/confirmaddress.php:159
#, php-format
@ -1598,7 +1596,7 @@ msgstr "Потребителят вече е блокиран за групат
msgid "User is not a member of group."
msgstr "Потребителят не членува в групата."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Блокиране на потребителя"
@ -1701,20 +1699,20 @@ msgstr "Списък с потребителите в тази група."
msgid "Admin"
msgstr "Настройки"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Блокиране"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
#, fuzzy
msgid "Make user an admin of the group"
msgstr "За да редактирате групата, трябва да сте й администратор."
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2057,9 +2055,9 @@ msgid "You are not a member of that group."
msgstr "Не членувате в тази група."
#: actions/leavegroup.php:127
#, fuzzy, php-format
#, php-format
msgid "%1$s left group %2$s"
msgstr "%s напусна групата %s"
msgstr "%1$s напусна групата %2$s"
#: actions/login.php:80 actions/otp.php:62 actions/register.php:137
msgid "Already logged in."
@ -2112,21 +2110,21 @@ msgstr ""
"Влезте с име и парола. Нямате такива? [Регистрирайте](%%action.register%%) "
"нова сметка или опитайте с [OpenID](%%action.openidlogin%%). "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Потребителят вече е блокиран за групата."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Грешка при проследяване — потребителят не е намерен."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "За да редактирате групата, трябва да сте й администратор."
@ -2329,8 +2327,8 @@ msgstr "вид съдържание "
msgid "Only "
msgstr "Само "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Неподдържан формат на данните"
@ -2343,7 +2341,6 @@ msgid "Notice Search"
msgstr "Търсене на бележки"
#: actions/othersettings.php:60
#, fuzzy
msgid "Other settings"
msgstr "Други настройки"
@ -2619,7 +2616,6 @@ msgid "When to use SSL"
msgstr "Кога да се използва SSL"
#: actions/pathsadminpanel.php:335
#, fuzzy
msgid "SSL server"
msgstr "SSL-сървър"
@ -3095,7 +3091,7 @@ msgid ""
msgstr " освен тези лични данни: парола, е-поща, месинджър, телефон."
#: actions/register.php:538
#, fuzzy, php-format
#, php-format
msgid ""
"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
"want to...\n"
@ -3112,9 +3108,9 @@ msgid ""
"\n"
"Thanks for signing up and we hope you enjoy using this service."
msgstr ""
"Поздравления, %s! И добре дошли в %%%%site.name%%%%! от тук можете да...\n"
"Поздравления, %1$s! И добре дошли в %%%%site.name%%%%! от тук можете да...\n"
"\n"
"* Отидете в [профила си](%s) и да публикувате първата си бележка.\n"
"* Отидете в [профила си](%2$s) и да публикувате първата си бележка.\n"
"* Добавите [адрес в Jabber/GTalk](%%%%action.imsettings%%%%), за да "
"изпращате бележки от програмата си за моментни съобщения.\n"
"* [Търсите хора](%%%%action.peoplesearch%%%%), които познавате или с които "
@ -3328,18 +3324,16 @@ msgstr "Бележката няма профил"
#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
msgstr "Икона"
#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Псевдоним"
msgstr "Име"
#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Страниране"
msgstr "Организация"
#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
@ -3401,9 +3395,9 @@ msgid "Are you sure you want to reset your consumer key and secret?"
msgstr "Наистина ли искате да изтриете тази бележка?"
#: actions/showfavorites.php:79
#, fuzzy, php-format
#, php-format
msgid "%1$s's favorite notices, page %2$d"
msgstr "Любими бележки на %s"
msgstr "Любими бележки на %1$s, страница %2$d"
#: actions/showfavorites.php:132
msgid "Could not retrieve favorite notices."
@ -3466,7 +3460,7 @@ msgstr "Профил на групата"
#: actions/showgroup.php:263 actions/tagother.php:118
#: actions/userauthorization.php:175 lib/userprofile.php:177
msgid "URL"
msgstr ""
msgstr "URL"
#: actions/showgroup.php:274 actions/tagother.php:128
#: actions/userauthorization.php:187 lib/userprofile.php:194
@ -3475,7 +3469,7 @@ msgstr "Бележка"
#: actions/showgroup.php:284 lib/groupeditform.php:184
msgid "Aliases"
msgstr ""
msgstr "Псевдоними"
#: actions/showgroup.php:293
msgid "Group actions"
@ -3661,9 +3655,9 @@ msgid "You must have a valid contact email address."
msgstr "Адресът на е-поща за контакт е задължителен"
#: actions/siteadminpanel.php:158
#, fuzzy, php-format
#, php-format
msgid "Unknown language \"%s\"."
msgstr "Непознат език \"%s\""
msgstr "Непознат език \"%s\"."
#: actions/siteadminpanel.php:165
msgid "Invalid snapshot report URL."
@ -4300,9 +4294,9 @@ msgid "Try [searching for groups](%%action.groupsearch%%) and joining them."
msgstr ""
#: actions/version.php:73
#, fuzzy, php-format
#, php-format
msgid "StatusNet %s"
msgstr "Статистики"
msgstr "StatusNet %s"
#: actions/version.php:153
#, php-format
@ -4340,17 +4334,15 @@ msgstr ""
#: actions/version.php:189
msgid "Plugins"
msgstr ""
msgstr "Приставки"
#: actions/version.php:196 lib/action.php:747
#, fuzzy
msgid "Version"
msgstr "Сесии"
msgstr "Версия"
#: actions/version.php:197
#, fuzzy
msgid "Author(s)"
msgstr "Автор"
msgstr "Автор(и)"
#: classes/File.php:144
#, php-format
@ -4450,7 +4442,7 @@ msgstr "Проблем при записване на бележката."
msgid "DB error inserting reply: %s"
msgstr "Грешка в базата от данни — отговор при вмъкването: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -5418,11 +5410,9 @@ msgstr ""
"Може да смените адреса и настройките за уведомяване по е-поща на %8$s\n"
#: lib/mail.php:258
#, fuzzy, php-format
#, php-format
msgid "Bio: %s"
msgstr ""
"Биография: %s\n"
"\n"
msgstr "Биография: %s"
#: lib/mail.php:286
#, php-format
@ -6039,47 +6029,47 @@ msgstr "Съобщение"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "преди няколко секунди"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "преди около минута"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "преди около %d минути"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "преди около час"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "преди около %d часа"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "преди около ден"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "преди около %d дни"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "преди около месец"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "преди около %d месеца"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "преди около година"

View File

@ -1,5 +1,6 @@
# Translation of StatusNet to Catalan
#
# Author@translatewiki.net: Aleator
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Toniher
# --
@ -9,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:45+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:20+0000\n"
"Language-Team: Catalan\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ca\n"
"X-Message-Group: out-statusnet\n"
@ -195,7 +196,7 @@ msgstr "Actualitzacions de %1$s i amics a %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "No s'ha trobat el mètode API!"
@ -833,7 +834,7 @@ msgstr "No bloquis l'usuari"
msgid "Yes"
msgstr "Sí"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Bloquejar aquest usuari"
@ -1613,7 +1614,7 @@ msgstr "Un usuari t'ha bloquejat."
msgid "User is not a member of group."
msgstr "L'usuari no és membre del grup."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Bloca l'usuari del grup"
@ -1714,19 +1715,19 @@ msgstr "La llista dels usuaris d'aquest grup."
msgid "Admin"
msgstr "Admin"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Bloca"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Fes l'usuari un administrador del grup"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Fes-lo administrador"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Fes l'usuari administrador"
@ -2131,21 +2132,21 @@ msgstr ""
"tens un nom d'usuari? [Crea](%%action.register%%) un nou compte o prova "
"[OpenID] (%%action.openidlogin%%)."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Només un administrador poc fer a un altre usuari administrador."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%s ja és un administrador del grup «%s»."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "No s'ha pogut eliminar l'usuari %s del grup %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "No es pot fer %s un administrador del grup %s"
@ -2349,8 +2350,8 @@ msgstr "tipus de contingut "
msgid "Only "
msgstr "Només "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Format de data no suportat."
@ -4502,7 +4503,7 @@ msgstr "Problema en guardar l'avís."
msgid "DB error inserting reply: %s"
msgstr "Error de BD en inserir resposta: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -5119,8 +5120,8 @@ msgstr "No sou membre de cap grup."
#: lib/command.php:714
msgid "You are a member of this group:"
msgid_plural "You are a member of these groups:"
msgstr[0] "No sou un membre del grup."
msgstr[1] "No sou un membre del grup."
msgstr[0] "Sou un membre d'aquest grup:"
msgstr[1] "Sou un membre d'aquests grups:"
#: lib/command.php:728
msgid ""
@ -6084,47 +6085,47 @@ msgstr "Missatge"
msgid "Moderate"
msgstr "Modera"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "fa pocs segons"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "fa un minut"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "fa %d minuts"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "fa una hora"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "fa %d hores"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "fa un dia"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "fa %d dies"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "fa un mes"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "fa %d mesos"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "fa un any"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:47+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:23+0000\n"
"Language-Team: Czech\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: cs\n"
"X-Message-Group: out-statusnet\n"
@ -196,7 +196,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Potvrzující kód nebyl nalezen"
@ -834,7 +834,7 @@ msgstr "Žádný takový uživatel."
msgid "Yes"
msgstr "Ano"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Zablokovat tohoto uživatele"
@ -1619,7 +1619,7 @@ msgstr "Uživatel nemá profil."
msgid "User is not a member of group."
msgstr "Neodeslal jste nám profil"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Žádný takový uživatel."
@ -1723,19 +1723,19 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2106,21 +2106,21 @@ msgstr ""
"[Registrovat](%%action.register%%) nový účet, nebo vyzkoušejte [OpenID](%%"
"action.openidlogin%%)."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Uživatel nemá profil."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Nelze vytvořit OpenID z: %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Uživatel nemá profil."
@ -2319,8 +2319,8 @@ msgstr "Připojit"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4444,7 +4444,7 @@ msgstr "Problém při ukládání sdělení"
msgid "DB error inserting reply: %s"
msgstr "Chyba v DB při vkládání odpovědi: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -6056,47 +6056,47 @@ msgstr "Zpráva"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "před pár sekundami"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "asi před minutou"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "asi před %d minutami"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "asi před hodinou"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "asi před %d hodinami"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "asi přede dnem"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "před %d dny"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "asi před měsícem"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "asi před %d mesíci"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "asi před rokem"

View File

@ -3,6 +3,7 @@
# Author@translatewiki.net: Bavatar
# Author@translatewiki.net: Lutzgh
# Author@translatewiki.net: March
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Pill
# Author@translatewiki.net: Umherirrender
# --
@ -12,12 +13,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:50+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:26+0000\n"
"Language-Team: German\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
"X-Message-Group: out-statusnet\n"
@ -207,7 +208,7 @@ msgstr "Aktualisierungen von %1$s und Freunden auf %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API-Methode nicht gefunden."
@ -831,7 +832,7 @@ msgstr "Diesen Benutzer freigeben"
msgid "Yes"
msgstr "Ja"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Diesen Benutzer blockieren"
@ -1606,7 +1607,7 @@ msgstr "Dieser Nutzer ist bereits von der Gruppe gesperrt"
msgid "User is not a member of group."
msgstr "Nutzer ist kein Mitglied dieser Gruppe."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Benutzerzugang zu der Gruppe blockieren"
@ -1705,19 +1706,19 @@ msgstr "Liste der Benutzer in dieser Gruppe."
msgid "Admin"
msgstr "Admin"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blockieren"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Benutzer zu einem Admin dieser Gruppe ernennen"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Zum Admin ernennen"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Diesen Benutzer zu einem Admin ernennen"
@ -2127,21 +2128,21 @@ msgstr ""
"Melde dich mit Nutzernamen und Passwort an. Du hast noch keinen Nutzernamen? "
"[Registriere](%%action.register%%) ein neues Konto."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Nur Administratoren können andere Nutzer zu Administratoren ernennen."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%s ist bereits ein Administrator der Gruppe „%s“."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Konnte Benutzer %s aus der Gruppe %s nicht entfernen"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Konnte %s nicht zum Administrator der Gruppe %s machen"
@ -2346,8 +2347,8 @@ msgstr "Content-Typ "
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Kein unterstütztes Datenformat."
@ -2360,7 +2361,6 @@ msgid "Notice Search"
msgstr "Nachrichtensuche"
#: actions/othersettings.php:60
#, fuzzy
msgid "Other settings"
msgstr "Andere Einstellungen"
@ -2393,9 +2393,8 @@ msgid "URL shortening service is too long (max 50 chars)."
msgstr "URL-Auto-Kürzungs-Dienst ist zu lang (max. 50 Zeichen)."
#: actions/otp.php:69
#, fuzzy
msgid "No user ID specified."
msgstr "Keine Gruppe angegeben"
msgstr "Keine Benutzer ID angegeben"
#: actions/otp.php:83
#, fuzzy
@ -2418,9 +2417,9 @@ msgid "Login token expired."
msgstr "An Seite anmelden"
#: actions/outbox.php:58
#, fuzzy, php-format
#, php-format
msgid "Outbox for %1$s - page %2$d"
msgstr "Postausgang von %s"
msgstr "Postausgang für %1$s - Seite %2$d"
#: actions/outbox.php:61
#, php-format
@ -2531,9 +2530,8 @@ msgid "Site"
msgstr "Seite"
#: actions/pathsadminpanel.php:238
#, fuzzy
msgid "Server"
msgstr "Wiederherstellung"
msgstr "Server"
#: actions/pathsadminpanel.php:238
msgid "Site's server hostname."
@ -2616,9 +2614,8 @@ msgid "SSL"
msgstr "SSL"
#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
#, fuzzy
msgid "Never"
msgstr "Wiederherstellung"
msgstr "Nie"
#: actions/pathsadminpanel.php:324
msgid "Sometimes"
@ -2637,7 +2634,6 @@ msgid "When to use SSL"
msgstr "Wann soll SSL verwendet werden"
#: actions/pathsadminpanel.php:335
#, fuzzy
msgid "SSL server"
msgstr "SSL-Server"
@ -2962,7 +2958,7 @@ msgstr ""
#: actions/recoverpassword.php:191
msgid "Nickname or email address"
msgstr ""
msgstr "Spitzname oder e-mail Adresse"
#: actions/recoverpassword.php:193
msgid "Your nickname on this server, or your registered email address."
@ -3226,20 +3222,16 @@ msgid "Couldnt get a request token."
msgstr "Konnte keinen Anfrage-Token bekommen."
#: actions/repeat.php:57
#, fuzzy
msgid "Only logged-in users can repeat notices."
msgstr "Nur der Benutzer selbst kann seinen Posteingang lesen."
msgstr "Nur angemeldete Nutzer können Nachrichten wiederholen."
#: actions/repeat.php:64 actions/repeat.php:71
#, fuzzy
msgid "No notice specified."
msgstr "Kein Profil angegeben."
msgstr "Keine Nachricht angegeen."
#: actions/repeat.php:76
#, fuzzy
msgid "You can't repeat your own notice."
msgstr ""
"Du kannst dich nicht registrieren, wenn du die Lizenz nicht akzeptierst."
msgstr "Du kannst deine eigene Nachricht nicht wiederholen."
#: actions/repeat.php:90
#, fuzzy
@ -3263,9 +3255,9 @@ msgid "Replies to %s"
msgstr "Antworten an %s"
#: actions/replies.php:127
#, fuzzy, php-format
#, php-format
msgid "Replies to %1$s, page %2$d"
msgstr "Antworten an %1$s auf %2$s!"
msgstr "Antworten an %1$s, Seite %2$d"
#: actions/replies.php:144
#, php-format
@ -3314,9 +3306,8 @@ msgid "Replies to %1$s on %2$s!"
msgstr "Antworten an %1$s auf %2$s!"
#: actions/rsd.php:146 actions/version.php:157
#, fuzzy
msgid "StatusNet"
msgstr "Status gelöscht."
msgstr "StatusNet"
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
@ -4520,7 +4511,7 @@ msgstr "Problem bei Speichern der Nachricht."
msgid "DB error inserting reply: %s"
msgstr "Datenbankfehler beim Einfügen der Antwort: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -5137,8 +5128,8 @@ msgstr "Du bist in keiner Gruppe Mitglied."
#: lib/command.php:714
msgid "You are a member of this group:"
msgid_plural "You are a member of these groups:"
msgstr[0] "Du bist kein Mitglied dieser Gruppe."
msgstr[1] "Du bist kein Mitglied dieser Gruppe."
msgstr[0] "Du bist Mitglied dieser Gruppe:"
msgstr[1] "Du bist Mitglied dieser Gruppen:"
#: lib/command.php:728
msgid ""
@ -6170,47 +6161,47 @@ msgstr "Nachricht"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "vor wenigen Sekunden"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "vor einer Minute"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "vor %d Minuten"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "vor einer Stunde"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "vor %d Stunden"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "vor einem Tag"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "vor %d Tagen"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "vor einem Monat"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "vor %d Monaten"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "vor einem Jahr"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:53+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:30+0000\n"
"Language-Team: Greek\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: el\n"
"X-Message-Group: out-statusnet\n"
@ -191,7 +191,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Η μέθοδος του ΑΡΙ δε βρέθηκε!"
@ -817,7 +817,7 @@ msgstr "Αδυναμία διαγραφής αυτού του μηνύματος
msgid "Yes"
msgstr "Ναι"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr ""
@ -1594,7 +1594,7 @@ msgstr ""
msgid "User is not a member of group."
msgstr ""
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr ""
@ -1692,20 +1692,20 @@ msgstr ""
msgid "Admin"
msgstr "Διαχειριστής"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
#, fuzzy
msgid "Make Admin"
msgstr "Διαχειριστής"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2067,21 +2067,21 @@ msgstr ""
"ακόμα; Κάντε [εγγραφή](%%action.register%%) για ένα νέο λογαριασμό ή "
"δοκιμάστε το [OpenID](%%action.openidlogin%%). "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr ""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Αδύνατη η αποθήκευση του προφίλ."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Αδύνατη η αποθήκευση του προφίλ."
@ -2277,8 +2277,8 @@ msgstr "Σύνδεση"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4372,7 +4372,7 @@ msgstr ""
msgid "DB error inserting reply: %s"
msgstr "Σφάλμα βάσης δεδομένων κατά την εισαγωγή απάντησης: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -5933,47 +5933,47 @@ msgstr "Μήνυμα"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr ""
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr ""
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr ""
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr ""
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr ""
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr ""
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr ""
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr ""
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr ""
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr ""

View File

@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:53:56+0000\n"
"POT-Creation-Date: 2010-02-14 20:05+0000\n"
"PO-Revision-Date: 2010-02-14 20:06:20+0000\n"
"Language-Team: British English\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62476); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: en-gb\n"
"X-Message-Group: out-statusnet\n"
@ -169,8 +169,8 @@ msgstr ""
msgid "You and friends"
msgstr "You and friends"
#: actions/allrss.php:119 actions/apitimelinefriends.php:121
#: actions/apitimelinehome.php:122
#: actions/allrss.php:119 actions/apitimelinefriends.php:119
#: actions/apitimelinehome.php:120
#, php-format
msgid "Updates from %1$s and friends on %2$s!"
msgstr "Updates from %1$s and friends on %2$s!"
@ -191,12 +191,12 @@ msgstr "Updates from %1$s and friends on %2$s!"
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:137
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:146 actions/apitimelinefriends.php:155
#: actions/apitimelinegroup.php:150 actions/apitimelinehome.php:156
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelinefavorites.php:183 actions/apitimelinefriends.php:187
#: actions/apitimelinegroup.php:182 actions/apitimelinehome.php:184
#: actions/apitimelinementions.php:175 actions/apitimelinepublic.php:152
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166
#: actions/apitimelineuser.php:194 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API method not found."
@ -640,7 +640,7 @@ msgstr "Unsupported format."
msgid "%1$s / Favorites from %2$s"
msgstr "%1$s / Favourites from %2$s"
#: actions/apitimelinefavorites.php:120
#: actions/apitimelinefavorites.php:117
#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
msgstr "%1$s updates favourited by %2$s / %2$s."
@ -651,7 +651,7 @@ msgstr "%1$s updates favourited by %2$s / %2$s."
msgid "%s timeline"
msgstr "%s timeline"
#: actions/apitimelinegroup.php:117 actions/apitimelineuser.php:126
#: actions/apitimelinegroup.php:114 actions/apitimelineuser.php:126
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
@ -667,12 +667,12 @@ msgstr "%1$s / Updates mentioning %2$s"
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr "%1$s updates that reply to updates from %2$s / %3$s."
#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
#, php-format
msgid "%s public timeline"
msgstr "%s public timeline"
#: actions/apitimelinepublic.php:111 actions/publicrss.php:105
#: actions/apitimelinepublic.php:115 actions/publicrss.php:105
#, php-format
msgid "%s updates from everyone!"
msgstr "%s updates from everyone!"
@ -682,7 +682,7 @@ msgstr "%s updates from everyone!"
msgid "Repeated to %s"
msgstr "Repeated to %s"
#: actions/apitimelineretweetsofme.php:112
#: actions/apitimelineretweetsofme.php:114
#, php-format
msgid "Repeats of %s"
msgstr "Repeats of %s"
@ -692,7 +692,7 @@ msgstr "Repeats of %s"
msgid "Notices tagged with %s"
msgstr "Notices tagged with %s"
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
#: actions/apitimelinetag.php:104 actions/tagrss.php:64
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Updates tagged with %1$s on %2$s!"
@ -819,7 +819,7 @@ msgstr "Do not block this user"
msgid "Yes"
msgstr "Yes"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Block this user"
@ -1235,7 +1235,7 @@ msgstr "description is too long (max %d chars)."
msgid "Could not update group."
msgstr "Could not update group."
#: actions/editgroup.php:259 classes/User_group.php:390
#: actions/editgroup.php:259 classes/User_group.php:423
msgid "Could not create aliases."
msgstr "Could not create aliases"
@ -1581,7 +1581,7 @@ msgstr "User is already blocked from group."
msgid "User is not a member of group."
msgstr "User is not a member of group."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Block user"
@ -1689,21 +1689,21 @@ msgstr "A list of the users in this group."
msgid "Admin"
msgstr "Admin"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Block"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
#, fuzzy
msgid "Make user an admin of the group"
msgstr "You must be an admin to edit the group"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
#, fuzzy
msgid "Make Admin"
msgstr "Admin"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2103,21 +2103,21 @@ msgstr ""
"Login with your username and password. Don't have a username yet? [Register]"
"(%%action.register%%) a new account."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "User is already blocked from group."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Could not remove user %s to group %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "You must be an admin to edit the group"
@ -2323,8 +2323,8 @@ msgstr "Connect"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Not a supported data format."
@ -4501,7 +4501,7 @@ msgstr "Problem saving notice."
msgid "DB error inserting reply: %s"
msgstr "DB error inserting reply: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1271
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -4511,11 +4511,11 @@ msgstr "%1$s (%2$s)"
msgid "Welcome to %1$s, @%2$s!"
msgstr "Welcome to %1$s, @%2$s!"
#: classes/User_group.php:380
#: classes/User_group.php:413
msgid "Could not create group."
msgstr "Could not create group."
#: classes/User_group.php:409
#: classes/User_group.php:442
msgid "Could not set group membership."
msgstr "Could not set group membership."
@ -6091,47 +6091,47 @@ msgstr "Message"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:871
msgid "a few seconds ago"
msgstr "a few seconds ago"
#: lib/util.php:869
#: lib/util.php:873
msgid "about a minute ago"
msgstr "about a minute ago"
#: lib/util.php:871
#: lib/util.php:875
#, php-format
msgid "about %d minutes ago"
msgstr "about %d minutes ago"
#: lib/util.php:873
#: lib/util.php:877
msgid "about an hour ago"
msgstr "about an hour ago"
#: lib/util.php:875
#: lib/util.php:879
#, php-format
msgid "about %d hours ago"
msgstr "about %d hours ago"
#: lib/util.php:877
#: lib/util.php:881
msgid "about a day ago"
msgstr "about a day ago"
#: lib/util.php:879
#: lib/util.php:883
#, php-format
msgid "about %d days ago"
msgstr "about %d days ago"
#: lib/util.php:881
#: lib/util.php:885
msgid "about a month ago"
msgstr "about a month ago"
#: lib/util.php:883
#: lib/util.php:887
#, php-format
msgid "about %d months ago"
msgstr "about %d months ago"
#: lib/util.php:885
#: lib/util.php:889
msgid "about a year ago"
msgstr "about a year ago"

File diff suppressed because it is too large Load Diff

View File

@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:05+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:41+0000\n"
"Last-Translator: Ahmad Sufi Mahmudi\n"
"Language-Team: Persian\n"
"MIME-Version: 1.0\n"
@ -20,7 +20,7 @@ msgstr ""
"X-Language-Code: fa\n"
"X-Message-Group: out-statusnet\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
@ -200,7 +200,7 @@ msgstr "به روز رسانی از %1$ و دوستان در %2$"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "رابط مورد نظر پیدا نشد."
@ -822,7 +822,7 @@ msgstr "کاربر را مسدود نکن"
msgid "Yes"
msgstr "بله"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "کاربر را مسدود کن"
@ -1597,7 +1597,7 @@ msgstr "هم اکنون دسترسی کاربر به گروه مسدود شده
msgid "User is not a member of group."
msgstr "کاربر عضو گروه نیست."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "دسترسی کاربر به گروه را مسدود کن"
@ -1693,19 +1693,19 @@ msgstr "یک فهرست از کاربران در این گروه"
msgid "Admin"
msgstr "مدیر"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "بازداشتن"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "کاربر یک مدیر گروه شود"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "مدیر شود"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "این کاربر یک مدیر شود"
@ -2080,21 +2080,21 @@ msgstr ""
"با نام‌کاربری و گذزواژه‌ی خود وارد شوید. نام‌کاربری ندارید؟ یک نام‌کاربری [ثبت ]"
"(%%action.register%%) کنید."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "فقط یک مدیر می‌تواند کاربر دیگری را مدیر کند."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%s از قبل مدیر گروه %s بود."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "نمی‌توان اطلاعات عضویت %s را در گروه %s به دست آورد."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "نمی‌توان %s را مدیر گروه %s کرد."
@ -2301,8 +2301,8 @@ msgstr "نوع محتوا "
msgid "Only "
msgstr " فقط"
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "یک قالب دادهٔ پشتیبانی‌شده نیست."
@ -4369,7 +4369,7 @@ msgstr "مشکل در ذخیره کردن آگهی."
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -5917,47 +5917,47 @@ msgstr "پیام"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "چند ثانیه پیش"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "حدود یک دقیقه پیش"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "حدود %d دقیقه پیش"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "حدود یک ساعت پیش"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "حدود %d ساعت پیش"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "حدود یک روز پیش"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "حدود %d روز پیش"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "حدود یک ماه پیش"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "حدود %d ماه پیش"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "حدود یک سال پیش"

View File

@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:02+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:39+0000\n"
"Language-Team: Finnish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fi\n"
"X-Message-Group: out-statusnet\n"
@ -202,7 +202,7 @@ msgstr "Käyttäjän %1$s ja kavereiden päivitykset palvelussa %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "API-metodia ei löytynyt!"
@ -837,7 +837,7 @@ msgstr "Älä estä tätä käyttäjää"
msgid "Yes"
msgstr "Kyllä"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Estä tämä käyttäjä"
@ -1628,7 +1628,7 @@ msgstr "Käyttäjä on asettanut eston sinulle."
msgid "User is not a member of group."
msgstr "Käyttäjä ei kuulu tähän ryhmään."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Estä käyttäjä ryhmästä"
@ -1726,19 +1726,19 @@ msgstr "Lista ryhmän käyttäjistä."
msgid "Admin"
msgstr "Ylläpito"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Estä"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Tee tästä käyttäjästä ylläpitäjä"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Tee ylläpitäjäksi"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Tee tästä käyttäjästä ylläpitäjä"
@ -2144,21 +2144,21 @@ msgstr ""
"käyttäjätunnusta? [Rekisteröi](%%action.register%%) käyttäjätunnus tai "
"kokeile [OpenID](%%action.openidlogin%%)-tunnuksella sisään kirjautumista. "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Vain ylläpitäjä voi tehdä toisesta käyttäjästä ylläpitäjän."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%s on jo ryhmän \"%s\" ylläpitäjä."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Ei saatu käyttäjän %s jäsenyystietoja ryhmästä %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Ei voitu tehdä käyttäjästä %s ylläpitäjää ryhmään %s"
@ -2365,8 +2365,8 @@ msgstr "Yhdistä"
msgid "Only "
msgstr "Vain "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Tuo ei ole tuettu tietomuoto."
@ -4542,7 +4542,7 @@ msgstr "Ongelma päivityksen tallentamisessa."
msgid "DB error inserting reply: %s"
msgstr "Tietokantavirhe tallennettaessa vastausta: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -6159,47 +6159,47 @@ msgstr "Viesti"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "muutama sekunti sitten"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "noin minuutti sitten"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "noin %d minuuttia sitten"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "noin tunti sitten"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "noin %d tuntia sitten"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "noin päivä sitten"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "noin %d päivää sitten"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "noin kuukausi sitten"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "noin %d kuukautta sitten"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "noin vuosi sitten"

View File

@ -14,12 +14,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:09+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:44+0000\n"
"Language-Team: French\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: out-statusnet\n"
@ -202,7 +202,7 @@ msgstr "Statuts de %1$s et ses amis dans %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "Méthode API non trouvée !"
@ -838,7 +838,7 @@ msgstr "Ne pas bloquer cet utilisateur"
msgid "Yes"
msgstr "Oui"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Bloquer cet utilisateur"
@ -1599,7 +1599,7 @@ msgstr "Cet utilisateur est déjà bloqué pour le groupe."
msgid "User is not a member of group."
msgstr "Lutilisateur nest pas membre du groupe."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Bloquer cet utilisateur du groupe"
@ -1702,19 +1702,19 @@ msgstr "Liste des utilisateurs inscrits à ce groupe."
msgid "Admin"
msgstr "Administrer"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Bloquer"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Faire de cet utilisateur un administrateur du groupe"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Faire un administrateur"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Faire de cet utilisateur un administrateur"
@ -2134,24 +2134,24 @@ msgstr ""
"pas encore didentifiant ? [Créez-vous](%%action.register%%) un nouveau "
"compte."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
"Seul un administrateur peut faire dun autre utilisateur un administrateur."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s est déjà administrateur du groupe « %2$s »."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr ""
"Impossible dobtenir les enregistrements dappartenance pour %1$s dans le "
"groupe %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Impossible de rendre %1$s administrateur du groupe %2$s."
@ -2356,8 +2356,8 @@ msgstr "type de contenu "
msgid "Only "
msgstr "Seulement "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Format de données non supporté."
@ -4546,7 +4546,7 @@ msgstr "Problème lors de lenregistrement de la boîte de réception du group
msgid "DB error inserting reply: %s"
msgstr "Erreur de base de donnée en insérant la réponse :%s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -4590,7 +4590,7 @@ msgstr "Autres "
#: lib/accountsettingsaction.php:128
msgid "Other options"
msgstr "Autres options "
msgstr "Autres options"
#: lib/action.php:144
#, php-format
@ -6231,47 +6231,47 @@ msgstr "Message"
msgid "Moderate"
msgstr "Modérer"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "il y a quelques secondes"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "il y a 1 minute"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "il y a %d minutes"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "il y a 1 heure"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "il y a %d heures"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "il y a 1 jour"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "il y a %d jours"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "il y a 1 mois"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "il y a %d mois"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "il y a environ 1 an"

View File

@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:12+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:47+0000\n"
"Language-Team: Irish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ga\n"
"X-Message-Group: out-statusnet\n"
@ -197,7 +197,7 @@ msgstr "Actualizacións dende %1$s e amigos en %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Método da API non atopado"
@ -843,7 +843,7 @@ msgstr "Bloquear usuario"
msgid "Yes"
msgstr "Si"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
#, fuzzy
msgid "Block this user"
msgstr "Bloquear usuario"
@ -1654,7 +1654,7 @@ msgstr "O usuario bloqueoute."
msgid "User is not a member of group."
msgstr "%1s non é unha orixe fiable."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Bloquear usuario"
@ -1760,19 +1760,19 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Bloquear"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2176,21 +2176,21 @@ msgstr ""
"(%%action.register%%) unha nova conta, ou accede co teu enderezo [OpenID](%%"
"action.openidlogin%%). "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "O usuario bloqueoute."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Non podes seguir a este usuario: o Usuario non se atopa."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "O usuario bloqueoute."
@ -2396,8 +2396,8 @@ msgstr "Conectar"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Non é un formato de datos soportado."
@ -4599,7 +4599,7 @@ msgstr "Aconteceu un erro ó gardar o chío."
msgid "DB error inserting reply: %s"
msgstr "Erro ó inserir a contestación na BD: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -6336,47 +6336,47 @@ msgstr "Nova mensaxe"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "fai uns segundos"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "fai un minuto"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "fai %d minutos"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "fai unha hora"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "fai %d horas"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "fai un día"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "fai %d días"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "fai un mes"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "fai %d meses"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "fai un ano"

View File

@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:15+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:50+0000\n"
"Language-Team: Hebrew\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: he\n"
"X-Message-Group: out-statusnet\n"
@ -194,7 +194,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "קוד האישור לא נמצא."
@ -833,7 +833,7 @@ msgstr "אין משתמש כזה."
msgid "Yes"
msgstr "כן"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
#, fuzzy
msgid "Block this user"
msgstr "אין משתמש כזה."
@ -1626,7 +1626,7 @@ msgstr "למשתמש אין פרופיל."
msgid "User is not a member of group."
msgstr "לא שלחנו אלינו את הפרופיל הזה"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "אין משתמש כזה."
@ -1731,19 +1731,19 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2113,21 +2113,21 @@ msgstr ""
"היכנס בעזרת שם המשתמש והסיסמה שלך. עדיין אין לך שם משתמש? [הרשם](%%action."
"register%%) לחשבון "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "למשתמש אין פרופיל."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "נכשלה יצירת OpenID מתוך: %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "למשתמש אין פרופיל."
@ -2327,8 +2327,8 @@ msgstr "התחבר"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4444,7 +4444,7 @@ msgstr "בעיה בשמירת ההודעה."
msgid "DB error inserting reply: %s"
msgstr "שגיאת מסד נתונים בהכנסת התגובה: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -6060,47 +6060,47 @@ msgstr "הודעה חדשה"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "לפני מספר שניות"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "לפני כדקה"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "לפני כ-%d דקות"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "לפני כשעה"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "לפני כ-%d שעות"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "לפני כיום"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "לפני כ-%d ימים"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "לפני כחודש"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "לפני כ-%d חודשים"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "לפני כשנה"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:18+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:14:54+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: hsb\n"
"X-Message-Group: out-statusnet\n"
@ -192,7 +192,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API-metoda njenamakana."
@ -805,7 +805,7 @@ msgstr "Tutoho wužiwarja njeblokować"
msgid "Yes"
msgstr "Haj"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Tutoho wužiwarja blokować"
@ -1553,7 +1553,7 @@ msgstr "Wužiwar je hižo za skupinu zablokowany."
msgid "User is not a member of group."
msgstr "Wužiwar njeje čłon skupiny."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Wužiwarja za skupinu blokować"
@ -1650,19 +1650,19 @@ msgstr "Lisćina wužiwarjow w tutej skupinje."
msgid "Admin"
msgstr "Administrator"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blokować"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Tutoho wužiwarja k administratorej činić"
@ -2012,21 +2012,21 @@ msgid ""
"(%%action.register%%) a new account."
msgstr ""
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Jenož administrator móže druheho wužiwarja k administratorej činić."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s je hižo administrator za skupinu \"%2$s\"."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Přistup na datowu sadźbu čłona %1$S w skupinje %2$s móžno njeje."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Njeje móžno %1$S k administratorej w skupinje %2$s činić."
@ -2219,8 +2219,8 @@ msgstr ""
msgid "Only "
msgstr "Jenož "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Njeje podpěrany datowy format."
@ -4241,7 +4241,7 @@ msgstr ""
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -5773,47 +5773,47 @@ msgstr "Powěsć"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "před něšto sekundami"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "před něhdźe jednej mjeńšinu"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "před %d mjeńšinami"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "před něhdźe jednej hodźinu"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "před něhdźe %d hodźinami"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "před něhdźe jednym dnjom"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "před něhdźe %d dnjemi"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "před něhdźe jednym měsacom"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "před něhdźe %d měsacami"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "před něhdźe jednym lětom"

File diff suppressed because it is too large Load Diff

View File

@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:24+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:11+0000\n"
"Language-Team: Icelandic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: is\n"
"X-Message-Group: out-statusnet\n"
@ -196,7 +196,7 @@ msgstr "Færslur frá %1$s og vinum á %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Aðferð í forritsskilum fannst ekki!"
@ -829,7 +829,7 @@ msgstr "Opna á þennan notanda"
msgid "Yes"
msgstr "Já"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Loka á þennan notanda"
@ -1616,7 +1616,7 @@ msgstr ""
msgid "User is not a member of group."
msgstr ""
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr ""
@ -1713,19 +1713,19 @@ msgstr "Listi yfir notendur í þessum hóp."
msgid "Admin"
msgstr "Stjórnandi"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Loka"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2128,21 +2128,21 @@ msgstr ""
"notendanafn? [Nýskráðu þig](%%action.register%%) eða prófaðu [OpenID](%%"
"action.openidlogin%%). "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr ""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s"
@ -2347,8 +2347,8 @@ msgstr ""
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Enginn stuðningur við gagnasnið."
@ -4492,7 +4492,7 @@ msgstr "Vandamál komu upp við að vista babl."
msgid "DB error inserting reply: %s"
msgstr "Gagnagrunnsvilla við innsetningu svars: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -6088,47 +6088,47 @@ msgstr "Skilaboð"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "fyrir nokkrum sekúndum"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "fyrir um einni mínútu síðan"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "fyrir um %d mínútum síðan"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "fyrir um einum klukkutíma síðan"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "fyrir um %d klukkutímum síðan"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "fyrir um einum degi síðan"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "fyrir um %d dögum síðan"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "fyrir um einum mánuði síðan"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "fyrir um %d mánuðum síðan"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "fyrir um einu ári síðan"

View File

@ -1,6 +1,5 @@
# Translation of StatusNet to Italian
#
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Milocasagrande
# Author@translatewiki.net: Nemo bis
# --
@ -10,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:27+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:14+0000\n"
"Language-Team: Italian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: it\n"
"X-Message-Group: out-statusnet\n"
@ -200,7 +199,7 @@ msgstr "Messaggi da %1$s e amici su %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "Metodo delle API non trovato."
@ -484,12 +483,11 @@ msgstr "Gruppi su %s"
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
msgstr "Nessun parametro oauth_token fornito."
#: actions/apioauthauthorize.php:106
#, fuzzy
msgid "Invalid token."
msgstr "Dimensione non valida."
msgstr "Token non valido."
#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
@ -532,9 +530,9 @@ msgstr ""
"accesso."
#: actions/apioauthauthorize.php:227
#, fuzzy, php-format
#, php-format
msgid "The request token %s has been denied and revoked."
msgstr "Il token di richiesta %s è stato rifiutato."
msgstr "Il token di richiesta %s è stato rifiutato o revocato."
#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
@ -560,6 +558,9 @@ msgid ""
"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
"give access to your %4$s account to third parties you trust."
msgstr ""
"L'applicazione <strong>%1$s</strong> di <strong>%2$s</strong> vorrebbe poter "
"<strong>%3$s</strong> ai dati del tuo account %4$s. È consigliato fornire "
"accesso al proprio account %4$s solo ad applicazioni di cui ci si può fidare."
#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
@ -579,12 +580,10 @@ msgid "Password"
msgstr "Password"
#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Nega"
#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Consenti"
@ -826,7 +825,7 @@ msgstr "Non bloccare questo utente"
msgid "Yes"
msgstr "Sì"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Blocca questo utente"
@ -909,7 +908,6 @@ msgid "Couldn't delete email confirmation."
msgstr "Impossibile eliminare l'email di conferma."
#: actions/confirmaddress.php:144
#, fuzzy
msgid "Confirm address"
msgstr "Conferma indirizzo"
@ -928,20 +926,17 @@ msgid "Notices"
msgstr "Messaggi"
#: actions/deleteapplication.php:63
#, fuzzy
msgid "You must be logged in to delete an application."
msgstr "Devi eseguire l'accesso per modificare un gruppo."
msgstr "Devi eseguire l'accesso per eliminare un'applicazione."
#: actions/deleteapplication.php:71
#, fuzzy
msgid "Application not found."
msgstr "Il messaggio non ha un profilo"
msgstr "Applicazione non trovata."
#: actions/deleteapplication.php:78 actions/editapplication.php:77
#: actions/showapplication.php:94
#, fuzzy
msgid "You are not the owner of this application."
msgstr "Non fai parte di questo gruppo."
msgstr "Questa applicazione non è di tua proprietà."
#: actions/deleteapplication.php:102 actions/editapplication.php:127
#: actions/newapplication.php:110 actions/showapplication.php:118
@ -950,29 +945,25 @@ msgid "There was a problem with your session token."
msgstr "Si è verificato un problema con il tuo token di sessione."
#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
#, fuzzy
msgid "Delete application"
msgstr "Nessun messaggio."
msgstr "Elimina applicazione"
#: actions/deleteapplication.php:149
#, fuzzy
msgid ""
"Are you sure you want to delete this application? This will clear all data "
"about the application from the database, including all existing user "
"connections."
msgstr ""
"Vuoi eliminare questo utente? Questa azione eliminerà tutti i dati "
"dell'utente dal database, senza una copia di sicurezza."
"Vuoi eliminare questa applicazione? Questa azione eliminerà tutti i dati "
"riguardo all'applicazione dal database, comprese tutte le connessioni utente."
#: actions/deleteapplication.php:156
#, fuzzy
msgid "Do not delete this application"
msgstr "Non eliminare il messaggio"
msgstr "Non eliminare l'applicazione"
#: actions/deleteapplication.php:160
#, fuzzy
msgid "Delete this application"
msgstr "Elimina questo messaggio"
msgstr "Elimina l'applicazione"
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
@ -1153,86 +1144,74 @@ msgid "Add to favorites"
msgstr "Aggiungi ai preferiti"
#: actions/doc.php:158
#, fuzzy, php-format
#, php-format
msgid "No such document \"%s\""
msgstr "Nessun documento."
msgstr "Nessun documento \"%s\""
#: actions/editapplication.php:54
#, fuzzy
msgid "Edit Application"
msgstr "Altre opzioni"
msgstr "Modifica applicazione"
#: actions/editapplication.php:66
#, fuzzy
msgid "You must be logged in to edit an application."
msgstr "Devi eseguire l'accesso per modificare un gruppo."
msgstr "Devi eseguire l'accesso per modificare un'applicazione."
#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Nessun messaggio."
msgstr "Nessuna applicazione."
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
msgstr "Usa questo modulo per modificare il gruppo."
msgstr "Usa questo modulo per modificare la tua applicazione."
#: actions/editapplication.php:177 actions/newapplication.php:159
#, fuzzy
msgid "Name is required."
msgstr "Stessa password di sopra; richiesta"
msgstr "Il nome è richiesto."
#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Nome troppo lungo (max 255 caratteri)."
msgstr "Il nome è troppo lungo (max 255 caratteri)."
#: actions/editapplication.php:183 actions/newapplication.php:162
#, fuzzy
msgid "Name already in use. Try another one."
msgstr "Soprannome già in uso. Prova con un altro."
msgstr "Nome già in uso. Prova con un altro."
#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Descrizione"
msgstr "La descrizione è richiesta."
#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
msgstr "L'URL sorgente è troppo lungo."
#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "L'URL \"%s\" dell'immagine non è valido."
msgstr "L'URL sorgente non è valido."
#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
msgstr "L'organizzazione è richiesta."
#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Ubicazione troppo lunga (max 255 caratteri)."
msgstr "L'organizzazione è troppo lunga (max 255 caratteri)."
#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
msgstr "Il sito web dell'organizzazione è richiesto."
#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
msgstr "Il callback è troppo lungo."
#: actions/editapplication.php:225 actions/newapplication.php:215
#, fuzzy
msgid "Callback URL is not valid."
msgstr "L'URL \"%s\" dell'immagine non è valido."
msgstr "L'URL di callback non è valido."
#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Impossibile aggiornare il gruppo."
msgstr "Impossibile aggiornare l'applicazione."
#: actions/editgroup.php:56
#, php-format
@ -1609,7 +1588,7 @@ msgstr "L'utente è già bloccato dal gruppo."
msgid "User is not a member of group."
msgstr "L'utente non fa parte del gruppo."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Blocca l'utente dal gruppo"
@ -1711,19 +1690,19 @@ msgstr "Un elenco degli utenti in questo gruppo."
msgid "Admin"
msgstr "Amministra"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blocca"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Rende l'utente amministratore del gruppo"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Rendi amm."
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Rende questo utente un amministratore"
@ -1905,9 +1884,9 @@ msgid "That is not your Jabber ID."
msgstr "Quello non è il tuo ID di Jabber."
#: actions/inbox.php:59
#, fuzzy, php-format
#, php-format
msgid "Inbox for %1$s - page %2$d"
msgstr "Casella posta in arrivo di %s"
msgstr "Casella posta in arrivo di %s - pagina %2$d"
#: actions/inbox.php:62
#, php-format
@ -2129,22 +2108,22 @@ msgstr ""
"Accedi col tuo nome utente e password. Non hai ancora un nome utente? [Crea]"
"(%%action.register%%) un nuovo account."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
"Solo gli amministratori possono rendere un altro utente amministratori."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s è già amministratore del gruppo \"%2$s\"."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Impossibile recuperare la membership per %1$s nel gruppo %2$s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Impossibile rendere %1$s un amministratore del gruppo %2$s"
@ -2154,28 +2133,24 @@ msgid "No current status"
msgstr "Nessun messaggio corrente"
#: actions/newapplication.php:52
#, fuzzy
msgid "New Application"
msgstr "Nessun messaggio."
msgstr "Nuova applicazione"
#: actions/newapplication.php:64
#, fuzzy
msgid "You must be logged in to register an application."
msgstr "Devi eseguire l'accesso per creare un gruppo."
msgstr "Devi eseguire l'accesso per registrare un'applicazione."
#: actions/newapplication.php:143
#, fuzzy
msgid "Use this form to register a new application."
msgstr "Usa questo modulo per creare un nuovo gruppo."
msgstr "Usa questo modulo per registrare un'applicazione."
#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
msgstr "L'URL sorgente è richiesto."
#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Impossibile creare gli alias."
msgstr "Impossibile creare l'applicazione."
#: actions/newgroup.php:53
msgid "New group"
@ -2242,7 +2217,7 @@ msgid "Text search"
msgstr "Cerca testo"
#: actions/noticesearch.php:91
#, fuzzy, php-format
#, php-format
msgid "Search results for \"%1$s\" on %2$s"
msgstr "Risultati della ricerca per \"%1$s\" su %2$s"
@ -2290,49 +2265,48 @@ msgid "Nudge sent!"
msgstr "Richiamo inviato!"
#: actions/oauthappssettings.php:59
#, fuzzy
msgid "You must be logged in to list your applications."
msgstr "Devi eseguire l'accesso per modificare un gruppo."
msgstr "Devi eseguire l'accesso per poter elencare le tue applicazioni."
#: actions/oauthappssettings.php:74
#, fuzzy
msgid "OAuth applications"
msgstr "Altre opzioni"
msgstr "Applicazioni OAuth"
#: actions/oauthappssettings.php:85
msgid "Applications you have registered"
msgstr ""
msgstr "Applicazioni che hai registrato"
#: actions/oauthappssettings.php:135
#, php-format
msgid "You have not registered any applications yet."
msgstr ""
msgstr "Non hai ancora registrato alcuna applicazione."
#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
msgstr "Applicazioni collegate"
#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
msgstr "Hai consentito alle seguenti applicazioni di accedere al tuo account."
#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Non fai parte di quel gruppo."
msgstr "Non sei un utente di quella applicazione."
#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
msgstr "Impossibile revocare l'accesso per l'applicazione: "
#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
msgstr "Non hai autorizzato alcuna applicazione all'uso del tuo account."
#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
"Gli sviluppatori possono modificare le impostazioni di registrazione per le "
"loro applicazioni "
#: actions/oembed.php:79 actions/shownotice.php:100
msgid "Notice has no profile"
@ -2351,8 +2325,8 @@ msgstr "tipo di contenuto "
msgid "Only "
msgstr "Solo "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Non è un formato di dati supportato."
@ -2365,7 +2339,6 @@ msgid "Notice Search"
msgstr "Cerca messaggi"
#: actions/othersettings.php:60
#, fuzzy
msgid "Other settings"
msgstr "Altre impostazioni"
@ -2398,34 +2371,29 @@ msgid "URL shortening service is too long (max 50 chars)."
msgstr "Il servizio di riduzione degli URL è troppo lungo (max 50 caratteri)."
#: actions/otp.php:69
#, fuzzy
msgid "No user ID specified."
msgstr "Nessun ID utente specificato."
#: actions/otp.php:83
#, fuzzy
msgid "No login token specified."
msgstr "Nessun token di accesso specificato."
#: actions/otp.php:90
#, fuzzy
msgid "No login token requested."
msgstr "Nessun token di accesso richiesto."
#: actions/otp.php:95
#, fuzzy
msgid "Invalid login token specified."
msgstr "Token di accesso specificato non valido."
#: actions/otp.php:104
#, fuzzy
msgid "Login token expired."
msgstr "Token di accesso scaduto."
#: actions/outbox.php:58
#, fuzzy, php-format
#, php-format
msgid "Outbox for %1$s - page %2$d"
msgstr "Casella posta inviata di %s"
msgstr "Casella posta inviata di %s - pagina %2$d"
#: actions/outbox.php:61
#, php-format
@ -3266,9 +3234,9 @@ msgid "Replies to %s"
msgstr "Risposte a %s"
#: actions/replies.php:127
#, fuzzy, php-format
#, php-format
msgid "Replies to %1$s, page %2$d"
msgstr "Risposte a %1$s su %2$s!"
msgstr "Risposte a %1$s, pagina %2$d"
#: actions/replies.php:144
#, php-format
@ -3310,7 +3278,7 @@ msgid ""
"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Puoi provare a [richiamare %1$s](../%2$s) o [scrivere qualche cosa alla sua "
"attenzione](%%%%action.newnotice%%%%?status_textarea=%3$s)."
"attenzione](%%%%action.newnotice%%%%?status_textarea=%s)."
#: actions/repliesrss.php:72
#, php-format
@ -3335,9 +3303,8 @@ msgid "Sessions"
msgstr "Sessioni"
#: actions/sessionsadminpanel.php:65
#, fuzzy
msgid "Session settings for this StatusNet site."
msgstr "Impostazioni dell'aspetto per questo sito di StatusNet."
msgstr "Impostazioni di sessione per questo sito di StatusNet."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@ -3361,18 +3328,16 @@ msgid "Save site settings"
msgstr "Salva impostazioni"
#: actions/showapplication.php:82
#, fuzzy
msgid "You must be logged in to view an application."
msgstr "Devi eseguire l'accesso per lasciare un gruppo."
msgstr "Devi eseguire l'accesso per visualizzare un'applicazione."
#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Il messaggio non ha un profilo"
msgstr "Profilo applicazione"
#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
msgstr "Icona"
#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
@ -3380,9 +3345,8 @@ msgid "Name"
msgstr "Nome"
#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Paginazione"
msgstr "Organizzazione"
#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
@ -3397,56 +3361,56 @@ msgstr "Statistiche"
#: actions/showapplication.php:203
#, php-format
msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
msgstr "creata da %1$s - %2$s accessi predefiniti - %3$d utenti"
#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
msgstr "Azioni applicazione"
#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
msgstr "Reimposta chiave e segreto"
#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
msgstr "Informazioni applicazione"
#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
msgstr "Chiave consumatore"
#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
msgstr "Segreto consumatore"
#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
msgstr "URL token di richiesta"
#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
msgstr "URL token di accesso"
#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "Autore"
msgstr "URL di autorizzazione"
#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
"Nota: sono supportate firme HMAC-SHA1, ma non è supportato il metodo di "
"firma di testo in chiaro."
#: actions/showapplication.php:309
#, fuzzy
msgid "Are you sure you want to reset your consumer key and secret?"
msgstr "Vuoi eliminare questo messaggio?"
msgstr "Ripristinare la chiave e il segreto?"
#: actions/showfavorites.php:79
#, fuzzy, php-format
#, php-format
msgid "%1$s's favorite notices, page %2$d"
msgstr "Messaggi preferiti di %s"
msgstr "Messaggi preferiti di %1$s, pagina %2$d"
#: actions/showfavorites.php:132
msgid "Could not retrieve favorite notices."
@ -3505,9 +3469,9 @@ msgid "%s group"
msgstr "Gruppo %s"
#: actions/showgroup.php:84
#, fuzzy, php-format
#, php-format
msgid "%1$s group, page %2$d"
msgstr "Membri del gruppo %1$s, pagina %2$d"
msgstr "Gruppi di %1$s, pagina %2$d"
#: actions/showgroup.php:218
msgid "Group profile"
@ -3629,9 +3593,9 @@ msgid " tagged %s"
msgstr " etichettati con %s"
#: actions/showstream.php:79
#, fuzzy, php-format
#, php-format
msgid "%1$s, page %2$d"
msgstr "Profili bloccati di %1$s, pagina %2$d"
msgstr "%1$s, pagina %2$d"
#: actions/showstream.php:122
#, php-format
@ -3731,7 +3695,7 @@ msgid "You must have a valid contact email address."
msgstr "Devi avere un'email di contatto valida."
#: actions/siteadminpanel.php:158
#, fuzzy, php-format
#, php-format
msgid "Unknown language \"%s\"."
msgstr "Lingua \"%s\" sconosciuta."
@ -4065,9 +4029,9 @@ msgid "SMS"
msgstr "SMS"
#: actions/tag.php:68
#, fuzzy, php-format
#, php-format
msgid "Notices tagged with %1$s, page %2$d"
msgstr "Utenti auto-etichettati con %1$s - pagina %2$d"
msgstr "Messaggi etichettati con %1$s, pagina %2$d"
#: actions/tag.php:86
#, php-format
@ -4353,9 +4317,9 @@ msgid "Enjoy your hotdog!"
msgstr "Gustati il tuo hotdog!"
#: actions/usergroups.php:64
#, fuzzy, php-format
#, php-format
msgid "%1$s groups, page %2$d"
msgstr "Membri del gruppo %1$s, pagina %2$d"
msgstr "Gruppi di %1$s, pagina %2$d"
#: actions/usergroups.php:130
msgid "Search for more groups"
@ -4456,19 +4420,16 @@ msgstr ""
"Un file di questa dimensione supererebbe la tua quota mensile di %d byte."
#: classes/Group_member.php:41
#, fuzzy
msgid "Group join failed."
msgstr "Profilo del gruppo"
msgstr "Ingresso nel gruppo non riuscito."
#: classes/Group_member.php:53
#, fuzzy
msgid "Not part of group."
msgstr "Impossibile aggiornare il gruppo."
msgstr "Non si fa parte del gruppo."
#: classes/Group_member.php:60
#, fuzzy
msgid "Group leave failed."
msgstr "Profilo del gruppo"
msgstr "Uscita dal gruppo non riuscita."
#: classes/Login_token.php:76
#, php-format
@ -4524,16 +4485,15 @@ msgid "Problem saving notice."
msgstr "Problema nel salvare il messaggio."
#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problema nel salvare il messaggio."
msgstr "Problema nel salvare la casella della posta del gruppo."
#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Errore del DB nell'inserire la risposta: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -4580,7 +4540,7 @@ msgid "Other options"
msgstr "Altre opzioni"
#: lib/action.php:144
#, fuzzy, php-format
#, php-format
msgid "%1$s - %2$s"
msgstr "%1$s - %2$s"
@ -4737,16 +4697,19 @@ msgstr "Licenza del contenuto del sito"
#: lib/action.php:806
#, php-format
msgid "Content and data of %1$s are private and confidential."
msgstr ""
msgstr "I contenuti e i dati di %1$s sono privati e confidenziali."
#: lib/action.php:811
#, php-format
msgid "Content and data copyright by %1$s. All rights reserved."
msgstr ""
"I contenuti e i dati sono copyright di %1$s. Tutti i diritti riservati."
#: lib/action.php:814
msgid "Content and data copyright by contributors. All rights reserved."
msgstr ""
"I contenuti e i dati sono forniti dai collaboratori. Tutti i diritti "
"riservati."
#: lib/action.php:826
msgid "All "
@ -4797,102 +4760,99 @@ msgid "Design configuration"
msgstr "Configurazione aspetto"
#: lib/adminpanelaction.php:322
#, fuzzy
msgid "User configuration"
msgstr "Configurazione percorsi"
msgstr "Configurazione utente"
#: lib/adminpanelaction.php:327
#, fuzzy
msgid "Access configuration"
msgstr "Configurazione aspetto"
msgstr "Configurazione di accesso"
#: lib/adminpanelaction.php:332
msgid "Paths configuration"
msgstr "Configurazione percorsi"
#: lib/adminpanelaction.php:337
#, fuzzy
msgid "Sessions configuration"
msgstr "Configurazione aspetto"
msgstr "Configurazione sessioni"
#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"Le risorse API richiedono accesso lettura-scrittura, ma si dispone del solo "
"accesso in lettura."
#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
"Tentativo di autorizzazione API non riuscito, soprannome = %1$s, proxy = %2"
"$s, IP = %3$s"
#: lib/applicationeditform.php:136
msgid "Edit application"
msgstr ""
msgstr "Modifica applicazione"
#: lib/applicationeditform.php:184
msgid "Icon for this application"
msgstr ""
msgstr "Icona per questa applicazione"
#: lib/applicationeditform.php:204
#, fuzzy, php-format
#, php-format
msgid "Describe your application in %d characters"
msgstr "Descrivi il gruppo o l'argomento in %d caratteri"
msgstr "Descrivi l'applicazione in %d caratteri"
#: lib/applicationeditform.php:207
#, fuzzy
msgid "Describe your application"
msgstr "Descrivi il gruppo o l'argomento"
msgstr "Descrivi l'applicazione"
#: lib/applicationeditform.php:216
#, fuzzy
msgid "Source URL"
msgstr "Sorgenti"
msgstr "URL sorgente"
#: lib/applicationeditform.php:218
#, fuzzy
msgid "URL of the homepage of this application"
msgstr "URL della pagina web, blog del gruppo o l'argomento"
msgstr "URL della pagina web di questa applicazione"
#: lib/applicationeditform.php:224
msgid "Organization responsible for this application"
msgstr ""
msgstr "Organizzazione responsabile per questa applicazione"
#: lib/applicationeditform.php:230
#, fuzzy
msgid "URL for the homepage of the organization"
msgstr "URL della pagina web, blog del gruppo o l'argomento"
msgstr "URL della pagina web dell'organizzazione"
#: lib/applicationeditform.php:236
msgid "URL to redirect to after authentication"
msgstr ""
msgstr "URL verso cui redirigere dopo l'autenticazione"
#: lib/applicationeditform.php:258
msgid "Browser"
msgstr ""
msgstr "Browser"
#: lib/applicationeditform.php:274
msgid "Desktop"
msgstr ""
msgstr "Desktop"
#: lib/applicationeditform.php:275
msgid "Type of application, browser or desktop"
msgstr ""
msgstr "Tipo di applicazione, browser o desktop"
#: lib/applicationeditform.php:297
msgid "Read-only"
msgstr ""
msgstr "Sola lettura"
#: lib/applicationeditform.php:315
msgid "Read-write"
msgstr ""
msgstr "Lettura-scrittura"
#: lib/applicationeditform.php:316
msgid "Default access for this application: read-only, or read-write"
msgstr ""
"Accesso predefinito per questa applicazione, sola lettura o lettura-scrittura"
#: lib/applicationlist.php:154
#, fuzzy
msgid "Revoke"
msgstr "Rimuovi"
msgstr "Revoca"
#: lib/attachmentlist.php:87
msgid "Attachments"
@ -5255,13 +5215,12 @@ msgid "Updates by SMS"
msgstr "Messaggi via SMS"
#: lib/connectsettingsaction.php:120
#, fuzzy
msgid "Connections"
msgstr "Connetti"
msgstr "Connessioni"
#: lib/connectsettingsaction.php:121
msgid "Authorized connected applications"
msgstr ""
msgstr "Applicazioni collegate autorizzate"
#: lib/dberroraction.php:60
msgid "Database error"
@ -5454,9 +5413,9 @@ msgid "[%s]"
msgstr "[%s]"
#: lib/jabber.php:400
#, fuzzy, php-format
#, php-format
msgid "Unknown inbox source %d."
msgstr "Lingua \"%s\" sconosciuta."
msgstr "Sorgente casella in arrivo %d sconosciuta."
#: lib/joinform.php:114
msgid "Join"
@ -5844,12 +5803,10 @@ msgid "Attach a file"
msgstr "Allega un file"
#: lib/noticeform.php:212
#, fuzzy
msgid "Share my location"
msgstr "Condividi la mia posizione"
#: lib/noticeform.php:215
#, fuzzy
msgid "Do not share my location"
msgstr "Non condividere la mia posizione"
@ -5858,6 +5815,8 @@ msgid ""
"Sorry, retrieving your geo location is taking longer than expected, please "
"try again later"
msgstr ""
"Il recupero della tua posizione geografica sta impiegando più tempo del "
"previsto. Riprova più tardi."
#: lib/noticelist.php:428
#, php-format
@ -6043,7 +6002,7 @@ msgstr "Ripeti questo messaggio"
#: lib/router.php:665
msgid "No single user defined for single-user mode."
msgstr ""
msgstr "Nessun utente singolo definito per la modalità single-user."
#: lib/sandboxform.php:67
msgid "Sandbox"
@ -6210,47 +6169,47 @@ msgstr "Messaggio"
msgid "Moderate"
msgstr "Modera"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "pochi secondi fa"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "circa un minuto fa"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "circa %d minuti fa"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "circa un'ora fa"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "circa %d ore fa"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "circa un giorno fa"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "circa %d giorni fa"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "circa un mese fa"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "circa %d mesi fa"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "circa un anno fa"

View File

@ -11,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:30+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:17+0000\n"
"Language-Team: Japanese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ja\n"
"X-Message-Group: out-statusnet\n"
@ -196,7 +196,7 @@ msgstr "%2$s に %1$s と友人からの更新があります!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API メソッドが見つかりません。"
@ -818,7 +818,7 @@ msgstr "このユーザをアンブロックする"
msgid "Yes"
msgstr "Yes"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "このユーザをブロックする"
@ -1582,7 +1582,7 @@ msgstr "ユーザはすでにグループからブロックされています。
msgid "User is not a member of group."
msgstr "ユーザはグループのメンバーではありません。"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "グループからユーザをブロック"
@ -1683,19 +1683,19 @@ msgstr "このグループのユーザのリスト。"
msgid "Admin"
msgstr "管理者"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "ブロック"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "ユーザをグループの管理者にする"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "管理者にする"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "このユーザを管理者にする"
@ -2100,21 +2100,21 @@ msgstr ""
"ユーザ名とパスワードで、ログインしてください。 まだユーザ名を持っていません"
"か? 新しいアカウントを [登録](%%action.register%%)。"
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "管理者だけが別のユーザを管理者にすることができます。"
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s はすでにグループ \"%2$s\" の管理者です。"
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "%1$s の会員資格記録をグループ %2$s 中から取得できません。"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "%1$s をグループ %2$s の管理者にすることはできません"
@ -2316,8 +2316,8 @@ msgstr "内容種別 "
msgid "Only "
msgstr "だけ "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "サポートされていないデータ形式。"
@ -4474,7 +4474,7 @@ msgstr "グループ受信箱を保存する際に問題が発生しました。
msgid "DB error inserting reply: %s"
msgstr "返信を追加する際にデータベースエラー : %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -6108,47 +6108,47 @@ msgstr "メッセージ"
msgid "Moderate"
msgstr "管理"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "数秒前"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "約 1 分前"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "約 %d 分前"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "約 1 時間前"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "約 %d 時間前"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "約 1 日前"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "約 %d 日前"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "約 1 ヵ月前"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "約 %d ヵ月前"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "約 1 年前"

View File

@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:33+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:20+0000\n"
"Language-Team: Korean\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ko\n"
"X-Message-Group: out-statusnet\n"
@ -195,7 +195,7 @@ msgstr "%1$s 및 %2$s에 있는 친구들의 업데이트!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "API 메서드를 찾을 수 없습니다."
@ -834,7 +834,7 @@ msgstr "이 사용자를 차단해제합니다."
msgid "Yes"
msgstr "네, 맞습니다."
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "이 사용자 차단하기"
@ -1635,7 +1635,7 @@ msgstr "회원이 당신을 차단해왔습니다."
msgid "User is not a member of group."
msgstr "당신은 해당 그룹의 멤버가 아닙니다."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "사용자를 차단합니다."
@ -1740,21 +1740,21 @@ msgstr "이 그룹의 회원리스트"
msgid "Admin"
msgstr "관리자"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "차단하기"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
#, fuzzy
msgid "Make user an admin of the group"
msgstr "관리자만 그룹을 편집할 수 있습니다."
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
#, fuzzy
msgid "Make Admin"
msgstr "관리자"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2146,21 +2146,21 @@ msgstr ""
"action.register%%) 새 계정을 생성 또는 [OpenID](%%action.openidlogin%%)를 사"
"용해 보세요."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "회원이 당신을 차단해왔습니다."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "그룹 %s에서 %s 사용자를 제거할 수 없습니다."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "관리자만 그룹을 편집할 수 있습니다."
@ -2365,8 +2365,8 @@ msgstr "연결"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "지원하는 형식의 데이터가 아닙니다."
@ -4517,7 +4517,7 @@ msgstr "통지를 저장하는데 문제가 발생했습니다."
msgid "DB error inserting reply: %s"
msgstr "답신을 추가 할 때에 데이타베이스 에러 : %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -6117,47 +6117,47 @@ msgstr "메시지"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "몇 초 전"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "1분 전"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "%d분 전"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "1시간 전"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "%d시간 전"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "하루 전"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "%d일 전"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "1달 전"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "%d달 전"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "1년 전"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:36+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:23+0000\n"
"Language-Team: Macedonian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: out-statusnet\n"
@ -199,7 +199,7 @@ msgstr "Подновувања од %1$s и пријатели на %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API методот не е пронајден."
@ -828,7 +828,7 @@ msgstr "Не го блокирај корисников"
msgid "Yes"
msgstr "Да"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Блокирај го корисников"
@ -1591,7 +1591,7 @@ msgstr "Корисникот е веќе блокиран од оваа груп
msgid "User is not a member of group."
msgstr "Корисникот не членува во групата."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Блокирај корисник од група"
@ -1695,19 +1695,19 @@ msgstr "Листа на корисниците на овааг група."
msgid "Admin"
msgstr "Администратор"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Блокирај"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Направи го корисникот администратор на групата"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Направи го/ја администратор"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Направи го корисникот администратор"
@ -2093,7 +2093,8 @@ msgstr "Запамети ме"
#: actions/login.php:237 actions/register.php:480
msgid "Automatically login in the future; not for shared computers!"
msgstr ""
"Следниот пат најавете се автоматски; не за компјутери кои ги делите со други!"
"Следниот пат најавете се автоматски; не е за компјутери кои ги делите со "
"други!"
#: actions/login.php:247
msgid "Lost or forgotten password?"
@ -2116,21 +2117,21 @@ msgstr ""
"Најавете се со Вашето корисничко име и лозинка. Сè уште немате корисничко "
"име? [Регистрирајте](%%action.register%%) нова сметка."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Само администратор може да направи друг корисник администратор."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s веќе е администратор на групата „%2$s“."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Не можам да добијам евиденција за членство на %1$s во групата %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Не можам да го направам корисникот %1$s администратор на групата %2$s."
@ -2334,8 +2335,8 @@ msgstr "тип на содржини "
msgid "Only "
msgstr "Само "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Ова не е поддржан формат на податотека."
@ -4514,7 +4515,7 @@ msgstr "Проблем при зачувувањето на групното п
msgid "DB error inserting reply: %s"
msgstr "Одговор од внесот во базата: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -5251,8 +5252,8 @@ msgstr "Подигни податотека"
msgid ""
"You can upload your personal background image. The maximum file size is 2MB."
msgstr ""
"Не можете да подигнете личната позадинска слика. Максималната дозволена "
"големина изнесува 2МБ."
"Можете да подигнете лична позадинска слика. Максималната дозволена големина "
"изнесува 2МБ."
#: lib/designsettings.php:418
msgid "Design defaults restored."
@ -6193,47 +6194,47 @@ msgstr "Порака"
msgid "Moderate"
msgstr "Модерирај"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "пред неколку секунди"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "пред една минута"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "пред %d минути"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "пред еден час"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "пред %d часа"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "пред еден ден"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "пред %d денови"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "пред еден месец"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "пред %d месеца"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "пред една година"

View File

@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:39+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:26+0000\n"
"Language-Team: Norwegian (bokmål)\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: no\n"
"X-Message-Group: out-statusnet\n"
@ -194,7 +194,7 @@ msgstr "Oppdateringer fra %1$s og venner på %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "API-metode ikke funnet!"
@ -812,7 +812,7 @@ msgstr "Ikke blokker denne brukeren"
msgid "Yes"
msgstr "Ja"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Blokker denne brukeren"
@ -1576,7 +1576,7 @@ msgstr "Du er allerede logget inn!"
msgid "User is not a member of group."
msgstr ""
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr ""
@ -1673,19 +1673,19 @@ msgstr "En liste over brukerne i denne gruppen."
msgid "Admin"
msgstr "Administrator"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blokkér"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Gjør brukeren til en administrator for gruppen"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Gjør til administrator"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Gjør denne brukeren til administrator"
@ -2062,21 +2062,21 @@ msgid ""
"(%%action.register%%) a new account."
msgstr ""
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Du er allerede logget inn!"
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Klarte ikke å oppdatere bruker."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Gjør brukeren til en administrator for gruppen"
@ -2271,8 +2271,8 @@ msgstr "innholdstype "
msgid "Only "
msgstr "Bare "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4365,7 +4365,7 @@ msgstr ""
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -5952,47 +5952,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "noen få sekunder siden"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "omtrent ett minutt siden"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "omtrent %d minutter siden"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "omtrent én time siden"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "omtrent %d timer siden"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "omtrent én dag siden"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "omtrent %d dager siden"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "omtrent én måned siden"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "omtrent %d måneder siden"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "omtrent ett år siden"

View File

@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:45+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:32+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: out-statusnet\n"
@ -198,7 +198,7 @@ msgstr "Updates van %1$s en vrienden op %2$s."
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "De API-functie is niet aangetroffen."
@ -837,7 +837,7 @@ msgstr "Gebruiker niet blokkeren"
msgid "Yes"
msgstr "Ja"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Deze gebruiker blokkeren"
@ -1605,7 +1605,7 @@ msgstr "Deze gebruiker is al de toegang tot de groep ontzegd."
msgid "User is not a member of group."
msgstr "De gebruiker is geen lid van de groep."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Gebruiker toegang tot de groep blokkeren"
@ -1709,19 +1709,19 @@ msgstr "Ledenlijst van deze groep"
msgid "Admin"
msgstr "Beheerder"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blokkeren"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Deze gebruiker groepsbeheerder maken"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Beheerder maken"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Deze gebruiker beheerder maken"
@ -2133,21 +2133,21 @@ msgstr ""
"Meld u aan met uw gebruikersnaam en wachtwoord. Hebt u nog geen "
"gebruikersnaam? [Registreer een nieuwe gebruiker](%%action.register%%)."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Alleen beheerders kunnen andere gebruikers beheerder maken."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s is al beheerder van de groep \"%2$s\""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Het was niet mogelijk te bevestigen dat %1$s lid is van de groep %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Het is niet mogelijk %1$s beheerder te maken van de groep %2$s."
@ -2354,8 +2354,8 @@ msgstr "inhoudstype "
msgid "Only "
msgstr "Alleen "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Geen ondersteund gegevensformaat."
@ -4423,9 +4423,9 @@ msgid ""
"for more details. "
msgstr ""
"Dit programma wordt verspreid in de hoop dat het bruikbaar is, maar ZONDER "
"ENIGE GARANTIE; zonder zelfde impliciete garantie van VERMARKTBAARHEID of "
"GESCHIKTHEID VOOR EEN SPECIFIEK DOEL. Zie de GNU Affero General Public "
"License voor meer details. "
"ENIGE GARANTIE; zelfs zonder de impliciete garantie van VERKOOPBAARHEID of "
"GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU Affero General Public License "
"voor meer details. "
#: actions/version.php:180
#, php-format
@ -4551,7 +4551,7 @@ msgid "DB error inserting reply: %s"
msgstr ""
"Er is een databasefout opgetreden bij het invoegen van het antwoord: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -6237,47 +6237,47 @@ msgstr "Bericht"
msgid "Moderate"
msgstr "Modereren"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "een paar seconden geleden"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "ongeveer een minuut geleden"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "ongeveer %d minuten geleden"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "ongeveer een uur geleden"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "ongeveer %d uur geleden"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "ongeveer een dag geleden"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "ongeveer %d dagen geleden"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "ongeveer een maand geleden"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "ongeveer %d maanden geleden"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "ongeveer een jaar geleden"

View File

@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:42+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:29+0000\n"
"Language-Team: Norwegian Nynorsk\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nn\n"
"X-Message-Group: out-statusnet\n"
@ -195,7 +195,7 @@ msgstr "Oppdateringar frå %1$s og vener på %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Fann ikkje API-metode."
@ -832,7 +832,7 @@ msgstr "Lås opp brukaren"
msgid "Yes"
msgstr "Jau"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Blokkér denne brukaren"
@ -1635,7 +1635,7 @@ msgstr "Brukar har blokkert deg."
msgid "User is not a member of group."
msgstr "Du er ikkje medlem av den gruppa."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Blokker brukaren"
@ -1740,21 +1740,21 @@ msgstr "Ei liste over brukarane i denne gruppa."
msgid "Admin"
msgstr "Administrator"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blokkér"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
#, fuzzy
msgid "Make user an admin of the group"
msgstr "Du må være administrator for å redigere gruppa"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
#, fuzzy
msgid "Make Admin"
msgstr "Administrator"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2149,21 +2149,21 @@ msgstr ""
"%action.register%%) ein ny konto, eller prøv [OpenID](%%action.openidlogin%"
"%)."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Brukar har blokkert deg."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Kunne ikkje fjerne %s fra %s gruppa "
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Du må være administrator for å redigere gruppa"
@ -2370,8 +2370,8 @@ msgstr "Kopla til"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Ikkje eit støtta dataformat."
@ -4534,7 +4534,7 @@ msgstr "Eit problem oppstod ved lagring av notis."
msgid "DB error inserting reply: %s"
msgstr "Databasefeil, kan ikkje lagra svar: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -6144,47 +6144,47 @@ msgstr "Melding"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "eit par sekund sidan"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "omtrent eitt minutt sidan"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "~%d minutt sidan"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "omtrent ein time sidan"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "~%d timar sidan"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "omtrent ein dag sidan"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "~%d dagar sidan"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "omtrent ein månad sidan"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "~%d månadar sidan"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "omtrent eitt år sidan"

View File

@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:48+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:35+0000\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pl\n"
"X-Message-Group: out-statusnet\n"
@ -201,7 +201,7 @@ msgstr "Aktualizacje z %1$s i przyjaciół na %2$s."
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "Nie odnaleziono metody API."
@ -823,7 +823,7 @@ msgstr "Nie blokuj tego użytkownika"
msgid "Yes"
msgstr "Tak"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Zablokuj tego użytkownika"
@ -1581,7 +1581,7 @@ msgstr "Użytkownik został już zablokował w grupie."
msgid "User is not a member of group."
msgstr "Użytkownik nie jest członkiem grupy."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Zablokuj użytkownika w grupie"
@ -1679,19 +1679,19 @@ msgstr "Lista użytkowników znajdujących się w tej grupie."
msgid "Admin"
msgstr "Administrator"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Zablokuj"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Uczyń użytkownika administratorem grupy"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Uczyń administratorem"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Uczyń tego użytkownika administratorem"
@ -2099,21 +2099,21 @@ msgstr ""
"Zaloguj się za pomocą nazwy użytkownika i hasła. Nie masz ich jeszcze? "
"[Zarejestruj](%%action.register%%) nowe konto."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Tylko administrator może uczynić innego użytkownika administratorem."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Użytkownika %1$s jest już administratorem grupy \"%2$s\"."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Nie można uzyskać wpisu członkostwa użytkownika %1$s w grupie %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Nie można uczynić %1$s administratorem grupy %2$s."
@ -2314,8 +2314,8 @@ msgstr "typ zawartości "
msgid "Only "
msgstr "Tylko "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "To nie jest obsługiwany format danych."
@ -4484,7 +4484,7 @@ msgstr "Problem podczas zapisywania skrzynki odbiorczej grupy."
msgid "DB error inserting reply: %s"
msgstr "Błąd bazy danych podczas wprowadzania odpowiedzi: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -6163,47 +6163,47 @@ msgstr "Wiadomość"
msgid "Moderate"
msgstr "Moderuj"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "kilka sekund temu"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "około minutę temu"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "około %d minut temu"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "około godzinę temu"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "około %d godzin temu"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "blisko dzień temu"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "około %d dni temu"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "około miesiąc temu"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "około %d miesięcy temu"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "około rok temu"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:51+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:39+0000\n"
"Language-Team: Portuguese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt\n"
"X-Message-Group: out-statusnet\n"
@ -198,7 +198,7 @@ msgstr "Actualizações de %1$s e amigos no %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "Método da API não encontrado."
@ -821,7 +821,7 @@ msgstr "Não bloquear este utilizador"
msgid "Yes"
msgstr "Sim"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Bloquear este utilizador"
@ -1604,7 +1604,7 @@ msgstr "Acesso do utilizador ao grupo já foi bloqueado."
msgid "User is not a member of group."
msgstr "Utilizador não é membro do grupo."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Bloquear acesso do utilizador ao grupo"
@ -1706,19 +1706,19 @@ msgstr "Uma lista dos utilizadores neste grupo."
msgid "Admin"
msgstr "Gestor"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Bloquear"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Tornar utilizador o gestor do grupo"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Tornar Gestor"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Tornar este utilizador um gestor"
@ -2126,21 +2126,21 @@ msgstr ""
"Entrar com o seu nome de utilizador e senha. Ainda não está registado? "
"[Registe](%%action.register%%) uma conta."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Só um gestor pode tornar outro utilizador num gestor."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s já é um administrador do grupo \"%2$s\"."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Não existe registo de %1$s ter entrado no grupo %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Não é possível tornar %1$s administrador do grupo %2$s."
@ -2347,8 +2347,8 @@ msgstr "tipo de conteúdo "
msgid "Only "
msgstr "Apenas "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Formato de dados não suportado."
@ -4530,7 +4530,7 @@ msgstr "Problema na gravação da nota."
msgid "DB error inserting reply: %s"
msgstr "Ocorreu um erro na base de dados ao inserir a resposta: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -6203,47 +6203,47 @@ msgstr "Mensagem"
msgid "Moderate"
msgstr "Moderar"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "há alguns segundos"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "há cerca de um minuto"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "há cerca de %d minutos"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "há cerca de uma hora"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "há cerca de %d horas"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "há cerca de um dia"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "há cerca de %d dias"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "há cerca de um mês"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "há cerca de %d meses"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "há cerca de um ano"

View File

@ -2,6 +2,7 @@
#
# Author@translatewiki.net: Aracnus
# Author@translatewiki.net: Ewout
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Vuln
# --
# This file is distributed under the same license as the StatusNet package.
@ -10,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:54+0000\n"
"POT-Creation-Date: 2010-02-14 20:05+0000\n"
"PO-Revision-Date: 2010-02-14 20:07:20+0000\n"
"Language-Team: Brazilian Portuguese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62476); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt-br\n"
"X-Message-Group: out-statusnet\n"
@ -26,14 +27,12 @@ msgid "Access"
msgstr "Acesso"
#: actions/accessadminpanel.php:65
#, fuzzy
msgid "Site access settings"
msgstr "Salvar as configurações do site"
msgstr "Configurações de acesso ao site"
#: actions/accessadminpanel.php:158
#, fuzzy
msgid "Registration"
msgstr "Registrar-se"
msgstr "Registro"
#: actions/accessadminpanel.php:161
msgid "Private"
@ -72,9 +71,8 @@ msgid "Save"
msgstr "Salvar"
#: actions/accessadminpanel.php:189
#, fuzzy
msgid "Save access settings"
msgstr "Salvar as configurações do site"
msgstr "Salvar as configurações de acesso"
#: actions/all.php:63 actions/public.php:97 actions/replies.php:92
#: actions/showfavorites.php:137 actions/tag.php:51
@ -174,8 +172,8 @@ msgstr ""
msgid "You and friends"
msgstr "Você e amigos"
#: actions/allrss.php:119 actions/apitimelinefriends.php:121
#: actions/apitimelinehome.php:122
#: actions/allrss.php:119 actions/apitimelinefriends.php:119
#: actions/apitimelinehome.php:120
#, php-format
msgid "Updates from %1$s and friends on %2$s!"
msgstr "Atualizações de %1$s e amigos no %2$s!"
@ -196,12 +194,12 @@ msgstr "Atualizações de %1$s e amigos no %2$s!"
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:137
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:146 actions/apitimelinefriends.php:155
#: actions/apitimelinegroup.php:150 actions/apitimelinehome.php:156
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelinefavorites.php:183 actions/apitimelinefriends.php:187
#: actions/apitimelinegroup.php:182 actions/apitimelinehome.php:184
#: actions/apitimelinementions.php:175 actions/apitimelinepublic.php:152
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166
#: actions/apitimelineuser.php:194 actions/apiusershow.php:101
msgid "API method not found."
msgstr "O método da API não foi encontrado!"
@ -487,12 +485,11 @@ msgstr "grupos no %s"
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
msgstr "Não foi fornecido nenhum parâmetro oauth_token"
#: actions/apioauthauthorize.php:106
#, fuzzy
msgid "Invalid token."
msgstr "Tamanho inválido."
msgstr "Token inválido."
#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
@ -518,16 +515,14 @@ msgid "Invalid nickname / password!"
msgstr "Nome de usuário e/ou senha inválido(s)!"
#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr ""
"Erro no banco de dados durante a exclusão do aplicativo OAuth do usuário."
"Erro no banco de dados durante a exclusão do usuário da aplicação OAuth."
#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr ""
"Erro no banco de dados durante a inserção do aplicativo OAuth do usuário."
"Erro no banco de dados durante a inserção do usuário da aplicativo OAuth."
#: actions/apioauthauthorize.php:214
#, php-format
@ -539,9 +534,9 @@ msgstr ""
"acesso."
#: actions/apioauthauthorize.php:227
#, fuzzy, php-format
#, php-format
msgid "The request token %s has been denied and revoked."
msgstr "O token de requisição %s foi negado."
msgstr "O token %s solicitado foi negado e revogado."
#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
@ -567,6 +562,10 @@ msgid ""
"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
"give access to your %4$s account to third parties you trust."
msgstr ""
"A aplicação <strong>%1$s</strong> por <strong>%2$s</strong> solicita a "
"permissão para <strong>%3$s</strong> os dados da sua conta %4$s. Você deve "
"fornecer acesso à sua conta %4$s somente para terceiros nos quais você "
"confia."
#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
@ -650,7 +649,7 @@ msgstr "Formato não suportado."
msgid "%1$s / Favorites from %2$s"
msgstr "%1$s / Favoritas de %2$s"
#: actions/apitimelinefavorites.php:120
#: actions/apitimelinefavorites.php:117
#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
msgstr "%1$s marcadas como favoritas por %2$s / %2$s."
@ -661,7 +660,7 @@ msgstr "%1$s marcadas como favoritas por %2$s / %2$s."
msgid "%s timeline"
msgstr "Mensagens de %s"
#: actions/apitimelinegroup.php:117 actions/apitimelineuser.php:126
#: actions/apitimelinegroup.php:114 actions/apitimelineuser.php:126
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
@ -677,12 +676,12 @@ msgstr "%1$s / Mensagens mencionando %2$s"
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr "%1$s mensagens em resposta a mensagens de %2$s / %3$s."
#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
#, php-format
msgid "%s public timeline"
msgstr "Mensagens públicas de %s"
#: actions/apitimelinepublic.php:111 actions/publicrss.php:105
#: actions/apitimelinepublic.php:115 actions/publicrss.php:105
#, php-format
msgid "%s updates from everyone!"
msgstr "%s mensagens de todo mundo!"
@ -692,7 +691,7 @@ msgstr "%s mensagens de todo mundo!"
msgid "Repeated to %s"
msgstr "Repetida para %s"
#: actions/apitimelineretweetsofme.php:112
#: actions/apitimelineretweetsofme.php:114
#, php-format
msgid "Repeats of %s"
msgstr "Repetições de %s"
@ -702,7 +701,7 @@ msgstr "Repetições de %s"
msgid "Notices tagged with %s"
msgstr "Mensagens etiquetadas como %s"
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
#: actions/apitimelinetag.php:104 actions/tagrss.php:64
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Mensagens etiquetadas como %1$s no %2$s!"
@ -831,7 +830,7 @@ msgstr "Não bloquear este usuário"
msgid "Yes"
msgstr "Sim"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Bloquear este usuário"
@ -932,14 +931,12 @@ msgid "Notices"
msgstr "Mensagens"
#: actions/deleteapplication.php:63
#, fuzzy
msgid "You must be logged in to delete an application."
msgstr "Você precisa estar autenticado para editar uma aplicação."
msgstr "Você precisa estar autenticado para excluir uma aplicação."
#: actions/deleteapplication.php:71
#, fuzzy
msgid "Application not found."
msgstr "Informação da aplicação"
msgstr "A aplicação não foi encontrada."
#: actions/deleteapplication.php:78 actions/editapplication.php:77
#: actions/showapplication.php:94
@ -953,29 +950,26 @@ msgid "There was a problem with your session token."
msgstr "Ocorreu um problema com o seu token de sessão."
#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
#, fuzzy
msgid "Delete application"
msgstr "Editar a aplicação"
msgstr "Excluir a aplicação"
#: actions/deleteapplication.php:149
#, fuzzy
msgid ""
"Are you sure you want to delete this application? This will clear all data "
"about the application from the database, including all existing user "
"connections."
msgstr ""
"Tem certeza que deseja excluir este usuário? Isso irá eliminar todos os "
"dados deste usuário do banco de dados, sem cópia de segurança."
"Tem certeza que deseja excluir esta aplicação? Isso eliminará todos os dados "
"desta aplicação do banco de dados, incluindo todas as conexões existentes "
"com os usuários."
#: actions/deleteapplication.php:156
#, fuzzy
msgid "Do not delete this application"
msgstr "Não excluir esta mensagem."
msgstr "Não excluir esta aplicação"
#: actions/deleteapplication.php:160
#, fuzzy
msgid "Delete this application"
msgstr "Ícone para esta aplicação"
msgstr "Excluir esta aplicação"
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
@ -1032,8 +1026,8 @@ msgid ""
"Are you sure you want to delete this user? This will clear all data about "
"the user from the database, without a backup."
msgstr ""
"Tem certeza que deseja excluir este usuário? Isso irá eliminar todos os "
"dados deste usuário do banco de dados, sem cópia de segurança."
"Tem certeza que deseja excluir este usuário? Isso eliminará todos os dados "
"deste usuário do banco de dados, sem cópia de segurança."
#: actions/deleteuser.php:148 lib/deleteuserform.php:77
msgid "Delete this user"
@ -1156,12 +1150,11 @@ msgid "Add to favorites"
msgstr "Adicionar às favoritas"
#: actions/doc.php:158
#, fuzzy, php-format
#, php-format
msgid "No such document \"%s\""
msgstr "Esse documento não existe."
msgstr "O documento \"%s\" não existe"
#: actions/editapplication.php:54
#, fuzzy
msgid "Edit Application"
msgstr "Editar a aplicação"
@ -1187,9 +1180,8 @@ msgid "Name is too long (max 255 chars)."
msgstr "O nome é muito extenso (máx. 255 caracteres)."
#: actions/editapplication.php:183 actions/newapplication.php:162
#, fuzzy
msgid "Name already in use. Try another one."
msgstr "Esta identificação já está em uso. Tente outro."
msgstr "Este nome já está em uso. Tente outro."
#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
@ -1254,7 +1246,7 @@ msgstr "descrição muito extensa (máximo %d caracteres)."
msgid "Could not update group."
msgstr "Não foi possível atualizar o grupo."
#: actions/editgroup.php:259 classes/User_group.php:390
#: actions/editgroup.php:259 classes/User_group.php:423
msgid "Could not create aliases."
msgstr "Não foi possível criar os apelidos."
@ -1603,7 +1595,7 @@ msgstr "O usuário já está bloqueado no grupo."
msgid "User is not a member of group."
msgstr "O usuário não é um membro do grupo"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Bloquear o usuário no grupo"
@ -1706,19 +1698,19 @@ msgstr "Uma lista dos usuários deste grupo."
msgid "Admin"
msgstr "Admin"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Bloquear"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Tornar o usuário um administrador do grupo"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Tornar administrador"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Torna este usuário um administrador"
@ -1901,9 +1893,9 @@ msgid "That is not your Jabber ID."
msgstr "Essa não é sua ID do Jabber."
#: actions/inbox.php:59
#, fuzzy, php-format
#, php-format
msgid "Inbox for %1$s - page %2$d"
msgstr "Recebidas por %s"
msgstr "Recebidas por %s - pág. %2$d"
#: actions/inbox.php:62
#, php-format
@ -2129,23 +2121,23 @@ msgstr ""
"Digite seu nome de usuário e senha. Ainda não possui um usuário? [Registre](%"
"%action.register%%) uma nova conta."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
"Somente um administrador pode dar privilégios de administração para outro "
"usuário."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s já é um administrador do grupo \"%2$s\"."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Não foi possível obter o registro de membro de %1$s no grupo %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Não foi possível tornar %1$s um administrador do grupo %2$s."
@ -2155,7 +2147,6 @@ msgid "No current status"
msgstr "Nenhuma mensagem atual"
#: actions/newapplication.php:52
#, fuzzy
msgid "New Application"
msgstr "Nova aplicação"
@ -2351,8 +2342,8 @@ msgstr "tipo de conteúdo "
msgid "Only "
msgstr "Apenas "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Não é um formato de dados suportado."
@ -2417,9 +2408,9 @@ msgid "Login token expired."
msgstr "O token de autenticação expirou."
#: actions/outbox.php:58
#, fuzzy, php-format
#, php-format
msgid "Outbox for %1$s - page %2$d"
msgstr "Enviadas de %s"
msgstr "Enviadas por %s - pág. %2$d"
#: actions/outbox.php:61
#, php-format
@ -4433,7 +4424,7 @@ msgstr "Versão"
#: actions/version.php:197
msgid "Author(s)"
msgstr "Author(es)"
msgstr "Autor(es)"
#: classes/File.php:144
#, php-format
@ -4529,7 +4520,7 @@ msgstr "Problema no salvamento da mensagem."
msgid "DB error inserting reply: %s"
msgstr "Erro no banco de dados na inserção da reposta: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1271
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -4539,11 +4530,11 @@ msgstr "RT @%1$s %2$s"
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bem vindo(a) a %1$s, @%2$s!"
#: classes/User_group.php:380
#: classes/User_group.php:413
msgid "Could not create group."
msgstr "Não foi possível criar o grupo."
#: classes/User_group.php:409
#: classes/User_group.php:442
msgid "Could not set group membership."
msgstr "Não foi possível configurar a associação ao grupo."
@ -6205,47 +6196,47 @@ msgstr "Mensagem"
msgid "Moderate"
msgstr "Moderar"
#: lib/util.php:867
#: lib/util.php:871
msgid "a few seconds ago"
msgstr "alguns segundos atrás"
#: lib/util.php:869
#: lib/util.php:873
msgid "about a minute ago"
msgstr "cerca de 1 minuto atrás"
#: lib/util.php:871
#: lib/util.php:875
#, php-format
msgid "about %d minutes ago"
msgstr "cerca de %d minutos atrás"
#: lib/util.php:873
#: lib/util.php:877
msgid "about an hour ago"
msgstr "cerca de 1 hora atrás"
#: lib/util.php:875
#: lib/util.php:879
#, php-format
msgid "about %d hours ago"
msgstr "cerca de %d horas atrás"
#: lib/util.php:877
#: lib/util.php:881
msgid "about a day ago"
msgstr "cerca de 1 dia atrás"
#: lib/util.php:879
#: lib/util.php:883
#, php-format
msgid "about %d days ago"
msgstr "cerca de %d dias atrás"
#: lib/util.php:881
#: lib/util.php:885
msgid "about a month ago"
msgstr "cerca de 1 mês atrás"
#: lib/util.php:883
#: lib/util.php:887
#, php-format
msgid "about %d months ago"
msgstr "cerca de %d meses atrás"
#: lib/util.php:885
#: lib/util.php:889
msgid "about a year ago"
msgstr "cerca de 1 ano atrás"

View File

@ -12,12 +12,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:54:57+0000\n"
"POT-Creation-Date: 2010-02-14 20:05+0000\n"
"PO-Revision-Date: 2010-02-14 20:07:23+0000\n"
"Language-Team: Russian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62476); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
"X-Message-Group: out-statusnet\n"
@ -173,8 +173,8 @@ msgstr ""
msgid "You and friends"
msgstr "Вы и друзья"
#: actions/allrss.php:119 actions/apitimelinefriends.php:121
#: actions/apitimelinehome.php:122
#: actions/allrss.php:119 actions/apitimelinefriends.php:119
#: actions/apitimelinehome.php:120
#, php-format
msgid "Updates from %1$s and friends on %2$s!"
msgstr "Обновлено от %1$s и его друзей на %2$s!"
@ -195,12 +195,12 @@ msgstr "Обновлено от %1$s и его друзей на %2$s!"
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:137
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:146 actions/apitimelinefriends.php:155
#: actions/apitimelinegroup.php:150 actions/apitimelinehome.php:156
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelinefavorites.php:183 actions/apitimelinefriends.php:187
#: actions/apitimelinegroup.php:182 actions/apitimelinehome.php:184
#: actions/apitimelinementions.php:175 actions/apitimelinepublic.php:152
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166
#: actions/apitimelineuser.php:194 actions/apiusershow.php:101
msgid "API method not found."
msgstr "Метод API не найден."
@ -647,7 +647,7 @@ msgstr "Неподдерживаемый формат."
msgid "%1$s / Favorites from %2$s"
msgstr "%1$s / Любимое от %2$s"
#: actions/apitimelinefavorites.php:120
#: actions/apitimelinefavorites.php:117
#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
msgstr "Обновления %1$s, отмеченные как любимые %2$s / %2$s."
@ -658,7 +658,7 @@ msgstr "Обновления %1$s, отмеченные как любимые %2
msgid "%s timeline"
msgstr "Лента %s"
#: actions/apitimelinegroup.php:117 actions/apitimelineuser.php:126
#: actions/apitimelinegroup.php:114 actions/apitimelineuser.php:126
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
@ -674,12 +674,12 @@ msgstr "%1$s / Обновления, упоминающие %2$s"
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr "%1$s обновил этот ответ на сообщение: %2$s / %3$s."
#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
#, php-format
msgid "%s public timeline"
msgstr "Общая лента %s"
#: actions/apitimelinepublic.php:111 actions/publicrss.php:105
#: actions/apitimelinepublic.php:115 actions/publicrss.php:105
#, php-format
msgid "%s updates from everyone!"
msgstr "Обновления %s от всех!"
@ -689,7 +689,7 @@ msgstr "Обновления %s от всех!"
msgid "Repeated to %s"
msgstr "Повторено для %s"
#: actions/apitimelineretweetsofme.php:112
#: actions/apitimelineretweetsofme.php:114
#, php-format
msgid "Repeats of %s"
msgstr "Повторы за %s"
@ -699,7 +699,7 @@ msgstr "Повторы за %s"
msgid "Notices tagged with %s"
msgstr "Записи с тегом %s"
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
#: actions/apitimelinetag.php:104 actions/tagrss.php:64
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Обновления с тегом %1$s на %2$s!"
@ -827,7 +827,7 @@ msgstr "Не блокировать этого пользователя"
msgid "Yes"
msgstr "Да"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Заблокировать пользователя."
@ -1243,7 +1243,7 @@ msgstr "Слишком длинное описание (максимум %d си
msgid "Could not update group."
msgstr "Не удаётся обновить информацию о группе."
#: actions/editgroup.php:259 classes/User_group.php:390
#: actions/editgroup.php:259 classes/User_group.php:423
msgid "Could not create aliases."
msgstr "Не удаётся создать алиасы."
@ -1597,7 +1597,7 @@ msgstr "Пользователь уже заблокирован из групп
msgid "User is not a member of group."
msgstr "Пользователь не является членом этой группы."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Заблокировать пользователя из группы."
@ -1699,19 +1699,19 @@ msgstr "Список пользователей, являющихся члена
msgid "Admin"
msgstr "Настройки"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Блокировать"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Сделать пользователя администратором группы"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Сделать администратором"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Сделать этого пользователя администратором"
@ -1743,7 +1743,7 @@ msgstr ""
"общими интересами. После присоединения к группе и вы сможете отправлять "
"сообщения до всех её участников, используя команду «!имягруппы». Не видите "
"группу, которая вас интересует? Попробуйте [найти её](%%%%action.groupsearch%"
"%%%) или [создайте собственную!](%%%%action.newgroup%%%%)"
"%%%) или [создайте собственную](%%%%action.newgroup%%%%)!"
#: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
msgid "Create a new group"
@ -2119,22 +2119,22 @@ msgstr ""
"Вход с вашим логином и паролем. Нет аккаунта? [Зарегистрируйте](%%action."
"register%%) новый аккаунт."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
"Только администратор может сделать другого пользователя администратором."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s уже является администратором группы «%2$s»."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Не удаётся получить запись принадлежности для %1$s к группе %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Невозможно сделать %1$s администратором группы %2$s."
@ -2334,8 +2334,8 @@ msgstr "тип содержимого "
msgid "Only "
msgstr "Только "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Неподдерживаемый формат данных."
@ -4504,7 +4504,7 @@ msgstr "Проблемы с сохранением входящих сообще
msgid "DB error inserting reply: %s"
msgstr "Ошибка баз данных при вставке ответа для %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1271
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -4514,11 +4514,11 @@ msgstr "RT @%1$s %2$s"
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добро пожаловать на %1$s, @%2$s!"
#: classes/User_group.php:380
#: classes/User_group.php:413
msgid "Could not create group."
msgstr "Не удаётся создать группу."
#: classes/User_group.php:409
#: classes/User_group.php:442
msgid "Could not set group membership."
msgstr "Не удаётся назначить членство в группе."
@ -6179,47 +6179,47 @@ msgstr "Сообщение"
msgid "Moderate"
msgstr "Модерировать"
#: lib/util.php:867
#: lib/util.php:871
msgid "a few seconds ago"
msgstr "пару секунд назад"
#: lib/util.php:869
#: lib/util.php:873
msgid "about a minute ago"
msgstr "около минуты назад"
#: lib/util.php:871
#: lib/util.php:875
#, php-format
msgid "about %d minutes ago"
msgstr "около %d минут(ы) назад"
#: lib/util.php:873
#: lib/util.php:877
msgid "about an hour ago"
msgstr "около часа назад"
#: lib/util.php:875
#: lib/util.php:879
#, php-format
msgid "about %d hours ago"
msgstr "около %d часа(ов) назад"
#: lib/util.php:877
#: lib/util.php:881
msgid "about a day ago"
msgstr "около дня назад"
#: lib/util.php:879
#: lib/util.php:883
#, php-format
msgid "about %d days ago"
msgstr "около %d дня(ей) назад"
#: lib/util.php:881
#: lib/util.php:885
msgid "about a month ago"
msgstr "около месяца назад"
#: lib/util.php:883
#: lib/util.php:887
#, php-format
msgid "about %d months ago"
msgstr "около %d месяца(ев) назад"
#: lib/util.php:885
#: lib/util.php:889
msgid "about a year ago"
msgstr "около года назад"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"POT-Creation-Date: 2010-02-14 20:05+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -158,8 +158,8 @@ msgstr ""
msgid "You and friends"
msgstr ""
#: actions/allrss.php:119 actions/apitimelinefriends.php:121
#: actions/apitimelinehome.php:122
#: actions/allrss.php:119 actions/apitimelinefriends.php:119
#: actions/apitimelinehome.php:120
#, php-format
msgid "Updates from %1$s and friends on %2$s!"
msgstr ""
@ -180,12 +180,12 @@ msgstr ""
#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112
#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:137
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:146 actions/apitimelinefriends.php:155
#: actions/apitimelinegroup.php:150 actions/apitimelinehome.php:156
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelinefavorites.php:183 actions/apitimelinefriends.php:187
#: actions/apitimelinegroup.php:182 actions/apitimelinehome.php:184
#: actions/apitimelinementions.php:175 actions/apitimelinepublic.php:152
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:166
#: actions/apitimelineuser.php:194 actions/apiusershow.php:101
msgid "API method not found."
msgstr ""
@ -618,7 +618,7 @@ msgstr ""
msgid "%1$s / Favorites from %2$s"
msgstr ""
#: actions/apitimelinefavorites.php:120
#: actions/apitimelinefavorites.php:117
#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
msgstr ""
@ -629,7 +629,7 @@ msgstr ""
msgid "%s timeline"
msgstr ""
#: actions/apitimelinegroup.php:117 actions/apitimelineuser.php:126
#: actions/apitimelinegroup.php:114 actions/apitimelineuser.php:126
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
@ -645,12 +645,12 @@ msgstr ""
msgid "%1$s updates that reply to updates from %2$s / %3$s."
msgstr ""
#: actions/apitimelinepublic.php:107 actions/publicrss.php:103
#: actions/apitimelinepublic.php:111 actions/publicrss.php:103
#, php-format
msgid "%s public timeline"
msgstr ""
#: actions/apitimelinepublic.php:111 actions/publicrss.php:105
#: actions/apitimelinepublic.php:115 actions/publicrss.php:105
#, php-format
msgid "%s updates from everyone!"
msgstr ""
@ -660,7 +660,7 @@ msgstr ""
msgid "Repeated to %s"
msgstr ""
#: actions/apitimelineretweetsofme.php:112
#: actions/apitimelineretweetsofme.php:114
#, php-format
msgid "Repeats of %s"
msgstr ""
@ -670,7 +670,7 @@ msgstr ""
msgid "Notices tagged with %s"
msgstr ""
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
#: actions/apitimelinetag.php:104 actions/tagrss.php:64
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
@ -794,7 +794,7 @@ msgstr ""
msgid "Yes"
msgstr ""
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr ""
@ -1201,7 +1201,7 @@ msgstr ""
msgid "Could not update group."
msgstr ""
#: actions/editgroup.php:259 classes/User_group.php:390
#: actions/editgroup.php:259 classes/User_group.php:423
msgid "Could not create aliases."
msgstr ""
@ -1534,7 +1534,7 @@ msgstr ""
msgid "User is not a member of group."
msgstr ""
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr ""
@ -1629,19 +1629,19 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -1989,21 +1989,21 @@ msgid ""
"(%%action.register%%) a new account."
msgstr ""
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr ""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr ""
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr ""
@ -2195,8 +2195,8 @@ msgstr ""
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4214,7 +4214,7 @@ msgstr ""
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1271
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -4224,11 +4224,11 @@ msgstr ""
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
#: classes/User_group.php:380
#: classes/User_group.php:413
msgid "Could not create group."
msgstr ""
#: classes/User_group.php:409
#: classes/User_group.php:442
msgid "Could not set group membership."
msgstr ""
@ -5737,47 +5737,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:871
msgid "a few seconds ago"
msgstr ""
#: lib/util.php:869
msgid "about a minute ago"
msgstr ""
#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
#: lib/util.php:873
msgid "about an hour ago"
msgid "about a minute ago"
msgstr ""
#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgid "about %d minutes ago"
msgstr ""
#: lib/util.php:877
msgid "about a day ago"
msgid "about an hour ago"
msgstr ""
#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgid "about %d hours ago"
msgstr ""
#: lib/util.php:881
msgid "about a month ago"
msgid "about a day ago"
msgstr ""
#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgid "about %d days ago"
msgstr ""
#: lib/util.php:885
msgid "about a month ago"
msgstr ""
#: lib/util.php:887
#, php-format
msgid "about %d months ago"
msgstr ""
#: lib/util.php:889
msgid "about a year ago"
msgstr ""

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:00+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:15:57+0000\n"
"Language-Team: Swedish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: sv\n"
"X-Message-Group: out-statusnet\n"
@ -196,7 +196,7 @@ msgstr "Uppdateringar från %1$s och vänner på %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API-metod hittades inte."
@ -815,7 +815,7 @@ msgstr "Blockera inte denna användare"
msgid "Yes"
msgstr "Ja"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Blockera denna användare"
@ -1577,7 +1577,7 @@ msgstr "Användaren är redan blockerad från grupp."
msgid "User is not a member of group."
msgstr "Användare är inte en gruppmedlem."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Blockera användare från grupp"
@ -1678,19 +1678,19 @@ msgstr "En lista av användarna i denna grupp."
msgid "Admin"
msgstr "Administratör"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Blockera"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Gör användare till en administratör för gruppen"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Gör till administratör"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Gör denna användare till administratör"
@ -2097,21 +2097,21 @@ msgstr ""
"Logga in med ditt användarnamn och lösenord. Har du inget användarnamn ännu? "
"[Registrera](%%action.register%%) ett nytt konto."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "Bara en administratör kan göra en annan användare till administratör."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s är redan en administratör för grupp \"%2$s\"."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Kan inte hämta uppgift om medlemskap för %1$s i grupp %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Kan inte göra %1$s till en administratör för grupp %2$s."
@ -2314,8 +2314,8 @@ msgstr "innehållstyp "
msgid "Only "
msgstr "Bara "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Ett dataformat som inte stödjs"
@ -3548,8 +3548,8 @@ msgid ""
"[StatusNet](http://status.net/) tool. Its members share short messages about "
"their life and interests. "
msgstr ""
"**%s** är en användargrupp på %%%%site.name%%%%, en [mikroblogg](http://en."
"wikipedia.org/wiki/Micro-blogging)tjänst baserad den fria programvaran "
"**%s** är en användargrupp på %%%%site.name%%%%, en [mikroblogg](http://sv."
"wikipedia.org/wiki/Mikroblogg)tjänst baserad den fria programvaran "
"[StatusNet](http://status.net/). Dess medlemmar delar korta meddelande om "
"sina liv och intressen. "
@ -3644,8 +3644,8 @@ msgid ""
"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
"**%s** har ett konto på %%%%site.name%%%%, en [mikroblogg](http://en."
"wikipedia.org/wiki/Micro-blogging)tjänst baserad på den fria programvaran "
"**%s** har ett konto på %%%%site.name%%%%, en [mikroblogg](http://sv."
"wikipedia.org/wiki/Mikroblogg)tjänst baserad på den fria programvaran "
"[StatusNet](http://status.net/). [Gå med nu](%%%%action.register%%%%) för "
"att följa **%s**s notiser och många fler! ([Läs mer](%%%%doc.help%%%%))"
@ -3656,8 +3656,8 @@ msgid ""
"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
"[StatusNet](http://status.net/) tool. "
msgstr ""
"**%s** har ett konto på %%%%site.name%%%%, en [mikroblogg](http://en."
"wikipedia.org/wiki/Micro-blogging)tjänst baserad på den fria programvaran "
"**%s** har ett konto på %%%%site.name%%%%, en [mikroblogg](http://sv."
"wikipedia.org/wiki/Mikroblogg)tjänst baserad på den fria programvaran "
"[StatusNet](http://status.net/). "
#: actions/showstream.php:305
@ -4376,7 +4376,7 @@ msgid ""
"along with this program. If not, see %s."
msgstr ""
"Du bör ha fått en kopia av GNU Affero General Public License tillsammans med "
"detta program. Om inte, se% s."
"detta program. Om inte, se %s."
#: actions/version.php:189
msgid "Plugins"
@ -4483,7 +4483,7 @@ msgstr "Problem med att spara gruppinkorg."
msgid "DB error inserting reply: %s"
msgstr "Databasfel vid infogning av svar: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -6150,47 +6150,47 @@ msgstr "Meddelande"
msgid "Moderate"
msgstr "Moderera"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "ett par sekunder sedan"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "för nån minut sedan"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "för %d minuter sedan"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "för en timma sedan"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "för %d timmar sedan"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "för en dag sedan"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "för %d dagar sedan"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "för en månad sedan"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "för %d månader sedan"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "för ett år sedan"

View File

@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:04+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:16:03+0000\n"
"Language-Team: Telugu\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: te\n"
"X-Message-Group: out-statusnet\n"
@ -190,7 +190,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "నిర్ధారణ సంకేతం కనబడలేదు."
@ -810,7 +810,7 @@ msgstr "ఈ వాడుకరిని నిరోధించకు"
msgid "Yes"
msgstr "అవును"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "ఈ వాడుకరిని నిరోధించు"
@ -1561,7 +1561,7 @@ msgstr "వాడుకరిని ఇప్పటికే గుంపున
msgid "User is not a member of group."
msgstr "వాడుకరి ఈ గుంపులో సభ్యులు కాదు."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "వాడుకరిని గుంపు నుండి నిరోధించు"
@ -1661,19 +1661,19 @@ msgstr "ఈ గుంపులో వాడుకరులు జాబితా
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "నిరోధించు"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "వాడుకరిని గుంపుకి ఒక నిర్వాహకునిగా చేయి"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "నిర్వాహకున్ని చేయి"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "ఈ వాడుకరిని నిర్వాహకున్ని చేయి"
@ -2033,21 +2033,21 @@ msgstr ""
"మీ వాడుకరిపేరు మరియు సంకేతపదాలతో ప్రవేశించండి. మీకు ఇంకా వాడుకరిపేరు లేదా? కొత్త ఖాతాని [నమోదుచేసుకోండి]"
"(%%action.register%%)."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr "నిర్వాహకులు మాత్రమే మరొక వాడుకరిని నిర్వాహకునిగా చేయగలరు."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s ఇప్పటికే \"%2$s\" గుంపు యొక్క ఒక నిర్వాకులు."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "వాడుకరి %sని %s గుంపు నుండి తొలగించలేకపోయాం"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "%s ఇప్పటికే \"%s\" గుంపు యొక్క ఒక నిర్వాకులు."
@ -2246,8 +2246,8 @@ msgstr "విషయ రకం "
msgid "Only "
msgstr "మాత్రమే "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4330,7 +4330,7 @@ msgstr "సందేశాన్ని భద్రపరచడంలో పొ
msgid "DB error inserting reply: %s"
msgstr ""
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -5924,47 +5924,47 @@ msgstr "సందేశం"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "కొన్ని క్షణాల క్రితం"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "ఓ నిమిషం క్రితం"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "%d నిమిషాల క్రితం"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "ఒక గంట క్రితం"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "%d గంటల క్రితం"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "ఓ రోజు క్రితం"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "%d రోజుల క్రితం"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "ఓ నెల క్రితం"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "%d నెలల క్రితం"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "ఒక సంవత్సరం క్రితం"

View File

@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:08+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:16:08+0000\n"
"Language-Team: Turkish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tr\n"
"X-Message-Group: out-statusnet\n"
@ -196,7 +196,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Onay kodu bulunamadı."
@ -838,7 +838,7 @@ msgstr "Böyle bir kullanıcı yok."
msgid "Yes"
msgstr ""
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
#, fuzzy
msgid "Block this user"
msgstr "Böyle bir kullanıcı yok."
@ -1628,7 +1628,7 @@ msgstr "Kullanıcının profili yok."
msgid "User is not a member of group."
msgstr "Bize o profili yollamadınız"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Böyle bir kullanıcı yok."
@ -1732,19 +1732,19 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2120,21 +2120,21 @@ msgstr ""
"duruyorsunuz, hemen bir [yeni hesap oluşturun](%%action.register%%) ya da "
"[OpenID](%%action.openidlogin%%) ile giriş yapın."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Kullanıcının profili yok."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "OpenID formu yaratılamadı: %s"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Kullanıcının profili yok."
@ -2333,8 +2333,8 @@ msgstr "Bağlan"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4452,7 +4452,7 @@ msgstr "Durum mesajını kaydederken hata oluştu."
msgid "DB error inserting reply: %s"
msgstr "Cevap eklenirken veritabanı hatası: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -6067,47 +6067,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "birkaç saniye önce"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "yaklaşık bir dakika önce"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "yaklaşık %d dakika önce"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "yaklaşık bir saat önce"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "yaklaşık %d saat önce"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "yaklaşık bir gün önce"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "yaklaşık %d gün önce"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "yaklaşık bir ay önce"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "yaklaşık %d ay önce"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "yaklaşık bir yıl önce"

View File

@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:11+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:16:16+0000\n"
"Language-Team: Ukrainian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: out-statusnet\n"
@ -198,7 +198,7 @@ msgstr "Оновлення від %1$s та друзів на %2$s!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
msgid "API method not found."
msgstr "API метод не знайдено."
@ -825,7 +825,7 @@ msgstr "Не блокувати цього користувача"
msgid "Yes"
msgstr "Так"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
msgid "Block this user"
msgstr "Блокувати користувача"
@ -1581,7 +1581,7 @@ msgstr "Користувача заблоковано в цій групі."
msgid "User is not a member of group."
msgstr "Користувач не є учасником групи."
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
msgid "Block user from group"
msgstr "Блокувати користувача в групі"
@ -1683,19 +1683,19 @@ msgstr "Список учасників цієї групи."
msgid "Admin"
msgstr "Адмін"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "Блок"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr "Надати користувачеві права адміністратора"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr "Зробити адміном"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr "Надати цьому користувачеві права адміністратора"
@ -2106,22 +2106,22 @@ msgstr ""
"Увійти викристовуючи ім’я та пароль. Ще не маєте імені користувача? "
"[Зареєструвати](%%action.register%%) новий акаунт."
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
"Лише користувач з правами адміністратора може призначити інших адмінів групи."
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "%1$s вже є адміном у групі «%2$s»."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Не можна отримати запис для %1$s щодо членства у групі %2$s."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Не можна надати %1$s права адміна в групі %2$s."
@ -2323,8 +2323,8 @@ msgstr "тип змісту "
msgid "Only "
msgstr "Лише "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Такий формат даних не підтримується."
@ -4490,7 +4490,7 @@ msgstr "Проблема при збереженні вхідних дописі
msgid "DB error inserting reply: %s"
msgstr "Помилка бази даних при додаванні відповіді: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
@ -6159,47 +6159,47 @@ msgstr "Повідомлення"
msgid "Moderate"
msgstr "Модерувати"
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "мить тому"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "хвилину тому"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "близько %d хвилин тому"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "годину тому"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "близько %d годин тому"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "день тому"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "близько %d днів тому"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "місяць тому"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "близько %d місяців тому"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "рік тому"

View File

@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:14+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:16:19+0000\n"
"Language-Team: Vietnamese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: vi\n"
"X-Message-Group: out-statusnet\n"
@ -195,7 +195,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "Phương thức API không tìm thấy!"
@ -843,7 +843,7 @@ msgstr "Bỏ chặn người dùng này"
msgid "Yes"
msgstr "Có"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
#, fuzzy
msgid "Block this user"
msgstr "Ban user"
@ -1668,7 +1668,7 @@ msgstr "Người dùng không có thông tin."
msgid "User is not a member of group."
msgstr "Bạn chưa cập nhật thông tin riêng"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "Ban user"
@ -1775,20 +1775,20 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
#, fuzzy
msgid "Make user an admin of the group"
msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
#, fuzzy
msgid "Make this user an admin"
msgstr "Kênh mà bạn tham gia"
@ -2200,21 +2200,21 @@ msgstr ""
"khoản, [hãy đăng ký](%%action.register%%) tài khoản mới, hoặc thử đăng nhập "
"bằng [OpenID](%%action.openidlogin%%). "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "Người dùng không có thông tin."
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "Không thể theo bạn này: %s đã có trong danh sách bạn bè của bạn rồi."
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
@ -2422,8 +2422,8 @@ msgstr "Kết nối"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "Không hỗ trợ định dạng dữ liệu này."
@ -4604,7 +4604,7 @@ msgstr "Có lỗi xảy ra khi lưu tin nhắn."
msgid "DB error inserting reply: %s"
msgstr "Lỗi cơ sở dữ liệu khi chèn trả lời: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%s (%s)"
@ -6309,47 +6309,47 @@ msgstr "Tin mới nhất"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "vài giây trước"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "1 phút trước"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "%d phút trước"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "1 giờ trước"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "%d giờ trước"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "1 ngày trước"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "%d ngày trước"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "1 tháng trước"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "%d tháng trước"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "1 năm trước"

View File

@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:17+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:16:22+0000\n"
"Language-Team: Simplified Chinese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: out-statusnet\n"
@ -197,7 +197,7 @@ msgstr "来自%2$s 上 %1$s 和好友的更新!"
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "API 方法未实现!"
@ -837,7 +837,7 @@ msgstr "取消阻止次用户"
msgid "Yes"
msgstr "是"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
#, fuzzy
msgid "Block this user"
msgstr "阻止该用户"
@ -1646,7 +1646,7 @@ msgstr "用户没有个人信息。"
msgid "User is not a member of group."
msgstr "您未告知此个人信息"
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "阻止用户"
@ -1752,21 +1752,21 @@ msgstr "该组成员列表。"
msgid "Admin"
msgstr "admin管理员"
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr "阻止"
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
#, fuzzy
msgid "Make user an admin of the group"
msgstr "只有admin才能编辑这个组"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
#, fuzzy
msgid "Make Admin"
msgstr "admin管理员"
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2155,21 +2155,21 @@ msgstr ""
"请使用你的帐号和密码登入。没有帐号?[注册](%%action.register%%) 一个新帐号, "
"或使用 [OpenID](%%action.openidlogin%%). "
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, fuzzy, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr "用户没有个人信息。"
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "无法订阅用户:未找到。"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "只有admin才能编辑这个组"
@ -2372,8 +2372,8 @@ msgstr "连接"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr "不支持的数据格式。"
@ -4530,7 +4530,7 @@ msgstr "保存通告时出错。"
msgid "DB error inserting reply: %s"
msgstr "添加回复时数据库出错:%s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
@ -6174,47 +6174,47 @@ msgstr "新消息"
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr "几秒前"
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr "一分钟前"
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr "%d 分钟前"
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr "一小时前"
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr "%d 小时前"
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr "一天前"
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr "%d 天前"
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr "一个月前"
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr "%d 个月前"
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr "一年前"

View File

@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-02-05 23:53+0000\n"
"PO-Revision-Date: 2010-02-05 23:55:19+0000\n"
"POT-Creation-Date: 2010-02-11 08:14+0000\n"
"PO-Revision-Date: 2010-02-11 08:16:25+0000\n"
"Language-Team: Traditional Chinese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: MediaWiki 1.16alpha (r62048); Translate extension (2010-01-16)\n"
"X-Generator: MediaWiki 1.16alpha (r62295); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hant\n"
"X-Message-Group: out-statusnet\n"
@ -193,7 +193,7 @@ msgstr ""
#: actions/apitimelinementions.php:151 actions/apitimelinepublic.php:131
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:122 actions/apitimelinetag.php:141
#: actions/apitimelineuser.php:165 actions/apiusershow.php:101
#: actions/apitimelineuser.php:166 actions/apiusershow.php:101
#, fuzzy
msgid "API method not found."
msgstr "確認碼遺失"
@ -828,7 +828,7 @@ msgstr "無此使用者"
msgid "Yes"
msgstr ""
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
#: actions/block.php:144 actions/groupmembers.php:348 lib/blockform.php:80
#, fuzzy
msgid "Block this user"
msgstr "無此使用者"
@ -1612,7 +1612,7 @@ msgstr ""
msgid "User is not a member of group."
msgstr ""
#: actions/groupblock.php:136 actions/groupmembers.php:314
#: actions/groupblock.php:136 actions/groupmembers.php:316
#, fuzzy
msgid "Block user from group"
msgstr "無此使用者"
@ -1714,19 +1714,19 @@ msgstr ""
msgid "Admin"
msgstr ""
#: actions/groupmembers.php:346 lib/blockform.php:69
#: actions/groupmembers.php:348 lib/blockform.php:69
msgid "Block"
msgstr ""
#: actions/groupmembers.php:441
#: actions/groupmembers.php:443
msgid "Make user an admin of the group"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make Admin"
msgstr ""
#: actions/groupmembers.php:473
#: actions/groupmembers.php:475
msgid "Make this user an admin"
msgstr ""
@ -2082,21 +2082,21 @@ msgid ""
"(%%action.register%%) a new account."
msgstr ""
#: actions/makeadmin.php:91
#: actions/makeadmin.php:92
msgid "Only an admin can make another user an admin."
msgstr ""
#: actions/makeadmin.php:95
#: actions/makeadmin.php:96
#, php-format
msgid "%1$s is already an admin for group \"%2$s\"."
msgstr ""
#: actions/makeadmin.php:132
#: actions/makeadmin.php:133
#, fuzzy, php-format
msgid "Can't get membership record for %1$s in group %2$s."
msgstr "無法從 %s 建立OpenID"
#: actions/makeadmin.php:145
#: actions/makeadmin.php:146
#, fuzzy, php-format
msgid "Can't make %1$s an admin for group %2$s."
msgstr "無法從 %s 建立OpenID"
@ -2292,8 +2292,8 @@ msgstr "連結"
msgid "Only "
msgstr ""
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1040
#: lib/api.php:1068 lib/api.php:1178
msgid "Not a supported data format."
msgstr ""
@ -4374,7 +4374,7 @@ msgstr "儲存使用者發生錯誤"
msgid "DB error inserting reply: %s"
msgstr "增加回覆時,資料庫發生錯誤: %s"
#: classes/Notice.php:1231
#: classes/Notice.php:1235
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
@ -5962,47 +5962,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
#: lib/util.php:867
#: lib/util.php:870
msgid "a few seconds ago"
msgstr ""
#: lib/util.php:869
#: lib/util.php:872
msgid "about a minute ago"
msgstr ""
#: lib/util.php:871
#: lib/util.php:874
#, php-format
msgid "about %d minutes ago"
msgstr ""
#: lib/util.php:873
#: lib/util.php:876
msgid "about an hour ago"
msgstr ""
#: lib/util.php:875
#: lib/util.php:878
#, php-format
msgid "about %d hours ago"
msgstr ""
#: lib/util.php:877
#: lib/util.php:880
msgid "about a day ago"
msgstr ""
#: lib/util.php:879
#: lib/util.php:882
#, php-format
msgid "about %d days ago"
msgstr ""
#: lib/util.php:881
#: lib/util.php:884
msgid "about a month ago"
msgstr ""
#: lib/util.php:883
#: lib/util.php:886
#, php-format
msgid "about %d months ago"
msgstr ""
#: lib/util.php:885
#: lib/util.php:888
msgid "about a year ago"
msgstr ""

View File

@ -1,115 +0,0 @@
<?php
/*
StatusNet Plugin: 0.9
Plugin Name: FeedSub
Plugin URI: http://status.net/wiki/Feed_subscription
Description: FeedSub allows subscribing to real-time updates from external feeds supporting PubHubSubbub protocol.
Version: 0.1
Author: Brion Vibber <brion@status.net>
Author URI: http://status.net/
*/
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 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/>.
*/
/**
* @package FeedSubPlugin
* @maintainer Brion Vibber <brion@status.net>
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
define('FEEDSUB_SERVICE', 100); // fixme -- avoid hardcoding these?
// We bundle the XML_Parse_Feed library...
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib');
class FeedSubException extends Exception
{
}
class FeedSubPlugin extends Plugin
{
/**
* Hook for RouterInitialized event.
*
* @param Net_URL_Mapper $m path-to-action mapper
* @return boolean hook return
*/
function onRouterInitialized($m)
{
$m->connect('feedsub/callback/:feed',
array('action' => 'feedsubcallback'),
array('feed' => '[0-9]+'));
$m->connect('settings/feedsub',
array('action' => 'feedsubsettings'));
return true;
}
/**
* Add the feed settings page to the Connect Settings menu
*
* @param Action &$action The calling page
*
* @return boolean hook return
*/
function onEndConnectSettingsNav(&$action)
{
$action_name = $action->trimmed('action');
$action->menuItem(common_local_url('feedsubsettings'),
_m('Feeds'),
_m('Feed subscription options'),
$action_name === 'feedsubsettings');
return true;
}
/**
* Automatically load the actions and libraries used by the plugin
*
* @param Class $cls the class
*
* @return boolean hook return
*
*/
function onAutoload($cls)
{
$base = dirname(__FILE__);
$lower = strtolower($cls);
$files = array("$base/$lower.php");
if (substr($lower, -6) == 'action') {
$files[] = "$base/actions/" . substr($lower, 0, -6) . ".php";
}
foreach ($files as $file) {
if (file_exists($file)) {
include_once $file;
return false;
}
}
return true;
}
function onCheckSchema() {
// warning: the autoincrement doesn't seem to set.
// alter table feedinfo change column id id int(11) not null auto_increment;
$schema = Schema::get();
$schema->ensureTable('feedinfo', Feedinfo::schemaDef());
return true;
}
}

View File

@ -1,268 +0,0 @@
<?php
/*
Subscription flow:
$feedinfo->subscribe()
generate random verification token
save to verify_token
sends a sub request to the hub...
feedsub/callback
hub sends confirmation back to us via GET
We verify the request, then echo back the challenge.
On our end, we save the time we subscribed and the lease expiration
feedsub/callback
hub sends us updates via POST
?
*/
class FeedDBException extends FeedSubException
{
public $obj;
function __construct($obj)
{
parent::__construct('Database insert failure');
$this->obj = $obj;
}
}
class Feedinfo extends Memcached_DataObject
{
public $__table = 'feedinfo';
public $id;
public $profile_id;
public $feeduri;
public $homeuri;
public $huburi;
// PuSH subscription data
public $verify_token;
public $sub_start;
public $sub_end;
public $created;
public $lastupdate;
public /*static*/ function staticGet($k, $v=null)
{
return parent::staticGet(__CLASS__, $k, $v);
}
/**
* return table definition for DB_DataObject
*
* DB_DataObject needs to know something about the table to manipulate
* instances. This method provides all the DB_DataObject needs to know.
*
* @return array array of column definitions
*/
function table()
{
return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'feeduri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'homeuri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'huburi' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'verify_token' => DB_DATAOBJECT_STR,
'sub_start' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'sub_end' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
'lastupdate' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
}
static function schemaDef()
{
return array(new ColumnDef('id', 'integer',
/*size*/ null,
/*nullable*/ false,
/*key*/ 'PRI',
/*default*/ '0',
/*extra*/ null,
/*auto_increment*/ true),
new ColumnDef('profile_id', 'integer',
null, false),
new ColumnDef('feeduri', 'varchar',
255, false, 'UNI'),
new ColumnDef('homeuri', 'varchar',
255, false),
new ColumnDef('huburi', 'varchar',
255, false),
new ColumnDef('verify_token', 'varchar',
32, true),
new ColumnDef('sub_start', 'datetime',
null, true),
new ColumnDef('sub_end', 'datetime',
null, true),
new ColumnDef('created', 'datetime',
null, false),
new ColumnDef('lastupdate', 'datetime',
null, false));
}
/**
* return key definitions for DB_DataObject
*
* DB_DataObject needs to know about keys that the table has; this function
* defines them.
*
* @return array key definitions
*/
function keys()
{
return array('id' => 'P'); //?
}
/**
* return key definitions for Memcached_DataObject
*
* Our caching system uses the same key definitions, but uses a different
* method to get them.
*
* @return array key definitions
*/
function keyTypes()
{
return $this->keys();
}
/**
* Fetch the StatusNet-side profile for this feed
* @return Profile
*/
public function getProfile()
{
return Profile::staticGet('id', $this->profile_id);
}
/**
* @param FeedMunger $munger
* @return Feedinfo
*/
public static function ensureProfile($munger)
{
$feedinfo = $munger->feedinfo();
$current = self::staticGet('feeduri', $feedinfo->feeduri);
if ($current) {
// @fixme we should probably update info as necessary
return $current;
}
$feedinfo->query('BEGIN');
try {
$profile = $munger->profile();
$result = $profile->insert();
if (empty($result)) {
throw new FeedDBException($profile);
}
$feedinfo->profile_id = $profile->id;
$result = $feedinfo->insert();
if (empty($result)) {
throw new FeedDBException($feedinfo);
}
$feedinfo->query('COMMIT');
} catch (FeedDBException $e) {
common_log_db_error($e->obj, 'INSERT', __FILE__);
$feedinfo->query('ROLLBACK');
return false;
}
return $feedinfo;
}
/**
* Send a subscription request to the hub for this feed.
* The hub will later send us a confirmation POST to /feedsub/callback.
*
* @return bool true on success, false on failure
*/
public function subscribe()
{
// @fixme use the verification token
#$token = md5(mt_rand() . ':' . $this->feeduri);
#$this->verify_token = $token;
#$this->update(); // @fixme
try {
$callback = common_local_url('feedsubcallback', array('feed' => $this->id));
$headers = array('Content-Type: application/x-www-form-urlencoded');
$post = array('hub.mode' => 'subscribe',
'hub.callback' => $callback,
'hub.verify' => 'async',
//'hub.verify_token' => $token,
//'hub.lease_seconds' => 0,
'hub.topic' => $this->feeduri);
$client = new HTTPClient();
$response = $client->post($this->huburi, $headers, $post);
if ($response->getStatus() >= 200 && $response->getStatus() < 300) {
common_log(LOG_INFO, __METHOD__ . ': sub req ok');
return true;
} else {
common_log(LOG_INFO, __METHOD__ . ': sub req failed');
return false;
}
} catch (Exception $e) {
// wtf!
common_log(LOG_ERR, __METHOD__ . ": error \"{$e->getMessage()}\" hitting hub $this->huburi subscribing to $this->feeduri");
return false;
}
}
/**
* Read and post notices for updates from the feed.
* Currently assumes that all items in the feed are new,
* coming from a PuSH hub.
*
* @param string $xml source of Atom or RSS feed
*/
public function postUpdates($xml)
{
common_log(LOG_INFO, __METHOD__ . ": packet for \"$this->feeduri\"! $xml");
require_once "XML/Feed/Parser.php";
$feed = new XML_Feed_Parser($xml, false, false, true);
$munger = new FeedMunger($feed);
$hits = 0;
foreach ($feed as $index => $entry) {
// @fixme this might sort in wrong order if we get multiple updates
$notice = $munger->notice($index);
$notice->profile_id = $this->profile_id;
// Double-check for oldies
// @fixme this could explode horribly for multiple feeds on a blog. sigh
$dupe = new Notice();
$dupe->uri = $notice->uri;
$dupe->find();
if ($dupe->fetch()) {
common_log(LOG_WARNING, __METHOD__ . ": tried to save dupe notice for entry {$notice->uri} of feed {$this->feeduri}");
continue;
}
if (Event::handle('StartNoticeSave', array(&$notice))) {
$id = $notice->insert();
Event::handle('EndNoticeSave', array($notice));
}
$notice->addToInboxes();
common_log(LOG_INFO, __METHOD__ . ": saved notice {$notice->id} for entry $index of update to \"{$this->feeduri}\"");
$hits++;
}
if ($hits == 0) {
common_log(LOG_INFO, __METHOD__ . ": no updates in packet for \"$this->feeduri\"! $xml");
}
}
}

View File

@ -1,14 +0,0 @@
CREATE TABLE `feedinfo` (
`id` int(11) NOT NULL auto_increment,
`profile_id` int(11) NOT NULL,
`feeduri` varchar(255) NOT NULL,
`homeuri` varchar(255) NOT NULL,
`huburi` varchar(255) NOT NULL,
`verify_token` varchar(32) default NULL,
`sub_start` datetime default NULL,
`sub_end` datetime default NULL,
`created` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `feedinfo_feeduri_idx` (`feeduri`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

View File

@ -102,7 +102,7 @@ class MemcachePlugin extends Plugin
*
* @param string &$key in; Key to use for lookups
* @param mixed &$value in; Value to associate
* @param integer &$flag in; Flag (passed through to Memcache)
* @param integer &$flag in; Flag empty or Cache::COMPRESSED
* @param integer &$expiry in; Expiry (passed through to Memcache)
* @param boolean &$success out; Whether the set was successful
*
@ -115,7 +115,7 @@ class MemcachePlugin extends Plugin
if ($expiry === null) {
$expiry = $this->defaultExpiry;
}
$success = $this->_conn->set($key, $value, $flag, $expiry);
$success = $this->_conn->set($key, $value, $this->flag(intval($flag)), $expiry);
Event::handle('EndCacheSet', array($key, $value, $flag,
$expiry));
return false;
@ -197,6 +197,20 @@ class MemcachePlugin extends Plugin
}
}
/**
* Translate general flags to Memcached-specific flags
* @param int $flag
* @return int
*/
protected function flag($flag)
{
$out = 0;
if ($flag & Cache::COMPRESSED == Cache::COMPRESSED) {
$out |= MEMCACHE_COMPRESSED;
}
return $out;
}
function onPluginVersion(&$versions)
{
$versions[] = array('name' => 'Memcache',

View File

@ -0,0 +1,276 @@
<?php
/*
StatusNet Plugin: 0.9
Plugin Name: FeedSub
Plugin URI: http://status.net/wiki/Feed_subscription
Description: FeedSub allows subscribing to real-time updates from external feeds supporting PubHubSubbub protocol.
Version: 0.1
Author: Brion Vibber <brion@status.net>
Author URI: http://status.net/
*/
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 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/>.
*/
/**
* @package FeedSubPlugin
* @maintainer Brion Vibber <brion@status.net>
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
define('FEEDSUB_SERVICE', 100); // fixme -- avoid hardcoding these?
// We bundle the XML_Parse_Feed library...
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib');
class FeedSubException extends Exception
{
}
class OStatusPlugin extends Plugin
{
/**
* Hook for RouterInitialized event.
*
* @param Net_URL_Mapper $m path-to-action mapper
* @return boolean hook return
*/
function onRouterInitialized($m)
{
// Discovery actions
$m->connect('.well-known/host-meta',
array('action' => 'hostmeta'));
$m->connect('main/webfinger',
array('action' => 'webfinger'));
$m->connect('main/ostatus',
array('action' => 'ostatusinit'));
$m->connect('main/ostatus?nickname=:nickname',
array('action' => 'ostatusinit'), array('nickname' => '[A-Za-z0-9_-]+'));
$m->connect('main/ostatussub',
array('action' => 'ostatussub'));
$m->connect('main/ostatussub',
array('action' => 'ostatussub'), array('feed' => '[A-Za-z0-9\.\/\:]+'));
// PuSH actions
$m->connect('main/push/hub', array('action' => 'pushhub'));
$m->connect('main/push/callback/:feed',
array('action' => 'pushcallback'),
array('feed' => '[0-9]+'));
$m->connect('settings/feedsub',
array('action' => 'feedsubsettings'));
// Salmon endpoint
$m->connect('main/salmon/user/:id',
array('action' => 'salmon'),
array('id' => '[0-9]+'));
$m->connect('main/salmon/group/:id',
array('action' => 'salmongroup'),
array('id' => '[0-9]+'));
return true;
}
/**
* Set up queue handlers for outgoing hub pushes
* @param QueueManager $qm
* @return boolean hook return
*/
function onEndInitializeQueueManager(QueueManager $qm)
{
$qm->connect('hubverify', 'HubVerifyQueueHandler');
$qm->connect('hubdistrib', 'HubDistribQueueHandler');
$qm->connect('hubout', 'HubOutQueueHandler');
return true;
}
/**
* Put saved notices into the queue for pubsub distribution.
*/
function onStartEnqueueNotice($notice, &$transports)
{
$transports[] = 'hubdistrib';
return true;
}
/**
* Set up a PuSH hub link to our internal link for canonical timeline
* Atom feeds for users and groups.
*/
function onStartApiAtom(Action $action)
{
if ($action instanceof ApiTimelineUserAction) {
$salmonAction = 'salmon';
} else if ($action instanceof ApiTimelineGroupAction) {
$salmonAction = 'salmongroup';
} else {
return;
}
$id = $action->arg('id');
if (strval(intval($id)) === strval($id)) {
// Canonical form of id in URL? These are used for OStatus syndication.
$hub = common_config('ostatus', 'hub');
if (empty($hub)) {
// Updates will be handled through our internal PuSH hub.
$hub = common_local_url('pushhub');
}
$action->element('link', array('rel' => 'hub',
'href' => $hub));
// Also, we'll add in the salmon link
$salmon = common_local_url($salmonAction, array('id' => $id));
$action->element('link', array('rel' => 'salmon',
'href' => $salmon));
}
}
/**
* Add the feed settings page to the Connect Settings menu
*
* @param Action &$action The calling page
*
* @return boolean hook return
*/
function onEndConnectSettingsNav(&$action)
{
$action_name = $action->trimmed('action');
$action->menuItem(common_local_url('feedsubsettings'),
_m('Feeds'),
_m('Feed subscription options'),
$action_name === 'feedsubsettings');
return true;
}
/**
* Automatically load the actions and libraries used by the plugin
*
* @param Class $cls the class
*
* @return boolean hook return
*
*/
function onAutoload($cls)
{
$base = dirname(__FILE__);
$lower = strtolower($cls);
$files = array("$base/classes/$cls.php",
"$base/lib/$lower.php");
if (substr($lower, -6) == 'action') {
$files[] = "$base/actions/" . substr($lower, 0, -6) . ".php";
}
foreach ($files as $file) {
if (file_exists($file)) {
include_once $file;
return false;
}
}
return true;
}
/**
* Add in an OStatus subscribe button
*/
function onStartProfilePageActionsElements($output, $profile)
{
$cur = common_current_user();
if (empty($cur)) {
// Add an OStatus subscribe
$output->elementStart('li', 'entity_subscribe');
$url = common_local_url('ostatusinit',
array('nickname' => $profile->nickname));
$output->element('a', array('href' => $url,
'class' => 'entity_remote_subscribe'),
_m('OStatus'));
$output->elementEnd('li');
}
}
/**
* Check if we've got remote replies to send via Salmon.
*
* @fixme push webfinger lookup & sending to a background queue
* @fixme also detect short-form name for remote subscribees where not ambiguous
*/
function onEndNoticeSave($notice)
{
$count = preg_match_all('/(\w+\.)*\w+@(\w+\.)*\w+(\w+\-\w+)*\.\w+/', $notice->content, $matches);
if ($count) {
foreach ($matches[0] as $webfinger) {
// Check to see if we've got an actual webfinger
$w = new Webfinger;
$endpoint_uri = '';
$result = $w->lookup($webfinger);
if (empty($result)) {
continue;
}
foreach ($result->links as $link) {
if ($link['rel'] == 'salmon') {
$endpoint_uri = $link['href'];
}
}
if (empty($endpoint_uri)) {
continue;
}
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= $notice->asAtomEntry();
$salmon = new Salmon();
$salmon->post($endpoint_uri, $xml);
}
}
}
/**
* Garbage collect unused feeds on unsubscribe
*/
function onEndUnsubscribe($user, $other)
{
$profile = Ostatus_profile::staticGet('profile_id', $other->id);
if ($feed) {
$sub = new Subscription();
$sub->subscribed = $other->id;
$sub->limit(1);
if (!$sub->find(true)) {
common_log(LOG_INFO, "Unsubscribing from now-unused feed $feed->feeduri on hub $feed->huburi");
$profile->unsubscribe();
}
}
return true;
}
/**
* Make sure necessary tables are filled out.
*/
function onCheckSchema() {
$schema = Schema::get();
$schema->ensureTable('ostatus_profile', Ostatus_profile::schemaDef());
$schema->ensureTable('hubsub', HubSub::schemaDef());
return true;
}
}

View File

@ -182,9 +182,9 @@ class FeedSubSettingsAction extends ConnectSettingsAction
}
$this->munger = $discover->feedMunger();
$this->feedinfo = $this->munger->feedInfo();
$this->profile = $this->munger->ostatusProfile();
if ($this->feedinfo->huburi == '') {
if ($this->profile->huburi == '' && !common_config('feedsub', 'nohub')) {
$this->showForm(_m('Feed is not PuSH-enabled; cannot subscribe.'));
return false;
}
@ -196,30 +196,44 @@ class FeedSubSettingsAction extends ConnectSettingsAction
{
if ($this->validateFeed()) {
$this->preview = true;
$this->feedinfo = Feedinfo::ensureProfile($this->munger);
$this->profile = Ostatus_profile::ensureProfile($this->munger);
if (!$this->profile) {
throw new ServerException("Feed profile was not saved properly.");
}
// If not already in use, subscribe to updates via the hub
if ($this->feedinfo->sub_start) {
common_log(LOG_INFO, __METHOD__ . ": double the fun! new sub for {$this->feedinfo->feeduri} last subbed {$this->feedinfo->sub_start}");
if ($this->profile->sub_start) {
common_log(LOG_INFO, __METHOD__ . ": double the fun! new sub for {$this->profile->feeduri} last subbed {$this->profile->sub_start}");
} else {
$ok = $this->feedinfo->subscribe();
$ok = $this->profile->subscribe();
common_log(LOG_INFO, __METHOD__ . ": sub was $ok");
if (!$ok) {
$this->showForm(_m('Feed subscription failed! Bad response from hub.'));
return;
}
}
// And subscribe the current user to the local profile
$user = common_current_user();
$profile = $this->feedinfo->getProfile();
if ($user->isSubscribed($profile)) {
$this->showForm(_m('Already subscribed!'));
} elseif ($user->subscribeTo($profile)) {
$this->showForm(_m('Feed subscribed!'));
if ($this->profile->isGroup()) {
$group = $this->profile->localGroup();
if ($user->isMember($group)) {
$this->showForm(_m('Already a member!'));
} elseif (Group_member::join($this->profile->group_id, $user->id)) {
$this->showForm(_m('Joined remote group!'));
} else {
$this->showForm(_m('Remote group join failed!'));
}
} else {
$this->showForm(_m('Feed subscription failed!'));
$local = $this->profile->localProfile();
if ($user->isSubscribed($local)) {
$this->showForm(_m('Already subscribed!'));
} elseif ($user->subscribeTo($local)) {
$this->showForm(_m('Feed subscribed!'));
} else {
$this->showForm(_m('Feed subscription failed!'));
}
}
}
}
@ -234,7 +248,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction
function previewFeed()
{
$feedinfo = $this->munger->feedinfo();
$profile = $this->munger->ostatusProfile();
$notice = $this->munger->notice(0, true); // preview
if ($notice) {

View File

@ -0,0 +1,42 @@
<?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/>.
*/
/**
* @package OStatusPlugin
* @maintainer James Walker <james@status.net>
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class HostMetaAction extends Action
{
function handle()
{
parent::handle();
$w = new Webfinger();
$domain = common_config('site', 'server');
$url = common_local_url('webfinger');
$url.= '?uri={uri}';
print $w->getHostMeta($domain, $url);
}
}

View File

@ -0,0 +1,128 @@
<?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/>.
*/
/**
* @package OStatusPlugin
* @maintainer James Walker <james@status.net>
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class OStatusInitAction extends Action
{
var $nickname;
var $acct;
var $err;
function prepare($args)
{
parent::prepare($args);
if (common_logged_in()) {
$this->clientError(_('You can use the local subscription!'));
return false;
}
$this->nickname = $this->trimmed('nickname');
$this->acct = $this->trimmed('acct');
return true;
}
function handle($args)
{
parent::handle($args);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
/* Use a session token for CSRF protection. */
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
$this->showForm(_('There was a problem with your session token. '.
'Try again, please.'));
return;
}
$this->ostatusConnect();
} else {
$this->showForm();
}
}
function showForm($err = null)
{
$this->err = $err;
$this->showPage();
}
function showContent()
{
$this->elementStart('form', array('id' => 'form_ostatus_connect',
'method' => 'post',
'class' => 'form_settings',
'action' => common_local_url('ostatusinit')));
$this->elementStart('fieldset');
$this->element('legend', _('Subscribe to a remote user'));
$this->hidden('token', common_session_token());
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
$this->input('nickname', _('User nickname'), $this->nickname,
_('Nickname of the user you want to follow'));
$this->elementEnd('li');
$this->elementStart('li');
$this->input('acct', _('Profile Account'), $this->acct,
_('Your account id (i.e. user@identi.ca)'));
$this->elementEnd('li');
$this->elementEnd('ul');
$this->submit('submit', _('Subscribe'));
$this->elementEnd('fieldset');
$this->elementEnd('form');
}
function ostatusConnect()
{
$w = new Webfinger;
$result = $w->lookup($this->acct);
foreach ($result->links as $link) {
if ($link['rel'] == 'http://ostatus.org/schema/1.0/subscribe') {
// We found a URL - let's redirect!
$user = User::staticGet('nickname', $this->nickname);
$feed_url = common_local_url('ApiTimelineUser',
array('id' => $user->id,
'format' => 'atom'));
$url = $w->applyTemplate($link['template'], $feed_url);
common_redirect($url, 303);
}
}
}
function title()
{
return _('OStatus Connect');
}
}

View File

@ -0,0 +1,226 @@
<?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/>.
*/
/**
* @package OStatusPlugin
* @maintainer James Walker <james@status.net>
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class OStatusSubAction extends Action
{
protected $feedurl;
function title()
{
return _m("OStatus Subscribe");
}
function handle($args)
{
if ($this->validateFeed()) {
$this->showForm();
}
return true;
}
function showForm($err = null)
{
$this->err = $err;
$this->showPage();
}
function showContent()
{
$user = common_current_user();
$profile = $user->getProfile();
$fuser = null;
$flink = Foreign_link::getByUserID($user->id, FEEDSUB_SERVICE);
if (!empty($flink)) {
$fuser = $flink->getForeignUser();
}
$this->elementStart('form', array('method' => 'post',
'id' => 'form_settings_feedsub',
'class' => 'form_settings',
'action' =>
common_local_url('feedsubsettings')));
$this->hidden('token', common_session_token());
$this->elementStart('fieldset', array('id' => 'settings_feeds'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li', array('id' => 'settings_twitter_login_button'));
$this->input('feedurl', _('Feed URL'), $this->feedurl, _('Enter the URL of a PubSubHubbub-enabled feed'));
$this->elementEnd('li');
$this->elementEnd('ul');
$this->submit('subscribe', _m('Subscribe'));
$this->elementEnd('fieldset');
$this->elementEnd('form');
$this->previewFeed();
}
/**
* Handle posts to this form
*
* Based on the button that was pressed, muxes out to other functions
* to do the actual task requested.
*
* All sub-functions reload the form with a message -- success or failure.
*
* @return void
*/
function handlePost()
{
// CSRF protection
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
$this->showForm(_('There was a problem with your session token. '.
'Try again, please.'));
return;
}
if ($this->arg('subscribe')) {
$this->saveFeed();
} else {
$this->showForm(_('Unexpected form submission.'));
}
}
/**
* Set up and add a feed
*
* @return boolean true if feed successfully read
* Sends you back to input form if not.
*/
function validateFeed()
{
$feedurl = $this->trimmed('feed');
if ($feedurl == '') {
$this->showForm(_m('Empty feed URL!'));
return;
}
$this->feedurl = $feedurl;
// Get the canonical feed URI and check it
try {
$discover = new FeedDiscovery();
$uri = $discover->discoverFromURL($feedurl);
} catch (FeedSubBadURLException $e) {
$this->showForm(_m('Invalid URL or could not reach server.'));
return false;
} catch (FeedSubBadResponseException $e) {
$this->showForm(_m('Cannot read feed; server returned error.'));
return false;
} catch (FeedSubEmptyException $e) {
$this->showForm(_m('Cannot read feed; server returned an empty page.'));
return false;
} catch (FeedSubBadHTMLException $e) {
$this->showForm(_m('Bad HTML, could not find feed link.'));
return false;
} catch (FeedSubNoFeedException $e) {
$this->showForm(_m('Could not find a feed linked from this URL.'));
return false;
} catch (FeedSubUnrecognizedTypeException $e) {
$this->showForm(_m('Not a recognized feed type.'));
return false;
} catch (FeedSubException $e) {
// Any new ones we forgot about
$this->showForm(_m('Bad feed URL.'));
return false;
}
$this->munger = $discover->feedMunger();
$this->profile = $this->munger->ostatusProfile();
if ($this->profile->huburi == '') {
$this->showForm(_m('Feed is not PuSH-enabled; cannot subscribe.'));
return false;
}
return true;
}
function saveFeed()
{
if ($this->validateFeed()) {
$this->preview = true;
$this->profile = Ostatus_profile::ensureProfile($this->munger);
// If not already in use, subscribe to updates via the hub
if ($this->profile->sub_start) {
common_log(LOG_INFO, __METHOD__ . ": double the fun! new sub for {$this->profile->feeduri} last subbed {$this->profile->sub_start}");
} else {
$ok = $this->profile->subscribe();
common_log(LOG_INFO, __METHOD__ . ": sub was $ok");
if (!$ok) {
$this->showForm(_m('Feed subscription failed! Bad response from hub.'));
return;
}
}
// And subscribe the current user to the local profile
$user = common_current_user();
$profile = $this->profile->getProfile();
if ($user->isSubscribed($profile)) {
$this->showForm(_m('Already subscribed!'));
} elseif ($user->subscribeTo($profile)) {
$this->showForm(_m('Feed subscribed!'));
} else {
$this->showForm(_m('Feed subscription failed!'));
}
}
}
function previewFeed()
{
$profile = $this->munger->ostatusProfile();
$notice = $this->munger->notice(0, true); // preview
if ($notice) {
$this->element('b', null, 'Preview of latest post from this feed:');
$item = new NoticeList($notice, $this);
$item->show();
} else {
$this->element('b', null, 'No posts in this feed yet.');
}
}
}

View File

@ -25,7 +25,7 @@
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class FeedSubCallbackAction extends Action
class PushCallbackAction extends Action
{
function handle()
{
@ -48,13 +48,18 @@ class FeedSubCallbackAction extends Action
throw new ServerException('Empty or invalid feed id', 400);
}
$feedinfo = Feedinfo::staticGet('id', $feedid);
if (!$feedinfo) {
throw new ServerException('Unknown feed id ' . $feedid, 400);
$profile = Ostatus_profile::staticGet('id', $feedid);
if (!$profile) {
throw new ServerException('Unknown OStatus/PuSH feed id ' . $feedid, 400);
}
$hmac = '';
if (isset($_SERVER['HTTP_X_HUB_SIGNATURE'])) {
$hmac = $_SERVER['HTTP_X_HUB_SIGNATURE'];
}
$post = file_get_contents('php://input');
$feedinfo->postUpdates($post);
$profile->postUpdates($post, $hmac);
}
/**
@ -73,28 +78,30 @@ class FeedSubCallbackAction extends Action
throw new ServerException("Bogus hub callback: bad mode", 404);
}
$feedinfo = Feedinfo::staticGet('feeduri', $topic);
if (!$feedinfo) {
$profile = Ostatus_profile::staticGet('feeduri', $topic);
if (!$profile) {
common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback for unknown feed $topic");
throw new ServerException("Bogus hub callback: unknown feed", 404);
}
# Can't currently set the token in our sub api
#if ($feedinfo->verify_token !== $verify_token) {
# common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with bad token \"$verify_token\" for feed $topic");
# throw new ServerError("Bogus hub callback: bad token", 404);
#}
// OK!
common_log(LOG_INFO, __METHOD__ . ': sub confirmed');
$feedinfo->sub_start = common_sql_date(time());
if ($lease_seconds > 0) {
$feedinfo->sub_end = common_sql_date(time() + $lease_seconds);
} else {
$feedinfo->sub_end = null;
if ($profile->verify_token !== $verify_token) {
common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with bad token \"$verify_token\" for feed $topic");
throw new ServerError("Bogus hub callback: bad token", 404);
}
if ($mode != $profile->sub_state) {
common_log(LOG_WARNING, __METHOD__ . ": bogus hub callback with bad mode \"$mode\" for feed $topic in state \"{$profile->sub_state}\"");
throw new ServerException("Bogus hub callback: mode doesn't match subscription state.", 404);
}
// OK!
if ($mode == 'subscribe') {
common_log(LOG_INFO, __METHOD__ . ': sub confirmed');
$profile->confirmSubscribe($lease_seconds);
} else {
common_log(LOG_INFO, __METHOD__ . ": unsub confirmed; deleting sub record for $topic");
$profile->confirmUnsubscribe();
}
$feedinfo->update();
print $challenge;
}
}

View File

@ -0,0 +1,176 @@
<?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/>.
*/
/**
* Integrated PuSH hub; lets us only ping them what need it.
* @package Hub
* @maintainer Brion Vibber <brion@status.net>
*/
/**
Things to consider...
* should we purge incomplete subscriptions that never get a verification pingback?
* when can we send subscription renewal checks?
- at next send time probably ok
* when can we handle trimming of subscriptions?
- at next send time probably ok
* should we keep a fail count?
*/
class PushHubAction extends Action
{
function arg($arg, $def=null)
{
// PHP converts '.'s in incoming var names to '_'s.
// It also merges multiple values, which'll break hub.verify and hub.topic for publishing
// @fixme handle multiple args
$arg = str_replace('.', '_', $arg);
return parent::arg($arg, $def);
}
function prepare($args)
{
StatusNet::setApi(true); // reduce exception reports to aid in debugging
return parent::prepare($args);
}
function handle()
{
$mode = $this->trimmed('hub.mode');
switch ($mode) {
case "subscribe":
$this->subscribe();
break;
case "unsubscribe":
$this->unsubscribe();
break;
case "publish":
throw new ServerException("Publishing outside feeds not supported.", 400);
default:
throw new ServerException("Unrecognized mode '$mode'.", 400);
}
}
/**
* Process a PuSH feed subscription request.
*
* HTTP return codes:
* 202 Accepted - request saved and awaiting verification
* 204 No Content - already subscribed
* 403 Forbidden - rejecting this (not specifically spec'd)
*/
function subscribe()
{
$feed = $this->argUrl('hub.topic');
$callback = $this->argUrl('hub.callback');
common_log(LOG_DEBUG, __METHOD__ . ": checking sub'd to $feed $callback");
if ($this->getSub($feed, $callback)) {
// Already subscribed; return 204 per spec.
header('HTTP/1.1 204 No Content');
common_log(LOG_DEBUG, __METHOD__ . ': already subscribed');
return;
}
common_log(LOG_DEBUG, __METHOD__ . ': setting up');
$sub = new HubSub();
$sub->topic = $feed;
$sub->callback = $callback;
$sub->secret = $this->arg('hub.secret', null);
$sub->setLease(intval($this->arg('hub.lease_seconds')));
// @fixme check for feeds we don't manage
// @fixme check the verification mode, might want a return immediately?
common_log(LOG_DEBUG, __METHOD__ . ': inserting');
$ok = $sub->insert();
if (!$ok) {
throw new ServerException("Failed to save subscription record", 500);
}
// @fixme check errors ;)
$data = array('sub' => $sub, 'mode' => 'subscribe');
$qm = QueueManager::get();
$qm->enqueue($data, 'hubverify');
header('HTTP/1.1 202 Accepted');
common_log(LOG_DEBUG, __METHOD__ . ': done');
}
/**
* Process a PuSH feed unsubscription request.
*
* HTTP return codes:
* 202 Accepted - request saved and awaiting verification
* 204 No Content - already subscribed
* 400 Bad Request - invalid params or rejected feed
*/
function unsubscribe()
{
$feed = $this->argUrl('hub.topic');
$callback = $this->argUrl('hub.callback');
$sub = $this->getSub($feed, $callback);
if ($sub) {
if ($sub->verify('unsubscribe')) {
$sub->delete();
common_log(LOG_INFO, "PuSH unsubscribed $feed for $callback");
} else {
throw new ServerException("Failed PuSH unsubscription: verification failed! $feed for $callback");
}
} else {
throw new ServerException("Failed PuSH unsubscription: not subscribed! $feed for $callback");
}
}
/**
* Grab and validate a URL from POST parameters.
* @throws ServerException for malformed or non-http/https URLs
*/
protected function argUrl($arg)
{
$url = $this->arg($arg);
$params = array('domain_check' => false, // otherwise breaks my local tests :P
'allowed_schemes' => array('http', 'https'));
if (Validate::uri($url, $params)) {
return $url;
} else {
throw new ServerException("Invalid URL passed for $arg: '$url'", 400);
}
}
/**
* Get HubSub subscription record for a given feed & subscriber.
*
* @param string $feed
* @param string $callback
* @return mixed HubSub or false
*/
protected function getSub($feed, $callback)
{
return HubSub::staticGet($feed, $callback);
}
}

View File

@ -0,0 +1,81 @@
<?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/>.
*/
/**
* @package OStatusPlugin
* @author James Walker <james@status.net>
*/
if (!defined('STATUSNET')) {
exit(1);
}
class SalmonAction extends Action
{
var $user = null;
var $xml = null;
var $activity = null;
function prepare($args)
{
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
$this->clientError(_('This method requires a POST.'));
}
if ($_SERVER['CONTENT_TYPE'] != 'application/atom+xml') {
$this->clientError(_('Salmon requires application/atom+xml'));
}
$id = $this->trimmed('id');
if (!$id) {
$this->clientError(_('No ID.'));
}
$this->user = User::staticGet($id);
if (empty($this->user)) {
$this->clientError(_('No such user.'));
}
$xml = file_get_contents('php://input');
$dom = DOMDocument::loadXML($xml);
// XXX: check that document element is Atom entry
// XXX: check the signature
$this->act = Activity::fromAtomEntry($dom->documentElement);
}
function handle($args)
{
common_log(LOG_DEBUG, 'Salmon: incoming post for user: '. $user_id);
// TODO : Insert new $xml -> notice code
switch ($this->act->verb)
{
case Activity::POST:
case Activity::SHARE:
case Activity::FAVORITE:
case Activity::FOLLOW:
}
}
}

View File

@ -0,0 +1,77 @@
<?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/>.
*/
/**
* @package OStatusPlugin
* @maintainer James Walker <james@status.net>
*/
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class WebfingerAction extends Action
{
public $uri;
function prepare($args)
{
parent::prepare($args);
$this->uri = $this->trimmed('uri');
return true;
}
function handle()
{
$acct = Webfinger::normalize($this->uri);
$xrd = new XRD();
list($nick, $domain) = explode('@', urldecode($acct));
$nick = common_canonical_nickname($nick);
$this->user = User::staticGet('nickname', $nick);
if (!$this->user) {
$this->clientError(_('No such user.'), 404);
return false;
}
$xrd->subject = $this->uri;
$xrd->alias[] = common_profile_url($nick);
$xrd->links[] = array('rel' => 'http://webfinger.net/rel/profile-page',
'type' => 'text/html',
'href' => common_profile_url($nick));
$salmon_url = common_local_url('salmon',
array('id' => $this->user->id));
$xrd->links[] = array('rel' => 'salmon',
'href' => $salmon_url);
// TODO - finalize where the redirect should go on the publisher
$url = common_local_url('ostatussub') . '?feed={uri}';
$xrd->links[] = array('rel' => 'http://ostatus.org/schema/1.0/subscribe',
'template' => $url );
header('Content-type: text/xml');
print $xrd->toXML();
}
}

View File

@ -0,0 +1,272 @@
<?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/>.
*/
/**
* PuSH feed subscription record
* @package Hub
* @author Brion Vibber <brion@status.net>
*/
class HubSub extends Memcached_DataObject
{
public $__table = 'hubsub';
public $hashkey; // sha1(topic . '|' . $callback); (topic, callback) key is too long for myisam in utf8
public $topic;
public $callback;
public $secret;
public $verify_token;
public $challenge;
public $lease;
public $sub_start;
public $sub_end;
public $created;
public /*static*/ function staticGet($topic, $callback)
{
return parent::staticGet(__CLASS__, 'hashkey', self::hashkey($topic, $callback));
}
protected static function hashkey($topic, $callback)
{
return sha1($topic . '|' . $callback);
}
/**
* return table definition for DB_DataObject
*
* DB_DataObject needs to know something about the table to manipulate
* instances. This method provides all the DB_DataObject needs to know.
*
* @return array array of column definitions
*/
function table()
{
return array('hashkey' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'topic' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'callback' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'secret' => DB_DATAOBJECT_STR,
'verify_token' => DB_DATAOBJECT_STR,
'challenge' => DB_DATAOBJECT_STR,
'lease' => DB_DATAOBJECT_INT,
'sub_start' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'sub_end' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
}
static function schemaDef()
{
return array(new ColumnDef('hashkey', 'char',
/*size*/40,
/*nullable*/false,
/*key*/'PRI'),
new ColumnDef('topic', 'varchar',
/*size*/255,
/*nullable*/false,
/*key*/'KEY'),
new ColumnDef('callback', 'varchar',
255, false),
new ColumnDef('secret', 'text',
null, true),
new ColumnDef('verify_token', 'text',
null, true),
new ColumnDef('challenge', 'varchar',
32, true),
new ColumnDef('lease', 'int',
null, true),
new ColumnDef('sub_start', 'datetime',
null, true),
new ColumnDef('sub_end', 'datetime',
null, true),
new ColumnDef('created', 'datetime',
null, false));
}
function keys()
{
return array_keys($this->keyTypes());
}
function sequenceKeys()
{
return array(false, false, false);
}
/**
* return key definitions for DB_DataObject
*
* DB_DataObject needs to know about keys that the table has; this function
* defines them.
*
* @return array key definitions
*/
function keyTypes()
{
return array('hashkey' => 'K');
}
/**
* Validates a requested lease length, sets length plus
* subscription start & end dates.
*
* Does not save to database -- use before insert() or update().
*
* @param int $length in seconds
*/
function setLease($length)
{
assert(is_int($length));
$min = 86400;
$max = 86400 * 30;
if ($length == 0) {
// We want to garbage collect dead subscriptions!
$length = $max;
} elseif( $length < $min) {
$length = $min;
} else if ($length > $max) {
$length = $max;
}
$this->lease = $length;
$this->start_sub = common_sql_now();
$this->end_sub = common_sql_date(time() + $length);
}
/**
* Send a verification ping to subscriber
* @param string $mode 'subscribe' or 'unsubscribe'
*/
function verify($mode)
{
assert($mode == 'subscribe' || $mode == 'unsubscribe');
// Is this needed? data object fun...
$clone = clone($this);
$clone->challenge = common_good_rand(16);
$clone->update($this);
$this->challenge = $clone->challenge;
unset($clone);
$params = array('hub.mode' => $mode,
'hub.topic' => $this->topic,
'hub.challenge' => $this->challenge);
if ($mode == 'subscribe') {
$params['hub.lease_seconds'] = $this->lease;
}
if ($this->verify_token) {
$params['hub.verify_token'] = $this->verify_token;
}
$url = $this->callback . '?' . http_build_query($params, '', '&'); // @fixme ugly urls
try {
$request = new HTTPClient();
$response = $request->get($url);
$status = $response->getStatus();
if ($status >= 200 && $status < 300) {
$fail = false;
} else {
// @fixme how can we schedule a second attempt?
// Or should we?
$fail = "Returned HTTP $status";
}
} catch (Exception $e) {
$fail = $e->getMessage();
}
if ($fail) {
// @fixme how can we schedule a second attempt?
// or save a fail count?
// Or should we?
common_log(LOG_ERR, "Failed to verify $mode for $this->topic at $this->callback: $fail");
return false;
} else {
if ($mode == 'subscribe') {
// Establish or renew the subscription!
// This seems unnecessary... dataobject fun!
$clone = clone($this);
$clone->challenge = null;
$clone->setLease($this->lease);
$clone->update($this);
unset($clone);
$this->challenge = null;
$this->setLease($this->lease);
common_log(LOG_ERR, "Verified $mode of $this->callback:$this->topic for $this->lease seconds");
} else if ($mode == 'unsubscribe') {
common_log(LOG_ERR, "Verified $mode of $this->callback:$this->topic");
$this->delete();
}
return true;
}
}
/**
* Insert wrapper; transparently set the hash key from topic and callback columns.
* @return boolean success
*/
function insert()
{
$this->hashkey = self::hashkey($this->topic, $this->callback);
return parent::insert();
}
/**
* Send a 'fat ping' to the subscriber's callback endpoint
* containing the given Atom feed chunk.
*
* Determination of which items to send should be done at
* a higher level; don't just shove in a complete feed!
*
* @param string $atom well-formed Atom feed
*/
function push($atom)
{
$headers = array('Content-Type: application/atom+xml');
if ($this->secret) {
$hmac = hash_hmac('sha1', $atom, $this->secret);
$headers[] = "X-Hub-Signature: sha1=$hmac";
} else {
$hmac = '(none)';
}
common_log(LOG_INFO, "About to push feed to $this->callback for $this->topic, HMAC $hmac");
try {
$request = new HTTPClient();
$request->setBody($atom);
$response = $request->post($this->callback, $headers);
if ($response->isOk()) {
return true;
}
common_log(LOG_ERR, "Error sending PuSH content " .
"to $this->callback for $this->topic: " .
$response->getStatus());
return false;
} catch (Exception $e) {
common_log(LOG_ERR, "Error sending PuSH content " .
"to $this->callback for $this->topic: " .
$e->getMessage());
return false;
}
}
}

View File

@ -0,0 +1,644 @@
<?php
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 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/>.
*/
/**
* @package FeedSubPlugin
* @maintainer Brion Vibber <brion@status.net>
*/
/*
PuSH subscription flow:
$profile->subscribe()
generate random verification token
save to verify_token
sends a sub request to the hub...
main/push/callback
hub sends confirmation back to us via GET
We verify the request, then echo back the challenge.
On our end, we save the time we subscribed and the lease expiration
main/push/callback
hub sends us updates via POST
*/
class FeedDBException extends FeedSubException
{
public $obj;
function __construct($obj)
{
parent::__construct('Database insert failure');
$this->obj = $obj;
}
}
class Ostatus_profile extends Memcached_DataObject
{
public $__table = 'ostatus_profile';
public $id;
public $profile_id;
public $group_id;
public $feeduri;
public $homeuri;
// PuSH subscription data
public $huburi;
public $secret;
public $verify_token;
public $sub_state; // subscribe, active, unsubscribe
public $sub_start;
public $sub_end;
public $salmonuri;
public $created;
public $lastupdate;
public /*static*/ function staticGet($k, $v=null)
{
return parent::staticGet(__CLASS__, $k, $v);
}
/**
* return table definition for DB_DataObject
*
* DB_DataObject needs to know something about the table to manipulate
* instances. This method provides all the DB_DataObject needs to know.
*
* @return array array of column definitions
*/
function table()
{
return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'profile_id' => DB_DATAOBJECT_INT,
'group_id' => DB_DATAOBJECT_INT,
'feeduri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'homeuri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'huburi' => DB_DATAOBJECT_STR,
'secret' => DB_DATAOBJECT_STR,
'verify_token' => DB_DATAOBJECT_STR,
'sub_state' => DB_DATAOBJECT_STR,
'sub_start' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'sub_end' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'salmonuri' => DB_DATAOBJECT_STR,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
'lastupdate' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
}
static function schemaDef()
{
return array(new ColumnDef('id', 'integer',
/*size*/ null,
/*nullable*/ false,
/*key*/ 'PRI',
/*default*/ '0',
/*extra*/ null,
/*auto_increment*/ true),
new ColumnDef('profile_id', 'integer',
null, true, 'UNI'),
new ColumnDef('group_id', 'integer',
null, true, 'UNI'),
new ColumnDef('feeduri', 'varchar',
255, false, 'UNI'),
new ColumnDef('homeuri', 'varchar',
255, false),
new ColumnDef('huburi', 'text',
null, true),
new ColumnDef('verify_token', 'varchar',
32, true),
new ColumnDef('secret', 'varchar',
64, true),
new ColumnDef('sub_state', "enum('subscribe','active','unsubscribe')",
null, true),
new ColumnDef('sub_start', 'datetime',
null, true),
new ColumnDef('sub_end', 'datetime',
null, true),
new ColumnDef('salmonuri', 'text',
null, true),
new ColumnDef('created', 'datetime',
null, false),
new ColumnDef('lastupdate', 'datetime',
null, false));
}
/**
* return key definitions for DB_DataObject
*
* DB_DataObject needs to know about keys that the table has; this function
* defines them.
*
* @return array key definitions
*/
function keys()
{
return array_keys($this->keyTypes());
}
/**
* return key definitions for Memcached_DataObject
*
* Our caching system uses the same key definitions, but uses a different
* method to get them.
*
* @return array key definitions
*/
function keyTypes()
{
return array('id' => 'K', 'profile_id' => 'U', 'group_id' => 'U', 'feeduri' => 'U');
}
function sequenceKey()
{
return array('id', true, false);
}
/**
* Fetch the StatusNet-side profile for this feed
* @return Profile
*/
public function localProfile()
{
if ($this->profile_id) {
return Profile::staticGet('id', $this->profile_id);
}
return null;
}
/**
* Fetch the StatusNet-side profile for this feed
* @return Profile
*/
public function localGroup()
{
if ($this->group_id) {
return User_group::staticGet('id', $this->group_id);
}
return null;
}
/**
* @param FeedMunger $munger
* @param boolean $isGroup is this a group record?
* @return Ostatus_profile
*/
public static function ensureProfile($munger)
{
$profile = $munger->ostatusProfile();
$current = self::staticGet('feeduri', $profile->feeduri);
if ($current) {
// @fixme we should probably update info as necessary
return $current;
}
$profile->query('BEGIN');
// Awful hack! Awful hack!
$profile->verify = common_good_rand(16);
$profile->secret = common_good_rand(32);
try {
$local = $munger->profile();
if ($entity->isGroup()) {
$group = new User_group();
$group->nickname = $local->nickname . '@remote'; // @fixme
$group->fullname = $local->fullname;
$group->homepage = $local->homepage;
$group->location = $local->location;
$group->created = $local->created;
$group->insert();
if (empty($result)) {
throw new FeedDBException($group);
}
$profile->group_id = $group->id;
} else {
$result = $local->insert();
if (empty($result)) {
throw new FeedDBException($local);
}
$profile->profile_id = $local->id;
}
$profile->created = sql_common_date();
$profile->lastupdate = sql_common_date();
$result = $profile->insert();
if (empty($result)) {
throw new FeedDBException($profile);
}
$entity->query('COMMIT');
} catch (FeedDBException $e) {
common_log_db_error($e->obj, 'INSERT', __FILE__);
$entity->query('ROLLBACK');
return false;
}
$avatar = $munger->getAvatar();
if ($avatar) {
try {
$this->updateAvatar($avatar);
} catch (Exception $e) {
common_log(LOG_ERR, "Exception setting OStatus avatar: " .
$e->getMessage());
}
}
return $entity;
}
/**
* Download and update given avatar image
* @param string $url
* @throws Exception in various failure cases
*/
public function updateAvatar($url)
{
// @fixme this should be better encapsulated
// ripped from oauthstore.php (for old OMB client)
$temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
copy($url, $temp_filename);
$imagefile = new ImageFile($profile->id, $temp_filename);
$filename = Avatar::filename($profile->id,
image_type_to_extension($imagefile->type),
null,
common_timestamp());
rename($temp_filename, Avatar::path($filename));
if ($this->isGroup()) {
$group = $this->localGroup();
$group->setOriginal($filename);
} else {
$profile = $this->localProfile();
$profile->setOriginal($filename);
}
}
/**
* Returns an XML string fragment with profile information as an
* Activity Streams noun object with the given element type.
*
* Assumes that 'activity' namespace has been previously defined.
*
* @param string $element one of 'actor', 'subject', 'object', 'target'
* @return string
*/
function asActivityNoun($element)
{
$xs = new XMLStringer(true);
$avatarHref = Avatar::defaultImage(AVATAR_PROFILE_SIZE);
$avatarType = 'image/png';
if ($this->isGroup()) {
$type = 'http://activitystrea.ms/schema/1.0/group';
$self = $this->localGroup();
// @fixme put a standard getAvatar() interface on groups too
if ($self->homepage_logo) {
$avatarHref = $self->homepage_logo;
$map = array('png' => 'image/png',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'gif' => 'image/gif');
$extension = pathinfo(parse_url($avatarHref, PHP_URL_PATH), PATHINFO_EXTENSION);
if (isset($map[$extension])) {
$avatarType = $map[$extension];
}
}
} else {
$type = 'http://activitystrea.ms/schema/1.0/person';
$self = $this->localProfile();
$avatar = $self->getAvatar(AVATAR_PROFILE_SIZE);
if ($avatar) {
$avatarHref = $avatar->
$avatarType = $avatar->mediatype;
}
}
$xs->elementStart('activity:' . $element);
$xs->element(
'activity:object-type',
null,
$type
);
$xs->element(
'id',
null,
$this->homeuri); // ?
$xs->element('title', null, $self->getBestName());
$xs->element(
'link', array(
'type' => $avatarType,
'href' => $avatarHref
),
''
);
$xs->elementEnd('activity:' . $element);
return $xs->getString();
}
/**
* Damn dirty hack!
*/
function isGroup()
{
return (strpos($this->feeduri, '/groups/') !== false);
}
/**
* Send a subscription request to the hub for this feed.
* The hub will later send us a confirmation POST to /main/push/callback.
*
* @return bool true on success, false on failure
*/
public function subscribe($mode='subscribe')
{
if (common_config('feedsub', 'nohub')) {
// Fake it! We're just testing remote feeds w/o hubs.
return true;
}
// @fixme use the verification token
#$token = md5(mt_rand() . ':' . $this->feeduri);
#$this->verify_token = $token;
#$this->update(); // @fixme
try {
$callback = common_local_url('pushcallback', array('feed' => $this->id));
$headers = array('Content-Type: application/x-www-form-urlencoded');
$post = array('hub.mode' => $mode,
'hub.callback' => $callback,
'hub.verify' => 'async',
'hub.verify_token' => $this->verify_token,
'hub.secret' => $this->secret,
//'hub.lease_seconds' => 0,
'hub.topic' => $this->feeduri);
$client = new HTTPClient();
$response = $client->post($this->huburi, $headers, $post);
$status = $response->getStatus();
if ($status == 202) {
common_log(LOG_INFO, __METHOD__ . ': sub req ok, awaiting verification callback');
return true;
} else if ($status == 204) {
common_log(LOG_INFO, __METHOD__ . ': sub req ok and verified');
return true;
} else if ($status >= 200 && $status < 300) {
common_log(LOG_ERR, __METHOD__ . ": sub req returned unexpected HTTP $status: " . $response->getBody());
return false;
} else {
common_log(LOG_ERR, __METHOD__ . ": sub req failed with HTTP $status: " . $response->getBody());
return false;
}
} catch (Exception $e) {
// wtf!
common_log(LOG_ERR, __METHOD__ . ": error \"{$e->getMessage()}\" hitting hub $this->huburi subscribing to $this->feeduri");
return false;
}
}
/**
* Save PuSH subscription confirmation.
* Sets approximate lease start and end times and finalizes state.
*
* @param int $lease_seconds provided hub.lease_seconds parameter, if given
*/
public function confirmSubscribe($lease_seconds=0)
{
$original = clone($this);
$this->sub_state = 'active';
$this->sub_start = common_sql_date(time());
if ($lease_seconds > 0) {
$this->sub_end = common_sql_date(time() + $lease_seconds);
} else {
$this->sub_end = null;
}
$this->lastupdate = common_sql_date();
return $this->update($original);
}
/**
* Save PuSH unsubscription confirmation.
* Wipes active PuSH sub info and resets state.
*/
public function confirmUnsubscribe()
{
$original = clone($this);
$this->verify_token = null;
$this->secret = null;
$this->sub_state = null;
$this->sub_start = null;
$this->sub_end = null;
$this->lastupdate = common_sql_date();
return $this->update($original);
}
/**
* Send a PuSH unsubscription request to the hub for this feed.
* The hub will later send us a confirmation POST to /main/push/callback.
*
* @return bool true on success, false on failure
*/
public function unsubscribe() {
return $this->subscribe('unsubscribe');
}
/**
* Send an Activity Streams notification to the remote Salmon endpoint,
* if so configured.
*
* @param Profile $actor
* @param $verb eg Activity::SUBSCRIBE or Activity::JOIN
* @param $object object of the action; if null, the remote entity itself is assumed
*/
public function notify(Profile $actor, $verb, $object=null)
{
if ($object == null) {
$object = $this;
}
if ($this->salmonuri) {
$text = 'update'; // @fixme
$id = 'tag:' . common_config('site', 'server') .
':' . $verb .
':' . $actor->id .
':' . time(); // @fixme
$entry = new Atom10Entry();
$entry->elementStart('entry');
$entry->element('id', null, $id);
$entry->element('title', null, $text);
$entry->element('summary', null, $text);
$entry->element('published', null, common_date_w3dtf());
$entry->element('activity:verb', null, $verb);
$entry->raw($profile->asAtomAuthor());
$entry->raw($profile->asActivityActor());
$entry->raw($object->asActivityNoun('object'));
$entry->elmentEnd('entry');
$feed = $this->atomFeed($actor);
$feed->initFeed();
$feed->addEntry($entry);
$feed->renderEntries();
$feed->endFeed();
$xml = $feed->getString();
common_log(LOG_INFO, "Posting to Salmon endpoint $salmon: $xml");
$salmon = new Salmon(); // ?
$salmon->post($this->salmonuri, $xml);
}
}
function getBestName()
{
if ($this->isGroup()) {
return $this->localGroup()->getBestName();
} else {
return $this->localProfile()->getBestName();
}
}
function atomFeed($actor)
{
$feed = new Atom10Feed();
// @fixme should these be set up somewhere else?
$feed->addNamespace('activity', 'http://activitystrea.ms/spec/1.0/');
$feed->addNamesapce('thr', 'http://purl.org/syndication/thread/1.0');
$feed->addNamespace('georss', 'http://www.georss.org/georss');
$feed->addNamespace('ostatus', 'http://ostatus.org/schema/1.0');
$taguribase = common_config('integration', 'taguri');
$feed->setId("tag:{$taguribase}:UserTimeline:{$actor->id}"); // ???
$feed->setTitle($actor->getBestName() . ' timeline'); // @fixme
$feed->setUpdated(time());
$feed->setPublished(time());
$feed->addLink(common_url('ApiTimelineUser',
array('id' => $actor->id,
'type' => 'atom')),
array('rel' => 'self',
'type' => 'application/atom+xml'));
$feed->addLink(common_url('userbyid',
array('id' => $actor->id)),
array('rel' => 'alternate',
'type' => 'text/html'));
return $feed;
}
/**
* Read and post notices for updates from the feed.
* Currently assumes that all items in the feed are new,
* coming from a PuSH hub.
*
* @param string $xml source of Atom or RSS feed
* @param string $hmac X-Hub-Signature header, if present
*/
public function postUpdates($xml, $hmac)
{
common_log(LOG_INFO, __METHOD__ . ": packet for \"$this->feeduri\"! $hmac $xml");
if ($this->secret) {
if (preg_match('/^sha1=([0-9a-fA-F]{40})$/', $hmac, $matches)) {
$their_hmac = strtolower($matches[1]);
$our_hmac = hash_hmac('sha1', $xml, $this->secret);
if ($their_hmac !== $our_hmac) {
common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH with bad SHA-1 HMAC: got $their_hmac, expected $our_hmac");
return;
}
} else {
common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH with bogus HMAC '$hmac'");
return;
}
} else if ($hmac) {
common_log(LOG_ERR, __METHOD__ . ": ignoring PuSH with unexpected HMAC '$hmac'");
return;
}
require_once "XML/Feed/Parser.php";
$feed = new XML_Feed_Parser($xml, false, false, true);
$munger = new FeedMunger($feed);
$hits = 0;
foreach ($feed as $index => $entry) {
// @fixme this might sort in wrong order if we get multiple updates
$notice = $munger->notice($index);
// Double-check for oldies
// @fixme this could explode horribly for multiple feeds on a blog. sigh
$dupe = new Notice();
$dupe->uri = $notice->uri;
if ($dupe->find(true)) {
common_log(LOG_WARNING, __METHOD__ . ": tried to save dupe notice for entry {$notice->uri} of feed {$this->feeduri}");
continue;
}
// @fixme need to ensure that groups get handled correctly
$saved = Notice::saveNew($notice->profile_id,
$notice->content,
'ostatus',
array('is_local' => Notice::REMOTE_OMB,
'uri' => $notice->uri,
'lat' => $notice->lat,
'lon' => $notice->lon,
'location_ns' => $notice->location_ns,
'location_id' => $notice->location_id));
/*
common_log(LOG_DEBUG, "going to check group delivery...");
if ($this->group_id) {
$group = User_group::staticGet($this->group_id);
if ($group) {
common_log(LOG_INFO, __METHOD__ . ": saving to local shadow group $group->id $group->nickname");
$groups = array($group);
} else {
common_log(LOG_INFO, __METHOD__ . ": lost the local shadow group?");
}
} else {
common_log(LOG_INFO, __METHOD__ . ": no local shadow groups");
$groups = array();
}
common_log(LOG_DEBUG, "going to add to inboxes...");
$notice->addToInboxes($groups, array());
common_log(LOG_DEBUG, "added to inboxes.");
*/
$hits++;
}
if ($hits == 0) {
common_log(LOG_INFO, __METHOD__ . ": no updates in packet for \"$this->feeduri\"! $xml");
}
}
}

Some files were not shown because too many files have changed in this diff Show More